diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml
index 7625a08cfe515..b805eb928b94c 100644
--- a/.github/workflows/unit_test.yml
+++ b/.github/workflows/unit_test.yml
@@ -38,8 +38,8 @@ jobs:
with:
# v0 makes it easy to bust the cache if needed
# just increase the integer to start with a fresh cache
- gha-cache-key: v0-py${{ matrix.python_version }}
- named-caches-hash: ${{ hashFiles('**/pyproject.toml') }}
+ gha-cache-key: v1-py${{ matrix.python_version }}
+ named-caches-hash: v1-py${{ matrix.python_version }}
pants-python-version: ${{ matrix.python-version }}
pants-ci-config: pants.toml
- name: Check BUILD files
diff --git a/.gitignore b/.gitignore
index 31e6bc9056658..c40424b7fa0a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,10 @@
dist/
migration_scripts/
venv/
+.venv/
.ipynb_checkpoints
.__pycache__
+__pycache__
dev_notebooks/
llamaindex_registry.txt
+packages_to_bump_deduped.txt
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6e13d2aedbdb2..4bab7acfdcb9a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -288,7 +288,7 @@ cd ./llama-index-packs
llamaindex-cli new-package --kind "packs" --name "my new pack"
cd ./llama-index-integrations/readers
-llamaindex-cli new-pacakge --kind "readers" --name "new reader"
+llamaindex-cli new-package --kind "readers" --name "new reader"
```
Executing the first set of shell commands will create a new folder called `llama-index-packs-my-new-pack`
diff --git a/Makefile b/Makefile
index ef71f85190e7e..a350215cd0313 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
test: ## Run tests via pants
- pants --no-local-cache --changed-since=origin/main test
+ pants --no-local-cache --changed-since=origin/main --changed-dependents=transitive test
test-core: ## Run tests via pants
pants --no-local-cache test llama-index-core/::
diff --git a/docs/community/integrations/uptrain.md b/docs/community/integrations/uptrain.md
index ee522f99e5da6..d07e25fcbf1b5 100644
--- a/docs/community/integrations/uptrain.md
+++ b/docs/community/integrations/uptrain.md
@@ -1,4 +1,4 @@
-# How to use UpTrain with LlamaIndex
+# Perform Evaluations on LlamaIndex with UpTrain
**Overview**: In this example, we will see how to use UpTrain with LlamaIndex.
@@ -12,6 +12,365 @@
1. LlamaIndex solves the first problem by allowing you to perform Retrieval Augmented Generation (RAG) with a retriever that is fine-tuned on your own data. This allows you to use your own data to fine-tune a retriever, and then use that retriever to perform RAG.
2. UpTrain solves the second problem by allowing you to perform evaluations on the generated responses. This helps you to ensure that the responses are relevant to the prompt, align with the desired tone or the context, and are not offensive etc.
+# How to go about it?
+
+There two ways you can use UpTrain with LlamaIndex:
+
+1. **Using the UpTrain Callback Handler**: This method allows you to seamlessly integrate UpTrain with LlamaIndex. You can simply add UpTrainCallbackHandler to your existing LlamaIndex pipeline and it will take care of sending the generated responses to the UpTrain Managed Service for evaluations. This is the recommended method as it is the easiest to use and provides you with dashboards and insights with minimal effort.
+
+2. **Using UpTrain's EvalLlamaIndex**: This method allows you to use UpTrain to perform evaluations on the generated responses. You can use the EvalLlamaIndex object to generate responses for the queries and then perform evaluations on the responses. You can find a detailed tutorial on how to do this below. This method offers more flexibility and control over the evaluations, but requires more effort to set up and use.
+
+# 1. Using the UpTrain Callback Handler
+
+Three additional evaluations for Llamaindex have been introduced, complementing existing ones. These evaluations run automatically, with results displayed in the output. More details on UpTrain's evaluations can be found [here](https://github.com/uptrain-ai/uptrain?tab=readme-ov-file#pre-built-evaluations-we-offer-).
+
+Selected operators from the LlamaIndex pipeline are highlighted for demonstration:
+
+## 1. **RAG Query Engine Evaluations**:
+
+The RAG query engine plays a crucial role in retrieving context and generating responses. To ensure its performance and response quality, we conduct the following evaluations:
+
+- **Context Relevance**: Determines if the context extracted from the query is relevant to the response.
+- **Factual Accuracy**: Assesses if the LLM is hallcuinating or providing incorrect information.
+- **Response Completeness**: Checks if the response contains all the information requested by the query.
+
+## 2. **Sub-Question Query Generation Evaluation**:
+
+The SubQuestionQueryGeneration operator decomposes a question into sub-questions, generating responses for each using a RAG query engine. Given the complexity, we include the previous evaluations and add:
+
+- **Sub Query Completeness**: Assures that the sub-questions accurately and comprehensively cover the original query.
+
+## 3. **Re-Ranking Evaluations**:
+
+Re-ranking involves reordering nodes based on relevance to the query and choosing top n nodes. Different evaluations are performed based on the number of nodes returned after re-ranking.
+
+a. Same Number of Nodes
+
+- **Context Reranking**: Checks if the order of re-ranked nodes is more relevant to the query than the original order.
+
+b. Different Number of Nodes:
+
+- **Context Conciseness**: Examines whether the reduced number of nodes still provides all the required information.
+
+These evaluations collectively ensure the robustness and effectiveness of the RAG query engine, SubQuestionQueryGeneration operator, and the re-ranking process in the LlamaIndex pipeline.
+
+#### **Note:**
+
+- We have performed evaluations using basic RAG query engine, the same evaluations can be performed using the advanced RAG query engine as well.
+- Same is true for Re-Ranking evaluations, we have performed evaluations using CohereRerank, the same evaluations can be performed using other re-rankers as well.
+
+## Install Dependencies and Import Libraries
+
+Install notebook dependencies.
+
+```bash
+pip install -q html2text llama-index pandas tqdm uptrain cohere
+```
+
+Import libraries.
+
+```python
+from llama_index import (
+ ServiceContext,
+ VectorStoreIndex,
+)
+from llama_index.node_parser import SentenceSplitter
+from llama_index.readers import SimpleWebPageReader
+from llama_index.callbacks import CallbackManager, UpTrainCallbackHandler
+from llama_index.postprocessor.cohere_rerank import CohereRerank
+from llama_index.service_context import set_global_service_context
+from llama_index.query_engine.sub_question_query_engine import (
+ SubQuestionQueryEngine,
+)
+from llama_index.tools.query_engine import QueryEngineTool
+from llama_index.tools.types import ToolMetadata
+```
+
+## Setup
+
+You can choose between the following options for evaluating using UpTrain:
+
+### 1. **UpTrain's Open-Source Software (OSS)**:
+
+You can use the open-source evaluation service to evaluate your model.
+In this case, you will need to provide an OpenAI API key. You can get yours [here](https://platform.openai.com/account/api-keys).
+
+Parameters:
+
+- key_type="openai"
+- api_key="OPENAI_API_KEY"
+- project_name_prefix="PROJECT_NAME_PREFIX"
+
+### 2. **UpTrain Managed Service and Dashboards**:
+
+You can create a free UpTrain account [here](https://uptrain.ai/) and get free trial credits. If you want more trial credits, [book a call with the maintainers of UpTrain here](https://calendly.com/uptrain-sourabh/30min).
+
+UpTrain Managed service provides:
+
+1. Dashboards with advanced drill-down and filtering options
+1. Insights and common topics among failing cases
+1. Observability and real-time monitoring of production data
+1. Regression testing via seamless integration with your CI/CD pipelines
+
+The notebook contains some screenshots of the dashboards and the insights that you can get from the UpTrain managed service.
+
+Parameters:
+
+- key_type="uptrain"
+- api_key="UPTRAIN_API_KEY"
+- project_name_prefix="PROJECT_NAME_PREFIX"
+
+**Note:** The `project_name_prefix` will be used as prefix for the project names in the UpTrain dashboard. These will be different for different types of evals. For example, if you set project_name_prefix="llama" and perform the sub_question evaluation, the project name will be "llama_sub_question_answering".
+
+```python
+callback_handler = UpTrainCallbackHandler(
+ key_type="openai",
+ api_key="sk-******************************",
+ project_name_prefix="llama",
+)
+callback_manager = CallbackManager([callback_handler])
+service_context = ServiceContext.from_defaults(
+ callback_manager=callback_manager
+)
+set_global_service_context(service_context)
+```
+
+## Load and Parse Documents
+
+Load documents from Paul Graham's essay "What I Worked On".
+
+```python
+documents = SimpleWebPageReader().load_data(
+ [
+ "https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt"
+ ]
+)
+```
+
+Parse the document into nodes.
+
+```python
+parser = SentenceSplitter()
+nodes = parser.get_nodes_from_documents(documents)
+```
+
+# 1. RAG Query Engine Evaluation
+
+UpTrain callback handler will automatically capture the query, context and response once generated and will run the following three evaluations _(Graded from 0 to 1)_ on the response:
+
+- **Context Relevance**: Check if the context extractedfrom the query is relevant to the response.
+- **Factual Accuracy**: Check how factually accurate the response is.
+- **Response Completeness**: Check if the response contains all the information that the query is asking for.
+
+```python
+index = VectorStoreIndex.from_documents(
+ documents, service_context=service_context
+)
+query_engine = index.as_query_engine()
+
+max_characters_per_line = 80
+queries = [
+ "What did Paul Graham do growing up?",
+ "When and how did Paul Graham's mother die?",
+ "What, in Paul Graham's opinion, is the most distinctive thing about YC?",
+ "When and how did Paul Graham meet Jessica Livingston?",
+ "What is Bel, and when and where was it written?",
+]
+for query in queries:
+ response = query_engine.query(query)
+```
+
+ Question: What did Paul Graham do growing up?
+ Context Relevance Score: 0.0
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.0
+
+
+ Question: When and how did Paul Graham's mother die?
+ Context Relevance Score: 0.0
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.0
+
+
+ Question: What, in Paul Graham's opinion, is the most distinctive thing about YC?
+ Context Relevance Score: 1.0
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 1.0
+
+
+ Question: When and how did Paul Graham meet Jessica Livingston?
+ Context Relevance Score: 1.0
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.5
+
+
+ Question: What is Bel, and when and where was it written?
+ Context Relevance Score: 1.0
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.0
+
+Here's an example of the dashboard showing how you can filter and drill down to the failing cases and get insights on the failing cases:
+![image-2.png](https://uptrain-assets.s3.ap-south-1.amazonaws.com/images/llamaindex/image-2.png)
+
+# 2. Sub-Question Query Engine Evaluation
+
+The **sub question query engine** is used to tackle the problem of answering a complex query using multiple data sources. It first breaks down the complex query into sub questions for each relevant data source, then gather all the intermediate responses and synthesizes a final response.
+
+UpTrain callback handler will automatically capture the sub-question and the responses for each of them once generated and will run the following three evaluations _(Graded from 0 to 1)_ on the response:
+
+- **Context Relevance**: Check if the context extractedfrom the query is relevant to the response.
+- **Factual Accuracy**: Check how factually accurate the response is.
+- **Response Completeness**: Check if the response contains all the information that the query is asking for.
+
+In addition to the above evaluations, the callback handler will also run the following evaluation:
+
+- **Sub Query Completeness**: Checks if the sub-questions accurately and completely cover the original query.
+
+```python
+# build index and query engine
+vector_query_engine = VectorStoreIndex.from_documents(
+ documents=documents, use_async=True, service_context=service_context
+).as_query_engine()
+
+query_engine_tools = [
+ QueryEngineTool(
+ query_engine=vector_query_engine,
+ metadata=ToolMetadata(
+ name="documents",
+ description="Paul Graham essay on What I Worked On",
+ ),
+ ),
+]
+
+query_engine = SubQuestionQueryEngine.from_defaults(
+ query_engine_tools=query_engine_tools,
+ service_context=service_context,
+ use_async=True,
+)
+
+response = query_engine.query(
+ "How was Paul Grahams life different before, during, and after YC?"
+)
+```
+
+ Question: What did Paul Graham work on during YC?
+ Context Relevance Score: 0.5
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.5
+
+
+ Question: What did Paul Graham work on after YC?
+ Context Relevance Score: 0.5
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.5
+
+
+ Question: What did Paul Graham work on before YC?
+ Context Relevance Score: 1.0
+ Factual Accuracy Score: 1.0
+ Response Completeness Score: 0.0
+
+
+ Question: How was Paul Grahams life different before, during, and after YC?
+ Sub Query Completeness Score: 1.0
+
+Here's an example of the dashboard visualizing the scores of the sub-questions in the form of a bar chart:
+
+![image.png](https://uptrain-assets.s3.ap-south-1.amazonaws.com/images/llamaindex/image.png)
+
+# 3. Re-ranking
+
+Re-ranking is the process of reordering the nodes based on their relevance to the query. There are multiple classes of re-ranking algorithms offered by Llamaindex. We have used CohereRerank for this example.
+
+The re-ranker allows you to enter the number of top n nodes that will be returned after re-ranking. If this value remains the same as the original number of nodes, the re-ranker will only re-rank the nodes and not change the number of nodes. Otherwise, it will re-rank the nodes and return the top n nodes.
+
+We will perform different evaluations based on the number of nodes returned after re-ranking.
+
+## 3a. Re-ranking (With same number of nodes)
+
+If the number of nodes returned after re-ranking is the same as the original number of nodes, the following evaluation will be performed:
+
+- **Context Reranking**: Check if the order of the re-ranked nodes is more relevant to the query than the original order.
+
+```python
+api_key = "**********************************" # Insert cohere API key here
+cohere_rerank = CohereRerank(
+ api_key=api_key, top_n=5
+) # In this example, the number of nodes before re-ranking is 5 and after re-ranking is also 5.
+
+index = VectorStoreIndex.from_documents(
+ documents=documents, service_context=service_context
+)
+
+query_engine = index.as_query_engine(
+ similarity_top_k=10,
+ node_postprocessors=[cohere_rerank],
+ service_context=service_context,
+)
+
+response = query_engine.query(
+ "What did Sam Altman do in this essay?",
+)
+```
+
+ Question: What did Sam Altman do in this essay?
+ Context Reranking Score: 0.0
+
+# 3b. Re-ranking (With different number of nodes)
+
+If the number of nodes returned after re-ranking is the lesser as the original number of nodes, the following evaluation will be performed:
+
+- **Context Conciseness**: If the re-ranked nodes are able to provide all the information required by the query.
+
+```python
+api_key = "**********************************" # insert cohere API key here
+cohere_rerank = CohereRerank(
+ api_key=api_key, top_n=2
+) # In this example, the number of nodes before re-ranking is 5 and after re-ranking is 2.
+
+index = VectorStoreIndex.from_documents(
+ documents=documents, service_context=service_context
+)
+query_engine = index.as_query_engine(
+ similarity_top_k=10,
+ node_postprocessors=[cohere_rerank],
+ service_context=service_context,
+)
+
+# Use your advanced RAG
+response = query_engine.query(
+ "What did Sam Altman do in this essay?",
+)
+```
+
+ Question: What did Sam Altman do in this essay?
+ Context Conciseness Score: 1.0
+
+# UpTrain's Managed Service Dashboard and Insights
+
+The UpTrain Managed Service offers the following features:
+
+1. Advanced dashboards with drill-down and filtering options.
+1. Identification of insights and common themes among unsuccessful cases.
+1. Real-time observability and monitoring of production data.
+1. Integration with CI/CD pipelines for seamless regression testing.
+
+To define the UpTrain callback handler, the only change required is to set the `key_type` and `api_key` parameters. The rest of the code remains the same.
+
+```python
+callback_handler = UpTrainCallbackHandler(
+ key_type="uptrain",
+ api_key="up-******************************",
+ project_name_prefix="llama",
+)
+```
+
+Here's a short GIF showcasing the dashboard and the insights that you can get from the UpTrain managed service:
+
+![output.gif](https://uptrain-assets.s3.ap-south-1.amazonaws.com/images/llamaindex/output.gif)
+
+# 2. Using EvalLlamaIndex
+
## Install UpTrain and LlamaIndex
```bash
@@ -182,16 +541,17 @@ pd.DataFrame(results)
Histogram of score vs number of cases with that score
-![image.png](UpTrain_files/image.png)
+![dashboard.png](https://uptrain-assets.s3.ap-south-1.amazonaws.com/images/llamaindex/nyc_wiki_results.png)
### Insights:
You can filter failure cases and generate common topics among them. This can help identify the core issue and help fix it
-![LlamaIndex_Integration.gif](UpTrain_files/LlamaIndex_Integration.gif)
+![LlamaIndex_Integration.gif](https://uptrain-assets.s3.ap-south-1.amazonaws.com/images/llamaindex/LlamaIndex_Integration.gif)
## Learn More
-1. [Colab Notebook on UpTrain Integration with LlamaIndex](https://colab.research.google.com/github/uptrain-ai/llama_index/blob/uptrain_integration/docs/examples/evaluation/UpTrain.ipynb)
+1. [Colab Notebook on UpTrainCallbackHandler](https://colab.research.google.com/github/run-llama/llama_index/blob/main/docs/examples/callbacks/UpTrainCallback.ipynb)
+1. [Colab Notebook on UpTrain Integration with LlamaIndex](https://colab.research.google.com/github/run-llama/llama_index/blob/main/docs/examples/evaluation/UpTrain.ipynb)
1. [UpTrain Github Repository](https://github.com/uptrain-ai/uptrain)
1. [UpTrain Documentation](https://docs.uptrain.ai/)
diff --git a/docs/examples/callbacks/UpTrainCallback.ipynb b/docs/examples/callbacks/UpTrainCallback.ipynb
new file mode 100644
index 0000000000000..7ccc72565c127
--- /dev/null
+++ b/docs/examples/callbacks/UpTrainCallback.ipynb
@@ -0,0 +1,643 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# UpTrain Callback Handler\n",
+ "\n",
+ "This notebook showcases the UpTrain callback handler seamlessly integrating into your pipeline, facilitating diverse evaluations. Three additional evaluations for Llamaindex have been introduced, complementing existing ones. These evaluations run automatically, with results displayed in the output. More details on UpTrain's evaluations can be found [here](https://github.com/uptrain-ai/uptrain?tab=readme-ov-file#pre-built-evaluations-we-offer-). \n",
+ "\n",
+ "Selected operators from the LlamaIndex pipeline are highlighted for demonstration:\n",
+ "\n",
+ "## 1. **RAG Query Engine Evaluations**:\n",
+ "The RAG query engine plays a crucial role in retrieving context and generating responses. To ensure its performance and response quality, we conduct the following evaluations:\n",
+ "\n",
+ "- **Context Relevance**: Determines if the context extracted from the query is relevant to the response.\n",
+ "- **Factual Accuracy**: Assesses if the LLM is hallcuinating or providing incorrect information.\n",
+ "- **Response Completeness**: Checks if the response contains all the information requested by the query.\n",
+ "\n",
+ "## 2. **Sub-Question Query Generation Evaluation**:\n",
+ "The SubQuestionQueryGeneration operator decomposes a question into sub-questions, generating responses for each using a RAG query engine. Given the complexity, we include the previous evaluations and add:\n",
+ "\n",
+ "- **Sub Query Completeness**: Assures that the sub-questions accurately and comprehensively cover the original query.\n",
+ "\n",
+ "## 3. **Re-Ranking Evaluations**:\n",
+ "Re-ranking involves reordering nodes based on relevance to the query and chosing top n nodes. Different evaluations are performed based on the number of nodes returned after re-ranking.\n",
+ "\n",
+ "a. Same Number of Nodes\n",
+ "- **Context Reranking**: Checks if the order of re-ranked nodes is more relevant to the query than the original order.\n",
+ "\n",
+ "b. Different Number of Nodes:\n",
+ "- **Context Conciseness**: Examines whether the reduced number of nodes still provides all the required information.\n",
+ "\n",
+ "These evaluations collectively ensure the robustness and effectiveness of the RAG query engine, SubQuestionQueryGeneration operator, and the re-ranking process in the LlamaIndex pipeline."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### **Note:** \n",
+ "- We have performed evaluations using basic RAG query engine, the same evaluations can be performed using the advanced RAG query engine as well.\n",
+ "- Same is true for Re-Ranking evaluations, we have performed evaluations using CohereRerank, the same evaluations can be performed using other re-rankers as well."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Install Dependencies and Import Libraries\n",
+ "\n",
+ "Install notebook dependencies."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%pip install llama-index-postprocessor-cohere-rerank\n",
+ "%pip install llama-index-readers-web\n",
+ "%pip install llama-index-callback-uptrain\n",
+ "%pip install -q html2text llama-index pandas tqdm uptrain cohere"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Import libraries.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.core.settings import Settings\n",
+ "from llama_index.core import VectorStoreIndex\n",
+ "from llama_index.core.node_parser import SentenceSplitter\n",
+ "from llama_index.readers.web import SimpleWebPageReader\n",
+ "from llama_index.core.callbacks import CallbackManager\n",
+ "from llama_index.callbacks.uptrain.base import UpTrainCallbackHandler\n",
+ "from llama_index.core.query_engine import SubQuestionQueryEngine\n",
+ "from llama_index.core.tools import QueryEngineTool, ToolMetadata\n",
+ "from llama_index.core.postprocessor.llm_rerank import LLMRerank\n",
+ "from llama_index.llms.openai import OpenAI\n",
+ "\n",
+ "import os"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Setup\n",
+ "\n",
+ "You can choose between the following options for evaluating using UpTrain:\n",
+ "### 1. **UpTrain's Open-Source Software (OSS)**: \n",
+ "You can use the open-source evaluation service to evaluate your model.\n",
+ "In this case, you will need to provie an OpenAI API key. You can get yours [here](https://platform.openai.com/account/api-keys).\n",
+ "\n",
+ "Parameters:\n",
+ "- key_type=\"openai\"\n",
+ "- api_key=\"OPENAI_API_KEY\"\n",
+ "- project_name_prefix=\"PROJECT_NAME_PREFIX\"\n",
+ "\n",
+ "\n",
+ "### 2. **UpTrain Managed Service and Dashboards**: \n",
+ "You can create a free UpTrain account [here](https://uptrain.ai/) and get free trial credits. If you want more trial credits, [book a call with the maintainers of UpTrain here](https://calendly.com/uptrain-sourabh/30min).\n",
+ "\n",
+ "UpTrain Managed service provides:\n",
+ "1. Dashboards with advanced drill-down and filtering options\n",
+ "1. Insights and common topics among failing cases\n",
+ "1. Observability and real-time monitoring of production data\n",
+ "1. Regression testing via seamless integration with your CI/CD pipelines\n",
+ "\n",
+ "The notebook contains some screenshots of the dashboards and the insights that you can get from the UpTrain managed service.\n",
+ "\n",
+ "Parameters:\n",
+ "- key_type=\"uptrain\"\n",
+ "- api_key=\"UPTRAIN_API_KEY\"\n",
+ "- project_name_prefix=\"PROJECT_NAME_PREFIX\"\n",
+ "\n",
+ "\n",
+ "**Note:** The `project_name_prefix` will be used as prefix for the project names in the UpTrain dashboard. These will be different for different types of evals. For example, if you set project_name_prefix=\"llama\" and perform the sub_question evaluation, the project name will be \"llama_sub_question_answering\"."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "callback_handler = UpTrainCallbackHandler(\n",
+ " key_type=\"openai\",\n",
+ " api_key=\"sk-...\", # replace with your OpenAI API key\n",
+ " project_name_prefix=\"llama\",\n",
+ ")\n",
+ "Settings.callback_manager = CallbackManager([callback_handler])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Load and Parse Documents\n",
+ "\n",
+ "Load documents from Paul Graham's essay \"What I Worked On\"."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "documents = SimpleWebPageReader().load_data(\n",
+ " [\n",
+ " \"https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt\"\n",
+ " ]\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Parse the document into nodes."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "parser = SentenceSplitter()\n",
+ "nodes = parser.get_nodes_from_documents(documents)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 1. RAG Query Engine Evaluation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "UpTrain callback handler will automatically capture the query, context and response once generated and will run the following three evaluations *(Graded from 0 to 1)* on the response:\n",
+ "- **Context Relevance**: Check if the context extractedfrom the query is relevant to the response.\n",
+ "- **Factual Accuracy**: Check how factually accurate the response is.\n",
+ "- **Response Completeness**: Check if the response contains all the information that the query is asking for."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-14 16:04:09.869\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: What did Paul Graham do growing up?\n",
+ "Response: Growing up, Paul Graham worked on writing and programming. He wrote short stories and also tried his hand at programming on the IBM 1401 computer that his school district had. He later got a microcomputer, a TRS-80, and started programming more extensively, creating simple games and even a word processor.\n",
+ "Context Relevance Score: 0.5\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 1.0\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-14 16:04:36.895\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: When and how did Paul Graham's mother die?\n",
+ "Response: The context information does not provide any information about Paul Graham's mother or her death.\n",
+ "Context Relevance Score: 0.0\n",
+ "Factual Accuracy Score: 0.0\n",
+ "Response Completeness Score: 0.0\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-14 16:04:55.245\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: What, in Paul Graham's opinion, is the most distinctive thing about YC?\n",
+ "Response: The most distinctive thing about YC, according to Paul Graham's opinion, is that it provides a sense of community and support for startup founders. It solves the problem of isolation that founders often face by connecting them with colleagues who understand the challenges they are going through and can offer guidance and support. Additionally, YC fosters a tight-knit alumni community where startups can help each other and even become each other's customers.\n",
+ "Context Relevance Score: 0.0\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 0.5\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-14 16:05:24.705\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: When and how did Paul Graham meet Jessica Livingston?\n",
+ "Response: Paul Graham met Jessica Livingston at a party at his house in October 2003. They were introduced to each other by a mutual friend named Maria Daniels. A couple of days later, Paul asked Jessica out and they started dating.\n",
+ "Context Relevance Score: 0.5\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 1.0\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-14 16:05:52.062\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: What is Bel, and when and where was it written?\n",
+ "Response: Bel is a new Lisp that was written in Arc. It was written over a period of 4 years, from March 26, 2015, to October 12, 2019. The majority of Bel was written in England, as the author moved there in the summer of 2016.\n",
+ "Context Relevance Score: 1.0\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 0.5\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "index = VectorStoreIndex.from_documents(\n",
+ " documents,\n",
+ ")\n",
+ "query_engine = index.as_query_engine()\n",
+ "\n",
+ "max_characters_per_line = 80\n",
+ "queries = [\n",
+ " \"What did Paul Graham do growing up?\",\n",
+ " \"When and how did Paul Graham's mother die?\",\n",
+ " \"What, in Paul Graham's opinion, is the most distinctive thing about YC?\",\n",
+ " \"When and how did Paul Graham meet Jessica Livingston?\",\n",
+ " \"What is Bel, and when and where was it written?\",\n",
+ "]\n",
+ "for query in queries:\n",
+ " response = query_engine.query(query)"
+ ]
+ },
+ {
+ "attachments": {
+ "image-2.png": {
+ "image/png": "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AAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBw/AhYumPIbpaDsCotra2tWi2k3VX8aG5udtVB+qpUMmQhmBgCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIHAMCQzpCi22rI0toVNRWS1vLV4iw4blyK7du6VFlzmyoAsbAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwOATGNKBFuPu7OyS+LhYeebZl6S6skryC3IlNTXZ1iEafG+DESGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjIkA+02Dvu0rWH8nKzZUTBMLfsUDDYwatHAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQGKQCx0WgxeyDwaB+DdK3wLAQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEegSiez7xAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBQSBAoGUQvASGgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIINArQKCl14JPCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoNAgEDLIHgJDAEBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgV4BAS68FnxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQGgQCBlkHwEhgCAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK8AgZZeCz4hgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIDAIBAi2D4CUwBAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFeAQItvRZ8QgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEBgEAgRaBsFLYAgIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACvQIEWnot+IQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAwCAQItAyCl8AQEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBHoFCLT0WvAJAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAYBAIEGgZBC+BISCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgj0ChBo6bXgEwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggMAgECDQMgheAkNAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ6BUg0NJrwScEEEAAAQQQQAABBBBAAAEEEPj/7J0HYBVV2oa/9N5Ir4Qk9I70DopiV7AXLKuCYl113XWL/9r72rD3rlhQsRdQpCq9g0ASSO+9J//3nptJbkIigQQN4T3/fzNzZ059zuCdnfPO+5EACZAACZAACZAACZAACZAACZAACZAACZAACXQCAhS0dIJJYBdIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQaCVDQ0siCeyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp2AAAUtnWAS2AUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFGAhS0NLLgHgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQCcgQEFLJ5gEdoEESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKCRAAUtjSy4RwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0AkIUNDSCSaBXSABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEmgkQEFLIwvukQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJdAICFLR0gklgF0iABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABBoJUNDSyIJ7JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACnYAABS2dYBLYBRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggUYCFLQ0suAeCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAJyBAQUsnmAR2gQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoJGAc+Mu90iABEiABEiABEiABEig/QQcxEHw/7+b6kT0/zXZ/v5uXp4kARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARI46ghQ0HLUTTkHTAIkQAIkQAIkQAIdQQBCFAhXjHxF9x3FwVE/5rse060RtdSpIaBDnW3XarauTvT/VcqC/6sVqcV33eI7TujWVtgqwC0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMDRRoCClqNtxjleEiABEiABEiABEmgXAYhNIF5xUs2JoziqcMVRhSwQoOD/IFFpklTMgtTkKEQvRu8CGxfUhXK1RsxSq8KWOhW4SF1Ng7jFVq+phn9IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgASOEgIUtBwlE81hkgAJkAAJkAAJkEB7CECo4iBOKl5ReYmKWRwhaNEj9lKV/cQsbWzQVg4iFwdxdnCSOkc9Uqfb2lqpxUfFLWiJiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARI4OghQEHL0TPXHCkJkAAJkAAJkAAJHDwBhABSJxYnJxcjYrGFFLJkLE18Vw6+7hZKWKIYB23TwUkdYFTcUlvnrMKWajVtqda+UNrSAjYeIgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIEuR4CCli43pRwQCZAACZAACZAACXQcAQdnF3FydDbuKVatHS9jsWpuYasCFltYI1epVVeYmpoqVdP8oT1ooVM8RAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcLgJONu/5GotDbT23ivOW+fs99HJlr7jOPIfqF7kQ2peh+1o68et8wfaWvXab+3LWGOyP9bWfWts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oZYCMXv2DDr29HVCs5NOOg0fTpiCHt2SNppr1g7jbII3rxyPxZbG2erapD1sWxAFU1u6p1x+9qGRY2PlenV4dVrfLI+dM3GOhU6yPFsqz9qgJAIi0PkI2HuKBC2db1zUIhEQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARHwCAR6O7tia4vTtqA+j2FDoqIi0Z2ik5zsXmyKb8HfE6R4bfMd9V75RA9eno7nLNeGpfn1rp6KigrMnTfPLbQHBbPrGzJsKPQn7vkW+n1iEFsks4fpPrxF8M0Va+KBlpamzZ1qO7a1671M7cUgttBuaVuus3wmOuD/W0y2SN/YuPU2bunirS3wb+2clWfj2Z7p5urw+ugTF2xg6Vuk3EqnWFh79pbfkleee9HhqX1+q699++16EzfY44dSxzq8urd0XXv+Xt4f4tK+LO++8IQqVh7Q6BZx7VhHdu2v9fbbt8GOee3wznfctmexuflo5VkZF19yhguRZaF90tLSON5NKGE4oJraWkRFBHcstpW5by56bdgWFpu0hwi2Nqc75veN/Yb51L5Oc9bpyGeThuuACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIjAjyawSwUtthBsYUdWr85jyKEJ6Nsnx4UE+tG92IYLKquqMHfuAoYtqUEwQ8hY3UoisKcTsGlu4g+b85YC6CRiIbB2VTKnm7z8UowaOQC/u/46JCcnOtcVCzEVEBCITz/9nCGIpiAnt4vu0V01SKpXBERABERABERABERABERABERABERABERABERABERABERABERABERABDoBgV0qaLH++0QtQXRQqcWHH3+B0rIanz3H9tKbmEUFy4qPC0diQixD0UjM0gnmnZqwkwgEBvlckJYuXY7u3buieF0xay6Av18W770fdpTZ/s30QwXv8cjICLqypCI01Ceuqa2tw+TJ3+HRR/+GmLio1pBFu6J927/HKlEEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERODHE/DLyR20vaQjP772dleYi0RAgP8PhjNpd8mP2jXhjIUKkTPLj8KmzLs5AXdzc+4PHjwAXbtkoLCwCO++/xnSUuO3GmJpR3bbwv3ExETh2GOPQFxsLKtaj6qqGtx082MIDluP3F7pqKur32HvBTuybypbBERg9yFg3zuamppQWJQPc4nS94PdZ+zUUhEQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgb2DQKcRtOwduNVLEdg1BJYtL0RjfQErj0efvt3dIq4t5u6KZPU2chF56eLZG1Xft99Q+Pv7U8zSwO2uadtGDdILERCBPZqABC179PCqcyIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAnsAAQla9oBBVBdE4IcIWKitQDogNTU3o6GhcZe7n5iWJiws1AlYrO0tLS0MO9bA9rVAUpYfGk2dFwER2B4EJGjZHhRVhgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjsOAKBO65olSwCItBZCDQ2NoL/u7SrnFnas2AUJNTU1LU/5GvbJkd0QAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREYG8k4L83dlp9FgEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAER6LwEJGjpvGOjlomACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIjAXklAgpa9ctjVaREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARHovAQkaOm8Y6OWiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiMBeSUCClr1y2NVpERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABEei8BCRo6bxjo5aJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIwF5JQIKWvXLY1WkREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAER6LwEJGjpvGOjlomACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIjAXklAgpa9ctjVaREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARHovAQkaOm8Y6OWiYAIiIAIiIAIiIAIiIAIiIAI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CIiACIiACIjADglQuMI78WNj4ywpMcV8Ph/yU9yiJAIiIAIi8LEmgDhEMTExlpSUitBzfmtpbfpY41DnRUAEREAEREAEREAE9j8C0fufSbJIBERABERABERABERABERABERABERABERgdxCgmGWz9VscxCwpyWnm90vMsju4qg4REAEROJgIMNxcCJ67KGxREgEREAEREAEREAEREIH9iYAELfvTaMgWERABERABERABERABERABERABERABEdhNBFyYIXhmiYqKtsSkFNx9H+s8teym6lWNCIiACIjAQURgM7y1BINBhKVLsv7+/oOoZ+qKCIiACIiACIiACIjAgUxAgpYDefRkuwiIgAiIgAiIgAiIgAiIgAiIgAiIgAh8CAEvqFBCKNF8cT7bTHEL/lMSAREQAREQge0SgKglPhhvwUAQ/2Z4/4psN6cOioAIiIAIiIAIiIAIiMBeISBBy17BrEZEQAREQAREQAREQAREQAREQAREQAREYO8S4Gakzx+w+PgQGubGpMQse3cE1JoIiIAIHHgEoqKjLDExyXn3OvCsl8UiIAIiIAIiIAIiIAIHGwEJWg62EVV/REAEREAEREAEREAEREAEREAEREAERAAEoqKiED4i3j0LiAiIgAiIgAjsFAHoH2NiYiGGjLfNCD0kz147RU2ZREAEREAEREAEREAE9hABCVr2EFhVKwIiIAIiIAIiIAIiIAIiIAIiIAIiIAL7jAC8s8TExFgAHloUNmKfjYIaFgEREIEDkoATRCLsUD+9e8m51wE5hjJaBERABERABERABA4WAhK0HCwjqX6IgAiIgAiIgAiIgAiIgAiIgAiIgAiIQAQBn88f8U4vRUAEREAERGDnCURFR5ufokjnpWXnyymnCIiACIiACIiACIiACOxOAhK07E6aqksEREAEREAEREAEREAEREAEREAEREAE9gMCuKfeJGjZDwZCJoiACIjAAUiAnr2io6LNF+uzfrxG7LoDsBcyWQREQAREQAREQARE4GAgIEHLwTCK6oMIiIAIiIAIiIAIiIAIiIAIiIAIiIAIDCEQExM35IjeioAIiIAIiMDOEYiCoCUmJhZh6/p3roByiYAIiIAIiIAIiIAIiMAeIBC7B+pUlSIgAiIgAiIgAiIgAiIgAiIgAgcBAe9eXHp6+LgmjwH7/3Hm8HEd/wO93zHRkTP4QO+N7BcBERABEdibBOiUJSYmGoKWvdmq2hIBERABERABERABERCBrQns94KWKLkz3HrE9E4EREAEREAE9hEBuhxWEgEREAER+PgQ4Ld+D777+RyH67KP47Y4+0wGvC+Z7k1jdX0KCkoHEgGtqRxIoyVbRUAEREAEREAEREAEREAEREAEREAEhhLYrwUt3d1d1t3TbX29vdbf3w81OJZSP46rqENHTe9FQAREQAREYG8Q4D+72LiLjg67GY6L85nf59e/xXuDvdoQAREQgX1IgJdcFHAE8P2f6Iu1GLxu6e2zNjz21eVYZLsU2OyNxDZ7cQ2a4Y8zP+5Obu3tt9ae3n3GYG/0WW2IgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIwP5EYL8TtFC40tHZbu3tbU7EQqfO1LHIufP+NG1kiwiIgAiIwMeLwMBd+QPilvhgyIKBoEXHcItTSQREQARE4GAjkIAQJaWdPXZJQZZdNabAUiFq+UXxeru1pMqyY6Otby93mJeDPjz8UJh04k3PXmo/F31dVNFiz3xqpk1ISbTG7h4b8a9FlhG+QN1LVqgZERABERABERABERABERABERABERABERABEfj4EtivBC1dXZ3W3NJkfX2482/QlTM20dzteJH35H18B0w9FwEREAEREIF9SYDC05bWZmtrb7XkpBTz+wP70hy1LQIiIAIisAcJxOBCzBcTZX566hq8PtuDDW6naopZ4BvMKvuoZIHfmLhoy4JN9CCzp1NYzrnZfOg/GfDB0Eu844JXp7RNSQREQAREQAREQAREQAREQAREQAREQAREQAREYM8RYBjwfZ4YSqi1tcUaGuudV5YtYpZ9bpoMEAEREAEREAERGEKA/07z3+6GhnpraWnG672xrTjECL0VAREQARHY4wQo2OjHn35857vwr3u8xa0boGgkHn8qEern8rw0++uMUXZJbrrV4jjP8bEnE3rtqkfw2wEOe7I11S0CIiACIiACIiACIiACIiACIiACIiACIiACIjCUwD4XtHBhtKW1yd3tHY073pREQAREQAREQAQODALRMdHW2tYyIGrRfeoHxqjJShHYdwT4Sz8WCoR/9xc/y+0o0JlX/66IHJiXdf4ndqE4vJfs2DbmGZp2R7tenWyffWB/djbtTJldqY/ten3a1XLe2A0dX9YTz171brYTs9PtiyPz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CIiACIjAJiLASC25edlWWABRi0nUsokw67IiIAIiUKsJUMzCyCxFEEGy31ASAREQAREQAREQAREQgZpAIKYmZEJ5EAEREAEREAEREAEREAEREAEREAEREAER2LQEcnKzfNV9w4YNLTo6GtsQrTL+V08il00LXlcXAREQgRpKgMIV9gNlpWUemaW4uFBilhpaVsqWCIiACIiACIiACNRVAhK01NWS13OLgAiIgAiIgAiIgAiIgAiIgAiIgAjUKQIUruTmrbTS0mJLTEyymJhYi4qKBgO4M7k0P3jlv/VDBERABERg6yIQxFyp/FkZgYVbC5WUFFsuIrOUV5RbVD2IHfGfkgiIgAiIgAiIgAiIgAjUFAIStNSUklA+REAEREAEREAEREAEREAEREAEREAERGATEqCLMjo6xorhvCxeUWzx8Q2tQVwDi0K0luioGIhbouDMjMLq/E2YCV1aBLZyAmxnm6IJ/dXr/tXz/qiYNsU1/+h+/Iz3ZFoX23XlaV3vB1erGz9DBtQtVqyqsIoK/Csvs7KyMissKrTi4qJK+y8xS92oEXpKERABERABERABEahdBCRoqV3lpdyKgAiIgAiIQK0gwAkzJREQAREQAREQAREQgZpHgJFYoioVKwUF+ZZfkGf1Y+tXRWuJitIGRDWv1JQjERABEfj7BFzQAjELI7GUlpZA0FIKMSMEjRFb0P39u+gKIiACIiACIiACIiACIrBxCUjQsnF56moiIAIiIAIiIAIgsK5Vc4IjAiIgAiIgAiIgAiKw5QmE4mM6MZnKsUq/rLTUt5kItx7a8rlUDkRABERABDYuAQgW8WW9Hn7UQzQubjuH/eaqtpzbuPfS1URABERABERABERABERg4xDY7IIWKsF9IZA8XRunBHUVERABERABEagpBCr7eE6Osb9XEgEREAEREAEREAERqNkEQvFK6NyUKrlml5dyJwIiIAIbhQBFLLhQ2AdslGvqIiIgAiIgAiIgAiIgAiKwiQhsVkFLoGFBaNvKPZk1aN5EparLioAIiIAIiMAWIMApMa7yisI/7nAu7eoWKATdUgREQAREQAREQAT+AoFAi4yfEiX/BXo6RQREQAREQAREQAREQAREQAREQAREYFMRoMdpM6bAtRWFvTkpalESAREQAREQARHYugi4aLUydL02Htq6ylZPIwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKbk8BmV5UwKktsbKzFRMcgrGGFVm9vztLWvURABERABERgExGgZJV9fDREq/WxD7eisG0i0LqsCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACNQRAptd0ML4tdEQs1DUopXbdaSW6TFFQAREQATqDIHY+vUtOoY7GipefZ0pdD2oCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACGwCAltA0FLPV203aNDQtx3SCu5NUKq6pAiIgAiIgAhsZgKrIGDhdkPxDeIro7ME2wxu5mzodiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAlsJgS0gaAnIMUJLgwYNtH57K6lIegwREAEREIG6TQC7DVlcXANEYKtft0Ho6UVABERABERABERABERABERABERABERABERABERABERABERABDYKgS0maGHukxJTLDYmtnIl90Z5Hl1EBERABERABERgcxOAmiUW2wwlJSVv7jvrfiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAlspgS0qaOHWBMnJqb5FAVQtps0JttJapscSAREQARHYKgl4v83+O6qeJSelWnRU9Fb5nHooERABERABERABERABERABERABERABERABERABERABERABERCBzU9giwpaVnFFN7YeSk1JgzMsyipc1FJPwpbNXw90RxEQAREQARFYbwIUsrC39n4b/XcK+vHY+vUVcW29CepAERABERABERABERABERABERABERABERABERABERABERABERCBPyOwRQUtYebq14+z9NQMi4uLs/JV5YGDrB5cZfinJAIiIAIiIAIiUDMIsF/mPwpZyivKLQ79dxr77/oNakYGlQsREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREIGthkBMTXkSruxOicEK74J8Ky4qsuKSYneacVsij9kibUtNKSrlQwREQAREoK4RWGW2Cv+Vl5d7FBYKURs0aGANGyb4NkOMuKYkAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhuTQI0RtNAZFlUvypISk61BXLyVlpZYCUQtJaWlcKCVWYU70Tbmo+taIiACIiACIiACf0aAwdKioqItOjoG/XMDo5glNra+xcbEushFYpY/I6jPRUAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAE/gqBGiNoCTNPx1hsbKz/i4PjrKKiAqvB+U+rv0NG+i0CIiACIiACm5NAsNVQFIQtURC2RPut1S9vzhLQvURABERABERABERABERABERABERABERABERABERABERABESg7hGocYIWFkHoJIt0nNW9otETi4AIiIAIiEDNIsD+Oeyja1bOlBsREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREIGtjUCNFLREQpbjLJKGXouACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIjA1k8gaut/RD2hCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIhAbSIgQUttKi3lVQREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQATqAAEJWupAIesRRUAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERKA2EZCgpTaVlvIqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAnWAgAQtdaCQ9YgiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUJsISNBSm0pLeRUBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERCBOkBAgpY6UMh6RBEQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARGoTQQkaKlNpaW8ioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEAdICBBSx0oZD2iCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACNQmAhK01KbSUl5FQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREoA4QkKClDhSyHlEEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEahMBCVpqU2kpryIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQBwhI0FIHClmPKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAK1iYAELbWptJRXERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABEagDBCRoqQOFrEcUAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgdpEQIKW2lRayqsIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI1AECErTUgULWI4qACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIhAbSIgQUttKi3lVQREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQATqAAEJWupAIesRRUAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERKA2EYipTZlVXkVABERABERABERABESgNhOoV6+eRUXV80dYVbHKKlatqs2Po7yLwFoJsJ4zrVL9Xiuf2vRmpM2qqKhAmdam3K/Oq+rkaha15ZVbEdoSVLqaVu2C+oR81bSM1cDCjY7COrqgGI02ZGtIUaiX9TiWQ/m7XdwKHiq0kXyUutJ3V/VvLEfaGTXoraAmb75H+Ku2jfYjCnaR/1gHK1ZVWHlZuddBdnk0mKqLm68cdScREAEREAEREIHaQ0CCltpTVsqpCIiACIiACIiACIjAFibAyUtOPgbuNZ91RI7o0eLr3/+Gy8MnKOnw4HkFBUVWUpRd+RRRlp7R2MrKy/2zyjf1SwRqLQFOwNevH2sFhUVWVlpuSUkNfZKeLUOplhFAoUXHRNmKZcuR8VLPfP34VEto2KDWOaWjo6OsuLjESuEwSk5saKWom26ya1mR1Jnssu6hzOjYW5GVY2mpyV5eZSg/9qNbOsXERNvKlbmWmBgPh2T0Zm8PZLNmBQ4sLO0vhbI1zd6uWL6oqsgyMpuhHZZtcDnSARwdHe2C4GAMFghJykrLNvvzsgpm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QAREQAREQAREQAREQAS+GQFO1lRWVVvxplLvl32zs+goEdgNBLDaowailY1Fm2zd+kIrhMClEJ/Xbyi0jYXFWBwDMQtW2HNViCYdN/Ovwv28Ca40KGZREAEREAER2D4Bilaq4OauqLgEz81SH5ve/t7aIgIiIAIggHYn55lKsDCb/2yrSgCnkiECIiACIiAC3z2BvWKhJajRaGxscMFG0F1Q8PftJtNHpSLRSGjwhgJXG7UONTV1ltIxz+67///stp/f6iKUBx98wI44/FAMbpXCB+qBNnrUoXARFGafffa5nXvuOXbgQaNs7vxlrU/jn9esK/Ztl156sWVmZtoxxxxlp532PcvISLf33nvPGybhEKGce85ZGPCtsquuus7WrOtizzz7io0cOdJOPPE4O+zQQ+yJx/9p77zzLlY3VtvQYUPsxBOOtzlz5uL3/1hqWq7NnDHLRgwfCssxsfaHu39tBx04DCYuEyGCmWyvvTnBuual+wqBr0RQP4iACIiACIiACIiACIiACIiACIhAOyWgxR/tNOOVbBEQAREQAREQAREQAREQAREQAREQgXZFYK8IWmhyjSE2NtaFIfHxcf6dZoR3FEJCaVCmBuKPODcrHAEz2K0D1bCd0pLsgfvvsTic+7rrrrHOGRl2/fXXtt7Npkz5wg44YKQNHDTCysurXFTTHKWW/Tg4VlJSbiNGHmLHHnu0vfveeAhjRkMUM9L/W3bEh+XLV1hyUgJMyYVgRVit3XzLL2BxJdxFMIMGDYALogEtu3N11OIlS+2440+G9ZcldvPP77KjjjrcunbNt8GDB/k/d05KfNSef/5pi43Jg7q3vOV4fRABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERCBtk5grwhaauvqwDXNJkyYYGvXrLENGwL+SCn22F5ohMCEFljMOtrbb4+1lNQUmzTpE0tOydvCggmttvQfMMzuvPP3MBNZZccdd7RFwfdpeESEVVVW2YaNG2zMxbf6PnQ1RN/wbgaO5mFaDL4EPlDksmlTuQ0bfpAdfdSR9thjT1h2drZFR0fDrVA93CNVwDVQqd3/wEP26SdTrW+/rhYGV0eFME1560/vsBuRNgpVIiJhVQamj7n//AUL7frrrrXcvN4u6EmKa7Df/f6PNua8sy0uPt4a4K+1HueeMWOmo6iugTskBREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARFoRwQ69Ow1qEXGsafSTesn4eHhNmf2Fy2XHDBwBAQo1W55peXHrT5QrBIZGW6zZ20+rk/fIS5ooSildYiNjbYvp37qP4VG51uf7uk2a2bg+yBYZqmta4AopQHilChbuny1XXPVpfbzn90C8Uuk/eKO39jD/3rSMjunBsQyOHc8zvfFF5/4+XLyBtqKZZvweYV/79FzACyyRLhvVaaNIhmGYDx79BpmazaUWHnRIv995MhD3eoKLcrQ/dGc2TzPRsvtOtiiIsNs/twpvt/AQSOtspJMtkybb9SLCIiACIiACIjANybAdkN9fb2tW7/GwsLC3FrbNz6ZDhQBERABERABERABERABERABERABERABERABERABERABERABEfjOCewVQQtTQeFHQkIcBBwRVgerJEVFm3YoZgmmnMelJCdaaFgoLJ5UQfBR5RZWgttbv1PUEgmhSVl5uYtN4uNjLSI8AmKSMohZGo2CEroGmjN7qj3yyOM2Zsw5Hq8rrrjOxr//oXF/7sNAUUlCQrw14XtZeQUmv0ItJibGfy8rq/DzB0U1jCO305VSY2ODcTsttyQkxltdXT2sumx2IcR9KaqJjo6Ei6NSnL/JkuC+qKq6plnMQjdLCiIgAiIgAiIgAt8lAQlavkuaOpcIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIfPcE9pqg5btPyvbPGBoa4qIXilNo5YWTWLTOEg8XPwMH9odboDy79JILLSenC0QklTZ8xCis2q7bplCGx4aEUGTS5OeiIGVHgfvz+tyN19xeCJ4Xu7vY5uvOu73z6HcREAEREAEREIGvJ8B6VxZavp6T9hABERABERABERABERABERABERABERABERABERABERABERCBvUUgbG9deE9el9ZYWgdahZk+/TO78cab7fbbf26pqSm+mYKX6dNn2MIla6xbXqdtuh+g0GRHwpTW1+Fn7l8PCzRfF3b1vF93Pm0XAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgf2VQLsQtGydOU2wrsLA98LCQqusqnRXP0uWLLVLLr3GMtLitz5E30VABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABPYQgXbhcmhrlrSGEh4eZstWbLDKspVbbO7bb6hc/mxBRF9EQAREQAREoO0RkMuhtpenSpEIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDbItAuLbRwEquurt7yctIsPj4fOdpkgYmtBisrq9imq6G2le1KjQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjsuwTapaCF2REUsBQXl+y7uaOYiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEA7JBDSDtOsJIuACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACOzDBCRo2YczR1ETAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgfZIQIKW9pjrSrMIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7MMEJGjZhzNHURMBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERCB9khAgpb2mOtKswiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjswwQkaNmHM0dREwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREIH2SECClvaY60qzCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACOzDBCRo2YczR1ETAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgfZIQIKW9pjrSrMIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7MMEJGjZhzNHURMBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERCB9kggbF9PdIcOHfb1KCp+IiACIiACItAuCDQ1NbWLdCqRIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACe5/APiloCYpYGhsbraGhwZqaGvFPWJpI2/tFRjEQAREQARFoXwQ6GLWlHTqEWEhI4J/pl7ilfZUCpVYEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAE9jSBfU7QQjFLfX291dXVWm1tjdXivQHfGyBu8ckzGmyRrmVPlxNdTwREQAREoJ0SYL0cCiFLaFiYRYRHWEREpIWHh1tYWLhELe20TCjZIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIrAnCOwzghZOmNEiS2VlhVVVV1lNTTVWg3fw1eB8D8NEmoIIiIAIiIAIiMBeIAAzabSYVlFXYeUV5RYZGWVRUVEWEx3r9bSsteyFPNElRUAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERKCNE9hnVCJ1dXWYJCu1qqoqF7K0CFgwiRbwNiSzLG28LCp5IiACIiAC+zABGkgLDQ31GAatqNXV1lpcXIJEp/twvilqIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIrC/EtgnBC10K1RSUuyrv0NDApNlWu29vxYpxVsEREAERKAtEmgtLg3pEGKGv2pYU6urr7PEhCR3RdQW0600iYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7B0CmI7aiwGuhGiZpaSkyMUsIfhOeyzNNln2YsR0aREQAREQAREQge0R8JoaFtQobKErok0QpbI+h4m17R2i30VABERABERABERABERABERABERABERABERABERABERABERABERglwjsVUFLU2OjlZWVYDKs0d0MyanQLuWddhYBERABERCBvUqAwhaKURtRn5eWbjLW6woiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi8F0Q2IsuhzpYeXmJ0d1QB63o/i7yUucQAREQAREQgT1OgGJU1uN0PVRWXmoJ8Yl7PA66oAjsiwTUvt0Xc0VxEgEREAEREAEREAEREAEREAEREAEREAEREAEREAER2J8I7DVBS119rVVXV5ucE+xPxUVxFQEREAEREIFtE2B9Xl1dZdFRMRYeHr7tnfSrCLRxAt6uhcCrCS65GmGBsKmJ/yZ3mm0835U8ERABERABERABERABERABERABERABERABERABERCB3UNgLwhamrCSO8QnvRoaG9xVgVwN7Z7M1VlFQAREQAREYI8RaHY9VFVdaRERST6RD9ste+zyupAI7G0CtMhCt1sNDQ0WFhZukdHhFhoWZqEhHWSNcLdkTvD5op7EbsGrk4qACIiACOwkAdVHOwlKu4mACIiACIiACIiACIiACIjAXiSgvttehP+tL70XBC0dfKC/rrYWkXdHBd86ETqBCIiACIiACIjA3iXA5iBr9Tq4EuSEfkhIyN6NkK4uAnuIQLDsN0DMEhkRYUmxMRYaCjFLaIjfB+56KLjTHopTe7hMI3iTbQcIhvzh0x4SrTSKgAiIgAjscwRUH+1zWaIIiYAIiIAIiIAIiIAIiIAIiMBmAs3jsuq7bUayP37a44IWDjzX1ddZfUO9W2rRmsr9sdgoziIgAiIgAiKwJQGXqKKOp5iFopaoqGh3u7LlXvomAm2LAPtDjY1NsMgSakkJCbBOFAEhSyjugTqrqqpyt0No8AaEF7BQKKNF3y7/vf8JH05knJycbDU1NVZSUurfm6Rq+XZwdbQIiIAIiMCuEUDjF1W8paSkWH19vRUXb3Ixq8a4dg2j9hYBERABERABERABERABERCB3UXAx24xlhiGscSUlGSM11ZbaUmZxhJ3F/DdeN49LGjx6S4M7jdg8D+wqnI3pk2nFgEREAEREAER2MMEWL9T1BIIgXp/D0dBlxOBPUagER2iqJhoi4+Lg6glzMVcpaVlLnKh6CKoYOmA/cyC98Uei14bvBDcOjU1+gwiedfC4mNdXb2ns8kZt8EkK0kiIAIiIAL7JAHW7CFQtLA+Yvu3DqIWszAJuvfJ3FKkREAEREAEREAEREAEREAE2ieBwFhiCBYahoaGuTVtjSXunyVhjwpaAtNaHbyzz8HokA7o7Gs15f5ZchRrERABERABEdiKAOxQWGMTRKuccMZnyVm2AqSvbYZAUN0fExtrCfHxKPNNVlpWZnW1dZjYCrfwcLnc2n2ZzScNO6N8wuBJA5dD7tZp911QZxYBERABERCBrxBgW4D1D+sj/lPcovroK5j0gwiIgAiIgAiIgAiIgAiIgAjsZQLsqwU8lrPvprHEvZwd3/Dye1TQwjh6ofEOP7/gPzAWzU0KIiACIiACIiAC+zMBNgxRr3vDUHX8/pyTivvXEHDLLNHRLmahRaKysnK3yhIREfk1R2qzCIiACIiACIhAWyCwhXCbA10KIiACIiACIiACIiACIiACIiAC+ywB9dr22azZqYhp+ehOYdJOIiACIiACIiACu0JAetVdoaV99zcC9Lsa32yZhWIWCrkiIiVm2d/yUfEVAREQAREQAREQAREQAREQAREQAREQAREQAREQARHYtwlI0LJv549iJwIiIAIiIAL7JQEpnvfLbFOkv4YAyzWtsyQkJhpFLRUVFW6ZJTwiImCe6GuO12YREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREIGdJyBBy86z0p4iIAIiIAIiIAIiIALtlADFLHSnFQlLLOHh4VZbW+v/ERKztNMSoWSLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjsbgIStOxuwjq/CIiACIiACIiACIjA/k+gQwdraGy02JgYCwkJscrKSgsPg2UWBREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgd1CQIKW3YJVJxUBERABERABERABEWhLBGidhZZZwsLCrK6+Hq6GzIUtbSmNSosIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7EsEJGjZl3JDcREBERABERABERABEdjnCHSAdZamRgha4F6I1llqqmssNDR0n4unIiQCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACbYmABC1tKTeVFhEQAREQAREQAREQgd1CoKmp0a2zUNDS2NBoFLkoiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7D4CYbvv1Hv2zJxU4AQD5xY4ydAIs/CtQ2got4VgdW2jNdBGvIIIiIAIiIAIiIAIiIAI7CQBNi1Dva2Jxqa0LDtJTbuJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIwDcnsN8LWihkaWhosPi4GEuIj7MOmGioqKi0ktLyFioh2CclKdEiIsKtHvuu31BkTVsJXlp21od2TYDlKSU50errG1CGyto1CyV+SwKcu6RQLioq0p815RUVVllZrRX6W2LSNxEQARFoswSarKnlmR8CkfTW4uk2m3AlTAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAT2EoH9XtBCMUt0dJStXrXCVreCmJSS7qIVChSqqmtt0aL5LVtj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JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFBFCFDQUkVONIdJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAApWFAAUtleVMsZ8kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkUEUIUNBSRU40h0kCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEAClYUABS2V5UyxnyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQRQhQ0FJFTjSHSQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKVhQAFLZXlTLGfJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFBFCPhWkXFymCRAAiRAAiRAAiRAAiRAApWUgJeXl3jrC6lk166DHoW3t7eg+O7dIrsOofxBN8gCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACh02AgpbDRsgKSIAESIAESIAESIAEqhoBCCzKTaqYUM3EfpOPzx4nibt37ZZdUFlUsrTP8e9vHBVgU15xtFVUVCQFBUV2OCQ4UEydUl7mcvbhTOXk5EpJyS7x9fWRoKBAFbZUPublDI27SIAESIAESIAESIAESIAESIAESIAESIAESIAESOBfTYCCln/16eXgSIAESIAESIAESIAEjjQBaFmKi4vN24dn3d7eXhIUGCB+fr4maikqLJLCwmIVX3jmEtm5Y7vHDn+JionS+kpUo1Emo0euo7npo95LkOC5pCIyD3hKKS4pKfV0cuA+IwdkPj4+PuZlpSJtWIf0DW3lFxRKQu3aEh0TbbvXrl0r+fn5FeJl5fU8tG3bRvwD/CU3N1eWL1th56kyCokcLvwkARIgARIgARIgARIgARIgARIgARIgARIgARIggapAgIKWqnCWOUYSIAESIAESIAESIIEjQgCik8ysHNlVlF1ufVkZe++u36CxpOxIE1/1yuKlgpe01CS5ZNDlcs3VV8nq1Wtk6NBbJUCFFiKF5kFk79JH/xtEOD4+kJx4mUAEQpV9JXg18fP1ldQd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V7S7Q224ojNB5ZkglBJzIS/729jR370gyNJ+2Gt7wDt0jNtrZAeWbzeoogTbXWcH9sMqCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALdL8CYHN3/HHAECHRawMIk/fpny8KF78nSpcvkgw8+lHff+0jSUlNdJZNON8yGCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIdKNAjxpyqBsd2DUCvVbAhs0oK6uUjRs+cucwcdIMN3SQzWdCAAEEEGhfgCGH2ndhLgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQUwR61JBDPQWF40CgNwm4Ki39CmXkyCESbYlKbV29EGbpTc8gx4oAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkCxAoCVZhMcI9EKBaDQqVVU1vfDIOWQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQS2FAhvOYs5CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh0nwCBlu6zZ88IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC7QgQaGkHhVkIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC3SdAoKX77NkzAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQDsCBFraQWEWAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQPcJEGjpPnv2jAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIINCOAIGWdlCYhQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIINB9AgRaus+ePSOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgi0I0CgpR0UZiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh0nwCBlu6zZ88IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC7QiktDOvR8wKhUISj8eDfxIX+z8TAggggAACCHSDQEgkZP/T12b/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"
+ }
+ },
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's an example of the dashboard showing how you can filter and drill down to the failing cases and get insights on the failing cases:\n",
+ "![image-2.png](attachment:image-2.png)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 2. Sub-Question Query Engine Evaluation\n",
+ "\n",
+ "The **sub question query engine** is used to tackle the problem of answering a complex query using multiple data sources. It first breaks down the complex query into sub questions for each relevant data source, then gather all the intermediate reponses and synthesizes a final response.\n",
+ "\n",
+ "UpTrain callback handler will automatically capture the sub-question and the responses for each of them once generated and will run the following three evaluations *(Graded from 0 to 1)* on the response:\n",
+ "- **Context Relevance**: Check if the context extractedfrom the query is relevant to the response.\n",
+ "- **Factual Accuracy**: Check how factually accurate the response is.\n",
+ "- **Response Completeness**: Check if the response contains all the information that the query is asking for.\n",
+ "\n",
+ "In addition to the above evaluations, the callback handler will also run the following evaluation:\n",
+ "- **Sub Query Completeness**: Checks if the sub-questions accurately and completely cover the original query."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Generated 3 sub questions.\n",
+ "\u001b[1;3;38;2;237;90;200m[documents] Q: What did Paul Graham work on before YC?\n",
+ "\u001b[0m\u001b[1;3;38;2;90;149;237m[documents] Q: What did Paul Graham work on during YC?\n",
+ "\u001b[0m\u001b[1;3;38;2;11;159;203m[documents] Q: What did Paul Graham work on after YC?\n",
+ "\u001b[0m\u001b[1;3;38;2;237;90;200m[documents] A: Before Y Combinator (YC), Paul Graham worked on a startup called Viaweb.\n",
+ "\u001b[0m\u001b[1;3;38;2;11;159;203m[documents] A: After leaving Y Combinator, Paul Graham focused on painting. He wanted to see how good he could get at painting if he dedicated his time and effort to it. He spent most of 2014 working on his painting skills, but eventually ran out of steam in November.\n",
+ "\u001b[0m\u001b[1;3;38;2;90;149;237m[documents] A: During his time at Y Combinator (YC), Paul Graham worked on various projects. He initially intended to work on three things: hacking, writing essays, and working on YC. However, as YC grew and he became more excited about it, it started to take up a lot more of his attention. He also worked on writing essays and was responsible for writing all of YC's internal software in Arc.\n",
+ "\u001b[0m"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-14 08:24:08.958\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n",
+ "\u001b[32m2024-02-14 08:24:34.450\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: What did Paul Graham work on before YC?\n",
+ "Response: Before Y Combinator (YC), Paul Graham worked on a startup called Viaweb.\n",
+ "Context Relevance Score: 0.0\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 0.5\n",
+ "\n",
+ "\n",
+ "Question: What did Paul Graham work on after YC?\n",
+ "Response: After leaving Y Combinator, Paul Graham focused on painting. He wanted to see how good he could get at painting if he dedicated his time and effort to it. He spent most of 2014 working on his painting skills, but eventually ran out of steam in November.\n",
+ "Context Relevance Score: 1.0\n",
+ "Factual Accuracy Score: 0.0\n",
+ "Response Completeness Score: 0.0\n",
+ "\n",
+ "\n",
+ "Question: What did Paul Graham work on during YC?\n",
+ "Response: During his time at Y Combinator (YC), Paul Graham worked on various projects. He initially intended to work on three things: hacking, writing essays, and working on YC. However, as YC grew and he became more excited about it, it started to take up a lot more of his attention. He also worked on writing essays and was responsible for writing all of YC's internal software in Arc.\n",
+ "Context Relevance Score: 0.5\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 0.5\n",
+ "\n",
+ "\n",
+ "Question: How was Paul Grahams life different before, during, and after YC?\n",
+ "Sub Query Completeness Score: 1.0\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "# build index and query engine\n",
+ "vector_query_engine = VectorStoreIndex.from_documents(\n",
+ " documents=documents,\n",
+ " use_async=True,\n",
+ ").as_query_engine()\n",
+ "\n",
+ "query_engine_tools = [\n",
+ " QueryEngineTool(\n",
+ " query_engine=vector_query_engine,\n",
+ " metadata=ToolMetadata(\n",
+ " name=\"documents\",\n",
+ " description=\"Paul Graham essay on What I Worked On\",\n",
+ " ),\n",
+ " ),\n",
+ "]\n",
+ "\n",
+ "query_engine = SubQuestionQueryEngine.from_defaults(\n",
+ " query_engine_tools=query_engine_tools,\n",
+ " use_async=True,\n",
+ ")\n",
+ "\n",
+ "response = query_engine.query(\n",
+ " \"How was Paul Grahams life different before, during, and after YC?\"\n",
+ ")"
+ ]
+ },
+ {
+ "attachments": {
+ "image.png": {
+ "image/png": "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ECBAgAABAgQIECBAgAABAgQIECBQLoFqJVTKlbFsCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoe4FqPSMY+LXvNQAQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAKgWRH6PSwK3QpnpYkCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDIBAZ3hKZBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB8ghU01TtB12eByZTAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRCyBZCgyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECZBGoh1JMPBwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMojUKuESnmylSkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQSgZr9oL0HBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUTaCaJmxX6LI9NvkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6G+BaroIut7fBmZPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDJBGp1y6BL9sikS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBALSQ7QjsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQJoFqJVsHXS9TznIlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDPBarp/Ct2he7z18D0CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRLoFav2w26XI9MtgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZDtCp3tCOwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAWgWqlYhF0WR6WPAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGBCo1uvpSfYLEwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRCoDqQpV2hS/G0JEmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQCaQLIS2G7R3gQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBcgkkC6HT3aAthi7XY5MtAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgf4WqFbSddDZYuj+hjB7AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKI1Cr1+0GXZ7HJVMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFKB6gBDti00EQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRCIFkInS6Ctit0KZ6WJAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyASqA3tB2xHa+0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHkEqnW7QZfnacmUAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFMoMqBAAECBAgQIECgOwQ22eQVSy2RAw7Yd6nFEogAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBANwokC6EryYeDAAECBAgQIEBgeQqkC5e/8fWvZJ9Lmkca54D99wkWQy+ppP4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdLJAshK4nHw4CBAgQIECAAIHlJZAuWE4XLqdHuit0upB5vEfaN+4sncaM5+ONpx8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBbhVIFkI7CBAgQIAAAQIElqfA6aefEa644qo8hfEuhi4ugk6DpTGLcfMBnBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoAYFqJVR6YBqmQIAAAQIECBAot8B73rtfw6LlsS6GbrUIOo3pIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCrAtV6NrOBX3t1kuZFgAABAgQIECiDwHgXQ1sEXYanK0cCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGlLZDsCJ0edoVe2rDiESBAgAABAgTGIzDWxdAWQY9HWR8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFeEBjcEboXpmIOBAgQIECAAIHeEOh0MbRF0L3xvM2CAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgfALVtJv9oMeHpxcBAgQIECBAYKIERlsMbRH0RMmLS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUBaByk4771lPF0L//drrypKzPAkQIECAAAECfSPQasFzOvlNNnlFbnDFFVeFdOF0WY77H7i3LKnKkwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoIsFkh2h69lHF+coNQIECBAgQIBA3wq02hm6zIug+/ZBmjgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBSF6hWwsDHUo8sIAECBAgQIECAwFIRaF4MHYOWbSfomLeSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwNIQqKX7QTsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQJoFqmmy6J7SDAAECBAgQIECgOwW+8fWvhE02ecWw5NJr6T0HAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgX4UqKaLoO0J3Y+P3pwJECBAgACBMgg0L4K+4oqrQvoZD4uho4SSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg3wSq9WwZtKXQ/fbgzZcAAQIECBDofoFWi6Df8979QvppMXT3Pz8ZEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITKxANSQ7Qg98TuxAohMgQIAAAQIECHQu0G4RdIxgMXSUUBIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSrQLWSroPOdoXuVwLzJkCAAAECBAh0l8Boi6BjthZDRwklAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAPwokO0Kn+0Fnq6H7cf7mTIAAAQIECBDoKoFOF0HHpC2GjhJKAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBfhOo1uv1ZD/oer/N23wJECBAgAABAl0nMNZF0HECFkNHCSUBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEA/CWQ7Qqd7QjsIECBAgAABAgSWn8B4F0HHjC2GjhJKAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBfhGoVioWQffLwzZPAgQIECBAoDsFNtnkFSH9jMcVV1wV0oXNYz1aLYY+4IB9xxpGewIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKlEKjW62me2S+lSFiSBAgQIECAAIFeE0gXPp/+5TOzaY13EXQ0KS6GTmOefvoZ8ZaSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQE8J1AZmY1fonnqqJkOAAAECBAiUTiAuWI7lkkwgXQyd7jCdLqp2ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhVgcpOO78t2Q66Eq699rpenaN5ESBAgAABAgQIdJHA/Q/c20XZSIUAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCsAtV0EXQIyVpoBwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEoiUK2k66CzxdAlyViaBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAj0vUCtXrcbdN+/BQAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlEygOpBvti10yVKXLgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/SqQLIROF0HbFbpfXwDzJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBGgerAXtB2hC7jw5MzAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgX4VqNbtBt2vz968CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRWoFrazCVOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDfCiQLoSvJh4MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLlEUgWQteTDwcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKI5AshHYQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgXALVSqiUK2PZEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQ9wLVekYw8GvfawAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAUAsmO0OlhV+hSPC1JEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQCQzuCE2DAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC5RGopqnaD7o8D0ymBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEkC2EBkGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEyCdRCqCcfDgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRHoFYJlfJkK1MCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgkAjX7QXsPCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAom0A1Tdiu0GV7bPIlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0N8C1XQRdL2/DcyeAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGSCdTqlkGX7JFJlwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBWkh2hHYQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgTALVSrYOul6mnOVKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECfC1TT+VfsCt3nr4HpEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECiXQK1etxt0uR6ZbAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqA0QVEgQIECAAAECBAgQWCYCdf8ayTJxNggBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoNcFqpWKRdC9/pDNjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECvCVTr9XRK2S+9NjfzIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgRwWqA/OyK3SPPl/TIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCTAslCaLtB9+STNSkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECPSyQLIROd4O2GLqHn7GpESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOg5gWolXQedLYbuubmZEAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECPSpQq9ftBt2jz9a0CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSsQHVgZtm20D07SRMjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC3BJKF0OkiaLtC99ZjNRsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECvS1QHdgL2o7Qvf2YzY4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAbwlU63aD7q0najYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kCg2gdzNEUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHpMIFkIXUk+HAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECiPQLIQup58OAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAegWQhtIMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLlEqhWQqVcGcuWAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG+F6jWM4KBX/teAwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAqUQSHaETg+7QpfiaUmSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFMYHBHaBoECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoj0A1TdV+0OV5YDIlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCEbCE0CAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRJoBZCPflwECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoDwCtUqolCdbmRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCARqNkP2ntAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDZBKppwnaFLttjky8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB/haopoug6/1tYPYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRMoFa3DLpkj0y6BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUQrIjtIMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlEqhWsnXQ9TLlLFcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpcINkROt0T2q7Qff4emD4BAgQIECBAgACBvhCohM7+J9BK8n+MTp26QpgyeUqoTZ4cJlUnhWq12hdGJkmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFuEVi8eHFYtHhRWPh//xee/r+nw4IF80O93tnPfevWxnbLY5zQPGqdvhATmoXgBAgQIECAAAECBAgQ6AKBWq0Wpk9bMUybNr0LspECAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+lsg3bAq/Zxcm5z/HPepp+aFeU89GRYuXNjfOGafCWQ7Qqd7QjsIECBAgAABAgQIECDQzwIrzVg5TJ++Yj8TmDsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6XiDd2Cr9nDfvyfD4E//q+nwlOLECtfSffO5wl/CJzUR0AgQIECBAgAABAgQILAeBdBfolVdeJfs/iJfD8IYkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXEIpBtdTZ4yJfzrX4/aHXocfr3SpTqwCLreK/MxDwIECBAgQIAAAQIECHQsMHnylDBzlVkWQXcspiEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6R2BybfLAz3yTn/06+lOgOjDtSn/O3qwJECBAgAABAgQIEOhbgXQn6FWeMTNUq4N/LepbCRMnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAeQXSn/mmP/tNfwbs6D+B5Cf+doPuv8duxgQIECBAgAABAgQIrLzyKhZBew0IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQAwLpYuj0Z8CO/hNIFkKnu0FbDN1/j96MCRAgQIAAAQIECPSvwEozVg7pP5HkIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHeEEh/Bpz+LNjRXwLVSroOOlsM3V8TN1sCBAgQIECAAAECBPpTIP3nkKZPX7E/J2/WBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6GGB9GfB6c+EHf0jUK3X092g7QjdP4/cTAkQIECAAAECBAj0t8D0aRZB9/cbYPYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSygJ8J9/LTHT636sClbFvo4XddIUCAAAECBAgQIECAQA8JVJJ/EmfatOk9NCNTIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGiQPoz4fRnw47+EEgWQqcP247Q/fG4zZIAAQIECBAgQIBAfwtMnbpCfwOYPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpAwM+G++AhD06xOrDm3cr3/nnkZkqAAAECBAgQIECgfwWmTJ7Sv5M3cwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSJgJ8N98mDTqZZrdsNun+etpkSIECAAAECBAgQ6HOB2uTJfS5g+gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOh9AT8b7v1nHGdYjSdKAgQIECBAgAABAgQI9LrApOqkXp+i+REgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDvBfxsuH9egWQhdCX5cBAgQIAAAQIECBAgQKD3BapV/y9o7z9lMyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoN8F/Gy4f96AZBVAPflwECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoDwCtkMrz7OSKQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECgwLVSqjAIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKkEqvUs3YFfS5W5ZAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6FuBZEfo9LArdN++ASZOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoIQCgztClzBzKRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LcC1XTm9oPu2+dv4gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRKKZAthC5l5pImQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBvBWoh1JMPBwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMojUKuESnmylSkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQSgZr9oL0HBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUTaCaJmxX6LI9NvkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6G+BWroIut7fBmZPgAABAgQIECBAgACB0gm86Y2vD9v8x5bhhf/2b2GNNVbrqvzvv//BcMONN4Zf/Pzy8JOfXtpVuUmGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHpHoFa3DLp3nqaZECBAgAABAgQIECDQ8wIzZ64STjj+6LDVVv/etXNdf/31Qvq5/XavC294w3bh40cfH+bOfbRr85UYAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRToBaSHaEdBAgQIECAAAECBAgQIFAOgZNO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OOKQMHPmzCzVmTNXCQce+P5w/PEnjZp6urj5zDO+FDbd9JV528ce+1c462tnh79c9ddww403hgULns4WXK+//vrh5S9/STjowP3DM56xcjbeaV86JZzwiU+H73znwrx/u5N0EfJ55349pDs+x+Pee+8LX/v6N8ONN94cbr75lvDEE09mt1ZbbXbYcce3hPe9911J+xnZtQP23ydMnjw5nHrqabH7mMoNN9wgnPHVL4ZVVnlG3u/LXzkrnHbaV/O6EwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEyiOQbOVUTz4cBAgQIECAAAECBAgQIFBWge9//4fhySfnLff0582bF87+5rdKtwg6hZs1a9UGv0centtQX16VNddYPeyzz3uy4b/1rQvCm9+ya0h3L04XQafH4sWLw5133h1+8tNLw+57vCtbTJzdSH7ZdZcdQ7rweLTjHe/Yo2ER9CWXXBbessNu4RvfODdc879/yxZBpzHSxdA33XRzNn56f86cX+ahD/7QgcMM85uDJ5VKJRx7zFENi6DTvHfaec8s5tVXX5Mvgk67pLtQn3nmN8Je73l/ePjhR7Iod9/9j3DZZXMGI46teOlLXxy+/rXT80XQ9Xo9nHjiyRZBj41RawIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJdJZDsCO0gQIAAAQIECBAgQIAAgTILnHfeBSH9dIxfYNhC6LndsRB60qRJ2aQuvviScNKnPjviBNOdlU866eRw9tlnZO3SnZ63337bcMst7Xc7XmfttcIHDto/j3v2N88Ln/nMqXm93ckjjzwSDvnwEeG73zk3vPCFL8gWNx988EHhYx87rl2XsNtuO4d0MXI8Pve5L2U7Qcd6u/KGG24K73zX3mGvvf4znHLKF5PF0k+0a9r2+qtftUn44hc/m36jkt0AAEAASURBVO+cvnDhwnDkUceGn/70Z237uEGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQPcLVCuh0v1ZypAAAQIECBAgQIAAAQIECCxDgXS34G450t2QP5nsXNzJceVVV4fbb78jb7reeuvm561Ojj76o/ni4Guu+Vv4/OdPa9Ws5bV0N+pjj/tkvgP4W3d4U3jRizZs2Xa11WaHQw4+ML+X7iz9jbPPzeujndx1193h+ONPGtci6C222DzZ9fnz+TzT3bQPPOgQi6BHQ3efAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQAkEqgM/2u2eH/CWwEyKBAgQIECAAAECBAgQINBjAuli4+Ixa9VVi9Xlev7fF/80PP744x3nMOfnv8rbPnOEhdAbbbRBeO1rN8vbHpXs5pzulDyW4+9/vy5ceeVfsi6VSiX8xzZbteye7gY9Y8aM/N6JycLudCH1RB/bb/e68IVTTw5Tp07JhnrssX+F9+19QPjtb/8w0UOLT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAMhCopftB1+0KvQyoDUGAAAECBAgQIECAAIGlJ/C7384J3bRrcauZpQtjy3I0L4ReddbMrkn90kv/Z0y53H///Xn79dZbJz9vPtni31+bX7r33vvCHXfcmdfHcnLLrbeFTTd9Zdbluc97Tsuur9nsVfn1a6+9PqQ7V0/08da3vjmccPzHQ7VazYZ64IEHw77vPzDccsttEz20+AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILCOBmr2gl5G0YQgQIECAAAECBAgQILAUBaZOnboUown14EMPNSBsuMELG+rLs3LbbXeMafgHHxyayworrNC27yte+fL83lVLsDD51ltvz+M89znDF0KnC5E33nijvM0tt9yan0/UyR577Bo+dtThIS7Gv+POu8K++x4Y7rnn3okaUlwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJaDQC0dszx7dC0HIUMSIECAAAECBAgQIECgCwUeffSxUuwIvcoqz+hCveEppQtk77vv/rDmmmtkN1/xipeHSZMmhUWLFg1vvAyvzJ8/P8ybN29MIzbvbt2u82qzZ+e33vCG7cLrXrd1Xh/LSeoUj3QH6qlTp4QFC56Ol8LMmatklvHCrbcNLZyO15ZmuduuO4WXvvTFecjbkvHevdf7w9y5c/NrTggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6A2BbCF0b0zFLAgQIECAAAECBAgQINA/Aq/b9s0hXSTbzUe6G/GVV/ymm1NsyO3Xv/5t2H33XbJrK644PbzsZS8JV175l4Y2y7qSLngf69Hp4u1VV10lD50uZi4uaM5vjPEk3f15drLA+p//vCfvmS6ELh533H5nsbrUz+fOfTQsXrw4pLmkxzrrrBNetNEG4Te//f1SH0tAAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSWr0CyELqefDgIECBAgAABAgQIECBAgEB/C1z+69/lC6FTif98x9uW+0LoRcmC3ok65s9fkIe+7vobwi0335rXl+Rk3rynGroXx0lvrLzySg33l3Zlzs9/GX56yc/Cpz91QrYYOt2h+tRTTw4HH3JEuPzy8izMX9ou4hEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoRYFaJVR6cV7mRIAAAQIECBAgQIAAgb4SqNVqIf2cqGPhwoUh/ezl4w9/+FO4//4HwhprrJ5Nc5tttgzPetb64Y47JnYH4+Vl+vDDj4S11lozG/62W28PRx517ISkMnfu3Ia4z3nOsxvqE1G55JLLwqRkR+gTTzwuWww9ZcqU8PnPfTp8+MMfDb/45eUTMaSYBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsB4Ga/aCXg7ohCRAgQIAAAQIECBAgsBQFdt99l3DYoR8M06ZNW4pRG0MtWLAgnPqF08M555zfeKOHak8//XT48lfODMcec1Q2q2qykPYjHzkkHHDAh0K93nv/ltLtt98RXvSiDbO5brrpKyfsST755LzwyCOPhFVXXTUb47nPnfiF0OlAF//k0lCdNCl84oSjs8XQkydPDqec8qlw6GFHhjlzfjlh8xWYAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFlJ1BNh7Ir9LIDNxIBAgQIECBAgAABAgSWtsCee+42oYug03ynTp0a3r7n7ks79a6L94Mf/He4886787z+ffPXhHe98+15fWmczJgxI991emnEG2+MX//md3nX1VdfLUzkTs1/+OOf87E23nijsMIKK+T1iTz58Y9/Eo4++oR8IXu6a/pnP3NS2H67103ksGITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILCMBKrpIuje29dqGekZhgABAgQIECBAgAABAl0g8P3v/zCku+5O5PHUU0+F733vBxM5RFfEXrRoUTjhhJPC4sWL83w+9KH/F7bc8t/z+pKcTEp2KP5csivxDy76dthuu/9YklBL3Pe3v/1DeOKJJ/I4hx32ofx8LCdTp04JlUplxC6/+Pnl+f10Z+h993lPXp/okx/+6OJwzLGfzBdDp8/g5JM/Gd7whu0memjxCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYYIFa3TLoCSYWngABAgQIECBAgAABAktH4OGHHwmzZq2aBZs9e1b4xz/+mZ2fd94FIf3stiPNMR4PPfRwPO368o9/uiJ85rOnhsMPOzjLdfLkyeELp54cjk0W0/7gh/+9RPkf+dFDw2abvSqLccpnPxW+/JWzwmmnfXWJYo638+OPPx5O/syp4bhjj8pCpLtf777bzuG737uo45DpAuiTTz4xLPy/heHIo44N8+fPb9n3Z5fNCXv8eZew6aavzO7vtdd/hot+8OP8HW7Zqeli+j6N9z266KIfhUnVarI79EezRdvV5PzTnzohpIuiL774kqaRVAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKItANSQ7Qg98liVleRIgQIAAAQIECBAgQKA/BW644cZ84m984/b5ebeeFHO84YabujXNlnmdc875DYue0wWzJ5xwdPjEJ47JF6O37Njm4syZq4RPf/qEsMceu+YtHnvsX+Eny3kRbrqb+J+Shd/xSHeF3mqrzna/njJlSjj+uI+FbbbeMtvd+txzzgozZ86MoYaVxx1/Ynj66aez62nfz3/uv8Kz1n/msHatLnzgoP3Dzy79Udh557e2ut3Rte9d+IPwiU/+V942XQx94iePDW9965vza04IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECiXQHXgX6+tlytr2RIgQIAAAQIECBAgQKAPBX7z29/nsz5g/33CXu/+z7Dyyivn17rlZMaMFcM737ln2H+/vfOULv/1b/LzspwcffQJ4cwzv9GQ7o7JotmfXHxRSP07WcQ7Y8aMsMsuO4Yf/+i74U1vfH0eK10QfNAHPhzuuPOu/NryOjn2uBPznZynTZsWvvTFU7IFwiuttFLblF7+8peGdOHzTjvtkLe5/fY7wmOPPZbXm0/uvPPu8NUzvp5ffuELXxAuvPBb2S7U+cWmk3Q37o9/7CNh333fG6ZOnZotvE4Xa4/3+M53Lgwnnnhy3j1dDH3C8R9fogXWeTAnBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsc4FaOmIl2xV6mY9tQAIECBAgQIAAAQIECBAYg8D55383vOEN24WXvHjjUKvVwqGHfjD7nD9/fsdR0gW4//u/14bPnvKFcPPNt4zY7/nPf1748CEfCC9+8UYh3cG30yNdsFoZ+L9usy5XXHFVuOCCCzvt3jXt6vV6OPULp4cbb7o5fCLZDXqFFVbIcksXeh9wwL7ZZ2p4xZV/CQ8+8GB48MGHwlNPzQ8zV10l2TV6VvKcXhQ23fSV2bMqTuquu+4OHz3ymHDNNX8rXl5u53ff/Y9w8MEfyXa8nj17VpbHDju8KWyzzVbh79deF6679vpwU2IwfcUVw9prrxles9mrwoYbbtCQ75w5v8zmtHjx4obrzZWvfe2bYY01Vg+77bpT9o6kpkcf/dGw9957hRtvvDl7J2+99fYwffq08JznPDu8+c2vb9hlOjW+6KIfNYcdU/38b383VJIF0B894sNZv3Qx9HHHHhUmJWW6a7SDAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHyCNTSH+w6CBAgQIAAAQIECBAgQKD7BdJFpocf/rHw+c/9V9hgg3/LE44LdPMLI5ykbTfffLPwspe9JOy3/wfC1Vdf07J1ev8rX/5CWHHF6S3vd3rx97//YzjyqGNDmf/ueeml/xP+8pe/hv2TXaB3TnZAnjRpUj79dLF4+tnpkS4I/8xnT813YO6030S3S3cb33GnPcJRRx6eLbZPx0sXfL/6VZtkn+3Gf+qpp8Jpp50Rzjn3/DDaIug0xsKFC8Pxx58UUtPjj/tYWHfddbLQa6+9VrLIeq2w9dZbtBsqe1fTdylduL2kx7e+dUHyHKvh8MMOzkKlC/fTBdmTapNKuWh/ST30J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBWgWxH6HRPaAcBAgQIECBAgAABAgQIdL/AP/95T9jz7XuFvd+3V9jmP7YMz3/ec8PkyZPHnHi6wDld6NxqMXTzIugFCxaEefOe6niMRx99NNxww03h8st/Ey7+yaUd9+vmhg8kOz4fd9yJ4eyzzw3vftc7wlZbbRFWX321jlJ++OFHEodLwg9/8N/h5ltu7ajP8mj06KOPhcMOPypc9j8/z3a7Tt+tdscjjzwS5vz8V+Gss84O99xzb7tmba//+c9XJguv3xYOOmi/sNOObwkrr7xy27bXXXd9OPe8C8LFF1+yVBfUn3PO+SHdDfrQD38wGztdDP2xoz6S7Aw9KXzr/O+0zccNAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6R6Cy8y57ZhtzXZv8c7cOAgQIECBAgAABAhMtcN8D9030EOITaCuw5uprtr1X1hu1Wi2stNKMjtN/9rOfFU770ilJn5WyPk8+Oa9hMXTzIuh0keu799o33Huv37vNyBtu8MLw2mR37XXXWTvMnj0rzJo1K0xdYWq4/74Hwj333puZ3ZgsCP9dsiv2okWLmrt3fX2dZIfmV7zy5WG12bPDzFVXCU88/mR44MEHw5133BWu/us1He0A3ckk08XIG79oo7DBhv8WVnnGKmGllWeExx77V7bAOt2xPF387yBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwVgHrE8YqVs72lZ123rMeQj1ce+315ZyBrAkQIECAAAECBEol4C8apXpcPZdsLy6EHs9D2mijDcJZZ542bDF0GivdJTrdLTo90l2Q3/XufcI//vHPrO4XAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlEXA+oSyPKkly3NwIXRIFkLbEXrJKPUmQIAAAQIECBDoRMBfNDpR0maiBCyEHpJttRg6vRsXQT/00MNhr2Qn6DvuvGuokzMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiURMD6hJI8qCVMs5ruBu0gQIAAAQIECBAgQIAAgf4SSP9VoL33+X/h8ccfzyaeLoCOi6Dnzp0b3rf3/hZB99crYbYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAonUCyELqSJG0xdOmenIQJECBAgAABAgQIECCwhALNi6HTcI899q9kEfT/C7feevsSRtedAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMrEC1kq6DzhZDT+xAohMgQIAAAQIECBAgQIBA9wmki6HThc9/+9u12ec+yS7RN910c/clKiMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAkUKvX7QbdZKJKgAABAgQIECBAgACBvhK47rrrw55v36uv5myyBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFB+gerAFLJtocs/GzMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAvBJKF0OkiaLtC98XTNkkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECPSJQHdgL2o7QPfI8TYMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAXwhU63aD7osHbZIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEekmg2kuTMRcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpDIFkIXUk+HAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECiPQLIQup58OAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAegWQhtIMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLlEqhWQqVcGcuWAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG+F6jWM4KBX/teAwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAqUQSHaETg+7QpfiaUmSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFMYHBHaBoECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoj0A1TdV+0OV5YDIlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCEbCE0CAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRJoBZCPflwECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoDwCtUqolCdbmRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCARqNkP2ntAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDZBKppwnaFLttjky8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB/haopoug6/1tYPYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRMoFa3DLpkj0y6BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUQrIjtIMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlEqhWsnXQ9TLlLFcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpcoJrOv2JX6D5/DUyfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLkEavW63aDL9chkS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAtiN0uie0gwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmURqFUqldALm0Kvscbq4SUv2Thzv/POu8ONN9406jPYcsvNw9SpU8PChQvDr371m7B48eJR+2hAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDyF6gNLIKuL/9MljCD5z//uWGzzV6VRdl44406Wgi9xRabh2p1YFPsO++8K9x66+1LmIXuBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAj8f/buAz6K4osD+LtLb4SE3gm9I0ix0ERRUToonT+ICgiIioJ0EQUBpSgdpQkIUlQURVFEBRVpgvTeew+kJ/d/by577NW0S/+Nn3hbZndnvnvAZvbtWwhAAAIQgAAEIAABCEAAAhCAAAQgAIGMEDBHAZMhI46FY0AAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQcIsAB0Jn/2zQbpHATiAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAIFsI8CB0JIN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QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqlOgNqI++9IIECBAgAABAgQIECBAgACBmUFg1KhRP2gZo0eP+UHnO3n6CyzQvqHi94bdusaN119TXHDo0BfitdfeKLZ1CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYuEBWEVojQIAAAQIECBAgQIAAAQIEZhaBPfb4ccwx5xxTtZzx48fH8G9HTNW5TpoxAu3azRuvvvx81NfXR03NhP9G13fffRc/3u/AGbMIVyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwiwjU1USNitCzyMN0GwQIECBAgAABAgQIECBQ/QKjx46N0f8dXv034g6aFdh5x+3z8fIQ9OjRo6NHry3i/Q8+bPYcgwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINC9QV5+PN/xs/hCjBAgQIECAAAECBAgQIECAAAEC00Lg9TfeiGef/Vd06NAhXn3t9bj55lvjtjvuiFGjRk+L6c1BgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFUJZBWhI6sIPeE/xdqq7t7NEiBAgAABAgQIECBAgAABAgRmoMDAQY/F5lttNwOv6FIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZl2BWrWgZ92H684IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzKoCtenG1IOeVR+v+yJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwawrkQehZ89bcFQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECs6pAXUR99qURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegTqaqKmelZrpQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgE6tSD9j4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDaBGrTglWFrrbHZr0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEWrdAbQpB17duA3dPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECVCdTVi0FX2SOzXAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE6iKrCK0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgmgRqa/IcdH01rdlaCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBo5QJ1y3TqlBPUy0K38reC2ydAgAABAgQIzBiBjz/9eMZcyFUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmaYHa8VkCOn1pBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqBaBurfeeitba028+OJL1bJm6yRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoJUL1NbU1LRyArdPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEC1CdTW16cl5z+qbe3WS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAKxWobbhvVaFb6fN32wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqUiALQqsGXZVPzqIJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItGKBLAidqkELQ7fi94BbJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFB1ArU1KQedh6Grbu0WTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAKxWoq69XDbqVPnu3TYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBqBWobVp6Xha7am7BwAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRal0AWhE4haFWhW9djd7cECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqlugtqEWtIrQ1f0YrZ4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA6xKorVcNunU9cXdLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYBYQqJ0F7sEtECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQygSyIHRN9qURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegSyIHR99qURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegSyILRGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6hKorYma6lqx1RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0OoFautzgoafrV4DAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVSGQVYROTVXoqnhaFkmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQC7wfUVoGgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgegdq0VPWgq+eBWSkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhF5EBoEAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqkmgLqI++9IIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQPQJ1NVFTPau1UgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQCdepBex8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBtArVpwapCV9tjs14CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrVugLoWg61u3gbsnQIAAAQIECBAgQKCVCPi3n1byoN0mAQIECBAgQIAAAQIECBAgQIAAAQKznEB9lm/RCBAgQIAAAQIECDQWqKsXg25sYpsAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZlcoC78xdxM/ogsjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBxgK1Nfl/OaS+8bhtAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzLQCtWllNapCz7QPyMIIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGgqUFdfrxp0UxYjBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMzAJ5RehUE1ojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAtQjU1tQIQVfLw7JOAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaBGrr61Mn/8GEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVSFQ27BKVaGr4mlZJAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECuUAWhFYN2nuBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHqEsiC0KkatDB0dT02qyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQugVqa1IOOg9Dt24Id0+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQPUI1NXXqwZdPY/LSgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSAK1DQx5WWgiBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqAqBLAidQtCqQlfF07JIAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRygbqGGPSsVRG6ffv2scrKK8Uiiywcbdq0ma6Pety4cfHxx5/EC8NejK+++mq6XsvkBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0CNTV59WgZ50gdApBb9q753QPQJfeQClovfjii+Wh6wcefFgYugTjlQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMB0FKibjnP/T6ZOlaBTOPmzzz+Pl156JT777PPpuo4OHRaKLl06R4eFFsqrUA8cNHi6Xs/kBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEZEHomuxr1mmLLLJwfjMzIgSdLlQKWnfYaKG8KvTMLLnkkktEx44d8iW+99778cknn87My7U2AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAi0KZEHo+uxr1olCp2rQqZUCyi3e+TTcUbpW6drTcOppOtXpp50Uq6++aj7nnXfeE0f98fhpOv/MPlmnTkvHr3/1ixgzdkz87bwL4oMPP5rZlzzd1te9+wbxk/1/HC8MezEuvPDiGDly5HS7VmufeP/994kem2wUt956R9x6252tncP9EyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBaSaQBaG1ahNYcMEFYtNNe8WGG3aNFTuvkAXZI14c9lI8/sRT8dBDj8zQEHg12V1+2UWR7FJbdZWVo8/WO1XT8qfZWtu1axcXXnBe1NTUxPrrrxtp+6STTptm85togsBuu+0cvz/80HxgnXXWijfefCuGDh024QA9AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYKoF6mqyatApSKtVh0CqLnv4Yb/JQ6zlK158sUVjs816xXHHHhl33HF3HHPsSTF+/PjyQ1p9f4EF2hcGi2Ves2LbdZcdo+3ss8d7774XAwYObvYW18iqgqcQdKmtvdYapa7XaSzQNQual7devXrMNEHo9u3njz59tsyX98wzz8bLL79avlR9AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAw0wvUNoSgRaFn+ieVLfCMM07Jq8uWh1ibW/e22/aJRx6+J5ZdtlNzu1vt2DPP/Ku498GDHyv6s1LnhBOOjj8edXgcffQRLd5WCkh/++2IYn/f624s+jrTVuCyy6+K+vqG36/jxo2Lq6/uO20v8ANm67ZB1/y9kt4ve+252w+YyakECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOB/I5BVhI6sIvSE6rD/m2W46qQEts4qt26zdUP11nTs559/EWef87cYmIVaF1xwgejZY5PYfIvesVKXFfOp2rdvH/PPN/+kpm1V+/f/yUGx4oorZJWy6+PVV1+b5e59/vnnm+x72qBbz1h33bXjzTffis8++3yyz3PglAkMHToskvUaa6wWTz75TIwePXrKJpiOR3fouNB0nN3UBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBg+gvUqQU9/ZGnxRV++rP9i2m+/PLL2HSzbWLs2LH52Ndf/yfeeOOtuPiSy2OH7beJ4477Y5z/9wvjmWcnVEAuTm7lnZdffnWWFVh00UUm+97Gjx8fTzzx1GQf78CpFxg+/NsYNGjmq0DesUOHqb8pZxIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZlAoC6tQT3omeBJTGIJiyzcsTji7rvvK0LQxeD3nVtvuzPS96TauHHjKg5ZbbVVYvXVV41///v5GDbspaxq8viK/RPbWH65ZWOVVVeOueeeK6u0/Ho899zzMWrUzFP5dmJrn9x9P8Rn4ezZbbRRtxg7ZmwMeeyJ+PTTzyb3svlxiy+2aKyyysqRgs4p3J6qDDfXFl1k8oPQzZ0/PcZmn71tVg159ejcefl4/70P8vsfOXLkNL1U+/bzx6a9e8Y33/w3Bg4aEiNGjJji+Tt0WCi6d+8WNTU1WWh5SLPPqK6uLtL7YMXOK8SYMWPixZdezj8rU3yxSZyw0kpdYtXs85Sc0lq++OLLSZxRuTtVPU9rnGuuueLRAYPigw8+rDzg+60FF1qg2fGWBmtra6NTp6Uyg1Wjbdu2MXjwY/H++x+0dLhxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAw3QXyIPR0v4oL/GCBFLwstWWWWbrUnerXUaNHR8eOHeK8c/8SXbp0jhTyLLUUgv7TaX+J66+/qTTU7Oshh/w89tt37zwAXX5AXm34yafjD384Jr766uvyXXHtNZflIc80+NBDj8ahvz2iYn/a2H33XeLYY/6Qj48aNSrWWXejJsekgceGPBTzzDNPHtru0XPLJtdqfNI///n/ouv66+bDN950S5x88ukVh5TvX79rj2zuuePv558dK6yw/BT7bLttn/jVLw+KFIIut00XTCHxI444Oh56+NGK6zfeSA4H/+KnsdBCC1bsqq+vj1deeS0OPuTQ+Oyzz+OSiy+INddcPWabbbbiuB/9aPEY+vyTxfaIEd/F+l03KbYHDXwg5puvXb590C9+E0OGPB5b99kyzjjj5HwsVRtfd72NWwzcp4OefOLRmHPOOSOtZ5dd98lC8K/l56YfKQB9xumnRO/ePSIFaMtbqmCe1t5SoLv82PJ+ac1fffVVbLzJFvGrXx0UP95nrybvv2+++Sab/7dZIH9o+el5f8EFF4hHHr437z/yyMD49W8Oj7PPOj222GLT4tjR2WdjrbU3LLZL99Kz58bNPstbb709Tjn1zOL48k4KIz/x+CP5UPpcrL5G1/LdFf30efrJ/vvkpuU70nr+cta50bfvjeXDFf1knD4z2223dcwxxxzFvqOPPiJ/hg888HD84chj88/Ko4/0j3bt5q24l5122j523HG74rznn38h9t7ngGI7vQ9//vMDKt5jaWf6g4pUWfz3RxyTBdG/KY7XIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECM0IgSyjW518z4mKuMfUCzz8/oQrw+lmYd7311pn6ybIzO2fh3v733paHkhsHdVOo8rhjj8yDsc1dJFWDvfGGq+OQg3/WJISajk/nb9B1vXjg/rvyCrrlc6SAZaq6m77XWWet8l1Fv0+fzYtjUqizueOWXHKJmHfeefPjUsC0ceC6mKysM1cW2i1dO/Ubt/L9e+6xa+6TqvNOiU+qGJyCpqefdlIsvvhiTc5N10zB2r/97axI4dPmWvJL4eb0DBqHoNPx6R5S1d8H7r8zll22U6TQc3omaby8le41vbZtOyEknY5JayjtL91f//seyEPNaTyFqnfeeYfy6Sr6vXpuklccTscm//IQdKpg/dCD98Rmm/VqEoJOk8w//3x5IH7PPXetmHNSG6U1t2/fPn82vzjop82+/9q1axdXX3VJ7LD9Nk2mTLal+04Vto8//o8VIeh0wocfflSct/RSS+bB6XQvJadiZ9ZJa0qB9f79b8/CxQ3B8vL9qV+6Xps2bRrvyrfTvOkPBNLnKQXLG7f0bI85+g9xztlnNN6Vb6c/aHjwgbtit912rghBlw5O82+55WbZfdyTD6UK2un5pnWVt9I60+ucc04IU6f38i+zUH950L50Xrqnbt26xsAB9+Xv99K4VwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMCMEarNIav41Iy7mGlMvcPc9/YuTU/gwBWVTQLGl8GVxcAud1VdfNQ82pmq+Kfh5zz33xUsvvVJx9KGHHlKxXdq48IJz8yrSpe3//OebuPOue+Pqq6+Ll19+tTSch0Qvu/SivGpzafDGm/qVunlF4lTRuXFbqcuKFUM77LBtxXba2D6rfFtqr7/+Zqk7zV5/97tfTZVPCpGmqsOl9tFHH+eVny+59Iq8AnIKDZfa7w//Talb8frXc86MFHYvtXTOa6+9HldeeW0MHDSkqNL8xRdfxltvvRO33XZn/uy+++670ikxZsyYfCw90/T9ZFahe1ItVYEur9K8y0SC0HvvvXsx3VNPP1v0U9C4b9/Li2rT6f2VKl+feNKf4vy//198/PEn+bHJ6cg/HNZscLeYrIVOOjeFzFMbMWJEDBr0WNxww80V7710zIknHpMHxFuYJqv0vVzstutO+e6RI0fGY48/mVeRvu32u/KxPKB87WV54L40x9vvvBvXXXdT3HLL7fHpp5+VhiOFv6+68uJie0o6553754o/GEjP66yzzovTzzg7nn3238VUm2/eO/8Dg2Ig6yTv66+7Mjp0WKgYThXHn3rqmbj8iqvjuecnVMV++ul/5cc8/MiA/D1R/l5Mn+HSeyW9Dh78eH5sck7VzUst3XN6Hx577Elxxx135++ztO/dd9+LDz74sHSYVwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMEME6lI9aG3mF7j77v7RZ6stokePjfLFpqBnCihuvfWW8WQWejwzC02+9vobU3QjKUS65177xxtvvFWcd8rJx8WOO26Xby+WhTtTxdsUrCy1VBm3PKT7wgsvxl57/ySvClw6Zp999shDrmmN6fy/n3927P+Tg/Ld6VopdJoqPae27bZbZcHZG/N++pGqGzeuitu1LBRcOnCjjTcsdePhLGg7PdrU+Dz33NB44omnIlUbPuqPx0eqgF3eUtXe4487Kh9KIfaNN+4eAwYMKg7p3n2D6N27R7E9fPi30at3nzzwWxpModfTTz85jjnmxNz9ggv/Gen7978/NPbfb5/8sE8++TR23a2hXzpvcl4vu/yqOPevf84P7dx5+bwKcgpIN25rrbVGMXTpJVcU/RNPODoWWKAhCD5u3LjY58cHVoSrL7rokrjh+iujVGk7Vb0+JgvVTk1LAfDG56b7Tw6ppSDzr3/1izj7nL81O30KEaeWntG++/2sCJiXDm78hwaXX351nHX2eaXd+ev5fzs7evbcOO+n6tzp+imAPLktPe9NNmn4TKdzzvzzOXHVVX2L06+55rr8Hg466MB87KSTjo3Nt2j4fKaB5F0egk7B5733PqA4P3XWXmvNOPDAfeOwwxved4ceekS+/5Z+fWP55ZfL+w8++HAcf8Kpeb/8x85lVctHjx4dm262TfFZvzXzP+XUM+OII34bf/0LpHhKAABAAElEQVTr38tP0ydAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjNEIE8CpprQ2swv8KtfHxYPPvhIxUJTmDMFhW+55bq4+65+UR5QrTiw0cbnn3+RhRq3rQhBp0NSEDNV8S21ZZbpVOrmr7846KfFdgpINw5Bp52pMnSqOltqa6+9ZhF8TmMpPF1qm/buWermrzuXVSFO1XdTW3jhjk0q+y637DL5vvTj5n63Ff1p1Zlan3T9A396SPTZeqcmIei0L1Uu/uqrr1M3b2uuuXqpm7/+5tcHF9spSLz3Pj+pCEGnnZ999nn8NLtGCjtP6/bAAw9HCrymlt5b5c+jdK1ePTfJq2Wn7VSFOlVSLrWtt96q1I2/nHVuRQi6tON3hzUEctN2jx4NIeLSvsl9/fNf/tokBJ3OTSHkN9+cEOzfqSzI29zcqap2Cms3F/YuD6S/+OJLTULQab5f/+bwSHOU2r777lXqTtZr+fNOVbvLQ9ClCVIl7RSIT630xwmlfeXeX375Zey3389Lu4rXZ579Vxzyy98V21PSmWfeCRXbU9Xo8irSaZ70xwInnXRafPPNN1MyrWMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMA0EahNIegJsddpMqdJpqPAob89InbZde947bXXm1xlySWXiCuv+Gdcc/WleSXmJgeUDTyehVebCy+mwOXo0WOKI5fpVBmEXmGFhgqy6YCrr+nbJBhZOvGUU84oAtWpMvSuu+5Y2hX33Ht/0V955ZWKfur02KR7vp1C1vf1fyDvp/O32GLTvJ9+dOq0dBGM/vbbEdMlEDy1Pml9E2tLL7VkHh4uHbNMp6VL3fy1S5cVi+0777ynSVC92DkdO4MHP17MvktZML00uPfeu5e6MWDg4KKfqhunCuCppTB1CsQ31z744MPivTfPPHM3d8gkx95+uyEk39yBV151bTE8b1mQtxgs65xy6hnNvodT5fW2bRvuJR1+wol/Kjursnv+3y8sBjp27BDt289fbE+qU/68Tz759BYPHzp0QmXxFVfsnB9X7p0Gjs4qhDcX6G5x0snYcdNNtxZHpcrT5537lwqXYqcOAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4HwjU1YtB/w/Yf9glX3751dhxpz0jhWqPPOrw2LBb17x6b2nW1VdfNW668ZrYdrtdS0NT9Jqq/JYCrXOXBVVTZeYUSi6122+/q9Rt8pqqFn/zzX9jvvna5fuWX27Z4pg77rg7jjv2yHw7BWHbt2+fVUn+Kt/u1Gnp/PXVV1+Lu+6+N37+8wPy7W223jLSealtt93W+Wv68cILw4r+jOq05NP4+qmi8g47bBubbdYrVsoCzgss0L7CLx1f8kn9FKIt9x0y5Ik0PMPb/110cfTs2VCpuXPn5aOurq4iYFtedfyiiy4t1lceak/3fvxxEyo/Fwd935ltttnyXps2bSK9B0oVjxsfNzXbjz/+VHFaWsdcc83VpKp2OiBVPk8VsJtrnTuvUAyPGTMmXnrplWK7cef22++OE084phheYYXl44knJqyh2NGo0/jzNLFq0osvvlhx9iqrrBzPPTc0VlqpSzGWOuX3XbHjB2ykz2GqNL3AAgvks6Qq2U8+8Wg8+uigSFW5U6hdI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/yuBusgqQmvVKfD2O+/GwQcfmgVJ54njjjsy+my1RRGk7dRp6TjpxGMmWsm2pbseP35csat+/Piiv1xZmDkNvvXWO8W+5jpffPFFEfRddLFFi0NGjBgRKSidKsymtv32W8fll18dKWCbQrepPfLowLwacgqhptDsaqutko+nHxt171b07y2rLl0MTudOSz6ly6bw7QnH/zG23bbPFFXPXX75CdW201wDBw0pTTlDX4cNeymv2NyuXbs8YL9zVhX6+utvytfQq+cm+fNIG19//Z9IQdlSW2KJH5W6+XPcbbedi+2JdVLIdloGoT/88KOKyy233DLx/PMTKipX7Gxho/xeUqB/Yi1Vv06VmEvv3WWWWXqygtCNP0+T7fV9xelUAb7Ukt+0rgZdmrvP1jvHdX0vj6WXXiofSveZAtHp+7XX34gjjzyu4n1QOs8rAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCY3gK1NXkOun56X8f801Fg+PDheRhx730OiBQcLrUNN9yg1J0mr6l6b3kbXxaSLh8v9ceNmxCobpOFg8vb448/WWymcG1qO2y/TTF266135P033ngrf5133nmL4HQKmpbaXXf3L3VnitdUSfuB+++MFB5u27ZtvqbkkCoEn3vu/4vddt83q6Y7sNm1Nvb95ptvmj1uRgz2v+/B4jK7ZPdSanvvvXupG/fd90DRT526Ru+P9F6cnO8vv2yoBl4x2Q/YSH8YUN5GjhxVvjlZ/fJ7mdT7PE2YqkuXWuPnWBpv/Nr4uMmxSsd8/PEn+VTlaxw5cmTj6afZdvr9ss22u8TxJ5xaXLs0ear0ftONV8fuu+9SGvJKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmmEBefrdGVegZBj49L5Sq3vbte2Psu+9e+WU6duwwTS/35psNoeTSpKki7bvvvlfabPK60EINFZ/Tjo8++rhi/839bssrJqfBzp1XyPet33W9/PXbb0fEJ598mvcfevjRWHHFhv077LBt9O//QBEw/vzzLyJVl56Z2ll/OT3K3S+59Io4//z/q6jWW5aZrVj6229XVthedtlOeVXsioNm0Mb//d/FsesuO+ZX69x5+bwydAoEr7HG6sUKLvrHpUU/dd7/4INiO1X87tlrq2J7Rna6dOlccbl33ql0rdjZwkb5vaTK2BNrqUJyqlpeao2fY2m88Wv55ykFqddep3tMTui6NM8HH3xY6ka7dvMW/enV6Zd9ZtP3yit3icMP+02st946+aVSBfTjjj0y7rrr3qyy9/DpdXnzEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJgK1KYCXvrRZQ2DIY48XN5ICiimkOa3ahx9+VDHVFltsWrFdvpGq8s4//3zF0Jtvvl30U+fpp58twsFzzz1XFuRsF4susnB+zLBhLxbH3nLL7UW/Z4+NY7NNexXbzzzzr6I/s3TWX78hHJrWc9FFl8Rf//r34j4ntcb3358QJE7H9tlqi0md0uL+moZS7y3un9SOFEQvPe/0Ptp66y1j9dVXjVTxOrVUlbgUVi/N9corr5W6sdBCCxaB9WJwBnXK35djx46NUaNGT/GVX3v1jeKcdM8/+tHixXbjTu9ePSqGyh0qdjTaSL7p929q6Xn12GSjRkdMfPONNyf8YUKqPp6qM09tm5L3y7BhL8UBBx6cf5dXfd99t52n9vLOI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECUyVQ23BWzVSd7KQZJ3BLv75ZNeTbY9FFF5noRbuu31BVOR2UQqDpe1q1VK32rbfeLqb76YH7F/3GnWOOPiIPd6bxFPa8/oabGx8Sr7/+ZjH2u9/9Kq86nAYeeODhYjxVkk4VolNbYYXlYoNu6xf77rjz7qI/M3RSYHiuueYqlnLJpVcW/fJO27YTqgeXjyff8jD0/vv/uDApP66l/ojvndL+BRZo39Jhkz1eHkLfZZcdYq+9divOvfW2O4p+qfPgg48U77cUrD3zjFNKu2bYawr+75hVDi+1FNqdmnb/Aw8V95LOP+Xk41qc5vDDf1Ps++KLLyNVw56clp53efXo44//4+ScVhxz330PVlSQPu20k4p9k9MZOXJUcdgyWfXxKW1PPvl0/OtfzxWnbbRRt6KvQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZoRA7ZRUAp0RC3KNpgJ/P/+cWH755WLxxRaNe++5NVIotbm23nrrxL777lXsevnlV4v+tOpcfMkVxVSpkvOFF55XbJc6W265WWyzzValzUhh1OHDhxfbpc6DD04IPG+/3dal4bj9jsqA8wsvDMv3zTHHHLFGVpU4tRQiHTBgcN6fWX6kNZUq/KY1rb7aKhVLS0HpM888Jbp161oxXr5xzbXXF5upEvF1113RpLJymufUU0+Ik086tjg2dd4sC6nPOeec0aHDQhX7p3TjiiuvLe5ntVVXie4bNgRd0z1efvk1TaZL9z9o0GPF+Gab9Yo999y12C7vtG/fPnr13KR8aIr6Rx15WJMqzSkEfe21l8Vss00Imv/z4sumaN7SwY3vZd111674bJWOO+7YI2Ox7HNZas0F/kv7mnst/zylKtrnnfeXZsPv6Zlvv/02FVOkP3JIldVLrUuXznHUkYeXNovX9u3nj2uuuTS23bZPMZY66Y8MSq2latJ7771HPDbkoUjPsrmW/jih1J57fmip65UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMwQgbos05i1/McMuaCLTLlAebi2TZs2ceIJx8SxxxwZ73/wYQx9/oWobVMbK6+8Uiy91JLF5OPGjYuTTj6t2J5WndtuuzP23GPXWGWVlfIpN+reLe6/746sWvUDMXr06Fg1C/9u0HW94nIprPnLX/2u2C7v3HTzrfHLXx6UD7Vt2zZ//frr/zQJTffPKt+uv/66+f4Uhk4tVU5OYdWZraX1p+BpahdccG6kKsmPDhgU666zVvTq1SPmn3++tKvFdtVVfWP33XcpnuVKXVaMRx+5N+6//6F46eVXYvXVV4uNs8q77dq1y+e46+7+8cQTT+X9p556pmLeq6+6JC648J8xzzzzxFprrR6HHz5lFYdHjBgRr776enTuvHweLp5vvoaAcaoK3lywPV3890ccHQMe7V9Uxj7m6D/ELjvvGP3veyDeffe9WGThhWPD7htE1++fZ+9Nt45PP/2sYt2Ts7HkkkvEPXffEo9n9/7cc89nFbAXiM03613h+3z22XjkkYGTM12zx6R7GTjgvkih8tT+cMTvYovNN42nn3k2xo0dF5tu2jOWWWZCJeUPP/woe+b/aHaulgbT52mP7HmvuurK+SG9e/XInnf/SOMvvfRKzDnXHLHOOmtn99YrD8SnQHR5pe7DDj8qHn7oniL8vc8+e0T37P3xyMMD4tPPPsudU/A+hcS7rNg5Hn740ezZfZtf64msovPmm/fO+6mS+f9d+LdIlb6XW26ZaNOmLm6//a448g+/y4PZfz3nzHjt9Tfi0UcHxmOPPRlrrLFabJv9sUPpfZgmueGGfvlcfhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRklUNdwoZoZdT3XmQqBX//m8OjTZ4v4U1YFuFTtNgUbU/C5PPxcmnrkyJGx194HZCHW10pD0/T1pz87JG6+6dpYfPHF8nkXXXSR2H//fZpcI4Wgf/Xrw+KLL75ssi8NfPbZ5/HNN99UhCn//e/nmxx75533xPHHHVUxPmjwhMrDFTv+xxtnnX1e/pzSMtKzStWx03d5S4HgFORtqe2338+i3819Y8EFF8gPmXfeeWOnnbZvcngKyC+99FJFEDo5v/jiS7HSSl3yY9PzSe+ZUvt7p4sihZinpF19zXVxysnHVZxy/UQCr+m9t9/+P48rr/hnESBOQer03Vw76OcHxCmnntncrkmOpWr2KXRfHrwvnZTeW784+NDS5lS9pnvZ/ycHxRWX/yNKAfzVs4rk6btx++qrr2OfHx/YeHiytg/86SFx4w1Xx1JLNbwnUpC+uc9TmuzAA/erCEKn4P0hh/w2D92Xfjek3wnNnZ/+6GXRRRbJA81pruuvvykPd6fK46l1zwLq6Tu19EcNKQj9+edfRMeOHfKxVDU6ff/0wP3z7fIf/frdFh9kf5ihESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBGSlQqxr0jOSe+mvdnVX+7dlrq3gyq+KaAsYttTfffCu22HL7ZkPQKdhZaiO++67UneLXVFE2XePmrKLzmDFjmj0/VbPdeuudYtCgiQeWn332uYrz7+1/f8V22kiViVMgs7yVV8UtH59Yf1L3P6n9E5u7tC9V8k1VmJurVp2Cyim0msK1E2vpuPSs7733/hafdXrOW/XZMQ+zls/105/9qsVA6nrrrVMcWv4e+vb7CsHFzrJOup/yY9N9pQDtxFp69j179ckqBz/RrEM69z//+SZOO+0vUx2CPvGkP+UVphuvI4XDBw4akr8/U8i+cRs1anQxlI6dVBs27KXYdLNt4pln/xXNHZ8qr6eq3+l5TU1l63T99P7eepud4pprr4/y9ZWvLX3Obrjh5th55z3Lh/P+Y48/GVtutUMMHTqs2TWmdT+UVYLutmHPIgRdmuQnBxwU5e/70ngKVX/99dfRq3efOP2Ms+O///1vaVfFawpMn/e3C+L4E06tGLdBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmhEDNjjvtmaUB6yMF/maFtsfuu+a3cXNWoXRGtp2/r9h73fU3zpDLpiq4yy2/bF7hdfjw4fHue+/HgAGD8wrLM2QB31+ktrY2qyLbLbp06RzzzD13vP7Gm1n4eUiLVaBn5Nr+l9eaZ5558uq6q6y8Uh4+vf/+h/LA65SuqeSbKirPM8/c8dRTz2Rh+Gfyir0Tm2uFFZaPTTbpHvPN1y4LDL8fjzwyYKqDuhO7zqT2pWrDG220YV5JePY5Zo/nn3shnszuIb1np7Q99eSAosr0Qb/4TQzOqoKn6smb9u6ZVVNeMl559bUYOHBwFuD9z5ROPVnHp2e68cYbxgorLJeHw19++dX8M5fCwC21ueaaK5584tFi9yqrrlv0W+qkwPpKXVbMKzGne3o8Czp/8smnLR1eMT7//PNFt25dY7lll8n/SCFVTk8B6Ym19B5bd921o2v2OyW11197Ix586JEmAen0LNdff71Yd5218hB6Cle3VO19YtezjwABAkng408/BkHgfyZQk/27j0aAAAECBAgQIECAAAECBAgQIECAAAEC1SdQH/5r59X31KyYAAECBAgQIDD9BWp22nnPvNDpsGEvTv+rzYAr7LrLTtGmTZsYkAUiP/vs8xlwxYgOHRaKjbOwZ6oOe+NN/WbINV2EQGsTKA9CH/LL32Uh5EEzPUH63fDwQ/cU65ycIHRxsA4BAgRmYQFB6Fn44VbBrQlCV8FDskQCBAgQIECAAAECBAgQIECAAAECBAg0IyAI3QyKIQIECBAgQIAAgajNU9CzUFW0jz/+JH+sqUJxCiFO75auka6VWuna0/ua5idAoDoEUqXlUhs7dmyp65UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYBgJ1DXPMOv/5kBeyytaLLLJwdFhooeiw0fQPQpeeQaoGna6tESBAoCTQq+cmpW6MGDGi6OsQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECP1wgC0KnEHT9D59pJpnhq6++igcefDhWWXmlPBDdpk2b6bqyFIBOlaBTCDpdWyNAoHULnHnmKbH2WmvG+PHjY7HFFi0wHnv8yaKvQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPxwgbqGGPSsUxE6kaRA8sBBg3+4jhkIECAwhQI9Ntk45p57roqzxo4dG2eeeU7FmA0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDghwnU1efVoGetIPQPI3E2AQIzo8C9/R+IZTotnS/tlVdenRmXmK/ps88/j7ZtF426uroYOXJkvPPOe3Hoob+PTz/9bKZds4URIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFqFKjZcac96iNqYtiwF6tx/dZMgAABAgQIECBQZQIff/pxla3YcmclgZr8D0FnpTtyLwQIECBAgAABAgQIECBAgAABAgQIEGgdAvVZtkUjQIAAAQIECBAg0FigNoWg/U/Fxiy2CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYmQWyIHS9mmgz8xOyNgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEmghkQWiNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1SVQWxM11bViqyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoNUL1NbnBA0/W70GAAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqkIgqwidmqrQVfG0LJIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgVzg+4rQNAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFA9ArVpqepBV88Ds1ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCLyIDQIAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVJNAXUR99qURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegTqaqKmelZrpQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgE6tSD9j4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDaBGrTglWFrrbHZr0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEWrdAbQpB17duA3dPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECVCdTVi0FX2SOzXAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE6iKrCK0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgmgRqa/IcdH01rdlaCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBo5QK16f5rVIVu5W8Dt0+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgugTq6utVg66uR2a1BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkFaFTTWiNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1SJQW1MjBF0tD8s6CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEKitr0+d/AcTAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVIVAbcMqVYWuiqdlkQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5AJZEFo1aO8FAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqSyALQqdq0MLQ1fXYrJYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA6xaorUk56DwM3boh3D0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtUjUFdfrxp09TwuKyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIAnUNjDkZaGJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCoEsiB0CkGrCl0VT8siCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDIBWobakGrCO39QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA9QjU1qsGXT1Py0oJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgFajkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg2gSyIHRN9qURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegSyIHR99qURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegSyILRGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6hKorYma6lqx1RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0OoFautzgoafrV4DAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVSGQVYROTVXoqnhaFkmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQC7wfUVoGgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgegdq0VPWgq+eBWSkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhF5EBoEAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqkmgLqI++9IIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQPQJ1NVFTPau1UgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQCdepBex8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBtArVpwapCV9tjs14CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrVugNoWg61u3gbsnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDKBOrqxaCr7JFZLgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECdZFVhNYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQTQK1NXkOur6a1mytBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0coHadP81qkJX/dugXbt2ccUV/4j777sjtt22T9XfjxsgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMDGBuvr6WaMa9JlnnhJrr7Vmxb2OGjU63n3vvXjpxZfj388NjUGDhsT48eMrjplVNn55yM+K+z/+uKPijjvunlVuzX0QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaCJQ1zBS02RHtQ2svPJKscgiCzdZ9lJLLREbde+Wjw8f/m0c+tsj4oknnmpy3Mw+cOcdN8V8880XV13dN/7xj0ubLPeLL78qxsaOHVv0dQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMigJ1NTU1MYsUhS6ez9NPP5v3O3bsEOl7jjnmyLfnmWfuuOTiC+Lee++P3x9xdHF8NXSWWmrJSM9qySWXaHa5l19+dXTs0CEWW2yR+OfFlzd7jEECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECs4pAXUMIun5WuZ/8Pg448OAYP358cU8LLrhAXHbp/8Uyy3TKx7bccrN4+OEBcdfd9xbHzMyd2traPAQ9sTWOHj06Tv3TmRM7xD4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECs4xAbcOd1MwyN9TcjXzxxZex3fa7xc0331rsPv74P0YKGE/vtvHG3WPDDTeItm3bNrnU/PPPFymU3aPHRjHXXHM12V8aWHjhjqXuNHlddNFF8utuu22fWHbZhnD4lE48++xt8zm6deva7L1N6XyOJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDAlAnURqRr0rB2ELoGcdPLpWXh385h77rny70MO+Vn8/e8XlXbHQw/eHR06LBTffjsium7QoxgvdXbdZcdIAerULrzwn3FB9l1qv/n1wfGzn/0kRo8eE2uvs2Ecd+yRsdNO28dss82WH9Kv321x/AmnxvLLLRsnnXRsrLjiCk0CxG+/827ss88B8fXX/8nP6dVzkzjrrNOiri57TN+3HbbfJrbfbuvSZmy9zc7x7rvv5fP269c3H3/ooUfj0N8eURxT6mzQdb047bST8nssjaXXdL/nnvf36Nv3xvLhvJ/WW5p3//0PijZ1beKM00/O56ipmfC+uf76m+KUU1WkbgJogAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYLoIZCWRU5g1haFn/TZ+/Pg8wFy607XXWrPUzV/nnXeeSOHeUni5Yme2kcbT/vTdNquIXN7SdhpPlZIPOfhnsfvuu1TMM3DQkDxEfcst18Vqq63SJASd5lp6qSXjrjv7FdO2azdvflzjytWlNaTX2uw7tRRQLo3PMcfsxRylTrrXiy46v0kIOu1PwfBjjv5D7LnnrqXDi9fyeQ8//DdxycUXRMeOHfJrFQdlnXS/++67V/mQPgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHpJvB9jnZCZd/pdqWZZOL+9z1QrGTxxRcr+tOyc8ghP8+ne+mlV+LYY0+KP//lr/Hoo4Pi+eeG5uPjxo2LO+64Ow499Ijo2WurrOrzeTFmzJh833zztYtddtkh7w957In402l/zo/NB7Ifb775Vj6WxtPcqYr0pNpKK3WJSy+9MEqB6iFDHo+99v5JbJNVk77hhpuL01MYettt+xTbjTspwJ3C1kOHDosTT/pTHPjTQ+K1198oDjvwgP2Kvg4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6SlQV1/fOqpBlxA/+ujjSPecAr0LLNC+NDzNX886+7y4/PKrK+a99bY7Y6GFForrrr8phg8fXuy7/IqrY9ToUXlV5jS4447bxU033RqffvpZ9O17Y3zzn/8WAeXnsxByGpuSdu5fz4w2bdrkp9x5171x1FHHFaeffMoZ8eJLL8eJJxyTj5104jEVweviwO87fzv/wvjHPy4thnfddZ945ulB+fzT07O4oA4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBTKC2QaH1VIRO9zt6dEP15dlnn73h9qfxz1SluXEIunSJiy+5vCIEXRq/8cZbSt3o2KFD0f+hnYUX7hiLLbZoPs3YsWPj+ONPaTJlCl1/9tnn+Xjbtm2jT58tmhyTBh57/MmKEHQaS3O+831V6hQub9euXRrWCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECExXgSwInULQrasq9Gyz1eWoY8Y0BKKntfC111w/ySnbt28fP/7xnvGPi86PRx6+N556ckBxzrzzzlv0f2hn3XXXLqYYmlWTHj16dLFd3unf/4Fis/ycYjDrjB83rnyz6H/19ddFv0OHBYu+DgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHpJVDXEINuPRWhUwC5trahEPbXX/9nurhOLGC97LKd4vTTToouXVaMVEG5udbSeHPHTmps6aWXLA555933in7jzquvvV4MLf59BeliYBKdMWPGTuIIuwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMW4G6+rwadPOB3Gl7qZljtu7dNygW8tHHHxf9GdFZcskl4sYbro62bdvmlxs1anQ8+ujAGDT4sRg0aEj0v/e2mG222abpUmprGkLfadKWKjqnfePKqj3XfB8U///s3QmYndPdAPD/vXOzhwSJaAkiROwtaqsu1trV2qKLoqhdUVXVaku/qu2ropZqLbVUG7qoamm/IJYiVBFip7EmSJCMTCZzv3veMW9mMpksMom5d37nPvfe8573nPOe83vnebye/Oc/qV0hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0BUFSl1xUYtyTccec0Q+/fgnnszrrSvF4qIJDL/+t1flQdC/+c118ZMzzm592UVSf7FVFuihQ1fo8BqrrTo8P/fqK4s3QDy/sAoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB+RSopAsuVF7do+y6606x7LKDs82mDMjnnHt+m403NMzIjkulOceH9+vfr03/BTlYfvmPRv/3xz/++PgFCoJuztrdfLU+vXsvyGXjgbEP5f3XXXedKHaQ7XmbbbbM+z340MN5XYUAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAVxSoBEK3DrPtikvsnDV964Rj47QffS+f7Morr4l33303P06VyZOnZMeFQiE233zTNuc22mjDOPKIQ9u0LcjB8FWGzbX7dtttEx0FYL/SKkPzWmutMdd5Zj85YcJL8frrE7PmXr16xonfOnb2LrHVlp+NFKidSmNjY/zxjzdldR8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEuqrAnFMfd9XVzue6dt55h2hqaopVV10l1l5rzRgxYrVYaqmB+egUGHzu/7bNBp1OPjF+fKy00tCs31ln/k8cdfTx8fbbb8dee+4We+21e4fZlPOJ51JpnWV55MgRseMO28Vfb/l7ZY3D46gjvxGf/eynOhw9fvxT+bkUsLz//l+KFMi93nrrxLhxj8f06Q35+TlVvn3S9+KXl16QrX+//b4YAwYOjHPP/XnU178X++27dxx22MH5sDPP+llmlzeoECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOiCAqVCFCo5oWurnH7a9zvc0I03/im+f+rpcwz2/elPz43Pbbt1NrZ//37xq8t+0Wae0aPvnGvAcpvOsx2k7NPPP/9CrLzySpEyTp9xxo+yd+tuKRvznLJCT5s2LZ599rlYpZJVOo09/rijs3cae+oPTo/f//4PradpV7/vvgfiiCOPiwvOPycbv9OO20V6z15+fv5FcfXV183e7JgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAlxMoNgdB11oo9Czn+vr6eOGF/0YKYt7vSwfEKd/70RyDoNOI1157PU7+7g/anW9oaIhfXnZ5JZj4m1Euz9mqoVVW5vr33pu1gFa1rx1waLz44n9btTRXU4bqtLZ7772/3bmWhhTInLJTz142WP/jWdN7lezOLWV6Zb2zlzvuGBPHH/+dePfdqbOfihkzZsQFF1wcF198Wbtz85o3DWiYPr3dOA0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFqVAYffd98lCex97bNyivE5Vzd2rV8/YeKNPxEorrxj33z82nnjiyU5d/5prrhEjVhseM5ua4h//GB0p4/P8lGKxGOutt06ss85aMXNmU4wd++AHWtu6664dI0euHnV1xSxI/N5772sX/D0/69GHAAECBAgQIPBBBF59/dUPMswYAp0iUHt/D6dTWExCgAABAgQIECBAgAABAgQIECBAgACBLi9QrvzFc4UAAQIECBAgQIDA7AKF3SqB0KlRIPTsNI4JECBAgAABAgQWhYBA6EWhas75FRAIPb9S+hEgQIAAAQIECBAgQIAAAQIECBAgQKBrCQiE7lr3w2oIECBAgAABAl1FoJgW4nfmusrtsA4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOZHIAuEnp+O+hAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCrCJQiypWXQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoRKBWiUD2rtVICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUBEryQfs5IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg2gSKacGyQlfbbbNeAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAt1boJiCoMvd28DuCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCoMoFSWRh0ld0yyyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBSVjNAKAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqkmgWMjioMvVtGZrJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgmwsU0/4LskJ38x8D2ydAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXQKlclk26Oq6ZVZLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECWETrlhFYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQLQLFQkEQdLXcLOskQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBZoFgup0r2wYQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJVIVBsXqWs0FVxtyySAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFMoBIILRu0nwUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKpLoBIInbJBC4aurttmtQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6t0CxkOKgs2Do7g1h9wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVI9AqVyWDbp6bpeVEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQBErNDFla6JoWSQHf06e/Fw0zGqJxxoyY2TQzmpqaanrPNkeAAAECBAh0XYFisRh1xboo9egRPXv0jF69ekeh+U91dN1FWxkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBLiRQCYROQdC1mxW6sbExptVPjfr6aV2I3VIIECBAgACB7i6QfiErvWc0zsifU/r06Rt9+/SLUun931Xr7kj2T4DAYhfo1atXHPvNb8ZGG20czz33XBz3zWPnuIZVVlklDjro67HRxhvHkCFD4t13343x48fHCccfFxMnTpzjGI0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCzBUrNYdC1mRH6nXffjmnTpna2mfkIECBAgAABAotEIP3iVnr37dsvlui/5CK5hkkJECAwJ4H11lsvzjzzrFhh6NBIGetTWX755efUNXbcaaesb0u/1GmppZaKTTbZJEbffkd8Ye+94tFHH53jWI0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAzBYrlGswGnbJAv/nmJEHQnfmTYi4CBAgQIEBgsQmkX+RKzzLpmUYhQIDA4hBYe511YsWVVsqDoDu65gYbbBBnn31O1u+VV16JH59+euyw/XZx4YUXZFnu6+rq4qKLL+5ouHYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCpAjX3d9dnzGiIyVPeyv4RvlOlTEaAAAECBAgQWIwCMxpnxFuT34iBA5aKHj16LsYruxQBAt1RYNSoUXHnnXdmWz/jjDPi4x9ff44MY8eOjdGjR0fv3r3jgK/tn/9/13k/+1mMHDkyttxyqxg0aHAsscQS8c4778xxDo0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCzBCp/87hQedVGSVkTBUHXxr20CwIECBAgQCCyAMP0bCMztJ8GAgQWtcB79fXx4gsvZO8pk6fM9XKHHnJw7P/Vr+RB0C2df3XZZS3VSJmjFQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsKgFKoHQ5cqrNsrbb09u94/xtbEzuyBAgAABAgS6q0BTU1OkZxyFAAECXV1gypS38yVOnjL3YOq8owoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFgIgUogdG2Ud959O9KfkFcIECBAgAABArUmkJ5x0rOOQoAAga4scMABB2TLK5fLMe6xx7ryUq2NAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGpEoFSIQtVnhE5/Ln7atKk1cktsgwABAgQIECDQXiA96/Tp3TdKpVL7k1oIECDwIQsMGTIkdtl112wVY8eOjYaGhk5d0SqrjOzU+UxGgAABAgQIECBAgAABAgQIECBAgED1CTzz7PjqW7QVEyBAgAABAgQILHKBYjm7RPPnIr/aIrrAtHpB0IuI1rQECBAgQIBAFxLwzNOFboalECCQCxSLxbj+d7+Purq6SL+keuwxR+fnVAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwKIUqGSEjkpG6PRZnSX92eX6+mnVuXirJkCAAAECBAgsgEB65lmi/5JRKFTvs9sCbFdXAgSqROCCCy6MlBE6le9+9+SYOHFip6/82Wef6PQ5TUiAAAECBAgQIECAAAECBAgQIFC7AqfdPKF2N9eNd3byDkO78e5tnQABAgQIECBAoCOB9zNCd3S667dPn/5e11+kFRIgQIAAAQIEOknAs08nQZqGAIFOETjwoINiiy23zOa6a8yY+MONN3bKvCYhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLzI1BMnao5p2DDjIb52ac+BAgQIECAAIGaEPDsUxO30SYI1ITAfvvtFyec8K1sLxMmTIiDD/56TezLJggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegSyQOjqWW77lTbOmNG+UQsBAgQIECBAoEYFPPvU6I21LQJVJrDHHnvGKd/7frbqN954I3baaceYOXNmle3CcgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg2gVKEeXKq3rLzCb/2F69d8/KCRAgQIAAgQUV8OyzoGL6EyDQ2QI77rRTnHb66dm0U6dOjZ123CHeq6/v7MuYjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzFOgVIjCPDt15Q5NTU1deXnWRoAAAQIECBDoVAHPPp3KaTICBN4XeOTRx6Kuri47Khab/3DQgAEDYtzjT2RtjY2Nse46a8eqq64aZ511dhQKzf8f2a9fv7jn3n/N0XHk6iPm2K6RAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAh0lkCpuvNBdxaDeQgQIECAAAECBAgQINB9BXr06DHHzbcERZdKlT8mVCkf+chH8yDoOQ7QSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFqNA9q/Z1Z4VejF6uRQBAgQIECBAgAABAgRqTmB+szffeecdMb99aw7JhggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgywkUUxB0ucsty4IIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQsUCpLAy6Yx1nCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDokgKlqGSEVggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBNAsVCFgddrqY1WysBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAt1coJj2X5AVupv/GNg+AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoSKJXLskFX1y2zWgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsozQKSe0QoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWoRKBYKgqCr5WZZJwECBAgQIECAAAECBAgQIECAmH7emQAAQABJREFUAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzQLFcjlVsg8mBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqAqBUvMqZYVelHdr6aWXjpEjR2SXeOvNt+LxJ8YvysuZex4CH/vYutG3b9+s10MPPRz19fXzGOE0AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAVxOoBEKnbNACoRfljfnKl/eLk79zYnaJCS+9FB9ff+MPdLlDDj4odth+u/j9qBviqt9c84HmMCjijzf+Pg+E3nnXPeLee/+FhQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoMoEKoHQKQg6BUMrrQVWHzEi9t33C62bFqh+223/jDvH3LVAY+bWea89d4/TfnRq1mWzzTaJ5557PsbcdffchjhHgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoGYFSoVKHHS5LCP07Hd4q622iMO+ccjszfN9PGTIkE4NhP7sZz/T5topM7RA6DYkDggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLqRQLFcTtmgZYTu7Hve1NTUqVOef/6FlYD15vuU5r7wFxd36vwmI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBNAqXmxcoIPftN+9OfboopU96evTk7/t9zz8zbz/v5hfHss8/lxy2Vv97yt5Zqp3w//sT4GDZ8ZGy88SfirrvuienTp3fKvCYhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUI0ClUDoFAQtI/TsN2/CSy/F1ddcO3tzdtw6EPr3vx8VKUh5cZSpU6fGP/85enFcyjUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdGmBUnMYtIzQi+sulcttg86HDh0a22+3bTz19NNZpueGhoaFXsqSSy4RG2ywfqwxcmQ8MX58jBlzd3TGvAu9sA4mWHqppWKTTTaOlVdeKR4Y+2A88MDYaGpq6qB3++aFHd9+Ri0ECBAgUGsCn9xs0zjhhG9m27r77nvip2ees0BbbD3+zMrYuypzKAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIfLgCpXKWDVog9OK6DTMaZkRdXV1c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VO1jjz3+4a/mA6zgtddf+QCjanvIsGErZ9mVBw0aFP83enQlkPi+Lp3NeMiQZbOM1iNGjIgUNH73PffG2LFjo3XA8tzu2MKOn9vczhEgQIAAga4oMGTZj3TFZc33ml59/dX57qsjgc4W8GugnS1qPgIECBAgQIAAAQIECBAgQIAAAQJdT+C0myd0vUVZ0UILnLxD8191XuiJTECAAAECBAgQIFBTApVA6H3eD4QeV5UbEwhdlbfNogkQIECAAIGFEBAIvRB4hnZ7AYHQ3f5HAAABAgQIECBAgAABAgQIECBAgEA3EBAIXZs3WSB0bd5XuyJAgAABAgQILKxAsVBIU2Sx0As7l/EECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBYLALFdJVC5aUQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgWgRK5bJs0NVys6yTAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFmgSwjdMoJrRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBaBIqFgiDoarlZ1kmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLNAsVxOleyDCQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKpCoNi8Slmhq+JuWSQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAplAJRBaNmg/CwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVJdAJRA6ZYMWDF1dt81qCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHRvgWIhxUFnwdDdG8LuCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCoHoFSuSwbdPXcLislQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAJFJsZsrTQRAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAVApVA6BQELSt0VdwtiyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIBMoNueCrt6M0MXi+0mt3VACBAgQIECAQDcQ8OzTDW6yLRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMyXQLFc5dmg64p187VRnQgQIECAAAECtSDg2acW7qI9ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdIZA1adTLvXo0RkO5iBAgAABAgQIVIWAZ5+quE0WSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsBgEKoHQhcqrekvPHj2rd/FWToAAAQIECBBYQAHPPgsIpjsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDNClQCocuVV/WWXr16V+/irZwAAQIECBAgsIACnn0WEEx3AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBmhWoBEJXdykUCtGnT9/q3oTVEyBAgAABAgTmQyA986RnH4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYhiIao/mKZvn37uJQECBAgQIECg5gU889T8LbZBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBBRAolrPOzZ8LMK5LdS2VStG3r2DoLnVTLIYAAQIECBDoVIH0rJOeeRQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJoFKhmhU6n+rNBL9F8yepR6NO/KJwECBAgQIECghgTSM0561lEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJgl8H5G6FkN1VxbcsmBUSwWq3kL1k6AAAECBAgQaCOQnm3SM45CgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBbgSxquPrzQTdvKv25+IEDlhIM3fYeOyJAgAABAgSqVCAFQadnm/SMoxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0Fag5tIn9+jRM5YauEykPyGvECBAgAABAgSqVSA9y2TPNJVnG4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfYClUDocvZqf6p6W1LWxKWXHhR9+/ar3k1YOQECBAgQINBtBdIzTHqWkQm62/4I2DgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMB8CJQKUZiPbtXZZYn+S0af3n1jWv3UqK+fVp2bsGoCBAgQIECg2wj06dM3+vbpJwC629xxGyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFgYgVLKB13LJWVSXHKJAZGCoqdPfy8aZjRE44wZMbNpZjQ1NdXy1u2NAAECBAgQ6MICxWIx6op1UerRI3r26Bm9evWOQqF2f0GtC98KSyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKhSgVJady1nhW65LymwqHfvPtm7pc03AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLVKVBMQdC1nRO6Om+MVRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LFAqSwMumMdZwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6JICpahkhFYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQTQLFQhYHXa6mNVsrAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdXKCY9l+QFbqb/xjYPgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHqEiiVy7JBV9cts1oCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLKM0CkntEKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFqESgWCoKgq+VmWScBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAs0CxXI5VbIPJgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgKgWLzKmWFroq7ZZEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQClUBo2aD9LBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUF0ClUDolA1aMHR13TarJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINC9BYqFFAedBUN3bwi7J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgegRK5bJs0NVzu6yUAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEkUGxmyNJCEyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBVCFQCoVMQtKzQVXG3LJIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUyg2JwLWkZoPw8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSPQLEsG3T13C0rJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgEyhyIECAAAECBAgQIECAAAECSaBXr17x7ZNOihtu/EOcfc65c0XZZJNN4pprr4uxDz4UD4x9MK686qpYd9115zrGSQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0JkCpYhC5aUQIECAAAECBAgQIECAQHcVWG+99eLMM8+KFYYOjWKx+fdll19++Q45ttpq6zj/gguiUJj1f5MbbbRxXHvdb2P//b8a9993X4djnSBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAp0lUPkX7nLlpRAgQIAAAQIECBAgQIBAdxVYe511YsWVVsqDoOfm0LNnzzjv5z/PgqAnT54cBx14YBx6yMExderUqKuri1/+8rK5DXeOAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAh0mkBzqq9Om85EBAgQIECAAAECBAgQIFBtAqNGjYptt90mez/00INzXf4BlcDnFPDc1NQUn991lxgz5s4YPXp07LH7btm4Xr16xR577DnXOZwkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKdIVAsxKw/ZdwZE5qDAAECBAgQIECAAAECBKpL4L36+njxhRey95TJU+a6+C984YvZ+aeffjpeffXVvO/zzz8fL7/8Unb81f33z9tVCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAohIolrOZmz8X1UXMS4AAAQIECBAgQIAAAQK1IbDMMstkG/nHbbe129CYO8dkbcstN6TdOQ0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCzBUopH3RZVujOdjUfAQIECBAgQIAAAQIEalKgR48e2b4mTJjQbn8vv/Jy1tanT9925xamYZVVRi7McGMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEYF3s8IXaO7sy0CBAgQIECAAAECBAgQ6DSB/v37R6GQfp024rXXXms378TXJ2ZtLcHS7TpoIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECnShQSnM1/zN2J85qKgIECBAgQIAAAQIECBCoOYE+ffrke5reMD2vt1RatxWLxWhqamo5tVDfzz77xEKNN5gAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEalOgWJvbsisCBAgQIECAAAECBAgQ6GyBiRObMz6neZdddtl20w8ePDhrmzlzZqcFQbe7iAYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPC+QCUQupy9iBAgQIAAAQIECBAgQIAAgXkJNDY2Zl2GDBnSruvgQc2B0NOnt88W3a6zBgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsJACxUI0vxZyHsMJECBAgAABAgQIECBAoBsITJs2NdvlZptt1m63G2y4YdY2ZcqUduc0ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBzhYoNueDLnf2vOYjQIAAAQIECBAgQIAAgRoUuOP2O7JdbbhBc9BzyxaLxWKstdZa2eHf/nZLS7NvAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwyASKaeaUE1ohQIAAAQIECBAgQIAAAQLzEvjf/z0369K7T58466yz8+4XXXxJlEqlKJfLceEFF+btKgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYFEJlFIQtHzQi4rXvAQIECBAgAABAgQIEOj6Ao88+ljU1dVlC02ZnVMZMGBAjHv8iaze2NgY666zdlafMGFC3HbbbbH11lvHTjvvHJ/dYosoFArRr1+/7Pzvrr8+3n57Slb3QYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFqVAsZyFQQuFXpTI5iZAgAABAgQIECBAgEBXFujRo0ekAOiWIOiWtba0pUzPrcsRhx8Wt956a5b9uX///lkQdMoEPWrU7+N73zuldVd1AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwyAQq/5pdWGSTm5gAAQIECBAgQIAAAQIEur7AyNVHLPAijzzi8EgB0ptvvnkWEH3nnXdGU1PTAs9jAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+KACpcpfMM7+0fqDTmAcAQIECBAgQIAAAQIECHRPgcbGxhg9enT33LxdEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCHLlBMKyjICv2h3wgLIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBg/gVK5XJ5/nvrSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgS4gkGWETjmhFQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSLQLFQEARdLTfLOgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaBYolsupkn0wIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFUIFJtXKSt0VdwtiyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIBOoBELLBu1ngQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6hKoBEKnbNCCoavrtlktAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAge4tUCykOOgsGLp7Qyzq3W+44fpx002j4oZR18Tw4cMW9eXMT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCmBUrlcm1kgz7jjB/FBut/vN3Nqq+vjxdf/G+MH/9UjLnrnnjwwX+367M4Gn74g+/GiisOzS518ne+FQcc+I3FcVnXIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFCTAqXmXWVpoat6g2uttWYst9yQOe5h2LCV4zOf+VQcfPABcVclGPrIo46PhoaGOfZdVI1Tp07Lp56+mK+dX7hS2WefveKwbxwc7733Xmyz7c6tT6kTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqBqBSiB0CoKujazQLer33POvSJmuS6VSLLXUwFh22WVjwIAls9Of/OSmccftf48tt9ohpk2bFZzcMnZRfR93/Elx9NGHxYwZjXHmmecuqsvMc94UMJ5MaiUT+Dw3rAMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBNCpSaw6CrPyN067tzyKFHRVNTU+umWGON1eOqK38ZvXv3jv79+8Xxxx8dP/zh/7TpsygPXnzxv3HccSctykvM19zLLLP0fPXTiQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBXFiiWaywbdEfYjz8+Pg4/4pv56c023Tivd1RZc801Yrvttokll2zOJj17v5EjR8Tnd90pttlmy0rW6cGzn/7AxyuuODR22mn7+PSnN49evXrO9zwrrLB8tt605hTsPacyoIO9zKmvNgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJdVaDUVRe2KNb1r3/dH+VyOQqFQgwYMCu4ebVVh8cNN1ybXfJLXz4wUiDySd8+Lg+AnjDhpdhu+8/nSzrwgK/GoYceGH369MnbUuWVV16N444/Kf7zn0fbtKeDL3xhz/juyd/K2k87/afx29/+vl2fzTbbJP7nxz+I2bM2v/rqa/HV/Q+Ol156ud2Y1JCCsU844dg2e0rtU6a8HSd95/txxx1j4oZR18QqqwyLUqn5lieDR/5zX+qWlX//+z/x5a8c1HLomwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECXFihGFCqv7lFSEHAKAE4lBUS3lLpSXdaezn1u263jx6efmgdBpz6PPfZ4S9f4xqEHxbHHHtEuCDp1+MhHlosrr7g0RoxYLe/fUll28KD8Gj179mhpzr/XW2+duOgXP2sXBJ06LLfckLj5LzdEykA9e9l77z3itNO+3y4IOvVLwd4XXnBurLXWGjF48OA8CLpljrTflnfv3r1bmn0TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6PIClfTA5cqre4RC77LLjvkNmTTpjbzeuvKVr+ybHb7++sS45prrY9KkSXkg9Je/vE8cfvgh2fkUSH3FlVfHtdf+LpYbMiSOPvqwWH/9j2XBxtdde3l8frcvxosv/rf11B3Whw8fFldcfkkUi8UsQPvSS38dl1Te6fiYYw6PfffZO+rq6rJs0bvtvk8+z557fj6+d8q38+N77r0vfv+7G+PRx8bFPl/cK9JeHn10XLb+U089PZYdMjiOPeaI6Nu3bzbm9B//NB/7wP0P5nUVAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAl1doBII3T3Kllt8pk3Q8PW/u6HDjd9//9j42gGHtjnfs2fPOOH4Y/K2Y795Ytx22/9lxy+99HJ85atfj19UMjp/avPNIvU995wzYo89m4Oq80EdVH5+3tl5tuYTvnVy3HLLrXnPH//4zBi0zDKx7bZbxWqrrRopaPqZZ57L+p/y3VlB0Dfe+Kc45Xs/yseddfbP4sqrronJk6dkbf/45+js+9BDDsoCoVMgdwriVggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUo0CpUMkGXa7Glc9lzRdfdF6WWTllUR48eFD2XmKJJfIRKXA5ZXueU2lsbIxDv3FUu1P77rt3lqE5nXj+hRfzIOjWHU888ZQYc+etWb8RI1bNAo6nTZvWuku7elrfiisOzdqfeurpNkHQLZ1/csbZWSB0Ot5oow2zQOh99tkryxKd2l555dU2QdCpLZWU1VohQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUIsCpeYg6NoKhd50043neK9SFuSU7fmww4+NpqamOfZ5YOxDMX16Q7tz66//sbztxhv+lNdbV95+++147rkXsqzNhUIh1lxzZDzwwIOtu7Srb/SJDfO2KVPejh12+Fx+PKfKiBGrZc0bbrh+fvref92f11UIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdAeBSkboqGSETp+1UyZNeiPfTMrI/Oqrr8Xzz78QF1/yq3jttdfzc3OqzKxkhJ5TWW7Isnnz+CefzOuzV15+5ZUsEDq1r7LKsHkGQq+08or5FCm4uXWAc36iVWXQMstkR0OWnbWee++5r1UPVQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK1L/B+Ruja2uiWW+3QYcbnD7rTQqGYDy22queN71dmNs7Mm+rqZo3JG2erlOrq8paGhoaor38vP55T5cknn8qa61qNe2vy5Dl11UaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgZgVKaWe1lQ960dyr119/PdZYY/Vs8pWHrRR33HnXHC+0/PIfyduff+6FvN5R5cUX/5ufuvW2f8aJJ56SH8+tMnHixHw9a4xcPe6++965dXeOAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQE0JzDtlcU1t94Nv5j+PPJYP3mXnHfN660rv3r1jlVWG5U2PPDour3dUeWDsQ/mpzTbdJK/PqzLu8SfyLrvuOuf15B1aVcrlcqsjVQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLVKVAJhC5nr+pc/uJb9RVXXB0tQcQjR46IDTdcv93FTz315Kirq8van332uXj33Xfb9Zm9YcKEl+L11ydmzUstNTCOPvrw2bvM8fjyy2etJwVfb7PNlu369erVMz7+8fXatL87dWp2XCgUYuONP9HmnAMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1SJQLETzq1oW/GGt87333ouLL7ksv/yvLvtF7L//l6J//36xwgrLx3nnnRU77bhddr6xsTFO/PYped95VU444eRoamrKun39oP3jgvPPiWWXHZwdpyzT++yzV9xx+9/aBEmnIOurr/5tPvU5Z/8kvn3icdm4/v37Z2PG3HlbXHH5JTFkyLJ5vwn/fSmvf+ekE2L48GGVPfSPtdZaI29XIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINDVBUopH7QyfwLnn39xLFEJGt5vvy9GsViM4487Onu3Hp0Cmg848Bvx+OPjWzfPtT72wYfiG4cdExf94meRMjV/5jOfin/+41NZcHS6Tkv56lf2jZ/97IKWw/jJGWfHEkv0j1133Skb96UvfTHSe/ay1167RVp7Khf+4pLYfPNNs3oKgv7jH67P6pMnT4nNP7V1VvdBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKsLZFG2KSd0dy7v1b+Xb396Q0Nen1Plf35ydlx++W8iZX2evaRg4hTQ/OCD/5791DyP77rrnjjyqOMizdFSWgdBv/jif+OII49rOZV/n/zdH8SoUX+ImTNn5m0tlalTp8W3TvxuHgSd2v/zn0fj6mtmZZJu6TtgwJJZcHfLsW8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECXVmgsPvu+5RTTujHHhvXldfZ5daWgpQ3/+SmseJKQ6NpZlP8++FHYty4xztc55FHHBqHHHJgdv6Mn54TV111bYd9R4xYLdZbd+0oVK7x30oA9IMP/TumT597gHapVIrNNt04W897770Xt98+JiZOnNThNZZaamB89rOfjhQA/eqrr8Xo0XdGGqcQIECAAAECBBa1wKuvv7qoL2F+Ah0KFPxFnA5tnCBAgAABAgQIECBAgAABAgQIECBQKwKn3TyhVrZiH60ETt5haKsjVQIECBAgQIAAAQLNAqWyQIAP9LPQ1NQUd9x5V8Sd8zd84MABeceZje2zN+cnK5Unn3wqe7dum1c9ZahekPW89dbkuPHGP81rWucJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdEmBUkShSy6s1hY1cuTq+ZZeqGR5VggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+OACpUIlDrpcLn/wGYzsUGDNNdeI1VYbHh/72Lqxzjpr5f0ee2xcXlchQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGDBBSoZoVNOaFmhF5xu3iO+dcIxseGG67fpOG7c4zF58pQ2bQ4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFgwgZJs0AsGtiC9l156qbx7U1NTjBv3ROz/tUPyNhUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBD6YQJYROuWEVjpfYJdd945SqRQDBiwZb7zxZudfwIwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEuqlAsVAQBL0o731jY6Mg6EUJbG4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFuKVAsl9O+s49uCWDTBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUn0CxecmyQlffrbNiAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAt1XoBIILRt09739dk6AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgOgUqgdApG7Rg6Oq8fVZNgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHsKFAspDjoLhu6eAHZNgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgED1CZTKZdmgq++2WTEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7i1QbN5+lha6e0vYPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVSNQCYROQdCyQlfNHbNQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSi2JwLWkZoPwsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSPQLEsG3T13C0rJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgEyhyIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLUJVAKhC5WXQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoRqARClysvhQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtUjUAmEVggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBdAsVCFKprxVZLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEC3FyiVM4Lmz1rW6FdXjM0H9Iv1l+gTq/XtFR/tWYr+pbqQEruW77q9ESBAgACBrinQVFnWu40z4+WGxnhq2vR48J36GDNlakydmc4oBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMj0Ap5YMu13BW6OF9esbeyw6MHQctKeh5fn4i9CFAgAABAgQWuUD6RawlK7+Qld4jK7+gtXPlOSWFQP9l0ttx/euT45n6hkW+BhcgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUO0C72eErvZtzHn9R6wwKPYdMjA/OWbS5Lhj0pvx78nvxHNT62PyjMZoKtd+NuwcQIUAAQIECBDoEgLFQiEG9ijFsH594mMDl4hPD1o6Nh80MAuITkHR17w2Oc6fMKlLrNUiCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHRVgVJaWMoKXUslZYE+eeUhWYbFtK+rX3wlrnj+5Xhm6rRa2qa9ECBAgAABAlUqkH4R682GGdl77Ftvx2XPvRTD+/WNr6780dhvxY9kv8i1/hJ94vTnX5MdukrvsWUTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgseoH0l9lrqqzXv09cMGL5LAj60Snvxt73Phzfe+xpQdA1dZdthgABAgQI1J5A+oWt9MySnl3SM8zIvr2yZ5r0bKMQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBeoBIIXc5e7U9VX0vKBH3G8OViyVJd/OWVibHbPf+OlGVRIUCAAAECBAhUi0B6dknPMOlZJj3TpGeb9IyjECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQVqBYiOZX2+bqPDp55SF5EPRR/34i0p+dVwgQIECAAAEC1SaQnmHSs0xLMHR6xlEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGgrUGzOB139AcNHrDAo+xPy6U/JH/Pw+La7dESAAAECBAgQqEKB9EyTnm1G9u0V6VlHIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBglkAxVVNO6Gou6c/F7ztkYLaFHz7+jEzQ1XwzrZ0AAQIECBDIBVJm6PRsk0p61knPPAoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAs0CxRQEXe35oPdetjkI+uoXX4mxb73t3hIgQIAAAQIEakYgPdukZ5xUWp55amZzNkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgIQSK5SwMunpDofvVFWPHQUtmBFc8//JCUBhKgAABAgQIEOiaAi3POOmZJz37KAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRFQiaQoVh/SuzrL5gH5pEzFm0uR4Zuq06tyEVRMgQIAAAQIE5iKQnnHSs0565knPPgoBAgQIECBAgAABAgQIECBAgAABAgQIECDw/+zdBZgVVRvA8XeXpbtLuktpkA5FSkJCQpCUEjABFVApAxTrMwFBSgFBVKQkpFu6ESQlpENyv3nPMrP3bsfd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eDxtb7ZZ4wp8z40aVR4WPz7/3Kz63o75M//2Gd+Mq668pNmQdnFCO+z0798/rrzi4rji8oviqqsujREjNs9nmSqZp9f16qv3zbdfe21hle3FLaNsl57NuT84K39tpddmOWC/rK/Bxd1zeY6V55uu0fRZp33l4y2t5+tfP734d/KZE4+LSy7+aQwePCidGqk6+1FHHRH3jLxNSDoX8YMAAQIECBBorcA6666bD7311r/HqIr3n82d/8UvfKHY/f59Fn66S7Gzg3QuuOBnsf1228aJJ5wQp37ly5E+kWPXXXaOZ599toOs0DIIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoL0L1KYqullR6A7RPv7xT8b/u/5X2UdVb5yvZ9ttt4703bSlKtjn//iCeOSRx5oeWqbtiy++PPpkQeQUZE7hzBRWTd+VLYWdjz/h5CwUsDC0m44/+OB/45QvfDUPa6ZnkULT5eB05fkXXfyL+O1vf1fsSoGD1FKw87TTvp5/p3uk+5fba6+9Hg8/0lCNLu277BdXRa9evfJQeBp30udOzL+bnvedM0+Lw484pnyZZn9PmvRmHPrRo+Kvf7khr/o8aNDAuDILHTdtu1dUNf7EsSfEH//w29h4442id+9ecfFFP206PKZOnRoHHXxEpOB2ZRs58t4iuH7D/10b3/zmt7OPHL81H/KjH/0sD7ynjRTsTmH0ynb33f+KFLqulrZzVtG8XEF81112irTeps8ovYYvurjxOlta3803/z1/babjBx20f/6d+vfe+0CcdPIXl/k1mK6xItrinnW635LWk17zJ3/+y1mFwgsj/ZtKFdDv+seeixh+6pNHx4UXLvqaXRFrck0CBAgQIECgugXWWnvt4v3ZPffcs8TFTJo0KebOnZu/T9522+3ihhtuWOI51TogrfPee/9VrdM3bwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCocoFSQwi6YySh0/8Jf9jhR+eVj6dNm7bIo0lh0jfemBApkJsqSFe2FCxNLVVtbq7NahLMbTrm3PN+Er/61XXNnj958pQ8mNlS8Pqee+6Nr33ttJg+fUbTy8a8efPikksuj8svX1h1Og065CMfi+99/7ysOu7CdZZD0GktKWB94EGHL3K9n/z053HFFdfkwYzywabnffkr3ygfWuzvMWPGxpFHHRcTJ05aZFyaw7//81DstfeHi2PJ/7DDj8nnVvYuDmadV159LQ9BpzB00/bXm25utNYdd9q+GDJhwsQ4/YyziirA5QPp9XDV1b/KguanZmH/5l/jc+fMLQ+PJT3jdL3mWlpXc232rIVh7jktnDt3zpxFTr3t9jtj730+nAf1y9cuP6M0eObMmfG5k74Yt956xyLnNrfjJz+9KJ559rlFDg0fPqzYtyyvweLkJXRmz150jYtzX9yzTrdqzXruu++B+MIXvxrp3165VRqmPxJIf4BQ2RY3p8px+gQIECBAgEDnE5he8Z57px13ahVA165d83HdunVr1XiDCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaUXqMmq+uYJ0aeffmbpz27nZ2y44QYxYsTm0b9/v3jyyafj0UcfX+EzTmHLPXbfLYauv14smL8gHnv8yXjmmdZ/NPTWW28Zm222aVZxrhSvvvp6/PvfDy4S8G26iFQVeo89dou11lozHs/u98QTTzUdssh2mueOO24fw4atnx976qln4rnnRi3xXotc6N0dQ4euFzvssF306bNatt7nGoV4mzunX7/VY9ddd4411xwSk9+ZHP/Jgtvjx7/R3NBG+9I6U0Xpf941Mg9OVx7s3r1b7LLzTrH+sKHx0EMPZ+t5vvJw1fbT63jHHXfIq2SPHPmvRuHepVnUsPWHxp7v3T0PhY8e/UqLr61leQ0uzTxaO3Zxzzpdo7Xr2WSTjWOb7N9VTfaafz0LQD/y6GMxpyIA39r5GEeAAAECbSfwxsQl/3d+293NlQg0Fsg+D6fxjlZuPZ29p0+f2jFlypR4z267xvz581s887Of/Vyc+tWGP7q68MIL4rJLL21xrAMECBAgQIAAAQIECBAgQIAAAQIECLS9wNm3jGn7i7riKhc4ff/1VvkcTIAAAQIECBAgQKD9CWRB6COzJEBNdMQgdPvjNiMCBAgQIECAAAFBaK+BVSmwrEHoX/362uwP+XbNpz5x4sQ49NCPxFtvvrnIUg477PA4+5xzoqYmu1P2qSQpNP3OO+8sMs4OAgQIECBAgAABAgQIECBAgAABAgRWnIAg9IqzXZVXFoRelfruTYAAAQIECBBovwK1KQQdy1gVrf0uy8wIECBAgAABAgQIECDQdgKnn/atuPnmW6JHz54xePDgGDnynhg9enQ89eSTMXXa1Bi4xsDYJQtKDxo0qLjp3/52kxB0oaFDgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTaXqA2K1SWVSpLYWiNAAECBAgQIECAAAECBJoTGDt2bBx44AFx099ujp5ZGLq2tjY22WST/Lu58X/64x/jtCw8rREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIrTqCUPq5ZRegVB+zKBAgQIECAAAECBAh0DIExY8bEgQfsH+l3S62uri6uvPIKIeiWgOwnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJtKFDbcC0VodvQ1KUIECBAgAABAgQIEOigAqky9L7v3yfWW2+92O8DH4j1h64fvXv3jnHjx8Vzzz4bt956ayxYsKCDrt6yCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA+xLIgtApBJ2qQmsECBAgQIAAAQIECBAg0BqB119/Pa65+urWDDWGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWEECpYZa0CpCryBflyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYAUIlOpVg14BrC5JgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCKFCityIu7NgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFaEQBaErsm+NAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSPQBaErs++NAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSPQBaE1ggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBdAqWaqKmuGZstAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKdXqBUnxM0/Oz0GgAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgKgawidGqqQlfF0zJJAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRygXcrQtMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA9QiU0lTVg66eB2amBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhE5EFoEAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgmgdqI+uxLI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQPUI1NZETfXM1kwJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQCdSqB+11QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAtQmU0oRVha62x2a+BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBDq3QG0KQdd3AoP6+vqYM2d2zJ03N+rmzYv5C+bHggULOsHKLZEAAQIECBBojwKlUim6lLpEbdeu0a1rt+jevUfU1NS0x6maEwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF2KVBb38Fj0HV1dTFz1oyYNWtmu3wAJkWAAAECBAh0ToH0B1npe17dvOJ9Ss+evaJXz95RW1vbOVGsmgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBSCGQpm45beXDa9Kkxc+aMpeAwlAABAgQIECCw6gTSH26l7169ekef1fquuom4MwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEqEKhNn8BeX19fBVNt/RRTFeipUyfnFRZbf5aRBAgQIECAAIH2IZD+kGve3LnRt28/1aHbxyMxCwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXYoUEpzqulAVaHnzZsb70x+Swi6Hb7YTIkAAQIECBBovcC8unkN72my9zYaAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKLCpRSNej01RFaqgQ9eco7sWDBgo6wHGsgQIAAAQIEOrlAek+T3tuk9zgaAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKNBfKK0KkmdEdoU6dOFoLuCA/SGggQIECAAIFCIIWh03scjQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBxgKlmpqOEYKeNn1qpI+Q1wgQIECAAAECHU0gvcdJ73U0AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQWCpTq69NG/mPh3irrpY+LnzlzRpXN2nQJECBAgAABAq0XSO910nsejQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBBoFSw6/qrgo9c5YQtBc0AQIECBAg0PEFvOfp+M/YCgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFovkAWhq7sadH1W0nrWrJmtX7GRBAgQIECAAIEqFUjvedJ7H40AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYgsCJ2qQVdvoGbOnNmeIwECBAgQIECg0wh479NpHrWFEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILEGgVJNy0HkYegkj2+nhufPmttOZmRYBAgQIECBAoO0FvPdpe1NXJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqE6B2mr/ePW6efOqU96sCRAgQIAAAQLLIOC9zzKgOYUAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBDCpQaVpWXha7KBc5fML8q523SBAgQIECAAIFlEfDeZ1nUnEOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINARBbIgdApB11ft2hYsWFC1czdxAgQIECBAgMDSCnjvs7RixhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHRUgVJDLejqrQjdUR+MdREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LJAqb6Kq0G3vCxHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoyAKljrw4ayNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoGMKZEHomuxLI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQPUIZEHo+uxLI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQPUIZEFojQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtUlUKqJmuqasdkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINDpBUr1OUHDz06vAYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaoQyCpCp6YqdFU8LZMkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAXeLciNA0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUj0Btmqp60Cv+gfXu3TvWXHNIfqMZM2bGG2+8seJv6g4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEOqhAHoTuoGtrV8vaddedY/8Pfyif0zvvTI6zzzm3Xc3PZAg0J/DePfeILbfcIh555NH4938ebG6IfQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBVSKQBaHrsy9taQSGDBkS+75/7xg0aGCsvvrqUVdXF6+88mo89fQz8XT2nbY1AtUusMP228UhhxyUL2PDDYfHm2+9FS+++FK1L8v8CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQ4iUFsTNR1kKSt+GSkA/enjjs0C0IMWudmAAQNi+yw4Wl9fH3/4w59Uz11EyI72JLDrrrtE19raPNz87LPPNTu1TTfdpNH+LbfYQhC6kYgNAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYFUK1KoH3Tr+LbcYEZ/61LFRKpUWe0JNTU0cccRhkUKkv772usWOdZDAqhI44vCP5rd+6623o6Ug9F3/HJmH+9NrOgX8R468Z1VN130JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAosI1KY9qkIv4tJox7D114/jjvtkpEBouU2YMCFuv+Mf8dJLL0XfPn1j6623il122Sn69OmTD1l33XXKQ/0m0K4Eevfq1ar5vPHGG3H6GWfGBsM2iBez13ldXV2rzjOIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILAyBGpTCLp+ZdypSu+Rws8nnHBcEYJOlXF///s/xn8efKhY0bRp02PsuHFx6223x3FZ1eiNNtowLrjgouK4DoH2JNCvf79WT2fOnLnx3KhRrR5vIAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgZQnU1otBL9b6gAM+HL0qKuj++c9/bRSCrjw5haR/+atrK3e10G8cPR8woH9sscUWMXHixKzC9Oilqry7+uqrx7Bh60f/LNz65qQ34+VXXo0ZM2a0cN/md/fo0SNS1es11xwSU6dOjVdfey3eeuvt5gc3s7c8h/T7lVdeiddee72ZUc3vWmONAdn8h0XPbA7Pv/BCZjCp+YFLubdLly6xwQbDYu21146xY8dm83o15s+fv5RXaRiens+W2fOZsAzPp6UbLq950+sOGjQwNt9ssxg3fnyMHv1yLFiwoOmQYrt/v9YHoYuTWtFJ5kOHrhfrZOZ1mXVyf/31Ma04s/khpVIp+3cxIvqstlqMev75pXpNNn9FewkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGOJFAbWUVorWWBHbbfrjj49ttvx7333V9sL2snBXJTyPOYY47KwqubRvfu3Rtd6tHHHo/rrru+0b6mG1tttWUccvBBeQC66bEJEybG7/7v91kg+bWmhxptDx48KI4+6uOx7rrrFhWvywOmT58ef//7bfHv/zxY3rXI7y1GbB4f//gR0bt370bHUiD8zTffjN/85vq8Unajg+9ubLnlFvHRQw+JFJ6ubOncxx5/Yonrrzyn3F9ttd7xsSMOjw03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+fxJ0b1799hn771i5512jKeeejqeffa56JWFmtP2sGELg9WpcnC5pfnfnoW5P/iB/fJdKSD7nTNPj/8+/Ei88sqrMb+uLtZbb73Yfvttc8t0zauu/mX59BZ/jx79cuy04w758RSE/sbXT82vWVc3P7bcYkQMH75Bo1B3ixdagQeWx7ylaW255Rbx/e99N5565pl4Y/wbsdZaa0baV/n8b8sC7HPmzG10iZdeeqnRdgqk3377nZGqgG+wwbC49je/bXS8pY3rfnN9/u+g/O/ikIMPjG222SrS81gwf0H+WhwyZHBx+jvvvBO33b4wUF8c0CFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILINAbUMMWkXoxdnNmDkzzj7nvPjqqV+K1VdfPR+aAsGpknLTasrpYN28uvjFFVfGyy+/ko9tyx+33nZ7pHDp1ltvlV82hVB33nmnZm+RQtNPPvnUIsdShes///mv8ZGPHJwHhNNaUoA2fTdtaQ2/+90Nxe40duLEiXlgNu1cLQtO77rrLvl3MejdzoQJE+Ofd49stDsFbgdnAfHtsrB1aim0u0s2//TdtG266cLK0k2PVW4/9NB/Y/8PfzD69GmobJwqVh+wf+Nq1akydmrl0G7l+Sujvzzmi5tfbdfa2HabrSPSd5M2atTzcced/2iyN2LatOkxZsyYLLy/bn4shcePPPJjxbjB2Wts4sSFVaOLA006c+fNi0svuzw+f/LnCteW/k3MmDEjLrr40iZXsEmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWHaBUr1q0K3SS0HOFIa+445/xKxZs5o9p76+Pq8A/b2zf7BICHru3HnFOfPn1xX9Zen8+trr4o9/vDFmZgHt5trUqVPzSsp/v/W25g7n++697/74+UWXxptvvtnsmBQcTtWEL77kskbHFyxYkO9LAdhU4TetuWlLY557blT86PyfRF1W5blpu+666+N3//f7LJA7remhfDtd84UXXoxzz/tRs8eb7kzjW1rL/Pnz82rX3z7zrKyq9RtNTy222/L5FBdt0llW8yaXyTfTmlPl5jlz5ixyOJmnEPwVV169yLHyjl9cflVWRfzt8maj3xtttGG+PS8L9C+pvf76mDj77HPzKtAtvRZSGP+s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uOjWrXuzt+/bt2++f+7cuTF79uyYNGlSs+PsJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbSVQmy5Uk31Va+vWtVvMmjWzWqdv3gQIECBAgACBpRJI7300AgQIrCqBj3/siBZv/cSTT2Uh6W5x8UUXxRVXXN7iOAcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBbCdRWczXohNC9e4+2snAdAgQIECBAgEC7F/Dep90/IhMkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBYSQKlhvtUb0Xompqa6Nmz10richsCBAgQIECAwKoTSO950nsfjQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBiFJHCNP06tnbsyRAgAABAgQIdHgB73k6/CO2QAJVLbBg/vx8/nPnzq3qdZg8AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSPQG19fZps/qN6Zt1kprW1tdGrV++YOXNGkyM2CRAgQIAAAQIdQyC910nveTQCBAi0V4Ftt92mvU7NvAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECggwqUGtZV/R+x3me1vtG1tmsHfUyWRYAAAQIECHRmgfQeJ73X0QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWCiQBaGruxr0wqVE9O3bL0qld7PdlQf0CRAgQIAAAQJVKpDe26T3OBoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAo0FstRwqgbdMcLQ6ePi+63eXxi68TO2RYAAAQIECFSpQApBp/c26T2ORoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAY4FSTcpB52Hoxgeqdatr127Rv98akT5CXiNAgAABAgQIVKtAei+Tv6fJ3ttoBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsKlCqr0/VoDtGRejy8lLVxAEDBkavXr3Lu/wmQIAAAQIECFSNQHoPk97LqARdNY/MRAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFaBwLufs56XhV4Ft1+xt+yzWt/o2aNXzJw1I2bNmrlib+bqBAgQIECAAIHlFOjZs1f06tlbAHo5HZ1OgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQOQSyIHQKQXesitCVjy5VUuzbZ/VIoeg5c2bH3Hlzo27evJi/YH4sWLCgcqg+AQIECBAgQGClCZRKpehS6hK1XbtGt67donv3HlFT0zH/OG2loboRAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBApxKobYhBd/zQTQoW9ejRM//uVE/YYgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAh0QIFSfQeuBt0Bn5clESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQCZQoECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoNoEsiB0TfalESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHoEsiB0ffalESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHoEsiC0RoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoSKNVETXXN2GwJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOj0AqX6nKDhZ6fXAECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFUIZBWhU1MVuiqelkkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJALvFsRmgYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqR6CUpqoedPU8MDMlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAiD0KDIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQDUJ1EbUZ18aAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqkegtiZqqme2ZkqAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFMoFY9aK8DAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqTaCUJqwqdLU9NvMlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LkFSikEXd+5DayeAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEqE6itF4OuskdmugQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1EZWEVojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBANQmUavIcdH01zdlcCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDo5AKltP4aVaE7+cvA8gkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUl0Btfb1q0NX1yMyWAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG8InSqCa0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgWgRKNTVC0NXysMyTAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEGgVJ9ferkP5gQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgKgRKDbNUFboqnpZJEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQC2RBaNWgvRYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgugSwInapBC0NX12MzWwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKdW6BUk3LQeRi6c0NYPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1SNQW1+vGnT1PC4zJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgCZQaGPKy0EQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQFQJZEDqFoFWFroqnZZIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECOQCtQ0xaBWhvR4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItKXA2beMacvLuVY7EThj/3XbyUxMgwABAgQIECBAgAABAgQIECjVqwbtVUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJUJlKpsvqZLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACByILQNdmXRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoRyILQ9dmXRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoRyILQGgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKpLoFQTNdU1Y7MlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDTC5Tqc4KGn51eAwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlUhkFWETk1V6Kp4WiZJgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAu8G5FaBoECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCoHoFSmqp60NXzwMyUAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGIPAgNggABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtUkUBtRn31pBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqB6B2pqoqZ7ZmikBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQygVr1oL0OCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCoNoFSmrCq0NX22MyXAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQOcWKKUQdH3nNrB6AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqTKC2Xgy6yh6Z6RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUBtZRWiNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1SRQqslz0PXVNGdzJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgkwuU0vprVIXu5C8DyydAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXQK19fWqQVfXIzNbAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTyitCpJrRGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBahEo1dQIQVfLwzJPAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaBEr19amT/2BCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBqhAoNcxSVeiqeFomSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBALpAFoVWD9logQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC6BLIgdKoGLQxdXY/NbAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAh0boFSTcpB52Hozg1h9QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVI9AbX29atDV87jMlAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJFBqYMjLQhMhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAVQhkQegUglYVuiqelkkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJALlBpqQasI7fVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgED1CJTqVYOunqdlpgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5AIlDgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKg2gSwIXZN9aQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgegSwIXZ99aQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgegSwIrREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC6BEo1UVNdMzZbAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQ6vUCpPido+NnpNQAQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAVAllF6NRUha6Kp2WSBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkAu9WhKZBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6hGoTVNVD7p6HpiZEiBAgAABAgQIECBAYFULDB8+PE488TOx8y67xJAhQ2L69OkxatSo+PrXvhqTJk1a1dNzfwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoJAKlTrJOyyRAgAABAgQIECBAgACBNhA44MAD42833xIfPeywWHfddaNr167Rv3//2HXXXePukffElltu2QZ3cQkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILBkgSwIXZ9/LXmoEQQIECBAgAABAgQIECDQmQV22GGH+MlPfhqlUinGjx8fPzjnnNj/wx+KSy+9JBYsWBBdunSJX1x+eWcmsnYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWIkCtTVRsxJv51YECBAgQIAAAQIECBAgUK0CDz/8cNx9993Ro0ePOP7Tx+Xh57SWn194YWy22Waxzz7vj4EDB0WfPn1i2rRp1bpM8yZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBKhEoNdSDrq+S6ZomAQIECBAgQIAAAQIECKxKgZM+99k47lOfLELQ5blcc/XV5W6kytEaAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBY0QKldANVoVc0s+sTIECAAAECBAgQIECgYwtMmTK1WODkKVOKvg4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFhRAqUUglYPekXxui4BAgQIECBAgAABAgQ6h8Dxxx+fL7S+vj6eefrpzrFoqyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBVSpQWy8GvUofgJsTIECAAAECBAgQIECg2gWGDBkSBx9ySL6Mhx9+OObOndumSxo+fLM2vZ6LESBAgAABAgQIECBAgACB5RHwv1OXR8+5BAgQIECAAAECBAgQIECgbQVqI6sIrREgQIAAAQIECBAgQIAAgWURKJVKccPv/xBdunSJurq6+MqXv7Qsl3EOAQIECLRDgeMvvrMdzsqUllfgmlP2Xd5LOJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECLQbgdqaLAedPrpYI0CAAAECBAgQIECAAAECSytwySWXRqoIndoZZ5wekyZNWtpLLHH86NHPLXGMAQQIECBAgEDrBPz3auucjCJAgAABAosT8N+ni9NxjAABAgQIECBAgAABAgQIrFyBUrpdjarQK1fd3QgQIECAAAECBAgQINABBE448cTYe5998pXcd++98ecbb+wAq7IEAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgWgVrVoKvlUZknAQIECBAgQIAAAQIE2o/AMcccE1//+jfyCY0ZMyY++9nPtJ/JmQkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdAqBvCJ0qgmtESBAgAABAgQIECBAgACB1ggcdtjh8e0zv5MPfeutt+LAAw+I+fPnt+ZUYwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJsJlGpqhKDbTNOFCBAgQIAAAQIECBAg0MEFDjjwwDj7nHPyVc6YMSMOPGD/mD1rVgdfteURIECAAAECBAgQIPD/2bsPOKuKu2HAs5dFRKSIEHtDApYoVlTE3rEkigXEFjXFrsmbaF5LLDGJLbbE3qJRLLHGBmoEwYJGo4g1fr4WRGwBEUQUud+ZWe5xl11gF3YXLvvM/rh3zpw5M3Oecy53xf/9XwIECBAgQIAAAQIECBAgQIAAAQIEFkaBymIxLis9LIzrsyYCBAgQIECAAAECBAgQWEgEunfvHs4//4JQ+kBtu3btwtPPjKpzdWv07FFnu0YCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBYAoWqgWSFbixQ4xAgQIAAAQIECBAgQGBRFVhuueXzIOhF9RydFwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUj0BlVTZogdDlc8mslAABAgQIECBAgAABAgtGYMSIJ4JMzwvG3qwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUFsgywgdg6CLtfdoIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwEIqUKhIyaBlhF5Ir49lESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQh0BlsSgbdB0umggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWIgFClVrkxF6Ib5GlkaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwCwCWSB0DIKWFXoWF5sECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCzEAoWqXNAyQi/E18jSCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYRaBQlA16FhKbBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgs7AKFhX2B1keAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFZBbJA6IrsRyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgED5CGSB0MXsRyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgED5CGSB0AoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKS6BQESrKa8VWS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAixcoFBNB1WOL1wBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBZCGQZoWORFbosrpZFEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQBGZmhKZBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB8hEoxKXKB10+F8xKCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAIIQVCgyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEA5CVSGUMx+FAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJSPQGVFqCif1VopAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEMoFK+aDdBwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlJtAIS5YVuhyu2zWS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBlCxRiEHSxZRs4ewIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEykygsigMuswumeUSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAZsozQCgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMpJoFCR4qCL5bRmayVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoIULFOL5V8gK3cJvA6dPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLwEKotF2aDL65JZLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECKSN0zAmtECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFwEChUVgqDL5WJZJwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVQKFYjFW0gMTAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlIVAoWqVskKXxdWySAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkkAWCC0btHuBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHyEsgCoWM2aMHQ5XXZrJYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAyxYoVMQ46BQM3bIhnD0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAuUjUFksygZdPpfLSgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiAKFKoaUFpoIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEykIgC4SOQdCyQpfF1bJIAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSSQKEqF7SM0O4HAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKR6BQlA26fK6WlRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkAQqORAgQIAAAQIECBAgQIAAgYVZ4HcPjl2Yl2dt8yhwSr8V5/FIhxEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBKoBBCRfajECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHwEskDoYvajECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHwEskBohQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAuUlUKgIFeW1YqslQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDFCxSKiaDqscVrACBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCwEsozQscgKXRZXyyIJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEgCMzNC0yBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgED5CBTiUuWDLp8LZqUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECISQAqFBECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoJwEKkMoZj8KAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEykegsiJUlM9qrZQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKZQKV80O4DAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKTaAQFywrdLldNuslQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LIFCjEIutiyDZw9AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlJlBZFAZdZpfMcgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqAxZRmiFAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC5SRQqEhx0MVyWrO1EiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQwgUK8fwrZIVu4beB0ydAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQXgKVxaJs0OV1yayWAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGUETrmhFYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQLgKFigpB0OVysayTAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEqgUKxGCvpgQkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgD+0vpMAAEAASURBVAABAgTKQqBQtUpZocvialkkAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJJIAuElg3avUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHkJZIHQMRu0YOjyumxWS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBlCxQqYhx0CoZu2RDOngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB8hGoLBZlgy6fy2WlBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEgUIVQ0oLTYQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlIZAFQscgaFmhy+JqWSQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAkmgUJULWkZo9wMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAuUjUCjKBl0+V8tKCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIAgUOBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKDeBLBC6IvtRCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUD4CWSB0MftRCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUD4CWSC0QoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfISKFSEivJasdUSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINDiBQrFRFD12OI1ABAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUBYCWUboWGSFLourZZEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCSBmRmhaRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKB8BApxqfJBl88Fs1ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEJIgdAgCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUE4CWSB0Mf2U06KtlQABAgQIECBAgAABAgQWrMCmm24abhl8a3j+hX+Hfz3/QrjxppvCuuuuu2AXZXYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaFEChYpQ9dOiztrJEiBAgAABAgQIECBAgMA8C2y33fbh+hv+GjbYYIPQrl27sOSSS4bevTcJg2+9LWzcu/c8j+tAAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQEIFCVT7oYkOO0ZcAAQIECBAgQIAAAQIEWqjAYostFi659NJQUVERJk6cGA4/7LDw85/9NEyZMiW0atUqXHPNtS1UxmkTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHMLFOKEMSe0QoAAAQIECBAgQIAAAQIE5iZwaBb4HAOeZ8yYEX70wz3CyJEjwrBhw0L/vfZMh7Zp0yb077/33IaxnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzLdAIQZBywc9344GIECAAAECBAgQIECAQIsQ2G+/Aek833rrrTB+/Pj8nN95550wbtwHafvgQw7J21UIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBTCRSKKQxaKHRTARuXAAECBAgQIECAAAECi5LA0ksvnU7nsUcfrXVaI0eMTG3LLrtMrX0aCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAYwtUhiwjtEKAAAECBAgQIECAAAECBOoj0Lp169Rt7NixtbqP+3Bcamvbdola+zQQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHGFqisyOKgi0UZoRsb1ngECBAgQIAAAQIECBBY1ASWXHLJUBH/IzIrH330Ua3T++TjT1JbKVi6VgcNBKoJdOu2RrUtVQIECBBoLgF//zaXtHkIECBAYFEW8H66KF9d50aAAAECBAgQIECAAAEC5SaQZYSOOaFlhS63C2e9BAgQIECAAAECBAgQaG6Btm3b5lNO+3paXi9VqrcVCoUwY8aM0q75er7u6O3n63gHEyBAgMC8Cfj7d97cHEWAAAECBKoLeD+trqFOgACB5hPw92/zWZuJAAECBAgQIECAwIIWqJQNekFfAvMTIECAAAECBAgQIECgPAQ++aQq43Nc7fe+971ai+7atWtq+/bbbxstCDoO+Pbbr9eaSwMBAgQIECBAgAABAgQIECBAgAABAi1NQJK/lnbFnS8BAgQIECBAoD4ChapOflmsD5Y+BAgQIECAAAECBAgQaOkC06dPTwTLLLNMLYquXaoCoadNq50tulZnDQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYD4FChUVgqDn09DhBAgQIECAAAECBAgQaDECX345JZ1rnz59ap3zhhttlNo+//zzWvs0ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBxhYoFItxyPTQ2GMbjwABAgQIECBAgAABAgQWMYEnhj+RzmijDauCnkunVygUwtprr502hwx5uNTsmQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINJlAoWpkWaGbTNjABAgQIECAAAECBAgQWIQELrrownQ2i7dtG84//4L8zK648qpQWVkZitmnbS/7y2V5uwoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGgqgcqqbNACoZsK2LgECBAgQIAAAQIECBBYlATGjh0bHn300bD99tuH3XbfPWy9zTahoqIitGvXLp3mHbffHiZN+nxROmXnQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQILqUCWEToGQRcX0uVZFgECBAgQIECAAAECBAgsbAJHH3VkeOSRR1L25yWXXDIFQcdM0Hfe+fdw2mmnLmzLtR4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWEQFKrPEXdn/vJYRehG9vk6LAAECBAgQIECAAAECTSJwzNFHhcrKytC3b98UED1ixIgwY8aMJpnLoAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoC6Bypi1SyFAgAABAgQIECBAgAABAg0VmD59ehg2bFhDD9OfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0ikChahQZoRtF0yAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDSLQBYIHYOgZYVuFm2TECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQKAKFqlzQMkI3iqZBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoFoFCUTboZoE2CQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECjSdQaLyhjESAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHmEcgCoSuyH4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLlI5AFQhezH4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLlI5AFQisECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoL4FCRagorxVbLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECLV6gUEwEVY8tXgMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlIZBlhI5FVuiyuFoWSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAEpiZEZoGAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEykegEJcqH3T5XDArJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAghBQIDYIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLlJFAZQjH7UQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFA+ApUVoaJ8VmulBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyAQKMR+0nNDuBQIECBAgQIAAAQIECBBYmAQ23XTTcMvgW8PzL/w7/Ov5F8KNN90U1l133YVpidZCYJEWKBQK4YwzzgyP/fPxMPrlMWHo0EfCSb/5TYPP+cCDDgp/u/mW9Fp+8cWX0jgHHXRwg8dxAAECdQt07do1XHHFleHJp54O8TV2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sLRCgEDDBEqvv9kFOnfsUBUU+cUXX8xx4GnZtzGUys1/+1vYd5+9w+DBt6TssgP22y/tinMc+uNDS908EyDQAIHGeE+N0623/vrhd2efHeLr8eKLLwrrr9crHHvsMWHizOzve/XvH/74x3MasDJdCRAgQIAAAQIECBAgQIAAgfoKFLJvZMpKeqjvMfoRIECAAAECBAgQIECAAIEmEShlxltmmWVqjd+1S9XXgk+bVjtbdK3OGggQmCeB8R+NT8e1bVt3IPRii1Vlgn5/7Pv1Hj9msLzt9jtCzLYXP8Rw0IEH+jBDvfV0JFC3wMSJn6cdMVB51rLccsvmTW+//XZen7VyxJFH5k0xMGvo0EfyP61bt077fnzooantxBNPyvuqECBQP4F33/3ugwidOnWqdVDHmW2fffZZrX3VG0ofFoy/A5911pnVd4X//OfN8OWXX6a27t//fo19NggQqJ9AY7ynxpl++9vTU4b21157LVx+2WVp8qFDhoTN+2wWXnrxxbT9oz33DNU/sJQaPRAgQIAAAQIECBAgQIAAAQLzLVCoGqHqa5nmezQDECBAgAABAgQIECBAgACB+RD48ssp6eg+ffrUGmXDjTZKbZ9/XhX8VauDBgIE5lugFDTZrl27WkEaK620UigFR5b6zW3CmEH6oYeHhI4dqzLU/upX/xPqe+zcxrafQEsW+Gh81YcWvl9H4OP22++QaIpZBowJEybMlumDD8aFSZMm1fmndNDXX3+d9pcCMUvtngkQmLvA//3fdx9E2HGnnWodsHL2vhrLuHEf1NpXveHll0enzTZt2oQllqj9QaXS78aLL96m+mHqBAjUU6Ax3lPjVN26dUszPvboozVmjt9o9Ktf/ypv22777fK6CgECBAgQIECAAAECBAgQINA4AlkgtGzQjUNpFAIECBAgQIAAAQIECBCYX4Enhj+Rhthow6qg59J48euF11577bQ5ZMjDpWbPBAg0ssA999yTZ2sedMCgGqMffPAhafubb74Jw4cNq7Gvro2YPfrBBx8MXbtWZXP/w+9/Hx64//66umojQKCBArfccks6In7IIH5IoXrpt+uuafOtt/5TvblWfb999wm9N96ozj8xADqWP196adp/1VVX1jpeAwECcxaImZo//PDD1Kl//71rdO7Vq1eIHxaK5a833JCeZ/cwJMsoGz/YEMsvf/k/NbrFb11YbrnlUtvTTz9dY58NAgTqJ9AY76lxpvg7ciyVlZXpufrDB2PHVt9UJ0CAAAECBAgQIECAAAECBBpZIAuEjtmgBUM3sqvhCBAgQIAAAQIECBAgQGAeBC666MJ0VAwMOf/8C/IRrrjyqvQ/lGMQyGV/qfqa4XynCgECjSbw1dSp4cWZX9195JFHhRVXXDGN3b179zBw//1TfcSIJ/Jg6dhw8y2Dw2uvvxH+euONaX98iAEg99//QFh++RVSWwyi/Otfb0h1DwQIzL/AY489GmKQZSw33nhTiB8YimXQoEFh9dVXT/Vrrr4mPceH+E0Lo18eE14e80rYaOY3LOQ7VQgQaDKBW26+OY0dA5932333VI8fFLrs8itS/bPPPgtjxozJ5//FL34ZXn3t9fD0M6NC7BdLzCb79FNPpfqAgQNrvIZPPOk3qT0+3HfvvXldhQCB+gs09D01/rfqM6OeTa/Vo48+Jp/omWeeSfXDf/KTEH93LpX4e/FfLrs8bcb/nvXBwJKMZwIECBAgQIAAAQIECBAg0HgCFXv1H5iSCbzyyquNN6qRCBAgQIAAAQIECMxGYPzHVV/jPZvdmgk0qUCFD4E2qW9jDf7nLNB5++23T8NNnjw5VFRUhHbt2qXt22+7LZx22qmNNZVxCBCoQyAGbtxz730pmHnGjBlhwn//GzovvXR6LU6bNi3svPNO4cNx49KR7du3D8/96/l8lF7rrhNinxtvuin07r1J3h7/8Sm+lmctMfDkqCOPnLXZNgEC9RCIAZGnn35G6hkzOE+ZMiUstdRSafvdd98JO+24Yz7K9Tf8NWy22WZp+4knngg//cnh+b66KjFoOgZh/umCC4Js0HUJaSNQP4EYAPn4sOH5tyNMmDAhxCzOrVu3TlmeTzj++PDwww/lgz373L9Chw4d0vYpJ58c/v73O1K9U6dOYVg2TgzAjO+p47NM060Xax26dKn61oUHHngg/PIXJ+TjqBAg0DCBhrynDjrggHDqqaelCSZOnBg23aR3qnfr1i3cddfd+ev0P//5T5g+fXpYY4018g8s3XP33eGkk05s2OL0JkCg3gK/O/vssNde/fP+pQ8LxvfOFBCR7bn11sHhzDOqfofOO6qUlUD2rwtltV6LJUCAAAECBAgQaB6BQtUv/TJCNw+3WQgQIECAAAECBAgQIEBgbgJHH3VkeOSRR9L/pIqBIjEIOv636513/l0Q9Nzw7CfQCAJvvfVW2HefvVNQZfwfx0t36ZKCmCdN+jzsvvtueRB0nOqLL75I/WI97o9B0LEsu8yy6bn0UFcQdNxXqKjKYlvq55kAgfoL3Dp4cDjrrDNTttgYtFwKgn7zzTfDrv361RjoiSeG59vDhz2e12dXmZFloI0lBlgrBAjMu0AMgtxpxx3Ce+++mwaJr9MYBB3bf/Wr/6kRBB07vP76a6lf/N03fgNDqcRgy1367ZLGie+pyy2/fAqCjtmiH3zwQUHQJSjPBOZRoCHvqcOHDctnefWVV/L622+/HbbddpvwzjvvpLYePXqEtdZaKwVBx/fTSy+5RBB0rqVCoGkE4geE4n/Dlv6UZonvnaW2ylaVpWbPBAgQIECAAAECBAgsQgIVe+41IIuCrggyQi9CV9WpECBAgAABAgQWYgEZoRfii9MCliYjdHld5JhBr2/fvikIesSIESFmplUIEGhegRVXXDFstPHGYdSoUTUCoKuvIman3HLLLUMMCikFQlffr06AQNMLrLf++mH55ZbLMsYOC19++WWdE6699g9Cq1aFMHr06Dr3ayRAoGkF4rcobLX11uGd//u/MGbMmNlOttVWW4U33ngjjB9f97cprbzKKinD7OTsw0hPPfXUbMexgwCBeROoz3tq/DBC99W71/jAQvXZYsDlxhv3Dl26dgn/eu658NFHH1XfrU6AAAEC8yEgI/R84DmUAAECBAgQILAIC2SB0AOzQOhiFghdlWlgET5Xp0aAAAECBAgQILAQCAiEXgguQgtegkDoFnzxnToBAgQIECBAgAABAgQIECBAgAABAmUtIBC6rC+fxRMgQIAAAQIEmkygUJGGrnpsslkMTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUYUKBSzbNAKAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEykmgUE6LtVYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEgSwQuiL7UQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFA+AlkgdDH7UQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFA+AlkgtEKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHyEihUhIryWrHVEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQ4gUKxURQ9djiNQAQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAWAllG6FhkhS6Lq2WRBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgkgZkZoWkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgfAQKcanyQZfPBbNSAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRCSIHQIAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBOApUhFLMfhQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAuUjUFkRKspntVZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBTKBSPmj3AQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC5SZQiAuWFbrcLpv1EiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGjZAoUYBF1s2QbOngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMhOoLAqDLrNLZrkECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSGLCO0QoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXISKFSkOOhiOa3ZWgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaOEChXj+FbJCt/DbwOkTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKC+BymJRNujyumRWS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAyggdc0IrBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKBeBQkWFIOhyuVjWSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAlUChWIyV9MCEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZSFQqFqlrNBlcbUskgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJJAFQssG7V4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC8BCpDiNmgBUOX12WzWgIECBAgQIAAAQIECBAgQIAAAQIECBAgUCXQqlWrcMQRR4b1118/LNm+fRg37oNw0403hhdeeKHFE3Xr1i303mST5DDs8cfD+PHjW7wJAAIECBAgQIAAAQIECBAgQIAAAQKLkkBlRRYHXSzGYGiFAAECBAgQIECAAAECBAgQIECAAAECBAgQKCeBDh06hiFDh4allloqX3avXr1Cu3ZLhp/+5PC8raVW9tln3/DjQw9Np3/ajBnh9ttua6kUzpsAAQIECBAgQIAAAQIECBAgQIDAIilQKBZjNmgZoRfJq+ukCBAgQIAAAQIECBAgQIAAAQIECBAgQGCRFjjjzDNqBEFPmDAhTJ8+Pdxz912L9Hk7OQIECBAgQIAAAQIECBAgQIAAAQIECESByioGGaHdDgQIECBAgAABAgQIECBAgAABAgQIECBAoNwEttxyq3zJAwbsF17897/z7eas/OnCi8Jmm20WXn75ZZmomxPeXAQIECBAgAABAgQIECBAgAABAgRauEAhhBgELSN0C78PnD4BAgQIECBAgAABAgQIECBAgAABAgQIlKFA27Zt06q/mjp1gQVBxwX06tUrZaZeffXVy1DRkgkQIECAAAECBAgQIECAAAECBAgQKFeBQlUuaBmh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S6BmSoWWde7OlgABAgQIECBAgAABAgQIECBAgAABAgQWEoGYSblUjj/u2BCDoWP517/+FWLAawwKnTZtWqlLymYcMyzHEoNPd+23S4hBm7G8//77IQbsrrTSSqke27bYYssQg5hjiUHVO+6wfRg/fnzaHjpkSBj2+OPh8WHDw9JLLx1WWGGFEAOELzj//LR/1ofPP/88bLP1VnlAaGn/ZZddngdQ//IXJ4QHH3ywtCucddaZoUvXLmGnnXYOPXr0CDFounSOeacGVB7IMhLHcuppv03Pn3zySbj55ptTvfRwzNFHpQy+jwwdWmoKb7/9djjwgEHhmVGjUrbfTp06pWDykt0mm2ya1lg64PjjjwvVj49B5tVdBw++JXUtreO///1vrXWUxpqf51//+ldhwICBKQi6+jjRdbVu3UKfPn1S4G7/vfdOAejV+zR2/e677gpds4D5eO5ffPFFPvz1WdD319k9WrLo33/vcPvtt+f7YwbuhtyzDe2fT9RIlWefHRUOOvDAWqM1x301adLn4dVXXwlrr/2D7D7tkD7A8MILL9RYS9+Zr+evsuD7mEFaIUCAAAECBAgQIECAAAECBAgQaJkCheyL8lrmmTtrAgQIECBAgAABAgQIECBAgAABAgQIEFhoBP7z5pv5Wo448qi8XqpUD4KObf123bW0K8TAzFIgb96YVWJAdKn87Oc/L1XDHXfcngdBlxpjhuizf3dWaTPsueeeeX3WyrHHHFMrCDpmIl55lVVS1zezc6keBF06/vdnn12qhk022SSvN1UlBo5WD2IuzTNjxozwwvPfBZWuueaapV3hyCy7canETNB1HV/dtdS3qZ9jwHHMBF1X+cc/7subu2VB0c1RrrrqyhpB0KU5b7vttlI1fO9738vrsdLQe7ah/WtMNp8b8cMCPzn88DpHaa776pIsK3SpHHXU0aVqeo4fJIgB0rGMfPLJ9OyBAAECBAgQIECAAAECBAgQIECgZQpUFtN5Vz22TAJnTYAAAQIECBAgQIAAAQIECBAgQIAAAQILWuDGG/8adtt997SMXbMg55jt9frrrwvXXH11yuBcfX2FQiEsueSSqSkG9cbsz3Mrq626at7l0ksuyevVKzF4+dzzzk9ZnTt3Xrr6rrw+adKkMGrUM/l2qbLJppuWquHziRPDrrvtlm/XVenZc426mpusLWZM3nHH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cWL57NNPw/kXnJ/qDXn4xQnH58G+P/3Zz8IVV1yZgn7jGDH4eNCgQeHJp55uliDp9957P1/6eVmgeAxejmvYe+99wlPZGrp165bvr1655+67w5tvvpmaYuD5I48+Fvbdd9+UeTuOcdJvfhOi1eBbb61+WPjiiy/Sdgy6Pufcc1OgeQyWjseUSszgG0vsM/jW20L37t3DFltsma7V0cccU+pW63nMmDF52wEHHpgygMcxYgbvh4cMDfvss0++f9bKp599mjfF+ea3vPDCC/kQa665Ztht993TPdSzZ89w+eVXpPstZi6uqzT0nm1o/zjn008/nU+9xw9/GAYO3D9dg6OOOjpdy9JrKe/UwEpz31el5cX7MpYVVljhu+zgV11Z2u2ZAAECBAgQIECAAAECBAgQIECgBQtU7LnXgGI8/1deea0FMzh1AgQIECBAgACB5hIY//H45prKPARqCVRk34ejECBAgAABAgQILHwCO++8SxZAemEKkC2tLmYPrp7JuFgshl/+4oTw4IPfZbSNgbYPPPhQnvW5dGz156+yYOn11uuVmuJ499x7X+jRo0f1LjXqkyZ9HrbfbvsQn6uXl8e8Elq3bh0+//zzsEnvjavvqlGPwblXX3NNHqwZd856LjE78rrrVAV71zh4HjZef6MqaPmdd94JO++0Yz5CzK4dA8tnV6JLDIyO5Y9/+EO44Ybr864xADoGGFcPYs53zqzE67HfvvuE0aNHp5aTTz4lHHhQ7czMI0Y8EX5y+OGpz6ADDginnnrarEOl7Tjes8+OCptssmna3m3XfuGtt95K9fbt26cA8lJ271kHiNmo47WNAchxjIOyYOlSidmnhz8xorQZhgx5OBx37LH59rxUHnp4SFhttdVme+j06dNTVugpU6aEDTeomeW6ofdsQ/vHRT373L+yQPQOda7vgw8+CDEz9BJLLBFee+21sOePfpj3i4Hdd99zb9oeOXJEOPyww/J9pUpz31eleTt06BhGPfts/rr68MMPwzZbb1Xa7ZkAAQIECBBoIQLFLNGfQoAAAQIECBAgQGBWgfR9eDEntEKAAAECBAgQIECAAAECBAgQIECAAAECBBaEwMMPP5RlBu4bnn/++TyjcvUg6C+//DIcfvhhNYKg4zoE44J8AAAyQklEQVTff//9sM/e/cNHH31Ua9kxsDZmx43jlkoMSI6Bn6NGPRPi/llLDCbeZZddagVBx36l/tO/+WbWw2psxwDSI488IkycODFvr34u7737bjjiiJ/n+xqr8s03X9cY6smRI8NFF12Ye5Z2xiDde++9J2y6WVXAcam9+nPss2u/XVIG7dJ5V98/duzYsEeWCbkUBB33nXfeueHVV16p3i3VV1999bzt5r/9Ldx559/z7VJl0qRJ4Yif/yxck2XxrqvEbNM//9lPQ7wPqpe4tpdffjls0XfzFKBefV+pHu+NGPBbKmuusWapOs/PBx14QIjXcdby8ccfhwED9svuu6dm3ZVvN/SebWj/ONGg/fcPkydPzueMlXjvP/PMM2HHHbbP7s0JNfaVNkoZ1uP2tGnTSs01npv7vipNHj+YUP063nvPPaVdngkQIECAAAECBAgQIECAAAECBFq4QMVeew1M/9z7yiuvtnAKp0+AAAECBAgQINAcAjJCN4eyOWYnICP07GS0EyBAgAABAgQWLoHu3buHjTfuHaZ+NTUMe/zxGkHFs1vpyqusEjbeaOMQswe/8uor4YUsqDpmCp5d6dSpU+jTp09YdrnlwoQJE1KQ6Ifjxs2u+zy19+zZM/Rab72UrTgGzsZA79kFmM7TBPU4KHpsvnnf0KFjh/Bylr25ejBpPQ5P2YM322yzsMyyy4aYTXjkiBG1ApKrj7PqqquGrbbaOgWO/7+3/194+qmnagVjx4zEMbNw+yXbh0cffSR88skn1YeYbb1Vq1ZZAPdmIWZJ/mDsB+HJJ0fWGnt2B8drEeeMwdoxILgxytpr/yD06NkjzPh2RnjkkaFzdKlrvobesw3pH4Pv11lnnbBur14paHv48OF1LWGe25r7vooLvf+BB0P8uyGW3htvXOcHFtJODwQIECBAgMAiKyAj9CJ7aZ0YAQIECBAgQGC+BCr23GtASnvxyivfZUSYrxEdTIAAAQIECBAgQGAOAgKh54BjV5MLCIRucmITECBAgAABAgQINEAgBufuvPMuDTiiqmvMoP3GG280+DgHVAlwL787YYMNNgi3DL41LTwG88fM7goBAgQIECDQ8gQEQre8a+6MCRAgQIAAAQL1EagMoaI+/fQhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGlFghx12DEcceWSDR4yZrgVCN5gtP4B7TlEWlZjd+oI/XZiv9YwzTs/rKgQIECBAgAABAgQIECBAgAABAgQqK7I46GIxJYWmQYAAAQIECBAgQIAAAQIECBAgQIAAAQIECDSTwNNPPxU27r1xg2d78cUXG3yMA74T4P6dxcJcu+SSS8O3M74Nm23WJ3Tq1Ckt9fXXXw8v/vvfC/OyrY0AAQIECBAgQIAAAQIECBAgQKCZBSr26j+wGLI46DGvvNrMU5uOAAECBAgQIECgJQqM/3h8Szxt57yQCFTE//hRCBAgQIAAAQIECBAgQGChFlhmmWXC8CdG1Fjjhx9+GHbacYfw9ddf12i3QYAAAQIECLQcgaJvPG85F9uZEiBAgAABAgQaIFApG3QDtHQlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoUoFll102TJw4MbRp0yaMGzcuDB82LPz5z5cKgm5SdYMTIECAAAECBAgQIECAAAECBMpToLJq2RXluXqrJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQWKQEXnrppbDpJr0XqXNyMgQIECBAgAABAgQIECBAgAABAk0jUKioEATdNLRGJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgqQQKxWIcOj001RzGJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKMKFKpGkxW6UVUNRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAkwpkgdCyQTepsMEJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGh0gSwQOmaDFgzd6LIGJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgyQQKFTEOOgVDN9kcBiZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECjClQWi7JBN6qowQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaHKBQtUMKS10k0/2/9u5u2ZHkSMBoEAzO7F+cTj2///HHcfOPNg9zVYhGNO01AKEEEkdFL4NqD4yT3G54ZiMMgEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT2EEiF0LkI2q7Qe2AagwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBYwSa217QdoQ+htssBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjsIdB0doPew9EYBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcKNAcOJepCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsItAKoSu08dBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOAKpELpLHwcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTiCKRCaAcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRiCTR1VceKWLQECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBQv0HQ9we1n8RoACBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAIIZB2hM6HXaFDrJYgCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoBYYdoWkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjkCTQ7UfdJwFEykBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlXVF0KDIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQCSBtqq69HEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjkBbV3WcaEVKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJNDaD9pzQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBANIEmB2xX6GjLJl4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQs0uQi6K9tA9gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIBBNoO2XQwZZMuAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFXaEdpBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBSAJN3ddBd5FiFisBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAoULNDn/2q7QhT8G0idAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQS6DtOrtBx1oy0RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0O8InfeEdhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCKQFPXiqCjLJY4CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBC4CTRdl0/6H0wIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQQqC5RWlX6BCrJUgCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHqBVAhtN2jPAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECsQRSIXTeDVoxdKxlEy0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBsgWaOtdB98XQZUPIngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOAJt19kNOs5yiZQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSzQ3Bj6baGJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIRAKoTORdB2hQ6xWoIkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAXaG57QdsR2vNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAcgaazG3Sc1RIpAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK9QMOBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC0QRSIXSdPg4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjEEUiF0F36OAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBHIBVCOwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBLoKmrOlbEoiVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHiBpusJbj+L1wBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAIgbQjdD7sCh1itQRJgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAvMOwITYMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJxBJocqv2g4yyYSAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqKq+EBoEAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEIgm0VdWlj4MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJxBNq6quNEK1ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgkgdZ+0J4DAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSiCTQ5YLtCR1s28RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoW6DJRdBd2QayJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgmEDbKYMOtmTCJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgrdKO0A4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhEEmjqvg66ixSzWAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKFwg7Qid94S2K3Thz4H0CRAgQIAAAQIECBQh0Pn/PkWssyQJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoAyBtuvsBl3GUsuSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwHUEmlsqdoS+zpLKhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD1BZq6VgR9/WWWIQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFrCTRdlxPqf1wrM9kQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHBZgeaWmV2hL7vCEiNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwQYFUCG036Auuq5QIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIXFogFULn3aAVQ196lSVHgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4GICTZ3roPti6ItlJh0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBC4r0Had3aAvu7oSI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHBRgeaWV78t9EVTlBYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlcTSIXQuQjartBXW1j5ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIELiyQHPbC9qO0FdeZLkRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuJpA09kN+mprKh8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEClxdoLp+hBAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuJxAKoSu08dBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOAKpELpLHwcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTiCKRCaAcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRiCTR1VceKWLQECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBQv0HQ9we1n8RoACBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAIIZB2hM6HXaFDrJYgCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoBYYdoWkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjkCTQ7UfdJwFEykBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlXVF0KDIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQCSBtqq69HEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjkBbV3WcaEVKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJNDaD9pzQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBANIEmB2xX6GjLJl4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQs0uQi6K9tA9gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIBBNoO2XQwZZMuAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFXaEdpBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBSAJN3ddBd5FiFisBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAoULNDn/2q7QhT8G0idAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQS6DtOrtBx1oy0RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0O8InfeEdhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCKQFPXiqCjLJY4CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBC4CTRdl0/6H0wIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQQqC5RWlX6BCrJUgCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHqBVAhtN2jPAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECsQRSIXTeDVoxdKxlEy0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBsgWaOtdB98XQZUPIngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOAJt19kNOs5yiZQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSzQ3Bj6baGJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIRAKoTORdB2hQ6xWoIkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAXaG57QdsR2vNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAcgaazG3Sc1RIpAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK9QMOBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC0QRSIXSdPg4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjEEUiF0F36OAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBHIBVCOwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBLoKmrOlbEoiVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoHiBpusJbj+L1wBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAIgbQjdD7sCh1itQRJgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAvMOwITYMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJxBJocqv2g4yyYSAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqKq+EBoEAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEIgm0VdWlj4MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJxBNq6quNEK1ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgkgdZ+0J4DAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSiCbQ5YLtCR1s28RJ4VaB7dQD9CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIfFWhzEbSSyI+ugckJvFnAb/ibgQ1PgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIfECg7ZRBf4DdlATeIaDg+R2qxiRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTOKdBWaUdoBwECZxe4YJHznZTu3Dr7woiPAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+JBAW6c66K5Tfvghf9MSSAIH/P7NpphdWgUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQDiBtCN03hPartDhVk7AgQXeWIY8G3p2GdhM6AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7wVau0F/D+KKwL4CL5QiL+y6sNm+aRmNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPBhgX5H6LwntIMAgVcFXihJnnSdnL4akP4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgcsKtHVdV53Ky8susMTeJfDiL82k++T0XcEalwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwOYH2VgStFPNyKyuhNwhs/D2ZdZtdviFOQxIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEri/Q3lKsr5+pDAlsElhZtjxrPrvcFIFOBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECPwqkQuhcqqkQ+kcad8oWWFDCPGsyuyybT/YECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTcLpELoXASthPPNzoYPI/Dkd2H4+kmrMNkKlAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQVaCtUx1019kROuoCinsPgSdlzYqf90A2BgECBAgQmAg8+ds7aemUAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAicT0DN5fnWRESlCrRdpxCl1MWX95NnXwG0R4QAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEfhB4Unv2Q/stNxRbb1HTpzyB9payX5jylr7UjJ/8AVL8XOqDIW8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAicSOBJrdvDSNWDPqTxxSUFUiF0fui3/sJc0kRSlxJY+GwrgL7UqkuGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQosqZlTLF3ms3HNrNtbGbSH+prLW3JWC17mip9LfkDkToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUIF7tXXqSMt9GEIn3bb9btBe4DDr6QEBoF7L+gZjgLoGYhLAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEChb4F7tndrSsp+JGNm3McIUJYFnAvdewpM+ip8nGE4JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAzgUd1eQqkn8n5/jiBVAhdp4+DQFSBRy/aIR8F0FEXVtwECBAgcGWBJ3++r5y63AgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgcIFLFGzO/8P/JZIq/MGMm34qhO7Sx0MYdwlLjXz+Ip04KH6eYDglQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgdMI/KT0bVWMpyr7nCd1quBWsWocTyAVQjsIRBKYvzAnsSuAnmAcdfqT9TgqBPMQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgNIE1pVuH1yXPgzs8gNKehqLzbeu0G/T8kStaRPInFnjwpA63H3x74nw+GRqt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"
+ }
+ },
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's an example of the dashboard visualizing the scores of the sub-questions in the form of a bar chart:\n",
+ "\n",
+ "![image.png](attachment:image.png)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 3. Re-ranking \n",
+ "\n",
+ "Re-ranking is the process of reordering the nodes based on their relevance to the query. There are multiple classes of re-ranking algorithms offered by Llamaindex. We have used CohereRerank for this example.\n",
+ "\n",
+ "The re-ranker allows you to enter the number of top n nodes that will be returned after re-ranking. If this value remains the same as the original number of nodes, the re-ranker will only re-rank the nodes and not change the number of nodes. Otherwise, it will re-rank the nodes and return the top n nodes.\n",
+ "\n",
+ "We will perform different evaluations based on the number of nodes returned after re-ranking."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3a. Re-ranking (With same number of nodes)\n",
+ "\n",
+ "If the number of nodes returned after re-ranking is the same as the original number of nodes, the following evaluation will be performed:\n",
+ "- **Context Reranking**: Check if the order of the re-ranked nodes is more relevant to the query than the original order."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-13 20:00:17.459\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: What did Sam Altman do in this essay?\n",
+ "Context Relevance Score: 1.0\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 1.0\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\" # Replace with your OpenAI API key\n",
+ "llm = OpenAI(model=\"gpt-4-turbo-preview\")\n",
+ "\n",
+ "cohere_rerank = LLMRerank(\n",
+ " llm=llm, top_n=5\n",
+ ") # In this example, the number of nodes before re-ranking is 5 and after re-ranking is also 5.\n",
+ "\n",
+ "index = VectorStoreIndex.from_documents(\n",
+ " documents=documents,\n",
+ ")\n",
+ "\n",
+ "query_engine = index.as_query_engine(\n",
+ " similarity_top_k=10,\n",
+ " node_postprocessors=[cohere_rerank],\n",
+ ")\n",
+ "\n",
+ "response = query_engine.query(\n",
+ " \"What did Sam Altman do in this essay?\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# 3b. Re-ranking (With different number of nodes)\n",
+ "\n",
+ "If the number of nodes returned after re-ranking is the lesser as the original number of nodes, the following evaluation will be performed:\n",
+ "- **Context Conciseness**: If the re-ranked nodes are able to provide all the information required by the query."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\u001b[32m2024-02-13 20:01:39.343\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36muptrain.framework.evalllm\u001b[0m:\u001b[36mevaluate\u001b[0m:\u001b[36m110\u001b[0m - \u001b[1mSending evaluation request for rows 0 to <50 to the Uptrain\u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Question: What did Sam Altman do in this essay?\n",
+ "Context Relevance Score: 0.5\n",
+ "Factual Accuracy Score: 1.0\n",
+ "Response Completeness Score: 1.0\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\" # Replace with your OpenAI API key\n",
+ "llm = OpenAI(model=\"gpt-4-turbo-preview\")\n",
+ "\n",
+ "cohere_rerank = LLMRerank(\n",
+ " llm=llm, top_n=2\n",
+ ") # In this example, the number of nodes before re-ranking is 5 and after re-ranking is 2.\n",
+ "\n",
+ "index = VectorStoreIndex.from_documents(\n",
+ " documents=documents,\n",
+ ")\n",
+ "query_engine = index.as_query_engine(\n",
+ " similarity_top_k=10,\n",
+ " node_postprocessors=[cohere_rerank],\n",
+ ")\n",
+ "\n",
+ "# Use your advanced RAG\n",
+ "response = query_engine.query(\n",
+ " \"What did Sam Altman do in this essay?\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# UpTrain's Managed Service Dashboard and Insights\n",
+ "\n",
+ "The UpTrain Managed Service offers the following features:\n",
+ "\n",
+ "1. Advanced dashboards with drill-down and filtering options.\n",
+ "1. Identification of insights and common themes among unsuccessful cases.\n",
+ "1. Real-time observability and monitoring of production data.\n",
+ "1. Integration with CI/CD pipelines for seamless regression testing.\n",
+ "\n",
+ "To define the UpTrain callback handler, the only change required is to set the `key_type` and `api_key` parameters. The rest of the code remains the same.\n",
+ "\n",
+ "```python\n",
+ "callback_handler = UpTrainCallbackHandler(\n",
+ " key_type=\"uptrain\",\n",
+ " api_key=\"up-******************************\",\n",
+ " project_name_prefix=\"llama\",\n",
+ ")\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Here's a short GIF showcasing the dashboard and the insights that you can get from the UpTrain managed service:\n",
+ "\n",
+ "![output.gif](https://uptrain-assets.s3.ap-south-1.amazonaws.com/images/llamaindex/output.gif)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "phoenixdev",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/examples/embeddings/optimum_intel.ipynb b/docs/examples/embeddings/optimum_intel.ipynb
new file mode 100644
index 0000000000000..3a3c78cb0d9f3
--- /dev/null
+++ b/docs/examples/embeddings/optimum_intel.ipynb
@@ -0,0 +1,87 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Optimized Embedding Model using Optimum-Intel\n",
+ "\n",
+ "LlamaIndex has support for loading quantized embedding models for Intel, using the [Optimum-Intel library](https://huggingface.co/docs/optimum/main/en/intel/index). \n",
+ "\n",
+ "Optimized models are smaller and faster, with minimal accuracy loss, see the [documentation](https://huggingface.co/docs/optimum/main/en/intel/optimization_inc) and an [optimization guide](https://huggingface.co/docs/optimum/main/en/intel/optimization_inc) using the IntelLabs/fastRAG library. \n",
+ "\n",
+ "In order to be able to load and use the quantized models, install the required dependency `pip install optimum[exporters] optimum-intel neural-compressor`. \n",
+ "\n",
+ "Loading is done using the class `IntelEmbedding`; usage is similar to any HuggingFace local embedding model. See example."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%pip install llama-index-embeddings-huggingface-optimum-intel"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.embeddings.huggingface_optimum_intel import IntelEmbedding\n",
+ "\n",
+ "embed_model = IntelEmbedding(\"Intel/bge-small-en-v1.5-rag-int8-static\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "384\n",
+ "[-0.0032782123889774084, -0.013396517373621464, 0.037944991141557693, -0.04642259329557419, 0.027709005400538445]\n"
+ ]
+ }
+ ],
+ "source": [
+ "embeddings = embed_model.get_text_embedding(\"Hello World!\")\n",
+ "print(len(embeddings))\n",
+ "print(embeddings[:5])"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/docs/examples/evaluation/UpTrain.ipynb b/docs/examples/evaluation/UpTrain.ipynb
index 285bc8a5cbb74..6cb85c2340c9e 100644
--- a/docs/examples/evaluation/UpTrain.ipynb
+++ b/docs/examples/evaluation/UpTrain.ipynb
@@ -5,7 +5,7 @@
"id": "ec212316",
"metadata": {},
"source": [
- ""
+ ""
]
},
{
diff --git a/docs/examples/evaluation/faithfulness_eval.ipynb b/docs/examples/evaluation/faithfulness_eval.ipynb
index fbf01350a9448..30410a705a5de 100644
--- a/docs/examples/evaluation/faithfulness_eval.ipynb
+++ b/docs/examples/evaluation/faithfulness_eval.ipynb
@@ -19,7 +19,7 @@
"metadata": {},
"outputs": [],
"source": [
- "%pip install llama-index-llms-openai"
+ "%pip install llama-index-llms-openai pandas[jinja2] spacy"
]
},
{
@@ -38,16 +38,13 @@
{
"cell_type": "code",
"execution_count": null,
- "id": "9080b39e",
+ "id": "190a6684",
"metadata": {},
"outputs": [],
"source": [
- "# configuring logger to INFO level\n",
- "import logging\n",
- "import sys\n",
+ "import os\n",
"\n",
- "logging.basicConfig(stream=sys.stdout, level=logging.INFO)\n",
- "logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))"
+ "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\""
]
},
{
@@ -58,7 +55,6 @@
"outputs": [],
"source": [
"from llama_index.core import (\n",
- " TreeIndex,\n",
" VectorStoreIndex,\n",
" SimpleDirectoryReader,\n",
" Response,\n",
@@ -123,8 +119,11 @@
"metadata": {},
"outputs": [],
"source": [
+ "from llama_index.core.evaluation import EvaluationResult\n",
+ "\n",
+ "\n",
"# define jupyter display function\n",
- "def display_eval_df(response: Response, eval_result: str) -> None:\n",
+ "def display_eval_df(response: Response, eval_result: EvaluationResult) -> None:\n",
" if response.source_nodes == []:\n",
" print(\"no response!\")\n",
" return\n",
@@ -133,6 +132,7 @@
" \"Response\": str(response),\n",
" \"Source\": response.source_nodes[0].node.text[:1000] + \"...\",\n",
" \"Evaluation Result\": \"Pass\" if eval_result.passing else \"Fail\",\n",
+ " \"Reasoning\": eval_result.feedback,\n",
" },\n",
" index=[0],\n",
" )\n",
@@ -176,32 +176,34 @@
"data": {
"text/html": [
"\n",
- "
\n",
+ "\n",
" \n",
" \n",
" | \n",
- " Response | \n",
- " Source | \n",
- " Evaluation Result | \n",
+ " Response | \n",
+ " Source | \n",
+ " Evaluation Result | \n",
+ " Reasoning | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
- " New York City got its name from the English explorer Henry Hudson, who rediscovered New York Harbor in 1609 while searching for the Northwest Passage. He named the area New York after the Duke of York, who later became King James II of England. | \n",
- " He claimed the area for France and named it Nouvelle Angoulême (New Angoulême).A Spanish expedition, led by the Portuguese captain Estêvão Gomes sailing for Emperor Charles V, arrived in New York Harbor in January 1525 and charted the mouth of the Hudson River, which he named Río de San Antonio ('Saint Anthony's River').The Padrón Real of 1527, the first scientific map to show the East Coast of North America continuously, was informed by Gomes' expedition and labeled the northeastern United States as Tierra de Esteban Gómez in his honor.In 1609, the English explorer Henry Hudson rediscovered New York Harbor while searching for the Northwest Passage to the Orient for the Dutch East India Company.He proceeded to sail up what the Dutch would name the North River (now the Hudson River), named first by Hudson as the Mauritius after Maurice, Prince of Orange.Hudson's first mate described the harbor as \"a very good Harbour for all windes\" and the river as \"a mile broad\" and \"full of fish\".Hud... | \n",
- " Fail | \n",
+ " 0 | \n",
+ " New York City got its name when it came under British control in 1664. It was renamed New York after King Charles II of England granted the lands to his brother, the Duke of York. | \n",
+ " The city came under British control in 1664 and was renamed New York after King Charles II of England granted the lands to his brother, the Duke of York. The city was regained by the Dutch in July 1673 and was renamed New Orange for one year and three months; the city has been continuously named New York since November 1674. New York City was the capital of the United States from 1785 until 1790, and has been the largest U.S. city since 1790. The Statue of Liberty greeted millions of immigrants as they came to the U.S. by ship in the late 19th and early 20th centuries, and is a symbol of the U.S. and its ideals of liberty and peace. In the 21st century, New York City has emerged as a global node of creativity, entrepreneurship, and as a symbol of freedom and cultural diversity. The New York Times has won the most Pulitzer Prizes for journalism and remains the U.S. media's \"newspaper of record\". In 2019, New York City was voted the greatest city in the world in a survey of over 30,000 p... | \n",
+ " Pass | \n",
+ " YES | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -229,22 +231,23 @@
"metadata": {},
"outputs": [
{
- "name": "stdout",
+ "name": "stderr",
"output_type": "stream",
"text": [
- "WARNING:llama_index.indices.service_context:chunk_size_limit is deprecated, please specify chunk_size instead\n",
- "chunk_size_limit is deprecated, please specify chunk_size instead\n",
- "chunk_size_limit is deprecated, please specify chunk_size instead\n"
+ "/Users/loganmarkewich/giant_change/llama_index/llama-index-core/llama_index/core/evaluation/dataset_generation.py:212: DeprecationWarning: Call to deprecated class DatasetGenerator. (Deprecated in favor of `RagDatasetGenerator` which should be used instead.)\n",
+ " return cls(\n",
+ "/Users/loganmarkewich/giant_change/llama_index/llama-index-core/llama_index/core/evaluation/dataset_generation.py:309: DeprecationWarning: Call to deprecated class QueryResponseDataset. (Deprecated in favor of `LabelledRagDataset` which should be used instead.)\n",
+ " return QueryResponseDataset(queries=queries, responses=responses_dict)\n"
]
},
{
"data": {
"text/plain": [
"['What is the population of New York City as of 2020?',\n",
- " 'Which borough of New York City is home to the headquarters of the United Nations?',\n",
- " 'How many languages are spoken in New York City, making it the most linguistically diverse city in the world?',\n",
- " 'Who founded the trading post on Manhattan Island that would later become New York City?',\n",
- " 'What was New York City named after in 1664?']"
+ " 'Which city is the second-largest in the United States?',\n",
+ " 'How many people live within 250 miles of New York City?',\n",
+ " 'What are the five boroughs of New York City?',\n",
+ " 'What is the gross metropolitan product of the New York metropolitan area?']"
]
},
"execution_count": null,
@@ -297,36 +300,6 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=35 request_id=b36e17a843c31e827f0b7034e603cf28 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=35 request_id=b36e17a843c31e827f0b7034e603cf28 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=35 request_id=b36e17a843c31e827f0b7034e603cf28 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=35 request_id=5acb726518065db9312da9f23beef411 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=35 request_id=5acb726518065db9312da9f23beef411 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=35 request_id=5acb726518065db9312da9f23beef411 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=46 request_id=4af43bfbe4e24fdae0ec33312ee7491e response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=46 request_id=4af43bfbe4e24fdae0ec33312ee7491e response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=46 request_id=4af43bfbe4e24fdae0ec33312ee7491e response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=37 request_id=e30413546fe5f96d3890606767f2ec53 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=37 request_id=e30413546fe5f96d3890606767f2ec53 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=37 request_id=e30413546fe5f96d3890606767f2ec53 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=33 request_id=01f0a8dada4dae80c97a9a412f03b84f response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=33 request_id=01f0a8dada4dae80c97a9a412f03b84f response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/embeddings processing_ms=33 request_id=01f0a8dada4dae80c97a9a412f03b84f response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=282 request_id=ed7b1f8ba68ae32b1d8e24e0d0764e86 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=282 request_id=ed7b1f8ba68ae32b1d8e24e0d0764e86 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=282 request_id=ed7b1f8ba68ae32b1d8e24e0d0764e86 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=820 request_id=b4532c6d665b6cfd644861ed69819cb9 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=820 request_id=b4532c6d665b6cfd644861ed69819cb9 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=820 request_id=b4532c6d665b6cfd644861ed69819cb9 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=847 request_id=4d9bbc71a95b7e0bb69a048e251772c8 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=847 request_id=4d9bbc71a95b7e0bb69a048e251772c8 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=847 request_id=4d9bbc71a95b7e0bb69a048e251772c8 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=952 request_id=d1657940d881929d500b1fddc46b5866 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=952 request_id=d1657940d881929d500b1fddc46b5866 response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=952 request_id=d1657940d881929d500b1fddc46b5866 response_code=200\n",
- "INFO:openai:message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=1482 request_id=c4456f75580d227f846d3a044e5eef1b response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=1482 request_id=c4456f75580d227f846d3a044e5eef1b response_code=200\n",
- "message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=1482 request_id=c4456f75580d227f846d3a044e5eef1b response_code=200\n",
"finished query\n",
"score: 5/5\n"
]
diff --git a/docs/examples/evaluation/relevancy_eval.ipynb b/docs/examples/evaluation/relevancy_eval.ipynb
index e5a2cab5610c2..970651a1ec875 100644
--- a/docs/examples/evaluation/relevancy_eval.ipynb
+++ b/docs/examples/evaluation/relevancy_eval.ipynb
@@ -18,7 +18,7 @@
"metadata": {},
"outputs": [],
"source": [
- "%pip install llama-index-llms-openai"
+ "%pip install llama-index-llms-openai pandas[jinja2] spacy"
]
},
{
@@ -96,7 +96,32 @@
"execution_count": null,
"id": "41f0e53f-77a6-40d5-94ae-3f81b01af75c",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n"
+ ]
+ }
+ ],
"source": [
"# create vector index\n",
"splitter = SentenceSplitter(chunk_size=512)\n",
@@ -112,14 +137,20 @@
"metadata": {},
"outputs": [],
"source": [
+ "from llama_index.core.evaluation import EvaluationResult\n",
+ "\n",
+ "\n",
"# define jupyter display function\n",
- "def display_eval_df(query: str, response: Response, eval_result: str) -> None:\n",
+ "def display_eval_df(\n",
+ " query: str, response: Response, eval_result: EvaluationResult\n",
+ ") -> None:\n",
" eval_df = pd.DataFrame(\n",
" {\n",
" \"Query\": query,\n",
" \"Response\": str(response),\n",
" \"Source\": response.source_nodes[0].node.text[:1000] + \"...\",\n",
" \"Evaluation Result\": \"Pass\" if eval_result.passing else \"Fail\",\n",
+ " \"Reasoning\": eval_result.feedback,\n",
" },\n",
" index=[0],\n",
" )\n",
@@ -148,7 +179,20 @@
"execution_count": null,
"id": "180a5d2e-9286-477b-9cd0-a5976d18d845",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n"
+ ]
+ }
+ ],
"source": [
"query_str = (\n",
" \"What battles took place in New York City in the American Revolution?\"\n",
@@ -170,37 +214,39 @@
"data": {
"text/html": [
"\n",
- "\n",
+ "\n",
" \n",
" \n",
" | \n",
- " Query | \n",
- " Response | \n",
- " Source | \n",
- " Evaluation Result | \n",
+ " Query | \n",
+ " Response | \n",
+ " Source | \n",
+ " Evaluation Result | \n",
+ " Reasoning | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
- " What battles took place in New York City in the American Revolution? | \n",
- " The Battle of Long Island was the largest battle of the American Revolutionary War that took place in New York City. | \n",
- " === American Revolution ===\n",
+ " | 0 | \n",
+ " What battles took place in New York City in the American Revolution? | \n",
+ " The Battle of Long Island was the largest battle of the American Revolutionary War that took place in New York City. | \n",
+ " === American Revolution ===\n",
"\n",
"The Stamp Act Congress met in New York in October 1765, as the Sons of Liberty organization emerged in the city and skirmished over the next ten years with British troops stationed there. The Battle of Long Island, the largest battle of the American Revolutionary War, was fought in August 1776 within the modern-day borough of Brooklyn. After the battle, in which the Americans were defeated, the British made the city their military and political base of operations in North America. The city was a haven for Loyalist refugees and escaped slaves who joined the British lines for freedom newly promised by the Crown for all fighters. As many as 10,000 escaped slaves crowded into the city during the British occupation. When the British forces evacuated at the close of the war in 1783, they transported 3,000 freedmen for resettlement in Nova Scotia. They resettled other freedmen in England and the Caribbean.\n",
"The only attempt at a peaceful solution to the war took pl... | \n",
- " Pass | \n",
+ " Pass | \n",
+ " The context confirms that the Battle of Long Island, which was the largest battle of the American Revolutionary War, took place in New York City. | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -216,7 +262,20 @@
"execution_count": null,
"id": "97f3ddf1-8dc2-4fb8-831f-2c06649e0955",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n"
+ ]
+ }
+ ],
"source": [
"query_str = \"What are the airports in New York City?\"\n",
"query_engine = vector_index.as_query_engine()\n",
@@ -236,44 +295,42 @@
"data": {
"text/html": [
"\n",
- "\n",
+ "\n",
" \n",
" \n",
" | \n",
- " Query | \n",
- " Response | \n",
- " Source | \n",
- " Evaluation Result | \n",
+ " Query | \n",
+ " Response | \n",
+ " Source | \n",
+ " Evaluation Result | \n",
+ " Reasoning | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
- " What are the airports in New York City? | \n",
- " The airports in New York City include John F. Kennedy International Airport, Newark Liberty International Airport, LaGuardia Airport, Stewart International Airport, Long Island MacArthur Airport, Trenton-Mercer Airport, and Westchester County Airport. | \n",
- " Like the New York City Subway, the PATH operates 24 hours a day; meaning three of the six rapid transit systems in the world which operate on 24-hour schedules are wholly or partly in New York (the others are a portion of the Chicago \"L\", the PATCO Speedline serving Philadelphia, and the Copenhagen Metro).Multibillion-dollar heavy rail transit projects under construction in New York City include the Second Avenue Subway, and the East Side Access project.\n",
+ " | 0 | \n",
+ " What are the airports in New York City? | \n",
+ " The airports in New York City include John F. Kennedy International Airport, Newark Liberty International Airport, LaGuardia Airport, Stewart International Airport, Long Island MacArthur Airport, Trenton-Mercer Airport, and Westchester County Airport. | \n",
+ " along the Northeast Corridor, and long-distance train service to other North American cities.The Staten Island Railway rapid transit system solely serves Staten Island, operating 24 hours a day. The Port Authority Trans-Hudson (PATH train) links Midtown and Lower Manhattan to northeastern New Jersey, primarily Hoboken, Jersey City, and Newark. Like the New York City Subway, the PATH operates 24 hours a day; meaning three of the six rapid transit systems in the world which operate on 24-hour schedules are wholly or partly in New York (the others are a portion of the Chicago \"L\", the PATCO Speedline serving Philadelphia, and the Copenhagen Metro).\n",
+ "Multibillion-dollar heavy rail transit projects under construction in New York City include the Second Avenue Subway, and the East Side Access project.\n",
"\n",
"\n",
"==== Buses ====\n",
"\n",
- "New York City's public bus fleet runs 24/7 and is the largest in North America. The Port Authority Bus Terminal, the main intercity bus terminal of the city, serves 7,000 buses and 200,000 commuters daily, making it the busiest bus station in the world.\n",
- "\n",
- "\n",
- "=== Air ===\n",
- "\n",
- "New York's airspace is the busiest in the United States and one of the world's busiest air transportation corridors. The three busiest airports in the New York metropolitan area include John F. Kennedy International Airport, Newark Liberty International... | \n",
- " Pass | \n",
+ "New York City's public bus fleet runs 24/7 and is the largest in North America. The Port Authority Bus Terminal, the main intercity bus terminal of the city, serves 7,000 buse...\n",
+ " Pass | \n",
+ " The context provides information about the airports in New York City, which includes John F. Kennedy International Airport, Newark Liberty International Airport, LaGuardia Airport, Stewart International Airport, Long Island MacArthur Airport, Trenton-Mercer Airport, and Westchester County Airport. This matches the response to the query. | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -289,7 +346,20 @@
"execution_count": null,
"id": "8b860691-9f6a-4b2f-bfef-5a5a56693a18",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n"
+ ]
+ }
+ ],
"source": [
"query_str = \"Who is the mayor of New York City?\"\n",
"query_engine = vector_index.as_query_engine()\n",
@@ -309,36 +379,38 @@
"data": {
"text/html": [
"\n",
- "\n",
+ "\n",
" \n",
" \n",
" | \n",
- " Query | \n",
- " Response | \n",
- " Source | \n",
- " Evaluation Result | \n",
+ " Query | \n",
+ " Response | \n",
+ " Source | \n",
+ " Evaluation Result | \n",
+ " Reasoning | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
- " Who is the mayor of New York City? | \n",
- " The mayor of New York City is Eric Adams. | \n",
- " === Politics ===\n",
+ " | 0 | \n",
+ " Who is the mayor of New York City? | \n",
+ " The mayor of New York City is Eric Adams. | \n",
+ " === Politics ===\n",
"The present mayor is Eric Adams. He was elected in 2021 with 67% of the vote, and assumed office on January 1, 2022.\n",
"The Democratic Party holds the majority of public offices. As of April 2016, 69% of registered voters in the city are Democrats and 10% are Republicans. New York City has not been carried by a Republican presidential election since President Calvin Coolidge won the five boroughs in 1924. A Republican candidate for statewide office has not won all five boroughs of the city since it was incorporated in 1898. In 2012, Democrat Barack Obama became the first presidential candidate of any party to receive more than 80% of the overall vote in New York City, sweeping all five boroughs. Party platforms center on affordable housing, education, and economic development, and labor politics are of importance in the city. Thirteen out of 27 U.S. congressional districts in the state of New York include portions of New York City.New York is one of the most important so... | \n",
- " Pass | \n",
+ " Pass | \n",
+ " The context confirms that Eric Adams is the current mayor of New York City, as stated in the response. | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -397,7 +469,22 @@
"execution_count": null,
"id": "0e3674ed-2632-4f48-9102-895fea94e340",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n"
+ ]
+ }
+ ],
"source": [
"# NOTE: you can set response_mode=\"no_text\" to get just the sources\n",
"query_str = \"What are the airports in New York City?\"\n",
@@ -428,23 +515,24 @@
"data": {
"text/html": [
"\n",
- "\n",
+ "\n",
" \n",
" \n",
" | \n",
- " Source | \n",
- " Eval Result | \n",
+ " Source | \n",
+ " Eval Result | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
- " Like the New York City Subway, the PATH operates 24 hours a day; meaning three of the six rapid transit systems in the world which operate on 24-hour schedules are wholly or partly in New York (the others are a portion of the Chicago \"L\", the PATCO Speedline serving Philadelphia, and the Copenhagen Metro).Multibillion-dollar heavy rail transit projects under construction in New York City include the Second Avenue Subway, and the East Side Access project.\n",
+ " | 0 | \n",
+ " along the Northeast Corridor, and long-distance train service to other North American cities.The Staten Island Railway rapid transit system solely serves Staten Island, operating 24 hours a day. The Port Authority Trans-Hudson (PATH train) links Midtown and Lower Manhattan to northeastern New Jersey, primarily Hoboken, Jersey City, and Newark. Like the New York City Subway, the PATH operates 24 hours a day; meaning three of the six rapid transit systems in the world which operate on 24-hour schedules are wholly or partly in New York (the others are a portion of the Chicago \"L\", the PATCO Speedline serving Philadelphia, and the Copenhagen Metro).\n",
+ "Multibillion-dollar heavy rail transit projects under construction in New York City include the Second Avenue Subway, and the East Side Access project.\n",
"\n",
"\n",
"==== Buses ====\n",
@@ -455,11 +543,14 @@
"=== Air ===\n",
"\n",
"New York's airspace is the busiest in the United States and one of the world's busiest air transportation corridors. The three busiest airports in the New York metropolitan area include John F. Kennedy International Airport, Newark Liberty International Airport, and LaGuardia Airport; 130.5 million travelers used these three airports in 2016. JFK and Newark Liberty were the busiest and fourth busiest U.S. gateways for international air passengers, respectively, in 2012; as of 2011, JFK was the busiest airport for international passengers in North America.Plans have advanced to expand passenger volume at a fourth airport, Stewart International Airport near Newburgh, New York, by the Port Authority of New York and New Jersey. Plans were announced in July 2015 to entirely rebuild LaGuardia Airport in a multibillion-dollar project to replace its aging facilities. Other commercial airports in or serving the New York metropolitan area include Long Island MacArthur Airport, Trenton–Mercer Airport and Westchester County Airport. The primary general aviation airport serving the area is Teterboro Airport. | \n",
- " Pass | \n",
+ " Pass | \n",
"
\n",
" \n",
- " 1 | \n",
- " === Parks ===\n",
+ " | 1 | \n",
+ " See or edit raw graph data.\n",
+ "\n",
+ "\n",
+ "=== Parks ===\n",
"\n",
"The city of New York has a complex park system, with various lands operated by the National Park Service, the New York State Office of Parks, Recreation and Historic Preservation, and the New York City Department of Parks and Recreation. In its 2018 ParkScore ranking, the Trust for Public Land reported that the park system in New York City was the ninth-best park system among the fifty most populous U.S. cities. ParkScore ranks urban park systems by a formula that analyzes median park size, park acres as percent of city area, the percent of city residents within a half-mile of a park, spending of park services per resident, and the number of playgrounds per 10,000 residents. In 2021, the New York City Council banned the use of synthetic pesticides by city agencies and instead required organic lawn management. The effort was started by teacher Paula Rogovin's kindergarten class at P.S. 290.\n",
"\n",
@@ -468,30 +559,19 @@
"\n",
"Gateway National Recreation Area contains over 26,000 acres (110 km2), most of it in New York City. In Brooklyn and Queens, the park contains over 9,000 acres (36 km2) of salt marsh, wetlands, islands, and water, including most of Jamaica Bay and the Jamaica Bay Wildlife Refuge. Also in Queens, the park includes a significant portion of the western Rockaway Peninsula, most notably Jacob Riis Park and Fort Tilden. In Staten Island, it includes Fort Wadsworth, with historic pre-Civil War era Battery Weed and Fort Tompkins, and Great Kills Park, with beaches, trails, and a marina.\n",
"The Statue of Liberty National Monument and Ellis Island Immigration Museum are managed by the National Park Service and are in both New York and New Jersey. They are joined in the harbor by Governors Island National Monument. Historic sites under federal management on Manhattan Island include Stonewall National Monument; Castle Clinton National Monument; Federal Hall National Memorial; Theodore Roosevelt Birthplace National Historic Site; General Grant National Memorial (Grant's Tomb); African Burial Ground National Monument; and Hamilton Grange National Memorial. Hundreds of properties are listed on the National Register of Historic Places or as a National Historic Landmark. | \n",
- " Fail | \n",
+ " Fail | \n",
"
\n",
" \n",
- " 2 | \n",
- " Providing continuous 24/7 service and contributing to the nickname The City That Never Sleeps, the New York City Subway is the largest single-operator rapid transit system in the world with 472 passenger rail stations, and Penn Station in Midtown Manhattan is the busiest transportation hub in the Western Hemisphere.The city has over 120 colleges and universities, including Columbia University, an Ivy League university routinely ranked among the world's top universities, New York University, and the City University of New York system, the largest urban public university system in the nation.Anchored by Wall Street in the Financial District of Lower Manhattan, New York City has been called both the world's leading financial and fintech center and the most economically powerful city in the world, and is home to the world's two largest stock exchanges by total market capitalization, the New York Stock Exchange and Nasdaq.The Stonewall Inn in Greenwich Village, part of the Stonewall National Monument, is considered the historic epicenter of LGBTQ+ culture and the birthplace of the modern gay rights movement.New York City is the headquarters of the global art market, with numerous art galleries and auction houses collectively hosting half of the world’s art auctions, and the Metropolitan Museum of Art is both the largest art museum and the most visited museum in the United States.Governors Island in New York Harbor is planned to host a US$1 billion research and education center as a leader the climate crisis.\n",
- "\n",
- "\n",
- "== Etymology ==\n",
- "\n",
- "In 1664, New York was named in honor of the Duke of York, who would become King James II of England. James's elder brother, King Charles II, appointed the Duke as proprietor of the former territory of New Netherland, including the city of New Amsterdam, when England seized it from Dutch control.\n",
- "\n",
- "\n",
- "== History ==\n",
- "\n",
- "\n",
- "=== Early history ===\n",
- "In the pre-Columbian era, the area of present-day New York City was inhabited by Algonquian Native Americans, including the Lenape.Their homeland, known as Lenapehoking, included the present-day areas of Staten Island, Manhattan, the Bronx, the western portion of Long Island (including the areas that would later become the boroughs of Brooklyn and Queens), and the Lower Hudson Valley.The first documented visit into New York Harbor by a European was in 1524 by Italian Giovanni da Verrazzano, an explorer from Florence in the service of the French crown. | \n",
- " Fail | \n",
+ " 2 | \n",
+ " New York has witnessed a growing combined volume of international and domestic tourists, reflecting over 60 million visitors to the city per year, the world's busiest tourist destination. Approximately 12 million visitors to New York City have been from outside the United States, with the highest numbers from the United Kingdom, Canada, Brazil, and China. Multiple sources have called New York the most photographed city in the world.I Love New York (stylized I ❤ NY) is both a logo and a song that are the basis of an advertising campaign and have been used since 1977 to promote tourism in New York City, and later to promote New York State as well. The trademarked logo, owned by New York State Empire State Development, appears in souvenir shops and brochures throughout the city and state, some licensed, many not. The song is the state song of New York.\n",
+ "The majority of the most high-profile tourist destinations to the city are situated in Manhattan. These include Times Square; Broadway theater productions; the Empire State Building; the Statue of Liberty; Ellis Island; the United Nations headquarters; the World Trade Center (including the National September 11 Memorial & Museum and One World Trade Center); the art museums along Museum Mile; green spaces such as Central Park, Washington Square Park, the High Line, and the medieval gardens of The Cloisters; the Stonewall Inn; Rockefeller Center; ethnic enclaves including the Manhattan Chinatown, Koreatown, Curry Hill, Harlem, Spanish Harlem, Little Italy, and Little Australia; luxury shopping along Fifth and Madison Avenues; and events such as the Halloween Parade in Greenwich Village; the Brooklyn Bridge (shared with Brooklyn); the Macy's Thanksgiving Day Parade; the lighting of the Rockefeller Center Christmas Tree; the St. Patrick's Day Parade; seasonal activities such as ice skating in Central Park in the wintertime; the Tribeca Film Festival; and free performances in Central Park at SummerStage.Points of interest have also developed in the city outside Manhattan and have made the outer boroughs tourist destinations in their own right. | \n",
+ " Fail | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -507,7 +587,20 @@
"execution_count": null,
"id": "cdc340a9-1853-414e-9e87-820aa5d82db7",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n",
+ "HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n"
+ ]
+ }
+ ],
"source": [
"# NOTE: you can set response_mode=\"no_text\" to get just the sources\n",
"query_str = \"Who is the mayor of New York City?\"\n",
@@ -537,76 +630,63 @@
"data": {
"text/html": [
"\n",
- "\n",
+ "\n",
" \n",
" \n",
" | \n",
- " Source | \n",
- " Eval Result | \n",
+ " Source | \n",
+ " Eval Result | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
- " by geographic population boundaries. Each term for the mayor and council members lasts four years and has a two consecutive-term limit, which is reset after a four-year break. The New York City Administrative Code, the New York City Rules, and the City Record are the code of local laws, compilation of regulations, and official journal, respectively.Each borough is coextensive with a judicial district of the state Unified Court System, of which the Criminal Court and the Civil Court are the local courts, while the New York Supreme Court conducts major trials and appeals. Manhattan hosts the First Department of the Supreme Court, Appellate Division while Brooklyn hosts the Second Department. There are also several extrajudicial administrative courts, which are executive agencies and not part of the state Unified Court System.\n",
- "Uniquely among major American cities, New York is divided between, and is host to the main branches of, two different U.S. district courts: the District Court for the Southern District of New York, whose main courthouse is on Foley Square near City Hall in Manhattan and whose jurisdiction includes Manhattan and the Bronx; and the District Court for the Eastern District of New York, whose main courthouse is in Brooklyn and whose jurisdiction includes Brooklyn, Queens, and Staten Island. The U.S. Court of Appeals for the Second Circuit and U.S. Court of International Trade are also based in New York, also on Foley Square in Manhattan.\n",
+ " | 0 | \n",
+ " along the Northeast Corridor, and long-distance train service to other North American cities.The Staten Island Railway rapid transit system solely serves Staten Island, operating 24 hours a day. The Port Authority Trans-Hudson (PATH train) links Midtown and Lower Manhattan to northeastern New Jersey, primarily Hoboken, Jersey City, and Newark. Like the New York City Subway, the PATH operates 24 hours a day; meaning three of the six rapid transit systems in the world which operate on 24-hour schedules are wholly or partly in New York (the others are a portion of the Chicago \"L\", the PATCO Speedline serving Philadelphia, and the Copenhagen Metro).\n",
+ "Multibillion-dollar heavy rail transit projects under construction in New York City include the Second Avenue Subway, and the East Side Access project.\n",
"\n",
"\n",
- "=== Politics ===\n",
- "The present mayor is Eric Adams. He was elected in 2021 with 67% of the vote, and assumed office on January 1, 2022.\n",
- "The Democratic Party holds the majority of public offices. As of April 2016, 69% of registered voters in the city are Democrats and 10% are Republicans. New York City has not been carried by a Republican presidential election since President Calvin Coolidge won the five boroughs in 1924. A Republican candidate for statewide office has not won all five boroughs of the city since it was incorporated in 1898. In 2012, Democrat Barack Obama became the first presidential candidate of any party to receive more than 80% of the overall vote in New York City, sweeping all | \n",
- " NO | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " for the Second Circuit and U.S. Court of International Trade are also based in New York, also on Foley Square in Manhattan.\n",
+ "==== Buses ====\n",
"\n",
+ "New York City's public bus fleet runs 24/7 and is the largest in North America. The Port Authority Bus Terminal, the main intercity bus terminal of the city, serves 7,000 buses and 200,000 commuters daily, making it the busiest bus station in the world.\n",
"\n",
- "=== Politics ===\n",
- "The present mayor is Eric Adams. He was elected in 2021 with 67% of the vote, and assumed office on January 1, 2022.\n",
- "The Democratic Party holds the majority of public offices. As of April 2016, 69% of registered voters in the city are Democrats and 10% are Republicans. New York City has not been carried by a Republican presidential election since President Calvin Coolidge won the five boroughs in 1924. A Republican candidate for statewide office has not won all five boroughs of the city since it was incorporated in 1898. In 2012, Democrat Barack Obama became the first presidential candidate of any party to receive more than 80% of the overall vote in New York City, sweeping all five boroughs. Party platforms center on affordable housing, education, and economic development, and labor politics are of importance in the city. Thirteen out of 27 U.S. congressional districts in the state of New York include portions of New York City.New York is one of the most important sources of political fundraising in the United States. At least four of the top five ZIP Codes in the nation for political contributions were in Manhattan for the 2004, 2006, and 2008 elections. The top ZIP Code, 10021 on the Upper East Side, generated the most money for the 2004 presidential campaigns of George W. Bush and John Kerry. The city has a strong imbalance of payments with the national and state governments. It receives 83 cents in services for every $1 it sends to the federal government in taxes (or annually sends $11.4 billion more than it receives back). City residents and businesses also sent an additional $4.1 billion in the 2009–2010 fiscal year to the state of New York than the city received in return.\n",
"\n",
+ "=== Air ===\n",
"\n",
- "== Transportation ==\n",
+ "New York's airspace is the busiest in the United States and one of the world's busiest air transportation corridors. The three busiest airports in the New York metropolitan area include John F. Kennedy International Airport, Newark Liberty International Airport, and LaGuardia Airport; 130.5 million travelers used these three airports in 2016. JFK and Newark Liberty were the busiest and fourth busiest U.S. gateways for international air passengers, respectively, in 2012; as of 2011, JFK was the busiest airport for international passengers in North America.Plans have advanced to expand passenger volume at a fourth airport, Stewart International Airport near Newburgh, New York, by the Port Authority of New York and New Jersey. Plans were announced in July 2015 to entirely rebuild LaGuardia Airport in a multibillion-dollar project to replace its aging facilities. Other commercial airports in or serving the New York metropolitan area include Long Island MacArthur Airport, Trenton–Mercer Airport and Westchester County Airport. The primary general aviation airport serving the area is Teterboro Airport. | \n",
+ " Fail | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " See or edit raw graph data.\n",
"\n",
- "New York City's comprehensive transportation system is both complex and extensive.\n",
"\n",
+ "=== Parks ===\n",
"\n",
- "=== Rapid transit ===\n",
- "Mass transit in New York City, most of which runs 24 hours a day, accounts for one in every three users of mass transit in | \n",
- " YES | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " ed.). New York: The New Press. ISBN 978-1-56584-321-9.\n",
- "Holli, Melvin G., and Jones, Peter d'A., eds. Biographical Dictionary of American Mayors, 1820-1980 (Greenwood Press, 1981) short scholarly biographies each of the city's mayors 1820 to 1980. online; see index at p. 410 for list.Jackson, Kenneth T., ed. (1995). The Encyclopedia of New York City. New Haven: Yale University Press. ISBN 0300055366.\n",
- "Jackson, Kenneth T.; Dunbar, David S., eds. (2005). Empire City: New York Through the Centuries. Columbia University Press. ISBN 978-0-231-10909-3.\n",
- "Lankevich, George L. (1998). American Metropolis: A History of New York City. NYU Press. ISBN 978-0-8147-5186-2.\n",
- "White, E.B. (1949). Here is New York (2000 reissue ed.). Little Bookroom.\n",
- "White, Norval & Willensky, Elliot (2000). AIA Guide to New York City (4th ed.). New York: Three Rivers Press. ISBN 978-0-8129-3107-5.\n",
- "Whitehead, Colson (2003). The Colossus of New York: A City in 13 Parts. New York: Doubleday. ISBN 978-0-385-50794-3.\n",
+ "The city of New York has a complex park system, with various lands operated by the National Park Service, the New York State Office of Parks, Recreation and Historic Preservation, and the New York City Department of Parks and Recreation. In its 2018 ParkScore ranking, the Trust for Public Land reported that the park system in New York City was the ninth-best park system among the fifty most populous U.S. cities. ParkScore ranks urban park systems by a formula that analyzes median park size, park acres as percent of city area, the percent of city residents within a half-mile of a park, spending of park services per resident, and the number of playgrounds per 10,000 residents. In 2021, the New York City Council banned the use of synthetic pesticides by city agencies and instead required organic lawn management. The effort was started by teacher Paula Rogovin's kindergarten class at P.S. 290.\n",
"\n",
"\n",
- "== External links ==\n",
+ "==== National parks ====\n",
"\n",
- "Official website \n",
- "NYC Go, official tourism website\n",
- "New York City at Curlie\n",
- " Geographic data related to New York City at OpenStreetMap\n",
- "Collections, 145,000 NYC photographs at the Museum of the City of New York\n",
- "\"The New New York Skyline (interactive)\". National Geographic. November 2015. | \n",
- " NO | \n",
+ "Gateway National Recreation Area contains over 26,000 acres (110 km2), most of it in New York City. In Brooklyn and Queens, the park contains over 9,000 acres (36 km2) of salt marsh, wetlands, islands, and water, including most of Jamaica Bay and the Jamaica Bay Wildlife Refuge. Also in Queens, the park includes a significant portion of the western Rockaway Peninsula, most notably Jacob Riis Park and Fort Tilden. In Staten Island, it includes Fort Wadsworth, with historic pre-Civil War era Battery Weed and Fort Tompkins, and Great Kills Park, with beaches, trails, and a marina.\n",
+ "The Statue of Liberty National Monument and Ellis Island Immigration Museum are managed by the National Park Service and are in both New York and New Jersey. They are joined in the harbor by Governors Island National Monument. Historic sites under federal management on Manhattan Island include Stonewall National Monument; Castle Clinton National Monument; Federal Hall National Memorial; Theodore Roosevelt Birthplace National Historic Site; General Grant National Memorial (Grant's Tomb); African Burial Ground National Monument; and Hamilton Grange National Memorial. Hundreds of properties are listed on the National Register of Historic Places or as a National Historic Landmark.\n",
+ " Fail | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " New York has witnessed a growing combined volume of international and domestic tourists, reflecting over 60 million visitors to the city per year, the world's busiest tourist destination. Approximately 12 million visitors to New York City have been from outside the United States, with the highest numbers from the United Kingdom, Canada, Brazil, and China. Multiple sources have called New York the most photographed city in the world.I Love New York (stylized I ❤ NY) is both a logo and a song that are the basis of an advertising campaign and have been used since 1977 to promote tourism in New York City, and later to promote New York State as well. The trademarked logo, owned by New York State Empire State Development, appears in souvenir shops and brochures throughout the city and state, some licensed, many not. The song is the state song of New York.\n",
+ "The majority of the most high-profile tourist destinations to the city are situated in Manhattan. These include Times Square; Broadway theater productions; the Empire State Building; the Statue of Liberty; Ellis Island; the United Nations headquarters; the World Trade Center (including the National September 11 Memorial & Museum and One World Trade Center); the art museums along Museum Mile; green spaces such as Central Park, Washington Square Park, the High Line, and the medieval gardens of The Cloisters; the Stonewall Inn; Rockefeller Center; ethnic enclaves including the Manhattan Chinatown, Koreatown, Curry Hill, Harlem, Spanish Harlem, Little Italy, and Little Australia; luxury shopping along Fifth and Madison Avenues; and events such as the Halloween Parade in Greenwich Village; the Brooklyn Bridge (shared with Brooklyn); the Macy's Thanksgiving Day Parade; the lighting of the Rockefeller Center Christmas Tree; the St. Patrick's Day Parade; seasonal activities such as ice skating in Central Park in the wintertime; the Tribeca Film Festival; and free performances in Central Park at SummerStage.Points of interest have also developed in the city outside Manhattan and have made the outer boroughs tourist destinations in their own right. | \n",
+ " Fail | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
diff --git a/docs/examples/llm/llama_2_llama_cpp.ipynb b/docs/examples/llm/llama_2_llama_cpp.ipynb
index c57992d27ccb4..81c7dacde38ff 100644
--- a/docs/examples/llm/llama_2_llama_cpp.ipynb
+++ b/docs/examples/llm/llama_2_llama_cpp.ipynb
@@ -55,7 +55,7 @@
"source": [
"from llama_index.core import SimpleDirectoryReader, VectorStoreIndex\n",
"from llama_index.llms.llama_cpp import LlamaCPP\n",
- "from llama_index.core.llms.llama_utils import (\n",
+ "from llama_index.llms.llama_cpp.llama_utils import (\n",
" messages_to_prompt,\n",
" completion_to_prompt,\n",
")"
diff --git a/docs/examples/llm/nvidia_tensorrt.ipynb b/docs/examples/llm/nvidia_tensorrt.ipynb
index b08d424a67981..64853f12f9a65 100644
--- a/docs/examples/llm/nvidia_tensorrt.ipynb
+++ b/docs/examples/llm/nvidia_tensorrt.ipynb
@@ -57,7 +57,7 @@
"metadata": {},
"outputs": [],
"source": [
- "!pip3 install tensorrt_llm -U --extra-index-url https://pypi.nvidia.com"
+ "!pip install tensorrt_llm==0.7.0 --extra-index-url https://pypi.nvidia.com --extra-index-url https://download.pytorch.org/whl/cu121"
]
},
{
diff --git a/docs/examples/metadata_extraction/MetadataExtraction_LLMSurvey.ipynb b/docs/examples/metadata_extraction/MetadataExtraction_LLMSurvey.ipynb
index dc91554f5c686..f5fc5df33f12c 100644
--- a/docs/examples/metadata_extraction/MetadataExtraction_LLMSurvey.ipynb
+++ b/docs/examples/metadata_extraction/MetadataExtraction_LLMSurvey.ipynb
@@ -626,7 +626,82 @@
"execution_count": null,
"id": "5672f974-1a4d-435f-904a-77222eaaed16",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** Metrics for evaluating text generation quality can vary depending on the task. However, some commonly used metrics include BLEU, ROUGE, and exact match metrics. \n",
+ "\n",
+ "BLEU and ROUGE are often used for evaluating machine translation and summarization tasks. They measure the n-gram overlap between the generated text and a reference text. However, these metrics have limitations. For example, they may not be suitable for tasks like abstractive summarization or dialogue, where a wide variety of responses are possible. This is because they rely on exact match and n-gram overlap, which may not capture the semantic quality or creativity of the generated text.\n",
+ "\n",
+ "Exact match metrics, such as BLEU and ROUGE, have the downside of not considering the possibility of a good response with zero n-gram overlap with the reference. This means that even if the generated text is a good response, it may receive a low score if it does not have any n-gram overlap with the reference.\n",
+ "\n",
+ "In addition to their limitations in capturing text quality, these metrics also have poor adaptability to a wider variety of tasks. Using a metric proposed for one task to evaluate another task may not be appropriate. \n",
+ "\n",
+ "Furthermore, these metrics have poor reproducibility. There can be high variance in scores across different studies, possibly due to variations in human judgment collection or metric parameter settings. This lack of consistency makes it challenging to compare results across different studies.\n",
+ "\n",
+ "Overall, while metrics like BLEU and ROUGE provide some quantitative measure of text generation quality, they have downsides in terms of adaptability, reproducibility, and their ability to capture the creativity and diversity of generated text."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "---"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**`Source Node 1/1`**"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**Node ID:** 256dfc5a-cd91-4ff1-9f28-15693775e354
**Similarity:** 0.8402930255994321
**Text:** require creativity and\n",
+ "diversity](https://arxiv.org/abs/2303.16634).\n",
+ "\n",
+ "Second, these metrics often have **poor adaptability to a wider variety of\n",
+ "tasks**. Adopting a metric proposed for one task to another is not always\n",
+ "prudent. For example, exact match metrics such as BLEU and ROUGE are a poor\n",
+ "fit for tasks like abstractive summarization or dialogue. Since they’re based\n",
+ "on n-gram overlap between output and reference, they don’t make sense for a\n",
+ "dialogue task where a wide variety of responses are possible. An output can\n",
+ "have zero n-gram overlap with the reference but yet be a good response.\n",
+ "\n",
+ "Third, these metrics have **poor reproducibility**. Even for the same metric,\n",
+ "[high variance is reported across different\n",
+ "studies](https://arxiv.org/abs/2008.12009), possibly due to variations in\n",
+ "human judgment collection or metric parameter settings. Another study of\n",
+ "[ROUGE scores](https://aclanthology.org/2023.acl-long.107/) across 2,000\n",
+ "studies found that scores were hard
**Metadata:** {}
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"display_response(\n",
" response0, source_length=1000, show_source=True, show_source_metadata=True\n",
@@ -672,7 +747,82 @@
"execution_count": null,
"id": "7093adf9-5fdd-47e3-9114-fc2d264df81c",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** Metrics for evaluating text generation quality can vary depending on the task at hand. However, some commonly used metrics include BLEU (Bilingual Evaluation Understudy), ROUGE (Recall-Oriented Understudy for Gisting Evaluation), and exact match metrics.\n",
+ "\n",
+ "BLEU and ROUGE are often used for evaluating machine translation and summarization tasks. They measure the overlap of n-grams (sequences of words) between the generated text and a reference text. Higher scores indicate better quality, as it suggests that the generated text is similar to the reference.\n",
+ "\n",
+ "Exact match metrics, on the other hand, focus on the exact match between the generated text and the reference. These metrics are commonly used for tasks like question answering or dialogue systems. They determine if the generated text matches the reference exactly, without considering partial matches or variations in wording.\n",
+ "\n",
+ "While these metrics can provide some insights into text generation quality, they have their downsides. First, they may lack adaptability to different tasks. For example, exact match metrics like BLEU and ROUGE may not be suitable for tasks like abstractive summarization or dialogue, where a wide variety of responses are possible.\n",
+ "\n",
+ "Second, these metrics may have poor reproducibility. Different studies have reported high variance in scores, possibly due to variations in human judgment collection or metric parameter settings. This can make it challenging to compare results across different studies or reproduce the same scores.\n",
+ "\n",
+ "In summary, metrics for evaluating text generation quality can be useful but should be chosen carefully based on the task. It is important to consider their adaptability, reproducibility, and limitations when interpreting the results."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "---"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**`Source Node 1/1`**"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**Node ID:** 5161474e-bb2b-4642-9f07-692aa7db4375
**Similarity:** 0.8352202179927705
**Text:** require creativity and\n",
+ "diversity](https://arxiv.org/abs/2303.16634).\n",
+ "\n",
+ "Second, these metrics often have **poor adaptability to a wider variety of\n",
+ "tasks**. Adopting a metric proposed for one task to another is not always\n",
+ "prudent. For example, exact match metrics such as BLEU and ROUGE are a poor\n",
+ "fit for tasks like abstractive summarization or dialogue. Since they’re based\n",
+ "on n-gram overlap between output and reference, they don’t make sense for a\n",
+ "dialogue task where a wide variety of responses are possible. An output can\n",
+ "have zero n-gram overlap with the reference but yet be a good response.\n",
+ "\n",
+ "Third, these metrics have **poor reproducibility**. Even for the same metric,\n",
+ "[high variance is reported across different\n",
+ "studies](https://arxiv.org/abs/2008.12009), possibly due to variations in\n",
+ "human judgment collection or metric parameter settings. Another study of\n",
+ "[ROUGE scores](https://aclanthology.org/2023.acl-long.107/) across 2,000\n",
+ "studies found that scores were hard
**Metadata:** {'questions_this_excerpt_can_answer': '1. What are some limitations of using exact match metrics like BLEU and ROUGE for tasks such as abstractive summarization or dialogue?\\n2. Why is it not always prudent to adopt a metric proposed for one task to another?\\n3. What are some challenges in reproducing and comparing metric scores across different studies?'}
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"display_response(\n",
" response1, source_length=1000, show_source=True, show_source_metadata=True\n",
@@ -684,7 +834,78 @@
"execution_count": null,
"id": "b188a0dc-cb46-4370-ad28-ce3ca9d9fa4f",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** Metrics for evaluating text generation quality include BERTScore and MoverScore. BERTScore measures the similarity between generated text and reference text by considering contextual embeddings. On the other hand, MoverScore measures the effort required to transform one text sequence into another by mapping semantically related words. \n",
+ "\n",
+ "However, there are downsides to using conventional benchmarks and metrics for text generation evaluation. Firstly, these metrics have been found to have poor correlation with human judgments. For example, metrics like BLEU and ROUGE have shown negative correlation with human evaluations of fluency and moderate to less correlation with human adequacy scores. Additionally, they have low correlation with tasks that require creativity and diversity.\n",
+ "\n",
+ "Secondly, these metrics often have poor adaptability to different tasks. Metrics like BLEU and ROUGE, which are based on n-gram overlap between output and reference, are not suitable for tasks like abstractive summarization or dialogue. Therefore, adopting a metric proposed for one task to another may not be appropriate."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "---"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**`Source Node 1/1`**"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**Node ID:** 59031c3f-c150-4d84-82f6-a32bb9920a0a
**Similarity:** 0.8382547930335613
**Text:** is to measure the distance that words would\n",
+ "have to move to convert one sequence to another.\n",
+ "\n",
+ "However, there are several pitfalls to using these conventional benchmarks and\n",
+ "metrics.\n",
+ "\n",
+ "First, there’s **poor correlation between these metrics and human judgments.**\n",
+ "BLEU, ROUGE, and others have had [negative correlation with how humans\n",
+ "evaluate fluency](https://arxiv.org/abs/2008.12009). They also showed moderate\n",
+ "to less correlation with human adequacy scores. In particular, BLEU and ROUGE\n",
+ "have [low correlation with tasks that require creativity and\n",
+ "diversity](https://arxiv.org/abs/2303.16634).\n",
+ "\n",
+ "Second, these metrics often have **poor adaptability to a wider variety of\n",
+ "tasks**. Adopting a metric proposed for one task to another is not always\n",
+ "prudent. For example, exact match metrics such as BLEU and ROUGE are a poor\n",
+ "fit for tasks like abstractive summarization or dialogue. Since they’re based\n",
+ "on n-gram overlap between output and reference, they don’t make sense for a\n",
+ "dialogue task where ...
**Metadata:** {'prev_section_summary': 'The section discusses the comparison between BERTScore and MoverScore, two metrics used to evaluate the quality of text generation models. MoverScore is described as a metric that measures the effort required to transform one text sequence into another by mapping semantically related words. The section also highlights the limitations of conventional benchmarks and metrics, such as poor correlation with human judgments and low correlation with tasks requiring creativity.', 'next_section_summary': 'The section discusses the limitations of current evaluation metrics in natural language processing tasks. It highlights three main issues: lack of creativity and diversity in metrics, poor adaptability to different tasks, and poor reproducibility. The section mentions specific metrics like BLEU and ROUGE, and also references studies that have reported high variance in metric scores.', 'section_summary': 'The section discusses the limitations of conventional benchmarks and metrics used to measure the distance between word sequences. It highlights two main issues: the poor correlation between these metrics and human judgments, and their limited adaptability to different tasks. The section mentions specific metrics like BLEU and ROUGE, which have been found to have low correlation with human evaluations of fluency, adequacy, creativity, and diversity. It also points out that metrics based on n-gram overlap, such as BLEU and ROUGE, are not suitable for tasks like abstractive summarization or dialogue.', 'questions_this_excerpt_can_answer': '1. What are the limitations of conventional benchmarks and metrics in measuring the distance between word sequences?\\n2. How do metrics like BLEU and ROUGE correlate with human judgments in terms of fluency, adequacy, creativity, and diversity?\\n3. Why are metrics based on n-gram overlap, such as BLEU and ROUGE, not suitable for tasks like abstractive summarization or dialogue?'}
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"display_response(\n",
" response2, source_length=1000, show_source=True, show_source_metadata=True\n",
@@ -724,7 +945,75 @@
"execution_count": null,
"id": "4db36ec6-b64b-45da-aff1-ed51b79c571f",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** BERTScore is a metric that is useful because it can account for synonyms and paraphrasing, unlike simpler metrics like BLEU and ROUGE. It uses contextualized embeddings to compute the distance between tokens in the generated output and reference. The formula for BERTScore is:\n",
+ "\n",
+ "\\[ F_{\\text{BERT}} = \\frac{2 \\cdot P_{\\text{BERT}} \\cdot R_{\\text{BERT}}}{P_{\\text{BERT}} + R_{\\text{BERT}}} \\]\n",
+ "\n",
+ "MoverScore, on the other hand, also uses contextualized embeddings to compute the distance between tokens in the generated output and reference. However, unlike BERTScore, which is based on one-to-one matching of tokens, MoverScore allows for many-to-one matching. This is also known as \"soft alignment.\" Unfortunately, the formula for MoverScore is not provided in the given context."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "---"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**`Source Node 1/1`**"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**Node ID:** b15a1c51-3c52-42c2-aba0-1f7aa805e6ce
**Similarity:** 0.8393536980456234
**Text:** = F_{\\text{BERT}} =\n",
+ "\\frac{2 \\cdot P_{\\text{BERT}} \\cdot R_{\\text{BERT}}}{P_{\\text{BERT}} +\n",
+ "R_{\\text{BERT}}}\\\\]\n",
+ "\n",
+ "BERTScore is useful because it can account for synonyms and paraphrasing.\n",
+ "Simpler metrics like BLEU and ROUGE can’t do this due to their reliance on\n",
+ "exact matches. BERTScore has been shown to have better correlation for tasks\n",
+ "such as image captioning and machine translation.\n",
+ "\n",
+ "**[MoverScore](https://arxiv.org/abs/1909.02622)** also uses contextualized\n",
+ "embeddings to compute the distance between tokens in the generated output and\n",
+ "reference. But unlike BERTScore, which is based on one-to-one matching (or\n",
+ "“hard alignment”) of tokens, MoverScore allows for many-to-one matching (or\n",
+ "“soft alignment”).\n",
+ "\n",
+ "![BERTScore \\(left\\) vs. MoverScore
**Metadata:** {}
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"display_response(\n",
" response0, source_length=1000, show_source=True, show_source_metadata=True\n",
@@ -736,7 +1025,73 @@
"execution_count": null,
"id": "ddef5ae7-1030-4257-ba16-8340e46bd548",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** BERTScore is a metric that is useful because it can account for synonyms and paraphrasing, unlike simpler metrics like BLEU and ROUGE. It uses contextualized embeddings to compute the distance between tokens in the generated output and reference. The formula for BERTScore is F_{BERT} = \\frac{2 \\cdot P_{BERT} \\cdot R_{BERT}}{P_{BERT} + R_{BERT}}.\n",
+ "\n",
+ "MoverScore, on the other hand, also uses contextualized embeddings to compute the distance between tokens in the generated output and reference. However, unlike BERTScore, which is based on one-to-one matching of tokens, MoverScore allows for many-to-one matching. Unfortunately, the formula for MoverScore is not provided in the given context."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "---"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**`Source Node 1/1`**"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**Node ID:** c7d7dcb1-48a8-4433-9a58-a0a16ce9b14e
**Similarity:** 0.8485439966069306
**Text:** = F_{\\text{BERT}} =\n",
+ "\\frac{2 \\cdot P_{\\text{BERT}} \\cdot R_{\\text{BERT}}}{P_{\\text{BERT}} +\n",
+ "R_{\\text{BERT}}}\\\\]\n",
+ "\n",
+ "BERTScore is useful because it can account for synonyms and paraphrasing.\n",
+ "Simpler metrics like BLEU and ROUGE can’t do this due to their reliance on\n",
+ "exact matches. BERTScore has been shown to have better correlation for tasks\n",
+ "such as image captioning and machine translation.\n",
+ "\n",
+ "**[MoverScore](https://arxiv.org/abs/1909.02622)** also uses contextualized\n",
+ "embeddings to compute the distance between tokens in the generated output and\n",
+ "reference. But unlike BERTScore, which is based on one-to-one matching (or\n",
+ "“hard alignment”) of tokens, MoverScore allows for many-to-one matching (or\n",
+ "“soft alignment”).\n",
+ "\n",
+ "![BERTScore \\(left\\) vs. MoverScore
**Metadata:** {'questions_this_excerpt_can_answer': '1. What is the advantage of using BERTScore over simpler metrics like BLEU and ROUGE?\\n2. How does MoverScore differ from BERTScore in terms of token matching?\\n3. What tasks have shown better correlation with BERTScore, such as image captioning and machine translation?'}
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"display_response(\n",
" response1, source_length=1000, show_source=True, show_source_metadata=True\n",
@@ -748,7 +1103,75 @@
"execution_count": null,
"id": "43c607eb-6133-43f9-83c7-f6e4e03d78df",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** BERTScore is a method used to compute the similarity between generated output and reference in tasks like image captioning and machine translation. It considers synonyms and paraphrasing, unlike simpler metrics such as BLEU and ROUGE. BERTScore uses one-to-one matching of tokens to calculate its score.\n",
+ "\n",
+ "MoverScore, on the other hand, also utilizes contextualized embeddings to compute the distance between tokens in the generated output and reference. Unlike BERTScore, which uses one-to-one matching, MoverScore allows for many-to-one matching. It solves an optimization problem to find the minimum effort required to transform one text into another by measuring the distance words would have to move.\n",
+ "\n",
+ "Unfortunately, the formulas for BERTScore and MoverScore are not provided in the given context."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "---"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**`Source Node 1/1`**"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/markdown": [
+ "**Node ID:** 21664308-0009-435f-93fc-1ff7de4a9091
**Similarity:** 0.8474860535677818
**Text:** = F_{\\text{BERT}} =\n",
+ "\\frac{2 \\cdot P_{\\text{BERT}} \\cdot R_{\\text{BERT}}}{P_{\\text{BERT}} +\n",
+ "R_{\\text{BERT}}}\\\\]\n",
+ "\n",
+ "BERTScore is useful because it can account for synonyms and paraphrasing.\n",
+ "Simpler metrics like BLEU and ROUGE can’t do this due to their reliance on\n",
+ "exact matches. BERTScore has been shown to have better correlation for tasks\n",
+ "such as image captioning and machine translation.\n",
+ "\n",
+ "**[MoverScore](https://arxiv.org/abs/1909.02622)** also uses contextualized\n",
+ "embeddings to compute the distance between tokens in the generated output and\n",
+ "reference. But unlike BERTScore, which is based on one-to-one matching (or\n",
+ "“hard alignment”) of tokens, MoverScore allows for many-to-one matching (or\n",
+ "“soft alignment”).\n",
+ "\n",
+ "![BERTScore \\(left\\) vs. MoverScore
**Metadata:** {'next_section_summary': 'The key topics of this section are BERTScore and MoverScore, which are methods used to compute the similarity between generated output and reference in tasks like image captioning and machine translation. BERTScore uses one-to-one matching of tokens, while MoverScore allows for many-to-one matching. MoverScore solves an optimization problem to find the minimum effort required to transform one text into another by measuring the distance words would have to move.', 'section_summary': \"The section discusses the importance of BERTScore and MoverScore in evaluating the quality of generated text. BERTScore is advantageous as it considers synonyms and paraphrasing, unlike simpler metrics such as BLEU and ROUGE. It has shown better correlation in tasks like image captioning and machine translation. On the other hand, MoverScore also utilizes contextualized embeddings but allows for many-to-one matching, unlike BERTScore's one-to-one matching.\", 'questions_this_excerpt_can_answer': \"1. What are the key differences between BERTScore and MoverScore in terms of their matching approaches?\\n2. How does BERTScore account for synonyms and paraphrasing, and why is this advantageous compared to metrics like BLEU and ROUGE?\\n3. What is the advantage of MoverScore allowing for many-to-one matching compared to BERTScore's one-to-one matching?\"}
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"display_response(\n",
" response2, source_length=1000, show_source=True, show_source_metadata=True\n",
diff --git a/docs/examples/multi_modal/multi_modal_video_RAG.ipynb b/docs/examples/multi_modal/multi_modal_video_RAG.ipynb
index 3530070970ed0..726c3abdb5031 100644
--- a/docs/examples/multi_modal/multi_modal_video_RAG.ipynb
+++ b/docs/examples/multi_modal/multi_modal_video_RAG.ipynb
@@ -39,7 +39,8 @@
"outputs": [],
"source": [
"%pip install llama-index-multi-modal-llms-openai\n",
- "%pip install llama-index-vector-stores-lancedb"
+ "%pip install llama-index-vector-stores-lancedb\n",
+ "%pip install llama-index-embeddings-clip"
]
},
{
@@ -49,6 +50,7 @@
"outputs": [],
"source": [
"%pip install llama_index ftfy regex tqdm\n",
+ "%pip install -U openai-whisper\n",
"%pip install git+https://github.com/openai/CLIP.git\n",
"%pip install torch torchvision\n",
"%pip install matplotlib scikit-image\n",
@@ -57,7 +59,8 @@
"%pip install pytube\n",
"%pip install pydub\n",
"%pip install SpeechRecognition\n",
- "%pip install ffmpeg-python"
+ "%pip install ffmpeg-python\n",
+ "%pip install soundfile"
]
},
{
@@ -67,7 +70,6 @@
"outputs": [],
"source": [
"from moviepy.editor import VideoFileClip\n",
- "from pydub import AudioSegment\n",
"from pathlib import Path\n",
"import speech_recognition as sr\n",
"from pytube import YouTube\n",
@@ -230,46 +232,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Moviepy - Writing frames ./mixed_data/frame%04d.png.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " \r"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Moviepy - Done writing frames ./mixed_data/frame%04d.png.\n",
- "MoviePy - Writing audio in ./mixed_data/output_audio.wav\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " \r"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "MoviePy - Done.\n",
- "Text data saved to file\n",
- "Audio file removed\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"try:\n",
" metadata_vid = download_video(video_url, output_video_path)\n",
@@ -420,7 +383,7 @@
{
"data": {
"text/markdown": [
- "**Node ID:** 2b0dab05-1469-48a2-9f36-2103458ba252
**Similarity:** 0.742850661277771
**Text:** The basic function underlying a normal distribution, aka a Gaussian, is e to the negative x squared. But you might wonder why this function? Of all the expressions we could dream up that give you s...
"
+ "**Node ID:** bda08ef1-137c-4d69-9bcc-b7005a41a13c
**Similarity:** 0.7431071996688843
**Text:** The basic function underlying a normal distribution, aka a Gaussian, is e to the negative x squared. But you might wonder why this function? Of all the expressions we could dream up that give you s...
"
],
"text/plain": [
""
@@ -432,7 +395,7 @@
{
"data": {
"text/markdown": [
- "**Node ID:** 6856d43b-9978-4882-a1ff-09d11913157b
**Similarity:** 0.7337126731872559
**Text:** This step is actually pretty technical, it goes a little beyond what I want to talk about here. Often use these objects called moment generating functions, that gives you a very abstract argument t...
"
+ "**Node ID:** 7d6d0f32-ce16-461b-be54-883241252e50
**Similarity:** 0.7335695028305054
**Text:** This step is actually pretty technical, it goes a little beyond what I want to talk about here. Often use these objects called moment generating functions, that gives you a very abstract argument t...
"
],
"text/plain": [
""
@@ -444,7 +407,7 @@
{
"data": {
"text/markdown": [
- "**Node ID:** 27e3d1f6-4b30-4087-a93d-5484edc814d3
**Similarity:** 0.7068501114845276
**Text:** This is the important point. All of the stuff that's involving s is now entirely separate from the integrated variable. This remaining integral is a little bit tricky. I did a whole video on it. It...
"
+ "**Node ID:** 519fb788-3927-4842-ad5c-88be61deaf65
**Similarity:** 0.7069740295410156
**Text:** The essence of what we want to compute is what the convolution between two copies of this function looks like. If you remember, in the last video, we had two different ways to visualize convolution...
"
],
"text/plain": [
""
@@ -456,7 +419,7 @@
{
"data": {
"text/markdown": [
- "**Node ID:** 320ed2fc-eeaa-48a3-a216-b90e0316b1a8
**Similarity:** 0.7065496444702148
**Text:** The essence of what we want to compute is what the convolution between two copies of this function looks like. If you remember, in the last video, we had two different ways to visualize convolution...
"
+ "**Node ID:** f265c3fb-3c9f-4f36-aa2a-fb15efff9783
**Similarity:** 0.706935465335846
**Text:** This is the important point. All of the stuff that's involving s is now entirely separate from the integrated variable. This remaining integral is a little bit tricky. I did a whole video on it. It...
"
],
"text/plain": [
""
@@ -503,63 +466,63 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "('The video titled \"A pretty reason why Gaussian + Gaussian = Gaussian\" by '\n",
- " '3Blue1Brown covers several aspects of the Gaussian function, also known as '\n",
- " 'the normal distribution. Here are the key points discussed in the video:\\n'\n",
+ "('The video by 3Blue1Brown, titled \"A pretty reason why Gaussian + Gaussian = '\n",
+ " 'Gaussian,\" covers several aspects of the Gaussian function, also known as '\n",
+ " \"the normal distribution. Here's a summary of the key points discussed in the \"\n",
+ " 'video:\\n'\n",
" '\\n'\n",
" '1. **Central Limit Theorem**: The video begins by discussing the central '\n",
" 'limit theorem, which states that the sum of multiple copies of a random '\n",
- " 'variable tends to look like a normal distribution. As the number of summed '\n",
+ " 'variable tends to look like a normal distribution. As the number of '\n",
" 'variables increases, the approximation to a normal distribution becomes '\n",
" 'better.\\n'\n",
" '\\n'\n",
" '2. **Convolution of Random Variables**: The process of adding two random '\n",
" 'variables is mathematically represented by a convolution of their respective '\n",
- " 'distributions. The video explains how to visualize the convolution operation '\n",
- " 'using two methods, with a focus on the second method involving diagonal '\n",
- " 'slices.\\n'\n",
+ " 'distributions. The video explains the concept of convolution and how it is '\n",
+ " 'used to find the distribution of the sum of two random variables.\\n'\n",
" '\\n'\n",
" '3. **Gaussian Function**: The Gaussian function is more complex than just '\n",
- " '\\\\(e^{-x^2}\\\\). The full formula includes a normalization factor to ensure '\n",
- " 'the area under the curve is one, making it a valid probability distribution. '\n",
- " 'The standard deviation (\\\\(\\\\sigma\\\\)) is used to describe the spread of the '\n",
- " 'distribution, and the mean (\\\\(\\\\mu\\\\)) can be included to shift the center '\n",
- " 'of the distribution.\\n'\n",
+ " '\\\\( e^{-x^2} \\\\). The full formula includes a scaling factor to ensure the '\n",
+ " 'area under the curve is 1 (making it a valid probability distribution), a '\n",
+ " 'standard deviation parameter \\\\( \\\\sigma \\\\) to describe the spread, and a '\n",
+ " 'mean parameter \\\\( \\\\mu \\\\) to shift the center. However, the video focuses '\n",
+ " 'on centered distributions with \\\\( \\\\mu = 0 \\\\).\\n'\n",
" '\\n'\n",
- " '4. **Convolution of Two Gaussians**: The video explores what happens when '\n",
- " 'you add two normally distributed random variables, which is equivalent to '\n",
- " 'computing the convolution of two Gaussian functions. The author presents a '\n",
- " 'visual approach to understand this calculation by exploiting the rotational '\n",
- " 'symmetry of the graph of \\\\(e^{-x^2}\\\\).\\n'\n",
+ " '4. **Visualizing Convolution**: The video presents a visual method to '\n",
+ " 'understand the convolution of two Gaussian functions using diagonal slices '\n",
+ " 'on the xy-plane. This method involves looking at the probability density of '\n",
+ " 'landing on a point (x, y) as \\\\( f(x) \\\\times g(y) \\\\), where f and g are '\n",
+ " 'the two distributions being convolved.\\n'\n",
" '\\n'\n",
- " '5. **Rotational Symmetry and Slices**: The video demonstrates that the graph '\n",
- " 'of \\\\(e^{-x^2} \\\\cdot e^{-y^2}\\\\) is rotationally symmetric around the '\n",
- " 'origin, which is a unique property of Gaussian functions. By examining '\n",
- " 'diagonal slices of this graph, the author shows how to compute the area '\n",
- " 'under these slices, which corresponds to the convolution of the two '\n",
- " 'functions.\\n'\n",
+ " '5. **Rotational Symmetry**: A key property of the Gaussian function is its '\n",
+ " 'rotational symmetry, which is unique to bell curves. This symmetry is '\n",
+ " 'exploited in the video to simplify the calculation of the convolution. By '\n",
+ " 'rotating the graph 45 degrees, the computation becomes easier because the '\n",
+ " 'integral only involves one variable.\\n'\n",
" '\\n'\n",
- " '6. **Resulting Distribution**: The convolution of two Gaussian functions is '\n",
- " 'shown to be another Gaussian function. This is a special property because '\n",
- " 'convolutions typically result in a different kind of function. The video '\n",
- " 'explains that this property is key to understanding why the Gaussian '\n",
- " 'function is the universal shape approached by the central limit theorem.\\n'\n",
+ " '6. **Result of Convolution**: The video demonstrates that the convolution of '\n",
+ " 'two Gaussian functions is another Gaussian function. This is a special '\n",
+ " 'property because convolutions typically result in a different kind of '\n",
+ " 'function. The standard deviation of the resulting Gaussian is \\\\( \\\\sqrt{2} '\n",
+ " '\\\\times \\\\sigma \\\\) if the original Gaussians had the same standard '\n",
+ " 'deviation.\\n'\n",
" '\\n'\n",
- " '7. **Standard Deviation of the Result**: When reintroducing the constants '\n",
- " 'for a normal distribution, the video concludes that the convolution of two '\n",
- " 'normal distributions with mean 0 and standard deviation \\\\(\\\\sigma\\\\) '\n",
- " 'results in another normal distribution with a standard deviation of '\n",
- " '\\\\(\\\\sqrt{2} \\\\cdot \\\\sigma\\\\).\\n'\n",
+ " '7. **Proof of Central Limit Theorem**: The video explains that the '\n",
+ " 'convolution of two Gaussians being another Gaussian is a crucial step in '\n",
+ " 'proving the central limit theorem. It shows that the Gaussian function is a '\n",
+ " 'fixed point in the space of distributions, and since all distributions with '\n",
+ " 'finite variance tend towards a single universal shape, that shape must be '\n",
+ " 'the Gaussian.\\n'\n",
" '\\n'\n",
- " '8. **Implications for the Central Limit Theorem**: The video emphasizes that '\n",
- " 'the computation of the convolution of two Gaussians is fundamental to the '\n",
- " 'central limit theorem. It shows that the Gaussian distribution is a fixed '\n",
- " 'point in the space of distributions, which is why it is the shape that '\n",
- " 'emerges from the central limit theorem.\\n'\n",
+ " '8. **Connection to Pi**: The video also touches on the connection between '\n",
+ " 'the Gaussian function and the number Pi, which appears in the formula for '\n",
+ " 'the normal distribution.\\n'\n",
" '\\n'\n",
- " 'Throughout the video, the author provides visual examples and explanations '\n",
- " 'to help viewers understand the mathematical concepts involved in the '\n",
- " 'Gaussian function and its properties related to probability and statistics.')\n"
+ " 'The video aims to provide an intuitive geometric argument for why the sum of '\n",
+ " 'two normally distributed random variables is also normally distributed, and '\n",
+ " 'how this relates to the central limit theorem and the special properties of '\n",
+ " 'the Gaussian function.')\n"
]
}
],
diff --git a/docs/examples/node_postprocessor/PII.ipynb b/docs/examples/node_postprocessor/PII.ipynb
index 71a45c8be01cc..01acaae96495d 100644
--- a/docs/examples/node_postprocessor/PII.ipynb
+++ b/docs/examples/node_postprocessor/PII.ipynb
@@ -279,6 +279,110 @@
"new_nodes[0].node.metadata[\"__pii_node_info__\"]"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "6cc87ed4",
+ "metadata": {},
+ "source": [
+ "### Option 3: Use Presidio for PII Masking\n",
+ "\n",
+ "Use presidio to identify and anonymize PII"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ac215117",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# load documents\n",
+ "text = \"\"\"\n",
+ "Hello Paulo Santos. The latest statement for your credit card account \\\n",
+ "4095-2609-9393-4932 was mailed to Seattle, WA 98109. \\\n",
+ "IBAN GB90YNTU67299444055881 and social security number is 474-49-7577 were verified on the system. \\\n",
+ "Further communications will be sent to paulo@presidio.site \n",
+ "\"\"\"\n",
+ "presidio_node = TextNode(text=text)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8a745520",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.postprocessor.presidio import PresidioPIINodePostprocessor\n",
+ "\n",
+ "processor = PresidioPIINodePostprocessor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "89cb17ed",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.core.schema import NodeWithScore\n",
+ "\n",
+ "presidio_new_nodes = processor.postprocess_nodes(\n",
+ " [NodeWithScore(node=presidio_node)]\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b8fe9cef",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'\\nHello . The latest statement for your credit card account was mailed to , . IBAN and social security number is were verified on the system. Further communications will be sent to \\n'"
+ ]
+ },
+ "execution_count": null,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# view redacted text\n",
+ "presidio_new_nodes[0].node.get_text()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "80203af0",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'': 'paulo@presidio.site',\n",
+ " '': '474-49-7577',\n",
+ " '': 'GB90YNTU67299444055881',\n",
+ " '': 'WA 98109',\n",
+ " '': 'Seattle',\n",
+ " '': '4095-2609-9393-4932',\n",
+ " '': 'Paulo Santos'}"
+ ]
+ },
+ "execution_count": null,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# get mapping in metadata\n",
+ "# NOTE: this is not sent to the LLM!\n",
+ "presidio_new_nodes[0].node.metadata[\"__pii_node_info__\"]"
+ ]
+ },
{
"attachments": {},
"cell_type": "markdown",
diff --git a/docs/examples/output_parsing/__pycache__/directory.cpython-311.pyc b/docs/examples/output_parsing/__pycache__/directory.cpython-311.pyc
deleted file mode 100644
index 0352eb02f06a0..0000000000000
Binary files a/docs/examples/output_parsing/__pycache__/directory.cpython-311.pyc and /dev/null differ
diff --git a/docs/examples/vector_stores/MongoDBAtlasVectorSearchRAGOpenAI.ipynb b/docs/examples/vector_stores/MongoDBAtlasVectorSearchRAGOpenAI.ipynb
new file mode 100644
index 0000000000000..393a811c91db9
--- /dev/null
+++ b/docs/examples/vector_stores/MongoDBAtlasVectorSearchRAGOpenAI.ipynb
@@ -0,0 +1,1242 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install llama-index\n",
+ "!pip install llama-index-vector-stores-mongodb\n",
+ "!pip install llama-index-embeddings-openai\n",
+ "!pip install pymongo\n",
+ "!pip install datasets\n",
+ "!pip install pandas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%env OPENAI_API_KEY=OPENAI_API_KEY"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " awards | \n",
+ " metacritic | \n",
+ " rated | \n",
+ " fullplot | \n",
+ " title | \n",
+ " writers | \n",
+ " languages | \n",
+ " plot | \n",
+ " plot_embedding | \n",
+ " runtime | \n",
+ " countries | \n",
+ " genres | \n",
+ " directors | \n",
+ " cast | \n",
+ " type | \n",
+ " imdb | \n",
+ " poster | \n",
+ " num_mflix_comments | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " {'nominations': 0, 'text': '1 win.', 'wins': 1} | \n",
+ " NaN | \n",
+ " None | \n",
+ " Young Pauline is left a lot of money when her ... | \n",
+ " The Perils of Pauline | \n",
+ " [Charles W. Goddard (screenplay), Basil Dickey... | \n",
+ " [English] | \n",
+ " Young Pauline is left a lot of money when her ... | \n",
+ " [0.00072939653, -0.026834568, 0.013515796, -0.... | \n",
+ " 199.0 | \n",
+ " [USA] | \n",
+ " [Action] | \n",
+ " [Louis J. Gasnier, Donald MacKenzie] | \n",
+ " [Pearl White, Crane Wilbur, Paul Panzer, Edwar... | \n",
+ " movie | \n",
+ " {'id': 4465, 'rating': 7.6, 'votes': 744} | \n",
+ " https://m.media-amazon.com/images/M/MV5BMzgxOD... | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " {'nominations': 1, 'text': '1 nomination.', 'w... | \n",
+ " NaN | \n",
+ " TV-G | \n",
+ " As a penniless man worries about how he will m... | \n",
+ " From Hand to Mouth | \n",
+ " [H.M. Walker (titles)] | \n",
+ " [English] | \n",
+ " A penniless young man tries to save an heiress... | \n",
+ " [-0.022837115, -0.022941574, 0.014937485, -0.0... | \n",
+ " 22.0 | \n",
+ " [USA] | \n",
+ " [Comedy, Short, Action] | \n",
+ " [Alfred J. Goulding, Hal Roach] | \n",
+ " [Harold Lloyd, Mildred Davis, 'Snub' Pollard, ... | \n",
+ " movie | \n",
+ " {'id': 10146, 'rating': 7.0, 'votes': 639} | \n",
+ " https://m.media-amazon.com/images/M/MV5BNzE1OW... | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " {'nominations': 0, 'text': '1 win.', 'wins': 1} | \n",
+ " NaN | \n",
+ " None | \n",
+ " Michael \"Beau\" Geste leaves England in disgrac... | \n",
+ " Beau Geste | \n",
+ " [Herbert Brenon (adaptation), John Russell (ad... | \n",
+ " [English] | \n",
+ " Michael \"Beau\" Geste leaves England in disgrac... | \n",
+ " [0.00023330493, -0.028511643, 0.014653289, -0.... | \n",
+ " 101.0 | \n",
+ " [USA] | \n",
+ " [Action, Adventure, Drama] | \n",
+ " [Herbert Brenon] | \n",
+ " [Ronald Colman, Neil Hamilton, Ralph Forbes, A... | \n",
+ " movie | \n",
+ " {'id': 16634, 'rating': 6.9, 'votes': 222} | \n",
+ " None | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " {'nominations': 0, 'text': '1 win.', 'wins': 1} | \n",
+ " NaN | \n",
+ " None | \n",
+ " A nobleman vows to avenge the death of his fat... | \n",
+ " The Black Pirate | \n",
+ " [Douglas Fairbanks (story), Jack Cunningham (a... | \n",
+ " None | \n",
+ " Seeking revenge, an athletic young man joins t... | \n",
+ " [-0.005927917, -0.033394486, 0.0015323418, -0.... | \n",
+ " 88.0 | \n",
+ " [USA] | \n",
+ " [Adventure, Action] | \n",
+ " [Albert Parker] | \n",
+ " [Billie Dove, Tempe Pigott, Donald Crisp, Sam ... | \n",
+ " movie | \n",
+ " {'id': 16654, 'rating': 7.2, 'votes': 1146} | \n",
+ " https://m.media-amazon.com/images/M/MV5BMzU0ND... | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " {'nominations': 1, 'text': '1 nomination.', 'w... | \n",
+ " NaN | \n",
+ " PASSED | \n",
+ " The Uptown Boy, J. Harold Manners (Lloyd) is a... | \n",
+ " For Heaven's Sake | \n",
+ " [Ted Wilde (story), John Grey (story), Clyde B... | \n",
+ " [English] | \n",
+ " An irresponsible young millionaire changes his... | \n",
+ " [-0.0059373598, -0.026604708, -0.0070914757, -... | \n",
+ " 58.0 | \n",
+ " [USA] | \n",
+ " [Action, Comedy, Romance] | \n",
+ " [Sam Taylor] | \n",
+ " [Harold Lloyd, Jobyna Ralston, Noah Young, Jim... | \n",
+ " movie | \n",
+ " {'id': 16895, 'rating': 7.6, 'votes': 918} | \n",
+ " https://m.media-amazon.com/images/M/MV5BMTcxMT... | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " awards metacritic rated \\\n",
+ "0 {'nominations': 0, 'text': '1 win.', 'wins': 1} NaN None \n",
+ "1 {'nominations': 1, 'text': '1 nomination.', 'w... NaN TV-G \n",
+ "2 {'nominations': 0, 'text': '1 win.', 'wins': 1} NaN None \n",
+ "3 {'nominations': 0, 'text': '1 win.', 'wins': 1} NaN None \n",
+ "4 {'nominations': 1, 'text': '1 nomination.', 'w... NaN PASSED \n",
+ "\n",
+ " fullplot title \\\n",
+ "0 Young Pauline is left a lot of money when her ... The Perils of Pauline \n",
+ "1 As a penniless man worries about how he will m... From Hand to Mouth \n",
+ "2 Michael \"Beau\" Geste leaves England in disgrac... Beau Geste \n",
+ "3 A nobleman vows to avenge the death of his fat... The Black Pirate \n",
+ "4 The Uptown Boy, J. Harold Manners (Lloyd) is a... For Heaven's Sake \n",
+ "\n",
+ " writers languages \\\n",
+ "0 [Charles W. Goddard (screenplay), Basil Dickey... [English] \n",
+ "1 [H.M. Walker (titles)] [English] \n",
+ "2 [Herbert Brenon (adaptation), John Russell (ad... [English] \n",
+ "3 [Douglas Fairbanks (story), Jack Cunningham (a... None \n",
+ "4 [Ted Wilde (story), John Grey (story), Clyde B... [English] \n",
+ "\n",
+ " plot \\\n",
+ "0 Young Pauline is left a lot of money when her ... \n",
+ "1 A penniless young man tries to save an heiress... \n",
+ "2 Michael \"Beau\" Geste leaves England in disgrac... \n",
+ "3 Seeking revenge, an athletic young man joins t... \n",
+ "4 An irresponsible young millionaire changes his... \n",
+ "\n",
+ " plot_embedding runtime countries \\\n",
+ "0 [0.00072939653, -0.026834568, 0.013515796, -0.... 199.0 [USA] \n",
+ "1 [-0.022837115, -0.022941574, 0.014937485, -0.0... 22.0 [USA] \n",
+ "2 [0.00023330493, -0.028511643, 0.014653289, -0.... 101.0 [USA] \n",
+ "3 [-0.005927917, -0.033394486, 0.0015323418, -0.... 88.0 [USA] \n",
+ "4 [-0.0059373598, -0.026604708, -0.0070914757, -... 58.0 [USA] \n",
+ "\n",
+ " genres directors \\\n",
+ "0 [Action] [Louis J. Gasnier, Donald MacKenzie] \n",
+ "1 [Comedy, Short, Action] [Alfred J. Goulding, Hal Roach] \n",
+ "2 [Action, Adventure, Drama] [Herbert Brenon] \n",
+ "3 [Adventure, Action] [Albert Parker] \n",
+ "4 [Action, Comedy, Romance] [Sam Taylor] \n",
+ "\n",
+ " cast type \\\n",
+ "0 [Pearl White, Crane Wilbur, Paul Panzer, Edwar... movie \n",
+ "1 [Harold Lloyd, Mildred Davis, 'Snub' Pollard, ... movie \n",
+ "2 [Ronald Colman, Neil Hamilton, Ralph Forbes, A... movie \n",
+ "3 [Billie Dove, Tempe Pigott, Donald Crisp, Sam ... movie \n",
+ "4 [Harold Lloyd, Jobyna Ralston, Noah Young, Jim... movie \n",
+ "\n",
+ " imdb \\\n",
+ "0 {'id': 4465, 'rating': 7.6, 'votes': 744} \n",
+ "1 {'id': 10146, 'rating': 7.0, 'votes': 639} \n",
+ "2 {'id': 16634, 'rating': 6.9, 'votes': 222} \n",
+ "3 {'id': 16654, 'rating': 7.2, 'votes': 1146} \n",
+ "4 {'id': 16895, 'rating': 7.6, 'votes': 918} \n",
+ "\n",
+ " poster num_mflix_comments \n",
+ "0 https://m.media-amazon.com/images/M/MV5BMzgxOD... 0 \n",
+ "1 https://m.media-amazon.com/images/M/MV5BNzE1OW... 0 \n",
+ "2 None 0 \n",
+ "3 https://m.media-amazon.com/images/M/MV5BMzU0ND... 1 \n",
+ "4 https://m.media-amazon.com/images/M/MV5BMTcxMT... 0 "
+ ]
+ },
+ "execution_count": null,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from datasets import load_dataset\n",
+ "import pandas as pd\n",
+ "\n",
+ "# https://huggingface.co/datasets/AIatMongoDB/embedded_movies\n",
+ "dataset = load_dataset(\"AIatMongoDB/embedded_movies\")\n",
+ "\n",
+ "# Convert the dataset to a pandas dataframe\n",
+ "dataset_df = pd.DataFrame(dataset[\"train\"])\n",
+ "\n",
+ "dataset_df.head(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Number of missing values in each column after removal:\n",
+ "awards 0\n",
+ "metacritic 893\n",
+ "rated 279\n",
+ "fullplot 0\n",
+ "title 0\n",
+ "writers 13\n",
+ "languages 1\n",
+ "plot 0\n",
+ "plot_embedding 1\n",
+ "runtime 14\n",
+ "countries 0\n",
+ "genres 0\n",
+ "directors 12\n",
+ "cast 1\n",
+ "type 0\n",
+ "imdb 0\n",
+ "poster 78\n",
+ "num_mflix_comments 0\n",
+ "dtype: int64\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " awards | \n",
+ " metacritic | \n",
+ " rated | \n",
+ " fullplot | \n",
+ " title | \n",
+ " writers | \n",
+ " languages | \n",
+ " plot | \n",
+ " runtime | \n",
+ " countries | \n",
+ " genres | \n",
+ " directors | \n",
+ " cast | \n",
+ " type | \n",
+ " imdb | \n",
+ " poster | \n",
+ " num_mflix_comments | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " {'nominations': 0, 'text': '1 win.', 'wins': 1} | \n",
+ " NaN | \n",
+ " None | \n",
+ " Young Pauline is left a lot of money when her ... | \n",
+ " The Perils of Pauline | \n",
+ " [Charles W. Goddard (screenplay), Basil Dickey... | \n",
+ " [English] | \n",
+ " Young Pauline is left a lot of money when her ... | \n",
+ " 199.0 | \n",
+ " [USA] | \n",
+ " [Action] | \n",
+ " [Louis J. Gasnier, Donald MacKenzie] | \n",
+ " [Pearl White, Crane Wilbur, Paul Panzer, Edwar... | \n",
+ " movie | \n",
+ " {'id': 4465, 'rating': 7.6, 'votes': 744} | \n",
+ " https://m.media-amazon.com/images/M/MV5BMzgxOD... | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " {'nominations': 1, 'text': '1 nomination.', 'w... | \n",
+ " NaN | \n",
+ " TV-G | \n",
+ " As a penniless man worries about how he will m... | \n",
+ " From Hand to Mouth | \n",
+ " [H.M. Walker (titles)] | \n",
+ " [English] | \n",
+ " A penniless young man tries to save an heiress... | \n",
+ " 22.0 | \n",
+ " [USA] | \n",
+ " [Comedy, Short, Action] | \n",
+ " [Alfred J. Goulding, Hal Roach] | \n",
+ " [Harold Lloyd, Mildred Davis, 'Snub' Pollard, ... | \n",
+ " movie | \n",
+ " {'id': 10146, 'rating': 7.0, 'votes': 639} | \n",
+ " https://m.media-amazon.com/images/M/MV5BNzE1OW... | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " {'nominations': 0, 'text': '1 win.', 'wins': 1} | \n",
+ " NaN | \n",
+ " None | \n",
+ " Michael \"Beau\" Geste leaves England in disgrac... | \n",
+ " Beau Geste | \n",
+ " [Herbert Brenon (adaptation), John Russell (ad... | \n",
+ " [English] | \n",
+ " Michael \"Beau\" Geste leaves England in disgrac... | \n",
+ " 101.0 | \n",
+ " [USA] | \n",
+ " [Action, Adventure, Drama] | \n",
+ " [Herbert Brenon] | \n",
+ " [Ronald Colman, Neil Hamilton, Ralph Forbes, A... | \n",
+ " movie | \n",
+ " {'id': 16634, 'rating': 6.9, 'votes': 222} | \n",
+ " None | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " {'nominations': 0, 'text': '1 win.', 'wins': 1} | \n",
+ " NaN | \n",
+ " None | \n",
+ " A nobleman vows to avenge the death of his fat... | \n",
+ " The Black Pirate | \n",
+ " [Douglas Fairbanks (story), Jack Cunningham (a... | \n",
+ " None | \n",
+ " Seeking revenge, an athletic young man joins t... | \n",
+ " 88.0 | \n",
+ " [USA] | \n",
+ " [Adventure, Action] | \n",
+ " [Albert Parker] | \n",
+ " [Billie Dove, Tempe Pigott, Donald Crisp, Sam ... | \n",
+ " movie | \n",
+ " {'id': 16654, 'rating': 7.2, 'votes': 1146} | \n",
+ " https://m.media-amazon.com/images/M/MV5BMzU0ND... | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " {'nominations': 1, 'text': '1 nomination.', 'w... | \n",
+ " NaN | \n",
+ " PASSED | \n",
+ " The Uptown Boy, J. Harold Manners (Lloyd) is a... | \n",
+ " For Heaven's Sake | \n",
+ " [Ted Wilde (story), John Grey (story), Clyde B... | \n",
+ " [English] | \n",
+ " An irresponsible young millionaire changes his... | \n",
+ " 58.0 | \n",
+ " [USA] | \n",
+ " [Action, Comedy, Romance] | \n",
+ " [Sam Taylor] | \n",
+ " [Harold Lloyd, Jobyna Ralston, Noah Young, Jim... | \n",
+ " movie | \n",
+ " {'id': 16895, 'rating': 7.6, 'votes': 918} | \n",
+ " https://m.media-amazon.com/images/M/MV5BMTcxMT... | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " awards metacritic rated \\\n",
+ "0 {'nominations': 0, 'text': '1 win.', 'wins': 1} NaN None \n",
+ "1 {'nominations': 1, 'text': '1 nomination.', 'w... NaN TV-G \n",
+ "2 {'nominations': 0, 'text': '1 win.', 'wins': 1} NaN None \n",
+ "3 {'nominations': 0, 'text': '1 win.', 'wins': 1} NaN None \n",
+ "4 {'nominations': 1, 'text': '1 nomination.', 'w... NaN PASSED \n",
+ "\n",
+ " fullplot title \\\n",
+ "0 Young Pauline is left a lot of money when her ... The Perils of Pauline \n",
+ "1 As a penniless man worries about how he will m... From Hand to Mouth \n",
+ "2 Michael \"Beau\" Geste leaves England in disgrac... Beau Geste \n",
+ "3 A nobleman vows to avenge the death of his fat... The Black Pirate \n",
+ "4 The Uptown Boy, J. Harold Manners (Lloyd) is a... For Heaven's Sake \n",
+ "\n",
+ " writers languages \\\n",
+ "0 [Charles W. Goddard (screenplay), Basil Dickey... [English] \n",
+ "1 [H.M. Walker (titles)] [English] \n",
+ "2 [Herbert Brenon (adaptation), John Russell (ad... [English] \n",
+ "3 [Douglas Fairbanks (story), Jack Cunningham (a... None \n",
+ "4 [Ted Wilde (story), John Grey (story), Clyde B... [English] \n",
+ "\n",
+ " plot runtime countries \\\n",
+ "0 Young Pauline is left a lot of money when her ... 199.0 [USA] \n",
+ "1 A penniless young man tries to save an heiress... 22.0 [USA] \n",
+ "2 Michael \"Beau\" Geste leaves England in disgrac... 101.0 [USA] \n",
+ "3 Seeking revenge, an athletic young man joins t... 88.0 [USA] \n",
+ "4 An irresponsible young millionaire changes his... 58.0 [USA] \n",
+ "\n",
+ " genres directors \\\n",
+ "0 [Action] [Louis J. Gasnier, Donald MacKenzie] \n",
+ "1 [Comedy, Short, Action] [Alfred J. Goulding, Hal Roach] \n",
+ "2 [Action, Adventure, Drama] [Herbert Brenon] \n",
+ "3 [Adventure, Action] [Albert Parker] \n",
+ "4 [Action, Comedy, Romance] [Sam Taylor] \n",
+ "\n",
+ " cast type \\\n",
+ "0 [Pearl White, Crane Wilbur, Paul Panzer, Edwar... movie \n",
+ "1 [Harold Lloyd, Mildred Davis, 'Snub' Pollard, ... movie \n",
+ "2 [Ronald Colman, Neil Hamilton, Ralph Forbes, A... movie \n",
+ "3 [Billie Dove, Tempe Pigott, Donald Crisp, Sam ... movie \n",
+ "4 [Harold Lloyd, Jobyna Ralston, Noah Young, Jim... movie \n",
+ "\n",
+ " imdb \\\n",
+ "0 {'id': 4465, 'rating': 7.6, 'votes': 744} \n",
+ "1 {'id': 10146, 'rating': 7.0, 'votes': 639} \n",
+ "2 {'id': 16634, 'rating': 6.9, 'votes': 222} \n",
+ "3 {'id': 16654, 'rating': 7.2, 'votes': 1146} \n",
+ "4 {'id': 16895, 'rating': 7.6, 'votes': 918} \n",
+ "\n",
+ " poster num_mflix_comments \n",
+ "0 https://m.media-amazon.com/images/M/MV5BMzgxOD... 0 \n",
+ "1 https://m.media-amazon.com/images/M/MV5BNzE1OW... 0 \n",
+ "2 None 0 \n",
+ "3 https://m.media-amazon.com/images/M/MV5BMzU0ND... 1 \n",
+ "4 https://m.media-amazon.com/images/M/MV5BMTcxMT... 0 "
+ ]
+ },
+ "execution_count": null,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Remove data point where fullplot coloumn is missing\n",
+ "dataset_df = dataset_df.dropna(subset=[\"fullplot\"])\n",
+ "print(\"\\nNumber of missing values in each column after removal:\")\n",
+ "print(dataset_df.isnull().sum())\n",
+ "\n",
+ "# Remove the plot_embedding from each data point in the dataset as we are going to create new embeddings with the new OpenAI emebedding Model \"text-embedding-3-small\"\n",
+ "dataset_df = dataset_df.drop(columns=[\"plot_embedding\"])\n",
+ "\n",
+ "dataset_df.head(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.core.settings import Settings\n",
+ "from llama_index.llms.openai import OpenAI\n",
+ "from llama_index.embeddings.openai import OpenAIEmbedding\n",
+ "\n",
+ "embed_model = OpenAIEmbedding(model=\"text-embedding-3-small\", dimensions=256)\n",
+ "llm = OpenAI()\n",
+ "\n",
+ "Settings.llm = llm\n",
+ "Settings.embed_model = embed_model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "The LLM sees this: \n",
+ " Metadata: awards=>{\"nominations\": 0, \"text\": \"1 win.\", \"wins\": 1}\n",
+ "rated=>None\n",
+ "title=>The Perils of Pauline\n",
+ "writers=>[\"Charles W. Goddard (screenplay)\", \"Basil Dickey (screenplay)\", \"Charles W. Goddard (novel)\", \"George B. Seitz\", \"Bertram Millhauser\"]\n",
+ "languages=>[\"English\"]\n",
+ "plot=>Young Pauline is left a lot of money when her wealthy uncle dies. However, her uncle's secretary has been named as her guardian until she marries, at which time she will officially take ...\n",
+ "runtime=>199.0\n",
+ "countries=>[\"USA\"]\n",
+ "genres=>[\"Action\"]\n",
+ "directors=>[\"Louis J. Gasnier\", \"Donald MacKenzie\"]\n",
+ "cast=>[\"Pearl White\", \"Crane Wilbur\", \"Paul Panzer\", \"Edward Jos\\u00e8\"]\n",
+ "type=>movie\n",
+ "imdb=>{\"id\": 4465, \"rating\": 7.6, \"votes\": 744}\n",
+ "poster=>https://m.media-amazon.com/images/M/MV5BMzgxODk1Mzk2Ml5BMl5BanBnXkFtZTgwMDg0NzkwMjE@._V1_SY1000_SX677_AL_.jpg\n",
+ "num_mflix_comments=>0\n",
+ "-----\n",
+ "Content: Young Pauline is left a lot of money when her wealthy uncle dies. However, her uncle's secretary has been named as her guardian until she marries, at which time she will officially take possession of her inheritance. Meanwhile, her \"guardian\" and his confederates constantly come up with schemes to get rid of Pauline so that he can get his hands on the money himself.\n",
+ "\n",
+ "The Embedding model sees this: \n",
+ " Metadata: awards=>{\"nominations\": 0, \"text\": \"1 win.\", \"wins\": 1}\n",
+ "title=>The Perils of Pauline\n",
+ "writers=>[\"Charles W. Goddard (screenplay)\", \"Basil Dickey (screenplay)\", \"Charles W. Goddard (novel)\", \"George B. Seitz\", \"Bertram Millhauser\"]\n",
+ "languages=>[\"English\"]\n",
+ "plot=>Young Pauline is left a lot of money when her wealthy uncle dies. However, her uncle's secretary has been named as her guardian until she marries, at which time she will officially take ...\n",
+ "countries=>[\"USA\"]\n",
+ "genres=>[\"Action\"]\n",
+ "directors=>[\"Louis J. Gasnier\", \"Donald MacKenzie\"]\n",
+ "cast=>[\"Pearl White\", \"Crane Wilbur\", \"Paul Panzer\", \"Edward Jos\\u00e8\"]\n",
+ "type=>movie\n",
+ "imdb=>{\"id\": 4465, \"rating\": 7.6, \"votes\": 744}\n",
+ "-----\n",
+ "Content: Young Pauline is left a lot of money when her wealthy uncle dies. However, her uncle's secretary has been named as her guardian until she marries, at which time she will officially take possession of her inheritance. Meanwhile, her \"guardian\" and his confederates constantly come up with schemes to get rid of Pauline so that he can get his hands on the money himself.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import json\n",
+ "from llama_index.core import Document\n",
+ "from llama_index.core.schema import MetadataMode\n",
+ "\n",
+ "# Convert the DataFrame to a JSON string representation\n",
+ "documents_json = dataset_df.to_json(orient=\"records\")\n",
+ "# Load the JSON string into a Python list of dictionaries\n",
+ "documents_list = json.loads(documents_json)\n",
+ "\n",
+ "llama_documents = []\n",
+ "\n",
+ "for document in documents_list:\n",
+ " # Value for metadata must be one of (str, int, float, None)\n",
+ " document[\"writers\"] = json.dumps(document[\"writers\"])\n",
+ " document[\"languages\"] = json.dumps(document[\"languages\"])\n",
+ " document[\"genres\"] = json.dumps(document[\"genres\"])\n",
+ " document[\"cast\"] = json.dumps(document[\"cast\"])\n",
+ " document[\"directors\"] = json.dumps(document[\"directors\"])\n",
+ " document[\"countries\"] = json.dumps(document[\"countries\"])\n",
+ " document[\"imdb\"] = json.dumps(document[\"imdb\"])\n",
+ " document[\"awards\"] = json.dumps(document[\"awards\"])\n",
+ "\n",
+ " # Create a Document object with the text and excluded metadata for llm and embedding models\n",
+ " llama_document = Document(\n",
+ " text=document[\"fullplot\"],\n",
+ " metadata=document,\n",
+ " excluded_llm_metadata_keys=[\"fullplot\", \"metacritic\"],\n",
+ " excluded_embed_metadata_keys=[\n",
+ " \"fullplot\",\n",
+ " \"metacritic\",\n",
+ " \"poster\",\n",
+ " \"num_mflix_comments\",\n",
+ " \"runtime\",\n",
+ " \"rated\",\n",
+ " ],\n",
+ " metadata_template=\"{key}=>{value}\",\n",
+ " text_template=\"Metadata: {metadata_str}\\n-----\\nContent: {content}\",\n",
+ " )\n",
+ "\n",
+ " llama_documents.append(llama_document)\n",
+ "\n",
+ "# Observing an example of what the LLM and Embedding model receive as input\n",
+ "print(\n",
+ " \"\\nThe LLM sees this: \\n\",\n",
+ " llama_documents[0].get_content(metadata_mode=MetadataMode.LLM),\n",
+ ")\n",
+ "print(\n",
+ " \"\\nThe Embedding model sees this: \\n\",\n",
+ " llama_documents[0].get_content(metadata_mode=MetadataMode.EMBED),\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "llama_documents[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.core.node_parser import SentenceSplitter\n",
+ "\n",
+ "parser = SentenceSplitter()\n",
+ "nodes = parser.get_nodes_from_documents(llama_documents)\n",
+ "\n",
+ "for node in nodes:\n",
+ " node_embedding = embed_model.get_text_embedding(\n",
+ " node.get_content(metadata_mode=\"all\")\n",
+ " )\n",
+ " node.embedding = node_embedding"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Ensure your databse, collection and vector store index is setup on MongoDB Atlas for the collection or the following step won't work appropriately on MongoDB.\n",
+ "\n",
+ "\n",
+ " - For assistance with database cluster setup and obtaining the URI, refer to this [guide](https://www.mongodb.com/docs/guides/atlas/cluster/) for setting up a MongoDB cluster, and this [guide](https://www.mongodb.com/docs/guides/atlas/connection-string/) to get your connection string. \n",
+ "\n",
+ " - Once you have successfully created a cluster, create the database and collection within the MongoDB Atlas cluster by clicking “+ Create Database”. The database will be named movies, and the collection will be named movies_records.\n",
+ "\n",
+ " - Creating a vector search index within the movies_records collection is essential for efficient document retrieval from MongoDB into our development environment. To achieve this, refer to the official [guide](https://www.mongodb.com/docs/atlas/atlas-vector-search/create-index/) on vector search index creation.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Connection to MongoDB successful\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pymongo\n",
+ "from google.colab import userdata\n",
+ "\n",
+ "\n",
+ "def get_mongo_client(mongo_uri):\n",
+ " \"\"\"Establish connection to the MongoDB.\"\"\"\n",
+ " try:\n",
+ " client = pymongo.MongoClient(mongo_uri)\n",
+ " print(\"Connection to MongoDB successful\")\n",
+ " return client\n",
+ " except pymongo.errors.ConnectionFailure as e:\n",
+ " print(f\"Connection failed: {e}\")\n",
+ " return None\n",
+ "\n",
+ "\n",
+ "mongo_uri = userdata.get(\"MONGO_URI\")\n",
+ "if not mongo_uri:\n",
+ " print(\"MONGO_URI not set in environment variables\")\n",
+ "\n",
+ "mongo_client = get_mongo_client(mongo_uri)\n",
+ "\n",
+ "DB_NAME = \"movies\"\n",
+ "COLLECTION_NAME = \"movies_records\"\n",
+ "\n",
+ "db = mongo_client[DB_NAME]\n",
+ "collection = db[COLLECTION_NAME]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "DeleteResult({'n': 0, 'electionId': ObjectId('7fffffff000000000000000a'), 'opTime': {'ts': Timestamp(1708000722, 1), 't': 10}, 'ok': 1.0, '$clusterTime': {'clusterTime': Timestamp(1708000722, 1), 'signature': {'hash': b'\\xd8\\x1a\\xaci\\xf5EN+\\xe2\\xd1\\xb3y8.${u5P\\xf3', 'keyId': 7320226449804230661}}, 'operationTime': Timestamp(1708000722, 1)}, acknowledged=True)"
+ ]
+ },
+ "execution_count": null,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# To ensure we are working with a fresh collection\n",
+ "# delete any existing records in the collection\n",
+ "collection.delete_many({})"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.vector_stores.mongodb import MongoDBAtlasVectorSearch\n",
+ "\n",
+ "vector_store = MongoDBAtlasVectorSearch(\n",
+ " mongo_client,\n",
+ " db_name=DB_NAME,\n",
+ " collection_name=COLLECTION_NAME,\n",
+ " index_name=\"vector_index\",\n",
+ ")\n",
+ "vector_store.add(nodes)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from llama_index.core import VectorStoreIndex, StorageContext\n",
+ "\n",
+ "index = VectorStoreIndex.from_vector_store(vector_store)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "**`Final Response:`** The movie \"Romancing the Stone\" would be a suitable romantic movie for the Christmas season. It is a romantic adventure film that follows a romance writer who sets off on a dangerous adventure to rescue her kidnapped sister. The movie has elements of romance, adventure, and comedy, making it an entertaining choice for the holiday season. Additionally, the movie has received positive reviews and has been nominated for awards, indicating its quality."
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NodeWithScore(node=TextNode(id_='c6bbc236-e21d-49ab-b43d-db920b4946e6', embedding=None, metadata={'awards': '{\"nominations\": 2, \"text\": \"Nominated for 1 Oscar. Another 6 wins & 2 nominations.\", \"wins\": 7}', 'metacritic': None, 'rated': 'PG', 'fullplot': \"Joan Wilder, a mousy romance novelist, receives a treasure map in the mail from her recently murdered brother-in-law. Meanwhile, her sister Elaine is kidnapped in Colombia and the two criminals responsible demand that she travel to Colombia to exchange the map for her sister. Joan does, and quickly becomes lost in the jungle after being waylayed by Zolo, a vicious and corrupt Colombian cop who will stop at nothing to obtain the map. There, she meets an irreverent soldier-of-fortune named Jack Colton who agrees to bring her back to civilization. Together, they embark upon an adventure that could be straight out of Joan's novels.\", 'title': 'Romancing the Stone', 'writers': '[\"Diane Thomas\"]', 'languages': '[\"English\", \"Spanish\", \"French\"]', 'plot': 'A romance writer sets off to Colombia to ransom her kidnapped sister, and soon finds herself in the middle of a dangerous adventure.', 'runtime': 106.0, 'countries': '[\"USA\", \"Mexico\"]', 'genres': '[\"Action\", \"Adventure\", \"Comedy\"]', 'directors': '[\"Robert Zemeckis\"]', 'cast': '[\"Michael Douglas\", \"Kathleen Turner\", \"Danny DeVito\", \"Zack Norman\"]', 'type': 'movie', 'imdb': '{\"id\": 88011, \"rating\": 6.9, \"votes\": 59403}', 'poster': 'https://m.media-amazon.com/images/M/MV5BMDAwNjljMzEtMTc3Yy00NDg2LThjNDAtNjc0NGYyYjM2M2I1XkEyXkFqcGdeQXVyNDE5MTU2MDE@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 0}, excluded_embed_metadata_keys=['fullplot', 'metacritic', 'poster', 'num_mflix_comments', 'runtime', 'rated'], excluded_llm_metadata_keys=['fullplot', 'metacritic'], relationships={: RelatedNodeInfo(node_id='e50144b0-96ba-4a5a-b90a-3a2419f5b380', node_type=, metadata={'awards': '{\"nominations\": 2, \"text\": \"Nominated for 1 Oscar. Another 6 wins & 2 nominations.\", \"wins\": 7}', 'metacritic': None, 'rated': 'PG', 'fullplot': \"Joan Wilder, a mousy romance novelist, receives a treasure map in the mail from her recently murdered brother-in-law. Meanwhile, her sister Elaine is kidnapped in Colombia and the two criminals responsible demand that she travel to Colombia to exchange the map for her sister. Joan does, and quickly becomes lost in the jungle after being waylayed by Zolo, a vicious and corrupt Colombian cop who will stop at nothing to obtain the map. There, she meets an irreverent soldier-of-fortune named Jack Colton who agrees to bring her back to civilization. Together, they embark upon an adventure that could be straight out of Joan's novels.\", 'title': 'Romancing the Stone', 'writers': '[\"Diane Thomas\"]', 'languages': '[\"English\", \"Spanish\", \"French\"]', 'plot': 'A romance writer sets off to Colombia to ransom her kidnapped sister, and soon finds herself in the middle of a dangerous adventure.', 'runtime': 106.0, 'countries': '[\"USA\", \"Mexico\"]', 'genres': '[\"Action\", \"Adventure\", \"Comedy\"]', 'directors': '[\"Robert Zemeckis\"]', 'cast': '[\"Michael Douglas\", \"Kathleen Turner\", \"Danny DeVito\", \"Zack Norman\"]', 'type': 'movie', 'imdb': '{\"id\": 88011, \"rating\": 6.9, \"votes\": 59403}', 'poster': 'https://m.media-amazon.com/images/M/MV5BMDAwNjljMzEtMTc3Yy00NDg2LThjNDAtNjc0NGYyYjM2M2I1XkEyXkFqcGdeQXVyNDE5MTU2MDE@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 0}, hash='b984e4f203b7b67eae14afa890718adb800a5816661ac2edf412aa96fd7dc10b'), : RelatedNodeInfo(node_id='f895e43a-038a-4a1c-8a82-0e22868e35d7', node_type=, metadata={'awards': '{\"nominations\": 1, \"text\": \"1 nomination.\", \"wins\": 0}', 'metacritic': None, 'rated': 'R', 'fullplot': \"Chicago psychiatrist Judd Stevens (Roger Moore) is suspected of murdering one of his patients when the man turns up stabbed to death in the middle of the city. After repeated attempts to convince cops Rod Steiger and Elliott Gould of his innocence, Dr.Stevens is forced to go after the real villains himself, and he finds himself up against one of the city's most notorious Mafia kingpins.\", 'title': 'The Naked Face', 'writers': '[\"Bryan Forbes\", \"Sidney Sheldon (novel)\"]', 'languages': '[\"English\"]', 'plot': 'Chicago psychiatrist Judd Stevens (Roger Moore) is suspected of murdering one of his patients when the man turns up stabbed to death in the middle of the city. After repeated attempts to ...', 'runtime': 103.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Mystery\", \"Thriller\"]', 'directors': '[\"Bryan Forbes\"]', 'cast': '[\"Roger Moore\", \"Rod Steiger\", \"Elliott Gould\", \"Art Carney\"]', 'type': 'movie', 'imdb': '{\"id\": 87777, \"rating\": 5.3, \"votes\": 654}', 'poster': 'https://m.media-amazon.com/images/M/MV5BMTg0NDM4MTY0NV5BMl5BanBnXkFtZTcwNTcwOTc2NA@@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 1}, hash='066e2b3d12c5fab61175f52dd625ec41fb1fce1fe6fe4c892774227c576fdbbd'), : RelatedNodeInfo(node_id='e31f1142-c6b6-4183-b14b-1634166b9d1f', node_type=, metadata={}, hash='9b9127e21d18792749a7a35321e04d29b8d77f7b454b0133205f9de1090038b4')}, text=\"Joan Wilder, a mousy romance novelist, receives a treasure map in the mail from her recently murdered brother-in-law. Meanwhile, her sister Elaine is kidnapped in Colombia and the two criminals responsible demand that she travel to Colombia to exchange the map for her sister. Joan does, and quickly becomes lost in the jungle after being waylayed by Zolo, a vicious and corrupt Colombian cop who will stop at nothing to obtain the map. There, she meets an irreverent soldier-of-fortune named Jack Colton who agrees to bring her back to civilization. Together, they embark upon an adventure that could be straight out of Joan's novels.\", start_char_idx=0, end_char_idx=635, text_template='Metadata: {metadata_str}\\n-----\\nContent: {content}', metadata_template='{key}=>{value}', metadata_seperator='\\n'), score=0.7502920627593994),\n",
+ " NodeWithScore(node=TextNode(id_='5c7cef95-79e3-4c96-a009-4154ea125240', embedding=None, metadata={'awards': '{\"nominations\": 2, \"text\": \"Nominated for 2 Oscars. Another 1 win & 2 nominations.\", \"wins\": 3}', 'metacritic': 64.0, 'rated': 'PG-13', 'fullplot': 'In 1880, four men travel together to the city of Silverado. They come across with many dangers before they finally engage the \"bad guys\" and bring peace and equality back to the city.', 'title': 'Silverado', 'writers': '[\"Lawrence Kasdan\", \"Mark Kasdan\"]', 'languages': '[\"English\"]', 'plot': 'A misfit bunch of friends come together to right the injustices which exist in a small town.', 'runtime': 133.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Crime\", \"Drama\"]', 'directors': '[\"Lawrence Kasdan\"]', 'cast': '[\"Kevin Kline\", \"Scott Glenn\", \"Kevin Costner\", \"Danny Glover\"]', 'type': 'movie', 'imdb': '{\"id\": 90022, \"rating\": 7.2, \"votes\": 26415}', 'poster': 'https://m.media-amazon.com/images/M/MV5BYTljNTE5YmUtMGEyZi00ZjI4LWEzYjUtZDY2YWEwNzVmZjRkXkEyXkFqcGdeQXVyNTI4MjkwNjA@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 1}, excluded_embed_metadata_keys=['fullplot', 'metacritic', 'poster', 'num_mflix_comments', 'runtime', 'rated'], excluded_llm_metadata_keys=['fullplot', 'metacritic'], relationships={: RelatedNodeInfo(node_id='decbc30c-c17e-4ba4-bd1e-72dce4ce383a', node_type=, metadata={'awards': '{\"nominations\": 2, \"text\": \"Nominated for 2 Oscars. Another 1 win & 2 nominations.\", \"wins\": 3}', 'metacritic': 64.0, 'rated': 'PG-13', 'fullplot': 'In 1880, four men travel together to the city of Silverado. They come across with many dangers before they finally engage the \"bad guys\" and bring peace and equality back to the city.', 'title': 'Silverado', 'writers': '[\"Lawrence Kasdan\", \"Mark Kasdan\"]', 'languages': '[\"English\"]', 'plot': 'A misfit bunch of friends come together to right the injustices which exist in a small town.', 'runtime': 133.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Crime\", \"Drama\"]', 'directors': '[\"Lawrence Kasdan\"]', 'cast': '[\"Kevin Kline\", \"Scott Glenn\", \"Kevin Costner\", \"Danny Glover\"]', 'type': 'movie', 'imdb': '{\"id\": 90022, \"rating\": 7.2, \"votes\": 26415}', 'poster': 'https://m.media-amazon.com/images/M/MV5BYTljNTE5YmUtMGEyZi00ZjI4LWEzYjUtZDY2YWEwNzVmZjRkXkEyXkFqcGdeQXVyNTI4MjkwNjA@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 1}, hash='80b77d835c7dfad9d57d300cf69ba388704e6f282f49dc23106489db03b8b441'), : RelatedNodeInfo(node_id='1c04fb7f-ff8f-4e8c-84f6-74c57251446a', node_type=, metadata={'awards': '{\"nominations\": 5, \"text\": \"Nominated for 3 Oscars. Another 2 wins & 5 nominations.\", \"wins\": 5}', 'metacritic': None, 'rated': 'R', 'fullplot': 'A hardened convict and a younger prisoner escape from a brutal prison in the middle of winter only to find themselves on an out-of-control train with a female railway worker while being pursued by the vengeful head of security.', 'title': 'Runaway Train', 'writers': '[\"Djordje Milicevic (screenplay)\", \"Paul Zindel (screenplay)\", \"Edward Bunker (screenplay)\", \"Akira Kurosawa (based on a screenplay by)\"]', 'languages': '[\"English\"]', 'plot': 'Two escaped convicts and a female railway worker find themselves trapped on a train with no brakes and nobody driving.', 'runtime': 111.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Adventure\", \"Drama\"]', 'directors': '[\"Andrey Konchalovskiy\"]', 'cast': '[\"Jon Voight\", \"Eric Roberts\", \"Rebecca De Mornay\", \"Kyle T. Heffner\"]', 'type': 'movie', 'imdb': '{\"id\": 89941, \"rating\": 7.3, \"votes\": 19652}', 'poster': 'https://m.media-amazon.com/images/M/MV5BODQyYWU1NGUtNjEzYS00YmNhLTk1YWEtZDdlZGQzMTI4MTI1XkEyXkFqcGdeQXVyMTQxNzMzNDI@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 0}, hash='378c16de972df97080db94775cd46e57f6a0dd5a7472b357e0285eed2e3b7775'), : RelatedNodeInfo(node_id='5df9410b-6597-45f4-95d5-fee1db8737b1', node_type=, metadata={}, hash='77e93faace9b0e102635d3ca997ff27bc03dbba66eaa2d830f0634289d16d927')}, text='In 1880, four men travel together to the city of Silverado. They come across with many dangers before they finally engage the \"bad guys\" and bring peace and equality back to the city.', start_char_idx=0, end_char_idx=183, text_template='Metadata: {metadata_str}\\n-----\\nContent: {content}', metadata_template='{key}=>{value}', metadata_seperator='\\n'), score=0.7419796586036682),\n",
+ " NodeWithScore(node=TextNode(id_='ff28e815-5db5-4963-a9b8-99c64716eb00', embedding=None, metadata={'awards': '{\"nominations\": 1, \"text\": \"1 nomination.\", \"wins\": 0}', 'metacritic': None, 'rated': 'PASSED', 'fullplot': \"Dick Powell stars as Haven, a government private investigator assigned to investigate the murders of two cavalrymen. Travelling incognito, Haven arrives in a small frontier outpost, where saloon singer Charlie controls all illegal activities. After making short work of Charlie's burly henchman, Haven gets a job at her gambling emporium, biding his time and gathering evidence against the gorgeous crime chieftain Cast as a philosophical bartender, Burl Ives is afforded at least one opportunity to sing.\", 'title': 'Station West', 'writers': '[\"Frank Fenton (screenplay)\", \"Winston Miller (screenplay)\", \"Luke Short (novel)\"]', 'languages': '[\"English\"]', 'plot': 'When two US cavalrymen transporting a gold shipment get killed, US Army Intelligence investigator John Haven goes undercover to a mining and logging town to find the killers.', 'runtime': 87.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Mystery\", \"Romance\"]', 'directors': '[\"Sidney Lanfield\"]', 'cast': '[\"Dick Powell\", \"Jane Greer\", \"Agnes Moorehead\", \"Burl Ives\"]', 'type': 'movie', 'imdb': '{\"id\": 40835, \"rating\": 6.8, \"votes\": 578}', 'poster': 'https://m.media-amazon.com/images/M/MV5BN2U3YWJjOWItOWY3Yy00NTMxLTkxMGUtOTQ1MzEzODM2MjRjXkEyXkFqcGdeQXVyNTk1MTk0MDI@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 1}, excluded_embed_metadata_keys=['fullplot', 'metacritic', 'poster', 'num_mflix_comments', 'runtime', 'rated'], excluded_llm_metadata_keys=['fullplot', 'metacritic'], relationships={: RelatedNodeInfo(node_id='b04254ab-2edb-47c1-9412-646575747ca8', node_type=, metadata={'awards': '{\"nominations\": 1, \"text\": \"1 nomination.\", \"wins\": 0}', 'metacritic': None, 'rated': 'PASSED', 'fullplot': \"Dick Powell stars as Haven, a government private investigator assigned to investigate the murders of two cavalrymen. Travelling incognito, Haven arrives in a small frontier outpost, where saloon singer Charlie controls all illegal activities. After making short work of Charlie's burly henchman, Haven gets a job at her gambling emporium, biding his time and gathering evidence against the gorgeous crime chieftain Cast as a philosophical bartender, Burl Ives is afforded at least one opportunity to sing.\", 'title': 'Station West', 'writers': '[\"Frank Fenton (screenplay)\", \"Winston Miller (screenplay)\", \"Luke Short (novel)\"]', 'languages': '[\"English\"]', 'plot': 'When two US cavalrymen transporting a gold shipment get killed, US Army Intelligence investigator John Haven goes undercover to a mining and logging town to find the killers.', 'runtime': 87.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Mystery\", \"Romance\"]', 'directors': '[\"Sidney Lanfield\"]', 'cast': '[\"Dick Powell\", \"Jane Greer\", \"Agnes Moorehead\", \"Burl Ives\"]', 'type': 'movie', 'imdb': '{\"id\": 40835, \"rating\": 6.8, \"votes\": 578}', 'poster': 'https://m.media-amazon.com/images/M/MV5BN2U3YWJjOWItOWY3Yy00NTMxLTkxMGUtOTQ1MzEzODM2MjRjXkEyXkFqcGdeQXVyNTk1MTk0MDI@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 1}, hash='90f541ac96dcffa4ac639e6ac25da415471164bf8d7930a29b6aed406d631ede'), : RelatedNodeInfo(node_id='a48d8737-8615-48c1-9d4a-1ee127e34fb9', node_type=, metadata={'awards': '{\"nominations\": 1, \"text\": \"1 nomination.\", \"wins\": 0}', 'metacritic': None, 'rated': 'PASSED', 'fullplot': 'Jefty, owner of a roadhouse in a backwoods town, hires sultry, tough-talking torch singer Lily Stevens against the advice of his manager Pete Morgan. Jefty is smitten with Lily, who in turn exerts her charms on the more resistant Pete. When Pete finally falls for her and she turns down Jefty\\'s marriage proposal, they must face Jefty\\'s murderous jealousy and his twisted plots to \"punish\" the two.', 'title': 'Road House', 'writers': '[\"Edward Chodorov (screen play)\", \"Margaret Gruen (story)\", \"Oscar Saul (story)\"]', 'languages': '[\"English\"]', 'plot': 'A night club owner becomes infatuated with a torch singer and frames his best friend/manager for embezzlement when the chanteuse falls in love with him.', 'runtime': 95.0, 'countries': '[\"USA\"]', 'genres': '[\"Action\", \"Drama\", \"Film-Noir\"]', 'directors': '[\"Jean Negulesco\"]', 'cast': '[\"Ida Lupino\", \"Cornel Wilde\", \"Celeste Holm\", \"Richard Widmark\"]', 'type': 'movie', 'imdb': '{\"id\": 40740, \"rating\": 7.3, \"votes\": 1353}', 'poster': 'https://m.media-amazon.com/images/M/MV5BMjc1ZTNkM2UtYzY3Yi00ZWZmLTljYmEtNjYxZDNmYzk2ZjkzXkEyXkFqcGdeQXVyMjUxODE0MDY@._V1_SY1000_SX677_AL_.jpg', 'num_mflix_comments': 2}, hash='040b4a77fcc8fbb5347620e99a217d67b85dcdbd370d91bd23877722a499079f'), : RelatedNodeInfo(node_id='75f37fbc-d75e-4a76-b86f-f15d9260afd1', node_type=, metadata={}, hash='9941706d03783561f3fc3200c26527493a62307f8532dcda60b20948c886b330')}, text=\"Dick Powell stars as Haven, a government private investigator assigned to investigate the murders of two cavalrymen. Travelling incognito, Haven arrives in a small frontier outpost, where saloon singer Charlie controls all illegal activities. After making short work of Charlie's burly henchman, Haven gets a job at her gambling emporium, biding his time and gathering evidence against the gorgeous crime chieftain Cast as a philosophical bartender, Burl Ives is afforded at least one opportunity to sing.\", start_char_idx=0, end_char_idx=505, text_template='Metadata: {metadata_str}\\n-----\\nContent: {content}', metadata_template='{key}=>{value}', metadata_seperator='\\n'), score=0.7337073087692261)]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pprint\n",
+ "from llama_index.core.response.notebook_utils import display_response\n",
+ "\n",
+ "query_engine = index.as_query_engine(similarity_top_k=3)\n",
+ "\n",
+ "query = \"Recommend a romantic movie suitable for the christmas season and justify your selecton\"\n",
+ "\n",
+ "response = query_engine.query(query)\n",
+ "display_response(response)\n",
+ "pprint.pprint(response.source_nodes)"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/llama-index-cli/.gitignore b/llama-index-cli/.gitignore
new file mode 100644
index 0000000000000..990c18de22908
--- /dev/null
+++ b/llama-index-cli/.gitignore
@@ -0,0 +1,153 @@
+llama_index/_static
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+bin/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+etc/
+include/
+lib/
+lib64/
+parts/
+sdist/
+share/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+.ruff_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+notebooks/
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pyvenv.cfg
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# Jetbrains
+.idea
+modules/
+*.swp
+
+# VsCode
+.vscode
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# pyright
+pyrightconfig.json
diff --git a/llama-index-cli/BUILD b/llama-index-cli/BUILD
new file mode 100644
index 0000000000000..0b67818b466ca
--- /dev/null
+++ b/llama-index-cli/BUILD
@@ -0,0 +1,5 @@
+python_sources()
+
+poetry_requirements(
+ name="poetry",
+)
diff --git a/llama-index-cli/CHANGELOG.MD b/llama-index-cli/CHANGELOG.MD
new file mode 100644
index 0000000000000..109adf94b711b
--- /dev/null
+++ b/llama-index-cli/CHANGELOG.MD
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.0] - 2024-02-15
+
+- Initial release of cli (ripped out from core)
diff --git a/llama-index-cli/Makefile b/llama-index-cli/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-cli/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-cli/README.md b/llama-index-cli/README.md
new file mode 100644
index 0000000000000..3232c32f3fcd9
--- /dev/null
+++ b/llama-index-cli/README.md
@@ -0,0 +1,30 @@
+# LlamaIndex CLI
+
+## Installation
+
+```sh
+pip install llama-index-cli
+```
+
+## Usage
+
+```sh
+llamaindex -h
+
+usage: llamaindex [-h] {rag,download-llamapack,download-llamadataset,upgrade,upgrade-file,new-package} ...
+
+LlamaIndex CLI tool.
+
+options:
+ -h, --help show this help message and exit
+
+commands:
+ {rag,download-llamapack,download-llamadataset,upgrade,upgrade-file,new-package}
+ rag Ask a question to a document / a directory of documents.
+ download-llamapack Download a llama-pack
+ download-llamadataset
+ Download a llama-dataset
+ upgrade Upgrade a directory containing notebooks or python files.
+ upgrade-file Upgrade a single notebook or python file.
+ new-package Initialize a new llama-index package
+```
diff --git a/llama-index-cli/llama_index/cli/BUILD b/llama-index-cli/llama_index/cli/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-cli/llama_index/cli/__init__.py b/llama-index-cli/llama_index/cli/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-cli/llama_index/cli/command_line.py b/llama-index-cli/llama_index/cli/command_line.py
new file mode 100644
index 0000000000000..34af87a864c57
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/command_line.py
@@ -0,0 +1,272 @@
+import argparse
+from typing import Any, Optional
+
+from llama_index.cli.rag.base import RagCLI, default_ragcli_persist_dir
+from llama_index.cli.upgrade.base import upgrade_dir, upgrade_file
+from llama_index.cli.new_package.base import init_new_package
+from llama_index.core.ingestion import IngestionCache, IngestionPipeline
+from llama_index.core.llama_dataset.download import (
+ LLAMA_DATASETS_LFS_URL,
+ LLAMA_DATASETS_SOURCE_FILES_GITHUB_TREE_URL,
+ LLAMA_HUB_URL,
+ download_llama_dataset,
+)
+from llama_index.core.llama_pack.download import (
+ LLAMA_PACKS_CONTENTS_URL,
+ download_llama_pack,
+)
+from llama_index.core.storage.docstore import SimpleDocumentStore
+from llama_index.core.text_splitter import SentenceSplitter
+
+
+def handle_init_package(
+ name: str, kind: str, prefix: Optional[str] = None, **kwargs: Any
+):
+ init_new_package(integration_name=name, integration_type=kind, prefix=prefix)
+ print(f"Successfully initialized package")
+
+
+def handle_download_llama_pack(
+ llama_pack_class: Optional[str] = None,
+ download_dir: Optional[str] = None,
+ llama_pack_url: str = LLAMA_PACKS_CONTENTS_URL,
+ **kwargs: Any,
+) -> None:
+ assert llama_pack_class is not None
+ assert download_dir is not None
+
+ download_llama_pack(
+ llama_pack_class=llama_pack_class,
+ download_dir=download_dir or "./custom_llama_pack",
+ llama_pack_url=llama_pack_url,
+ )
+ print(f"Successfully downloaded {llama_pack_class} to {download_dir}")
+
+
+def handle_download_llama_dataset(
+ llama_dataset_class: Optional[str] = None,
+ download_dir: Optional[str] = None,
+ llama_hub_url: str = LLAMA_HUB_URL,
+ llama_datasets_lfs_url: str = LLAMA_DATASETS_LFS_URL,
+ llama_datasets_source_files_tree_url: str = LLAMA_DATASETS_SOURCE_FILES_GITHUB_TREE_URL,
+ **kwargs: Any,
+) -> None:
+ assert llama_dataset_class is not None
+ assert download_dir is not None
+
+ download_llama_dataset(
+ llama_dataset_class=llama_dataset_class,
+ download_dir=download_dir,
+ llama_hub_url=llama_hub_url,
+ llama_datasets_lfs_url=llama_datasets_lfs_url,
+ llama_datasets_source_files_tree_url=llama_datasets_source_files_tree_url,
+ show_progress=True,
+ load_documents=False,
+ )
+
+ print(f"Successfully downloaded {llama_dataset_class} to {download_dir}")
+
+
+def default_rag_cli() -> RagCLI:
+ import chromadb # pants: no-infer-dep
+ from llama_index.embeddings.openai import OpenAIEmbedding # pants: no-infer-dep
+ from llama_index.vector_stores.chroma import (
+ ChromaVectorStore,
+ ) # pants: no-infer-dep
+
+ persist_dir = default_ragcli_persist_dir()
+ chroma_client = chromadb.PersistentClient(path=persist_dir)
+ chroma_collection = chroma_client.create_collection("default", get_or_create=True)
+ vector_store = ChromaVectorStore(
+ chroma_collection=chroma_collection, persist_dir=persist_dir
+ )
+ docstore = SimpleDocumentStore()
+
+ ingestion_pipeline = IngestionPipeline(
+ transformations=[SentenceSplitter(), OpenAIEmbedding()],
+ vector_store=vector_store,
+ docstore=docstore,
+ cache=IngestionCache(),
+ )
+ try:
+ from llama_index.embeddings.openai import OpenAIEmbedding # pants: no-infer-dep
+ except ImportError:
+ OpenAIEmbedding = None
+
+ try:
+ import chromadb
+
+ from llama_index.vector_stores.chroma import (
+ ChromaVectorStore,
+ )
+ except ImportError:
+ ChromaVectorStore = None
+
+ if OpenAIEmbedding and ChromaVectorStore:
+ persist_dir = default_ragcli_persist_dir()
+ chroma_client = chromadb.PersistentClient(path=persist_dir)
+ chroma_collection = chroma_client.create_collection(
+ "default", get_or_create=True
+ )
+ vector_store = ChromaVectorStore(
+ chroma_collection=chroma_collection, persist_dir=persist_dir
+ )
+ docstore = SimpleDocumentStore()
+
+ ingestion_pipeline = IngestionPipeline(
+ transformations=[SentenceSplitter(), OpenAIEmbedding()],
+ vector_store=vector_store,
+ docstore=docstore,
+ cache=IngestionCache(),
+ )
+ try:
+ ingestion_pipeline.load(persist_dir=persist_dir)
+ except FileNotFoundError:
+ pass
+
+ return RagCLI(
+ ingestion_pipeline=ingestion_pipeline,
+ verbose=False,
+ persist_dir=persist_dir,
+ )
+ else:
+ print(
+ "Default RagCLI was not built. There are packages missing. Please"
+ " install required dependencies by running "
+ "`pip install llama-index-embeddings-openai llama-index-llms-openai chromadb llama-index-vector-stores-chroma`"
+ )
+ return None
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser(description="LlamaIndex CLI tool.")
+
+ # Subparsers for the main commands
+ subparsers = parser.add_subparsers(title="commands", dest="command", required=True)
+
+ # llama rag command
+ llamarag_parser = subparsers.add_parser(
+ "rag", help="Ask a question to a document or a directory of documents."
+ )
+ RagCLI.add_parser_args(llamarag_parser, default_rag_cli)
+
+ # download llamapacks command
+ llamapack_parser = subparsers.add_parser(
+ "download-llamapack", help="Download a llama-pack"
+ )
+ llamapack_parser.add_argument(
+ "llama_pack_class",
+ type=str,
+ help=(
+ "The name of the llama-pack class you want to download, "
+ "such as `GmailOpenAIAgentPack`."
+ ),
+ )
+ llamapack_parser.add_argument(
+ "-d",
+ "--download-dir",
+ type=str,
+ default="./llama_packs",
+ help="Custom dirpath to download the pack into.",
+ )
+ llamapack_parser.add_argument(
+ "--llama-hub-url",
+ type=str,
+ default=LLAMA_HUB_URL,
+ help="URL to llama hub.",
+ )
+ llamapack_parser.set_defaults(
+ func=lambda args: handle_download_llama_pack(**vars(args))
+ )
+
+ # download llamadatasets command
+ llamadataset_parser = subparsers.add_parser(
+ "download-llamadataset", help="Download a llama-dataset"
+ )
+ llamadataset_parser.add_argument(
+ "llama_dataset_class",
+ type=str,
+ help=(
+ "The name of the llama-dataset class you want to download, "
+ "such as `PaulGrahamEssayDataset`."
+ ),
+ )
+ llamadataset_parser.add_argument(
+ "-d",
+ "--download-dir",
+ type=str,
+ default="./llama_datasets",
+ help="Custom dirpath to download the pack into.",
+ )
+ llamadataset_parser.add_argument(
+ "--llama-hub-url",
+ type=str,
+ default=LLAMA_HUB_URL,
+ help="URL to llama hub.",
+ )
+ llamadataset_parser.add_argument(
+ "--llama-datasets-lfs-url",
+ type=str,
+ default=LLAMA_DATASETS_LFS_URL,
+ help="URL to llama datasets.",
+ )
+ llamadataset_parser.set_defaults(
+ func=lambda args: handle_download_llama_dataset(**vars(args))
+ )
+
+ # Upgrade command
+ upgrade_parser = subparsers.add_parser(
+ "upgrade", help="Upgrade a directory containing notebooks or python files."
+ )
+ upgrade_parser.add_argument(
+ "directory",
+ type=str,
+ help="The directory to upgrade. Will run on only .ipynb or .py files.",
+ )
+ upgrade_parser.set_defaults(func=lambda args: upgrade_dir(args.directory))
+
+ # Upgrade command
+ upgrade_file_parser = subparsers.add_parser(
+ "upgrade-file", help="Upgrade a single notebook or python file."
+ )
+ upgrade_file_parser.add_argument(
+ "path",
+ type=str,
+ help="The directory to upgrade. Will run on only .ipynb or .py files.",
+ )
+ upgrade_file_parser.set_defaults(func=lambda args: upgrade_file(args.path))
+
+ # init package command
+ new_package_parser = subparsers.add_parser(
+ "new-package", help="Initialize a new llama-index package"
+ )
+ new_package_parser.add_argument(
+ "-k",
+ "--kind",
+ type=str,
+ help="Kind of package, e.g., llm, embedding, pack, etc.",
+ )
+ new_package_parser.add_argument(
+ "-n",
+ "--name",
+ type=str,
+ help="Name of python package",
+ )
+ new_package_parser.add_argument(
+ "-p",
+ "--prefix",
+ type=str,
+ required=False,
+ help="Name of prefix package",
+ )
+ new_package_parser.set_defaults(func=lambda args: handle_init_package(**vars(args)))
+
+ # Parse the command-line arguments
+ args = parser.parse_args()
+
+ # Call the appropriate function based on the command
+ args.func(args)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/llama-index-cli/llama_index/cli/new_package/BUILD b/llama-index-cli/llama_index/cli/new_package/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-cli/llama_index/cli/new_package/__init__.py b/llama-index-cli/llama_index/cli/new_package/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-cli/llama_index/cli/new_package/base.py b/llama-index-cli/llama_index/cli/new_package/base.py
new file mode 100644
index 0000000000000..68e573babfb96
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/base.py
@@ -0,0 +1,120 @@
+import os
+import shutil
+from pathlib import Path
+from llama_index.cli.new_package.templates import (
+ pyproject_str,
+ readme_str,
+ init_str,
+ init_with_prefix_str,
+)
+from typing import Optional
+
+
+def _create_init_file(dir: str):
+ # create __init__.py
+ Path(dir + "/__init__.py").touch()
+
+
+def _create_test_file(filename: str):
+ Path(filename).touch()
+
+
+def _makedirs(dir: str):
+ try:
+ os.makedirs(dir)
+ except FileExistsError as e:
+ pass
+
+
+def init_new_package(
+ integration_type: str,
+ integration_name: str,
+ prefix: Optional[str] = None,
+):
+ # create new directory, works in current directory
+ pkg_name = (
+ f"llama-index-{integration_type}-{integration_name}".replace(" ", "-")
+ .replace("_", "-")
+ .lower()
+ if prefix is None
+ else f"llama-index-{prefix}-{integration_type}-{integration_name}".replace(
+ " ", "-"
+ )
+ .replace("_", "-")
+ .lower()
+ )
+ pkg_path = os.path.join(os.getcwd(), pkg_name)
+ tests_path = os.path.join(pkg_path, "tests")
+ examples_path = os.path.join(pkg_path, "examples")
+ pkg_src_dir = os.path.join(
+ pkg_path,
+ (
+ f"llama_index/{integration_type}/{integration_name}".replace(
+ " ", "_"
+ ).lower()
+ if prefix is None
+ else f"llama_index/{prefix}/{integration_type}/{integration_name}".replace(
+ " ", "_"
+ ).lower()
+ ),
+ )
+
+ # make dirs
+ _makedirs(pkg_path)
+ _makedirs(tests_path)
+ _makedirs(examples_path)
+ _makedirs(pkg_src_dir)
+
+ # create init files
+ _create_init_file(tests_path)
+ with open(pkg_src_dir + "/__init__.py", "w") as f:
+ init_string = (
+ init_str.format(
+ TYPE=integration_type.replace(" ", "_").lower(),
+ NAME=integration_name.replace(" ", "_").lower(),
+ )
+ if prefix is None
+ else init_with_prefix_str.format(
+ TYPE=integration_type.replace(" ", "-").lower(),
+ NAME=integration_name.replace(" ", "-").lower(),
+ PREFIX=prefix.replace(" ", "_").lower(),
+ )
+ )
+ f.write(init_string)
+
+ # create pyproject.toml
+ with open(pkg_path + "/pyproject.toml", "w") as f:
+ f.write(
+ pyproject_str.format(
+ PACKAGE_NAME=pkg_name,
+ TYPE=integration_type.lower(),
+ NAME=integration_name.lower(),
+ )
+ )
+
+ # create readme
+ with open(pkg_path + "/README.md", "w") as f:
+ f.write(
+ readme_str.format(
+ PACKAGE_NAME=pkg_name,
+ TYPE=integration_type.lower().title(),
+ NAME=integration_name.lower().title(),
+ )
+ )
+
+ # create an empty test file
+ test_file_name = tests_path + (
+ f"/test_{integration_type}_{integration_name}.py".replace(" ", "_").lower()
+ if prefix is None
+ else f"/test_{prefix}_{integration_type}_{integration_name}.py".replace(
+ " ", "_"
+ ).lower()
+ )
+ _create_test_file(test_file_name)
+
+ # copy common files to folders
+ script_path = Path(__file__).parent.resolve()
+ common_path = os.path.join(script_path, "common")
+ shutil.copyfile(common_path + "/.gitignore", pkg_path + "/.gitignore")
+ shutil.copyfile(common_path + "/Makefile", pkg_path + "/Makefile")
+ shutil.copyfile(common_path + "/BUILD", pkg_path + "/BUILD")
diff --git a/llama-index-cli/llama_index/cli/new_package/common/.gitignore b/llama-index-cli/llama_index/cli/new_package/common/.gitignore
new file mode 100644
index 0000000000000..990c18de22908
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/common/.gitignore
@@ -0,0 +1,153 @@
+llama_index/_static
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+bin/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+etc/
+include/
+lib/
+lib64/
+parts/
+sdist/
+share/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+.ruff_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+notebooks/
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pyvenv.cfg
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# Jetbrains
+.idea
+modules/
+*.swp
+
+# VsCode
+.vscode
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# pyright
+pyrightconfig.json
diff --git a/llama-index-cli/llama_index/cli/new_package/common/BUILD b/llama-index-cli/llama_index/cli/new_package/common/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/common/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-cli/llama_index/cli/new_package/common/Makefile b/llama-index-cli/llama_index/cli/new_package/common/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/common/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-cli/llama_index/cli/new_package/templates/BUILD b/llama-index-cli/llama_index/cli/new_package/templates/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/templates/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-cli/llama_index/cli/new_package/templates/__init__.py b/llama-index-cli/llama_index/cli/new_package/templates/__init__.py
new file mode 100644
index 0000000000000..1e8fff1879b1b
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/templates/__init__.py
@@ -0,0 +1,8 @@
+from llama_index.cli.new_package.templates.pyproject import pyproject_str
+from llama_index.cli.new_package.templates.readme import readme_str
+from llama_index.cli.new_package.templates.init import (
+ init_str,
+ init_with_prefix_str,
+)
+
+__all__ = ["pyproject_str", "readme_str", "init_str", "init_with_prefix_str"]
diff --git a/llama-index-cli/llama_index/cli/new_package/templates/init.py b/llama-index-cli/llama_index/cli/new_package/templates/init.py
new file mode 100644
index 0000000000000..c91d15eb5c007
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/templates/init.py
@@ -0,0 +1,11 @@
+init_str = """from llama_index.{TYPE}.{NAME}.base import
+
+
+__all__ = [""]
+"""
+
+init_with_prefix_str = """from llama_index.{PREFIX}.{TYPE}.{NAME}.base import
+
+
+__all__ = [""]
+"""
diff --git a/llama-index-cli/llama_index/cli/new_package/templates/pyproject.py b/llama-index-cli/llama_index/cli/new_package/templates/pyproject.py
new file mode 100644
index 0000000000000..7efdadb178a28
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/templates/pyproject.py
@@ -0,0 +1,50 @@
+pyproject_str = """[build-system]
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+# Feel free to un-skip examples, and experimental, you will just need to
+# work through many typos (--write-changes and --interactive will help)
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.mypy]
+disallow_untyped_defs = true
+# Remove venv skip when integrated with pre-commit
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+name = "{PACKAGE_NAME}"
+version = "0.1.0"
+description = "llama-index {TYPE} {NAME} integration"
+authors = ["Your Name "]
+license = "MIT"
+readme = "README.md"
+packages = [{{include = "llama_index/"}}]
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<4.0"
+llama-index-core = "^0.10.0"
+
+[tool.poetry.group.dev.dependencies]
+black = {{extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}}
+codespell = {{extras = ["toml"], version = ">=v2.2.6"}}
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "^1.8.0"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8" # TODO: unpin when mypy>0.991
+types-setuptools = "67.1.0.0"
+"""
diff --git a/llama-index-cli/llama_index/cli/new_package/templates/readme.py b/llama-index-cli/llama_index/cli/new_package/templates/readme.py
new file mode 100644
index 0000000000000..01b7924c68a62
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/new_package/templates/readme.py
@@ -0,0 +1,2 @@
+readme_str = """# LlamaIndex {TYPE} Integration: {NAME}
+"""
diff --git a/llama-index-cli/llama_index/cli/rag/BUILD b/llama-index-cli/llama_index/cli/rag/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/rag/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-cli/llama_index/cli/rag/__init__.py b/llama-index-cli/llama_index/cli/rag/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-cli/llama_index/cli/rag/base.py b/llama-index-cli/llama_index/cli/rag/base.py
new file mode 100644
index 0000000000000..041ab25ddf669
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/rag/base.py
@@ -0,0 +1,389 @@
+import asyncio
+import os
+import shutil
+from argparse import ArgumentParser
+from glob import iglob
+from pathlib import Path
+from typing import Any, Callable, Dict, Optional, Union, cast
+
+from llama_index.core import (
+ Response,
+ ServiceContext,
+ SimpleDirectoryReader,
+ VectorStoreIndex,
+)
+from llama_index.core.base.embeddings.base import BaseEmbedding
+from llama_index.core.base.response.schema import RESPONSE_TYPE, StreamingResponse
+from llama_index.core.bridge.pydantic import BaseModel, Field, validator
+from llama_index.core.chat_engine import CondenseQuestionChatEngine
+from llama_index.core.ingestion import IngestionPipeline
+from llama_index.core.llms import LLM
+from llama_index.core.query_engine import CustomQueryEngine
+from llama_index.core.query_pipeline.components.function import FnComponent
+from llama_index.core.query_pipeline.query import QueryPipeline
+from llama_index.core.readers.base import BaseReader
+from llama_index.core.response_synthesizers import CompactAndRefine
+from llama_index.core.utils import get_cache_dir
+
+
+def _try_load_openai_llm():
+ try:
+ from llama_index.llms.openai import OpenAI # pants: no-infer-dep
+
+ return OpenAI(model="gpt-3.5-turbo", streaming=True)
+ except ImportError:
+ raise ImportError(
+ "`llama-index-llms-openai` package not found, "
+ "please run `pip install llama-index-llms-openai`"
+ )
+
+
+RAG_HISTORY_FILE_NAME = "files_history.txt"
+
+
+def default_ragcli_persist_dir() -> str:
+ return str(Path(get_cache_dir()) / "rag_cli")
+
+
+def query_input(query_str: Optional[str] = None) -> str:
+ return query_str or ""
+
+
+class QueryPipelineQueryEngine(CustomQueryEngine):
+ query_pipeline: QueryPipeline = Field(
+ description="Query Pipeline to use for Q&A.",
+ )
+
+ def custom_query(self, query_str: str) -> RESPONSE_TYPE:
+ return self.query_pipeline.run(query_str=query_str)
+
+ async def acustom_query(self, query_str: str) -> RESPONSE_TYPE:
+ return await self.query_pipeline.arun(query_str=query_str)
+
+
+class RagCLI(BaseModel):
+ """
+ CLI tool for chatting with output of a IngestionPipeline via a QueryPipeline.
+ """
+
+ ingestion_pipeline: IngestionPipeline = Field(
+ description="Ingestion pipeline to run for RAG ingestion."
+ )
+ verbose: bool = Field(
+ description="Whether to print out verbose information during execution.",
+ default=False,
+ )
+ persist_dir: str = Field(
+ description="Directory to persist ingestion pipeline.",
+ default_factory=default_ragcli_persist_dir,
+ )
+ llm: LLM = Field(
+ description="Language model to use for response generation.",
+ default_factory=lambda: _try_load_openai_llm(),
+ )
+ query_pipeline: Optional[QueryPipeline] = Field(
+ description="Query Pipeline to use for Q&A.",
+ default=None,
+ )
+ chat_engine: Optional[CondenseQuestionChatEngine] = Field(
+ description="Chat engine to use for chatting.",
+ default_factory=None,
+ )
+ file_extractor: Optional[Dict[str, BaseReader]] = Field(
+ description="File extractor to use for extracting text from files.",
+ default=None,
+ )
+
+ class Config:
+ arbitrary_types_allowed = True
+
+ @validator("query_pipeline", always=True)
+ def query_pipeline_from_ingestion_pipeline(
+ cls, query_pipeline: Any, values: Dict[str, Any]
+ ) -> Optional[QueryPipeline]:
+ """
+ If query_pipeline is not provided, create one from ingestion_pipeline.
+ """
+ if query_pipeline is not None:
+ return query_pipeline
+
+ ingestion_pipeline = cast(IngestionPipeline, values["ingestion_pipeline"])
+ if ingestion_pipeline.vector_store is None:
+ return None
+ verbose = cast(bool, values["verbose"])
+ query_component = FnComponent(
+ fn=query_input, output_key="output", req_params={"query_str"}
+ )
+ llm = cast(LLM, values["llm"])
+
+ # get embed_model from transformations if possible
+ embed_model = None
+ if ingestion_pipeline.transformations is not None:
+ for transformation in ingestion_pipeline.transformations:
+ if isinstance(transformation, BaseEmbedding):
+ embed_model = transformation
+ break
+
+ service_context = ServiceContext.from_defaults(
+ llm=llm, embed_model=embed_model or "default"
+ )
+ retriever = VectorStoreIndex.from_vector_store(
+ ingestion_pipeline.vector_store, service_context=service_context
+ ).as_retriever(similarity_top_k=8)
+ response_synthesizer = CompactAndRefine(
+ service_context=service_context, streaming=True, verbose=verbose
+ )
+
+ # define query pipeline
+ query_pipeline = QueryPipeline(verbose=verbose)
+ query_pipeline.add_modules(
+ {
+ "query": query_component,
+ "retriever": retriever,
+ "summarizer": response_synthesizer,
+ }
+ )
+ query_pipeline.add_link("query", "retriever")
+ query_pipeline.add_link("retriever", "summarizer", dest_key="nodes")
+ query_pipeline.add_link("query", "summarizer", dest_key="query_str")
+ return query_pipeline
+
+ @validator("chat_engine", always=True)
+ def chat_engine_from_query_pipeline(
+ cls, chat_engine: Any, values: Dict[str, Any]
+ ) -> Optional[CondenseQuestionChatEngine]:
+ """
+ If chat_engine is not provided, create one from query_pipeline.
+ """
+ if chat_engine is not None:
+ return chat_engine
+
+ if values.get("query_pipeline", None) is None:
+ values["query_pipeline"] = cls.query_pipeline_from_ingestion_pipeline(
+ query_pipeline=None, values=values
+ )
+
+ query_pipeline = cast(QueryPipeline, values["query_pipeline"])
+ if query_pipeline is None:
+ return None
+ query_engine = QueryPipelineQueryEngine(query_pipeline=query_pipeline) # type: ignore
+ verbose = cast(bool, values["verbose"])
+ llm = cast(LLM, values["llm"])
+ return CondenseQuestionChatEngine.from_defaults(
+ query_engine=query_engine, llm=llm, verbose=verbose
+ )
+
+ async def handle_cli(
+ self,
+ files: Optional[str] = None,
+ question: Optional[str] = None,
+ chat: bool = False,
+ verbose: bool = False,
+ clear: bool = False,
+ create_llama: bool = False,
+ **kwargs: Dict[str, Any],
+ ) -> None:
+ """
+ Entrypoint for local document RAG CLI tool.
+ """
+ if clear:
+ # delete self.persist_dir directory including all subdirectories and files
+ if os.path.exists(self.persist_dir):
+ # Ask for confirmation
+ response = input(
+ f"Are you sure you want to delete data within {self.persist_dir}? [y/N] "
+ )
+ if response.strip().lower() != "y":
+ print("Aborted.")
+ return
+ os.system(f"rm -rf {self.persist_dir}")
+ print(f"Successfully cleared {self.persist_dir}")
+
+ self.verbose = verbose
+ ingestion_pipeline = cast(IngestionPipeline, self.ingestion_pipeline)
+ if self.verbose:
+ print("Saving/Loading from persist_dir: ", self.persist_dir)
+ if files is not None:
+ documents = []
+ for _file in iglob(files, recursive=True):
+ _file = os.path.abspath(_file)
+ if os.path.isdir(_file):
+ reader = SimpleDirectoryReader(
+ input_dir=_file,
+ filename_as_id=True,
+ file_extractor=self.file_extractor,
+ )
+ else:
+ reader = SimpleDirectoryReader(
+ input_files=[_file],
+ filename_as_id=True,
+ file_extractor=self.file_extractor,
+ )
+
+ documents.extend(reader.load_data(show_progress=verbose))
+
+ await ingestion_pipeline.arun(show_progress=verbose, documents=documents)
+ ingestion_pipeline.persist(persist_dir=self.persist_dir)
+
+ # Append the `--files` argument to the history file
+ with open(f"{self.persist_dir}/{RAG_HISTORY_FILE_NAME}", "a") as f:
+ f.write(files + "\n")
+
+ if create_llama:
+ if shutil.which("npx") is None:
+ print(
+ "`npx` is not installed. Please install it by calling `npm install -g npx`"
+ )
+ else:
+ history_file_path = Path(f"{self.persist_dir}/{RAG_HISTORY_FILE_NAME}")
+ if not history_file_path.exists():
+ print(
+ "No data has been ingested, "
+ "please specify `--files` to create llama dataset."
+ )
+ else:
+ with open(history_file_path) as f:
+ stored_paths = {line.strip() for line in f if line.strip()}
+ if len(stored_paths) == 0:
+ print(
+ "No data has been ingested, "
+ "please specify `--files` to create llama dataset."
+ )
+ elif len(stored_paths) > 1:
+ print(
+ "Multiple files or folders were ingested, which is not supported by create-llama. "
+ "Please call `llamaindex-cli rag --clear` to clear the cache first, "
+ "then call `llamaindex-cli rag --files` again with a single folder or file"
+ )
+ else:
+ path = stored_paths.pop()
+ if "*" in path:
+ print(
+ "Glob pattern is not supported by create-llama. "
+ "Please call `llamaindex-cli rag --clear` to clear the cache first, "
+ "then call `llamaindex-cli rag --files` again with a single folder or file."
+ )
+ elif not os.path.exists(path):
+ print(
+ f"The path {path} does not exist. "
+ "Please call `llamaindex-cli rag --clear` to clear the cache first, "
+ "then call `llamaindex-cli rag --files` again with a single folder or file."
+ )
+ else:
+ print(f"Calling create-llama using data from {path} ...")
+ command_args = [
+ "npx",
+ "create-llama@latest",
+ "--frontend",
+ "--template",
+ "streaming",
+ "--framework",
+ "fastapi",
+ "--ui",
+ "shadcn",
+ "--vector-db",
+ "none",
+ "--engine",
+ "context",
+ f"--files {path}",
+ ]
+ os.system(" ".join(command_args))
+
+ if question is not None:
+ await self.handle_question(question)
+ if chat:
+ await self.start_chat_repl()
+
+ async def handle_question(self, question: str) -> None:
+ if self.query_pipeline is None:
+ raise ValueError("query_pipeline is not defined.")
+ query_pipeline = cast(QueryPipeline, self.query_pipeline)
+ query_pipeline.verbose = self.verbose
+ chat_engine = cast(CondenseQuestionChatEngine, self.chat_engine)
+ response = chat_engine.chat(question)
+
+ if isinstance(response, StreamingResponse):
+ response.print_response_stream()
+ else:
+ response = cast(Response, response)
+ print(response)
+
+ async def start_chat_repl(self) -> None:
+ """
+ Start a REPL for chatting with the agent.
+ """
+ if self.query_pipeline is None:
+ raise ValueError("query_pipeline is not defined.")
+ chat_engine = cast(CondenseQuestionChatEngine, self.chat_engine)
+ chat_engine.streaming_chat_repl()
+
+ @classmethod
+ def add_parser_args(
+ cls,
+ parser: Union[ArgumentParser, Any],
+ instance_generator: Optional[Callable[[], "RagCLI"]],
+ ) -> None:
+ if instance_generator:
+ parser.add_argument(
+ "-q",
+ "--question",
+ type=str,
+ help="The question you want to ask.",
+ required=False,
+ )
+
+ parser.add_argument(
+ "-f",
+ "--files",
+ type=str,
+ help=(
+ "The name of the file or directory you want to ask a question about,"
+ 'such as "file.pdf".'
+ ),
+ )
+ parser.add_argument(
+ "-c",
+ "--chat",
+ help="If flag is present, opens a chat REPL.",
+ action="store_true",
+ )
+ parser.add_argument(
+ "-v",
+ "--verbose",
+ help="Whether to print out verbose information during execution.",
+ action="store_true",
+ )
+ parser.add_argument(
+ "--clear",
+ help="Clears out all currently embedded data.",
+ action="store_true",
+ )
+ parser.add_argument(
+ "--create-llama",
+ help="Create a LlamaIndex application with your embedded data.",
+ required=False,
+ action="store_true",
+ )
+ parser.set_defaults(
+ func=lambda args: asyncio.run(
+ instance_generator().handle_cli(**vars(args))
+ )
+ )
+
+ def cli(self) -> None:
+ """
+ Entrypoint for CLI tool.
+ """
+ parser = ArgumentParser(description="LlamaIndex RAG Q&A tool.")
+ subparsers = parser.add_subparsers(
+ title="commands", dest="command", required=True
+ )
+ llamarag_parser = subparsers.add_parser(
+ "rag", help="Ask a question to a document / a directory of documents."
+ )
+ self.add_parser_args(llamarag_parser, lambda: self)
+ # Parse the command-line arguments
+ args = parser.parse_args()
+
+ # Call the appropriate function based on the command
+ args.func(args)
diff --git a/llama-index-cli/llama_index/cli/upgrade/BUILD b/llama-index-cli/llama_index/cli/upgrade/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/upgrade/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-cli/llama_index/cli/upgrade/__init__.py b/llama-index-cli/llama_index/cli/upgrade/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-cli/llama_index/cli/upgrade/base.py b/llama-index-cli/llama_index/cli/upgrade/base.py
new file mode 100644
index 0000000000000..20db64956f3aa
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/upgrade/base.py
@@ -0,0 +1,283 @@
+import json
+import os
+import re
+from pathlib import Path
+from typing import Dict, List, Tuple
+
+mappings_path = os.path.join(os.path.dirname(__file__), "mappings.json")
+
+
+def _parse_from_imports(
+ mappings: Dict[str, str],
+ installed_modules: List[str],
+ line_idx: int,
+ lines: List[str],
+ verbose: bool = False,
+):
+ new_lines = []
+ new_installs = []
+ imported_modules = []
+ parsing_modules = False
+ skipped_lines = 0
+
+ for line in lines[line_idx:]:
+ skipped_lines += 1
+ if "from " in line:
+ imported_modules = [line, line.strip().split(" import ")[-1].strip()]
+ if imported_modules[-1].startswith("("):
+ imported_modules[-1] = []
+ parsing_modules = True
+ else:
+ imported_modules = [line, imported_modules[-1].split(", ")]
+
+ if parsing_modules:
+ if ")" in line:
+ parsing_modules = False
+ elif "(" not in line:
+ imported_modules[-1].append(line.strip().replace(",", ""))
+
+ if not parsing_modules and len(imported_modules) > 0:
+ imported_module_names = [x.strip() for x in imported_modules[-1]]
+ new_imports = {}
+ for module in imported_module_names:
+ if module in mappings:
+ new_import_parent = mappings[module]
+ if new_import_parent not in new_imports:
+ new_imports[new_import_parent] = [module]
+ else:
+ new_imports[new_import_parent].append(module)
+ else:
+ print(f"Module not found: {module}\nSwitching to core")
+ new_import_parent = (
+ imported_modules[0]
+ .split(" import ")[0]
+ .split("from ")[-1]
+ .replace("llama_index", "llama_index.core")
+ )
+ if new_import_parent not in new_imports:
+ new_imports[new_import_parent] = [module]
+ else:
+ new_imports[new_import_parent].append(module)
+
+ for new_import_parent, new_imports in new_imports.items():
+ new_install_parent = new_import_parent.replace(".", "-").replace(
+ "_", "-"
+ )
+ if new_install_parent not in installed_modules:
+ overlap = [x for x in installed_modules if x in new_install_parent]
+ if len(overlap) == 0:
+ installed_modules.append(new_install_parent)
+ new_installs.append(f"%pip install {new_install_parent}\n")
+ new_imports = ", ".join(new_imports)
+ new_lines.append(f"from {new_import_parent} import {new_imports}\n")
+
+ parsing_modules = False
+ new_imports = {}
+ imported_modules = []
+
+ return new_lines, new_installs, installed_modules, skipped_lines
+
+ elif not parsing_modules:
+ new_lines.append(line)
+
+ return new_lines, new_installs, installed_modules, skipped_lines
+
+
+def _parse_hub_downloads(
+ mappings: Dict[str, str],
+ installed_modules: List[str],
+ line: str,
+):
+ regex = r"download_loader\([\"']([A-Z,a-z]+)[\"'][\s,a-z,A-Z,_=]*\)|download_tool\([\"']([a-z,A-Z]+)[\"'][A-Z,a-z,\s,_=]*\)"
+ result = re.search(regex, line)
+ new_lines = []
+ new_installs = []
+ if result:
+ tool, reader = result.groups()
+ module = tool if tool else reader
+ if module in mappings:
+ new_import_parent = mappings[module]
+ new_lines.append(f"from {new_import_parent} import {module}\n")
+ new_install_parent = new_import_parent.replace(".", "-").replace("_", "-")
+ if new_install_parent not in installed_modules:
+ new_installs.append(f"%pip install {new_install_parent}\n")
+ installed_modules.append(new_install_parent)
+ else:
+ print(f"Reader/Tool not found: {module}\nKeeping line as is.")
+ new_lines.append(line)
+
+ return new_lines, new_installs, installed_modules
+
+
+def parse_lines(
+ lines: List[str], installed_modules: List[str], verbose: bool = False
+) -> Tuple[List[str], List[str]]:
+ with open(mappings_path) as f:
+ mappings = json.load(f)
+
+ new_installs = []
+ new_lines = []
+ just_found_imports = False
+ skipped_lines = 0
+
+ for idx, line in enumerate(lines):
+ this_new_lines = []
+ this_new_installs = []
+ this_installed_modules = []
+
+ if skipped_lines != 0:
+ skipped_lines -= 1
+
+ if just_found_imports and skipped_lines > 0:
+ continue
+ else:
+ just_found_imports = False
+
+ if (
+ "from llama_index." in line
+ or "from llama_index import" in line
+ or "from llama_hub." in line
+ ):
+ (
+ this_new_lines,
+ this_new_installs,
+ this_installed_modules,
+ skipped_lines,
+ ) = _parse_from_imports(
+ mappings=mappings,
+ installed_modules=installed_modules,
+ line_idx=idx,
+ lines=lines,
+ verbose=verbose,
+ )
+ just_found_imports = True
+
+ elif "download_loader(" in line or "download_tool(" in line:
+ (
+ this_new_lines,
+ this_new_installs,
+ this_installed_modules,
+ ) = _parse_hub_downloads(
+ mappings=mappings,
+ installed_modules=installed_modules,
+ line=line,
+ )
+
+ elif not just_found_imports:
+ this_new_lines = [line]
+
+ new_lines += this_new_lines
+ new_installs += this_new_installs
+ installed_modules += this_installed_modules
+ installed_modules = list(set(installed_modules))
+
+ return new_lines, list(set(new_installs))
+
+
+def _cell_installs_llama_hub(cell) -> bool:
+ lines = cell["source"]
+ llama_hub_partial_statements = [
+ "pip install llama-hub",
+ "import download_loader",
+ "import download_tool",
+ ]
+
+ if len(lines) > 1:
+ return False
+ if cell["cell_type"] == "code" and any(
+ el in lines[0] for el in llama_hub_partial_statements
+ ):
+ return True
+ return False
+
+
+def _format_new_installs(new_installs):
+ if new_installs:
+ new_installs = list(set(new_installs))
+ return new_installs[:-1] + [new_installs[-1].replace("\n", "")]
+ return new_installs
+
+
+def upgrade_nb_file(file_path):
+ print(f"\n=====================\n{file_path}\n", flush=True)
+ with open(file_path) as f:
+ notebook = json.load(f)
+
+ verbose = False
+ if file_path == "../docs/examples/managed/manage_retrieval_benchmark.ipynb":
+ verbose = True
+
+ installed_modules = ["llama-index-core"] # default installs
+ cur_cells = []
+ new_installs = []
+ first_code_idx = -1
+ for idx, cell in enumerate(notebook["cells"]):
+ if cell["cell_type"] == "code":
+ if verbose:
+ print(f"cell: {cell}", flush=True)
+ if first_code_idx == -1:
+ first_code_idx = idx
+
+ code = cell["source"]
+
+ new_lines, cur_new_installs = parse_lines(code, installed_modules, verbose)
+ new_installs += cur_new_installs
+
+ cell["source"] = new_lines
+
+ cur_cells.append(cell)
+
+ if len(new_installs) > 0:
+ notebook["cells"] = cur_cells
+ new_cell = {
+ "cell_type": "code",
+ "metadata": {},
+ "execution_count": None,
+ "outputs": [],
+ "source": _format_new_installs(new_installs),
+ }
+ cur_cells.insert(first_code_idx, new_cell)
+
+ cur_cells = [cell for cell in cur_cells if not _cell_installs_llama_hub(cell)]
+ notebook["cells"] = cur_cells
+ with open(file_path, "w") as f:
+ json.dump(notebook, f, indent=1, ensure_ascii=False)
+
+
+def upgrade_py_md_file(file_path: str) -> None:
+ with open(file_path) as f:
+ lines = f.readlines()
+
+ installed_modules = ["llama-index-core"] # default installs
+ new_lines, new_installs = parse_lines(lines, installed_modules)
+
+ with open(file_path, "w") as f:
+ f.write("".join(new_lines))
+
+ if len(new_installs) > 0:
+ print("New installs:")
+ for install in new_installs:
+ print(install.strip().replace("%", ""))
+
+
+def upgrade_file(file_path: str) -> None:
+ if file_path.endswith(".ipynb"):
+ upgrade_nb_file(file_path)
+ elif file_path.endswith((".py", ".md")):
+ upgrade_py_md_file(file_path)
+ else:
+ raise Exception(f"File type not supported: {file_path}")
+
+
+def _is_hidden(path: Path) -> bool:
+ return any(part.startswith(".") and part not in [".", ".."] for part in path.parts)
+
+
+def upgrade_dir(input_dir: str) -> None:
+ file_refs = list(Path(input_dir).rglob("*.py"))
+ file_refs += list(Path(input_dir).rglob("*.ipynb"))
+ file_refs += list(Path(input_dir).rglob("*.md"))
+ file_refs = [x for x in file_refs if not _is_hidden(x)]
+ for file_ref in file_refs:
+ if file_ref.is_file():
+ upgrade_file(str(file_ref))
diff --git a/llama-index-cli/llama_index/cli/upgrade/mappings.json b/llama-index-cli/llama_index/cli/upgrade/mappings.json
new file mode 100644
index 0000000000000..59855d154b8d3
--- /dev/null
+++ b/llama-index-cli/llama_index/cli/upgrade/mappings.json
@@ -0,0 +1,832 @@
+{
+ "StorageContext": "llama_index.core",
+ "ServiceContext": "llama_index.core",
+ "ComposableGraph": "llama_index.core",
+ "# indicesSummaryIndex": "llama_index.core",
+ "VectorStoreIndex": "llama_index.core",
+ "SimpleKeywordTableIndex": "llama_index.core",
+ "KeywordTableIndex": "llama_index.core",
+ "RAKEKeywordTableIndex": "llama_index.core",
+ "TreeIndex": "llama_index.core",
+ "DocumentSummaryIndex": "llama_index.core",
+ "KnowledgeGraphIndex": "llama_index.core",
+ "# indices - legacy namesGPTKeywordTableIndex": "llama_index.core",
+ "GPTKnowledgeGraphIndex": "llama_index.core",
+ "GPTSimpleKeywordTableIndex": "llama_index.core",
+ "GPTRAKEKeywordTableIndex": "llama_index.core",
+ "GPTListIndex": "llama_index.core",
+ "ListIndex": "llama_index.core",
+ "GPTTreeIndex": "llama_index.core",
+ "GPTVectorStoreIndex": "llama_index.core",
+ "GPTDocumentSummaryIndex": "llama_index.core",
+ "Prompt": "llama_index.core",
+ "PromptTemplate": "llama_index.core",
+ "BasePromptTemplate": "llama_index.core",
+ "ChatPromptTemplate": "llama_index.core",
+ "SelectorPromptTemplate": "llama_index.core",
+ "SummaryPrompt": "llama_index.core",
+ "TreeInsertPrompt": "llama_index.core",
+ "TreeSelectPrompt": "llama_index.core",
+ "TreeSelectMultiplePrompt": "llama_index.core",
+ "RefinePrompt": "llama_index.core",
+ "QuestionAnswerPrompt": "llama_index.core",
+ "KeywordExtractPrompt": "llama_index.core",
+ "QueryKeywordExtractPrompt": "llama_index.core",
+ "Response": "llama_index.core",
+ "Document": "llama_index.core",
+ "SimpleDirectoryReader": "llama_index.core",
+ "VellumPredictor": "llama_index.core",
+ "VellumPromptRegistry": "llama_index.core",
+ "MockEmbedding": "llama_index.core",
+ "SQLDatabase": "llama_index.core",
+ "SQLDocumentContextBuilder": "llama_index.core",
+ "SQLContextBuilder": "llama_index.core",
+ "PromptHelper": "llama_index.core",
+ "IndexStructType": "llama_index.core",
+ "download_loader": "llama_index.core",
+ "load_graph_from_storage": "llama_index.core",
+ "load_index_from_storage": "llama_index.core",
+ "load_indices_from_storage": "llama_index.core",
+ "QueryBundle": "llama_index.core",
+ "get_response_synthesizer": "llama_index.core",
+ "set_global_service_context": "llama_index.core",
+ "set_global_handler": "llama_index.core",
+ "set_global_tokenizer": "llama_index.core",
+ "get_tokenizer": "llama_index.core",
+ "AgentRunner": "llama_index.core.agent",
+ "ParallelAgentRunner": "llama_index.core.agent",
+ "ReActAgentWorker": "llama_index.core.agent",
+ "ReActAgent": "llama_index.core.agent",
+ "CustomSimpleAgentWorker": "llama_index.core.agent",
+ "QueryPipelineAgentWorker": "llama_index.core.agent",
+ "ReActChatFormatter": "llama_index.core.agent",
+ "# betaMultimodalReActAgentWorker": "llama_index.core.agent",
+ "# schema-relatedAgentChatResponse": "llama_index.core.agent",
+ "Task": "llama_index.core.agent",
+ "CallbackManager": "llama_index.core.callbacks",
+ "CBEvent": "llama_index.core.callbacks",
+ "CBEventType": "llama_index.core.callbacks",
+ "EventPayload": "llama_index.core.callbacks",
+ "LlamaDebugHandler": "llama_index.core.callbacks",
+ "TokenCountingHandler": "llama_index.core.callbacks",
+ "trace_method": "llama_index.core.callbacks",
+ "deepeval_callback_handler": "llama_index.callbacks.deepeval",
+ "OpenInferenceCallbackHandler": "llama_index.callbacks.openinference",
+ "WandbCallbackHandler": "llama_index.callbacks.wandb",
+ "argilla_callback_handler": "llama_index.callbacks.argilla",
+ "honeyhive_callback_handler": "llama_index.callbacks.honeyhive",
+ "arize_phoenix_callback_handler": "llama_index.callbacks.arize_phoenix",
+ "AimCallback": "llama_index.callbacks.aim",
+ "PromptLayerHandler": "llama_index.callbacks.promptlayer",
+ "SimpleChatEngine": "llama_index.core.chat_engine",
+ "CondenseQuestionChatEngine": "llama_index.core.chat_engine",
+ "ContextChatEngine": "llama_index.core.chat_engine",
+ "CondensePlusContextChatEngine": "llama_index.core.chat_engine",
+ "QASummaryQueryEngineBuilder": "llama_index.core.composability",
+ "IndexGraph": "llama_index.core.data_structs",
+ "KeywordTable": "llama_index.core.data_structs",
+ "IndexList": "llama_index.core.data_structs",
+ "IndexDict": "llama_index.core.data_structs",
+ "StructDatapoint": "llama_index.core.data_structs",
+ "Node": "llama_index.core.data_structs",
+ "BaseEmbedding": "llama_index.core.embeddings",
+ "MultiModalEmbedding": "llama_index.core.embeddings",
+ "Pooling": "llama_index.core.embeddings",
+ "BaseEvaluator": "llama_index.core.evaluation",
+ "AnswerRelevancyEvaluator": "llama_index.core.evaluation",
+ "ContextRelevancyEvaluator": "llama_index.core.evaluation",
+ "EvaluationResult": "llama_index.core.evaluation",
+ "FaithfulnessEvaluator": "llama_index.core.evaluation",
+ "RelevancyEvaluator": "llama_index.core.evaluation",
+ "RelevanceEvaluator": "llama_index.core.evaluation",
+ "DatasetGenerator": "llama_index.core.evaluation",
+ "QueryResponseDataset": "llama_index.core.evaluation",
+ "GuidelineEvaluator": "llama_index.core.evaluation",
+ "CorrectnessEvaluator": "llama_index.core.evaluation",
+ "SemanticSimilarityEvaluator": "llama_index.core.evaluation",
+ "PairwiseComparisonEvaluator": "llama_index.core.evaluation",
+ "BatchEvalRunner": "llama_index.core.evaluation",
+ "# legacy: kept for backward compatibilityQueryResponseEvaluator": "llama_index.core.evaluation",
+ "ResponseEvaluator": "llama_index.core.evaluation",
+ "# retrievalgenerate_qa_embedding_pairs": "llama_index.core.evaluation",
+ "generate_question_context_pairs": "llama_index.core.evaluation",
+ "EmbeddingQAFinetuneDataset": "llama_index.core.evaluation",
+ "BaseRetrievalEvaluator": "llama_index.core.evaluation",
+ "RetrievalEvalResult": "llama_index.core.evaluation",
+ "RetrieverEvaluator": "llama_index.core.evaluation",
+ "MultiModalRetrieverEvaluator": "llama_index.core.evaluation",
+ "RetrievalMetricResult": "llama_index.core.evaluation",
+ "resolve_metrics": "llama_index.core.evaluation",
+ "HitRate": "llama_index.core.evaluation",
+ "MRR": "llama_index.core.evaluation",
+ "get_retrieval_results_df": "llama_index.core.evaluation",
+ "LabelledQADataset": "llama_index.core.evaluation",
+ "SummaryExtractor": "llama_index.core.extractors",
+ "QuestionsAnsweredExtractor": "llama_index.core.extractors",
+ "TitleExtractor": "llama_index.core.extractors",
+ "KeywordExtractor": "llama_index.core.extractors",
+ "BaseExtractor": "llama_index.core.extractors",
+ "PydanticProgramExtractor": "llama_index.core.extractors",
+ "SimpleGraphStore": "llama_index.core.graph_stores",
+ "SummaryIndex": "llama_index.core",
+ "PandasIndex": "llama_index.core.indices",
+ "SQLStructStoreIndex": "llama_index.core.indices",
+ "MultiModalVectorStoreIndex": "llama_index.core.indices",
+ "EmptyIndex": "llama_index.core.indices",
+ "# legacyGPTKnowledgeGraphIndex": "llama_index.core.indices",
+ "GPTKeywordTableIndex": "llama_index.core.indices",
+ "GPTPandasIndex": "llama_index.core.indices",
+ "GPTSQLStructStoreIndex": "llama_index.core.indices",
+ "GPTEmptyIndex": "llama_index.core.indices",
+ "DocstoreStrategy": "llama_index.core.ingestion",
+ "IngestionCache": "llama_index.core.ingestion",
+ "IngestionPipeline": "llama_index.core.ingestion",
+ "run_transformations": "llama_index.core.ingestion",
+ "arun_transformations": "llama_index.core.ingestion",
+ "BaseLlamaDataset": "llama_index.core.llama_dataset",
+ "BaseLlamaDataExample": "llama_index.core.llama_dataset",
+ "BaseLlamaExamplePrediction": "llama_index.core.llama_dataset",
+ "BaseLlamaPredictionDataset": "llama_index.core.llama_dataset",
+ "LabelledRagDataExample": "llama_index.core.llama_dataset",
+ "LabelledRagDataset": "llama_index.core.llama_dataset",
+ "LabeledRagDataExample": "llama_index.core.llama_dataset",
+ "LabeledRagDataset": "llama_index.core.llama_dataset",
+ "RagExamplePrediction": "llama_index.core.llama_dataset",
+ "RagPredictionDataset": "llama_index.core.llama_dataset",
+ "CreatedByType": "llama_index.core.llama_dataset",
+ "CreatedBy": "llama_index.core.llama_dataset",
+ "download_llama_dataset": "llama_index.core.llama_dataset",
+ "EvaluatorExamplePrediction": "llama_index.core.llama_dataset",
+ "EvaluatorPredictionDataset": "llama_index.core.llama_dataset",
+ "LabeledEvaluatorDataset": "llama_index.core.llama_dataset",
+ "LabelledEvaluatorDataset": "llama_index.core.llama_dataset",
+ "LabelledEvaluatorDataExample": "llama_index.core.llama_dataset",
+ "LabeledEvaluatorDataExample": "llama_index.core.llama_dataset",
+ "LabelledPairwiseEvaluatorDataExample": "llama_index.core.llama_dataset",
+ "LabelledPairwiseEvaluatorDataset": "llama_index.core.llama_dataset",
+ "LabeledPairwiseEvaluatorDataExample": "llama_index.core.llama_dataset",
+ "LabeledPairwiseEvaluatorDataset": "llama_index.core.llama_dataset",
+ "PairwiseEvaluatorExamplePrediction": "llama_index.core.llama_dataset",
+ "PairwiseEvaluatorPredictionDataset": "llama_index.core.llama_dataset",
+ "BaseLlamaPack": "llama_index.core.llama_pack",
+ "download_llama_pack": "llama_index.core.llama_pack",
+ "CustomLLM": "llama_index.core.llms",
+ "LLM": "llama_index.core.llms",
+ "ChatMessage": "llama_index.core.llms",
+ "ChatResponse": "llama_index.core.llms",
+ "ChatResponseAsyncGen": "llama_index.core.llms",
+ "ChatResponseGen": "llama_index.core.llms",
+ "CompletionResponse": "llama_index.core.llms",
+ "CompletionResponseAsyncGen": "llama_index.core.llms",
+ "CompletionResponseGen": "llama_index.core.llms",
+ "LLMMetadata": "llama_index.core.llms",
+ "MessageRole": "llama_index.core.llms",
+ "BaseMemory": "llama_index.core.memory",
+ "ChatMemoryBuffer": "llama_index.core.memory",
+ "MultiModalLLMMetadata": "llama_index.core.multi_modal_llms",
+ "MultiModalLLM": "llama_index.core.multi_modal_llms",
+ "TokenTextSplitter": "llama_index.core.node_parser",
+ "SentenceSplitter": "llama_index.core.node_parser",
+ "CodeSplitter": "llama_index.core.node_parser",
+ "SimpleFileNodeParser": "llama_index.core.node_parser",
+ "HTMLNodeParser": "llama_index.core.node_parser",
+ "MarkdownNodeParser": "llama_index.core.node_parser",
+ "JSONNodeParser": "llama_index.core.node_parser",
+ "SentenceWindowNodeParser": "llama_index.core.node_parser",
+ "SemanticSplitterNodeParser": "llama_index.core.node_parser",
+ "NodeParser": "llama_index.core.node_parser",
+ "HierarchicalNodeParser": "llama_index.core.node_parser",
+ "TextSplitter": "llama_index.core.node_parser",
+ "MarkdownElementNodeParser": "llama_index.core.node_parser",
+ "MetadataAwareTextSplitter": "llama_index.core.node_parser",
+ "LangchainNodeParser": "llama_index.core.node_parser",
+ "UnstructuredElementNodeParser": "llama_index.core.node_parser",
+ "get_leaf_nodes": "llama_index.core.node_parser",
+ "get_root_nodes": "llama_index.core.node_parser",
+ "# deprecated": "llama_index.core.node_parser",
+ "for backwards compatibilitySimpleNodeParser": "llama_index.core.node_parser",
+ "ObjectRetriever": "llama_index.core.objects",
+ "ObjectIndex": "llama_index.core.objects",
+ "SimpleObjectNodeMapping": "llama_index.core.objects",
+ "SimpleToolNodeMapping": "llama_index.core.objects",
+ "SimpleQueryToolNodeMapping": "llama_index.core.objects",
+ "SQLTableNodeMapping": "llama_index.core.objects",
+ "SQLTableSchema": "llama_index.core.objects",
+ "ChainableOutputParser": "llama_index.core.output_parsers",
+ "LangchainOutputParser": "llama_index.core.output_parsers",
+ "PydanticOutputParser": "llama_index.core.output_parsers",
+ "SelectionOutputParser": "llama_index.core.output_parsers",
+ "Playground": "llama_index.core.playground",
+ "DEFAULT_INDEX_CLASSES": "llama_index.core.playground",
+ "DEFAULT_MODES": "llama_index.core.playground",
+ "SimilarityPostprocessor": "llama_index.core.postprocessor",
+ "KeywordNodePostprocessor": "llama_index.core.postprocessor",
+ "PrevNextNodePostprocessor": "llama_index.core.postprocessor",
+ "AutoPrevNextNodePostprocessor": "llama_index.core.postprocessor",
+ "FixedRecencyPostprocessor": "llama_index.core.postprocessor",
+ "EmbeddingRecencyPostprocessor": "llama_index.core.postprocessor",
+ "TimeWeightedPostprocessor": "llama_index.core.postprocessor",
+ "PIINodePostprocessor": "llama_index.core.postprocessor",
+ "NERPIINodePostprocessor": "llama_index.core.postprocessor",
+ "LLMRerank": "llama_index.core.postprocessor",
+ "SentenceEmbeddingOptimizer": "llama_index.core.postprocessor",
+ "SentenceTransformerRerank": "llama_index.core.postprocessor",
+ "MetadataReplacementPostProcessor": "llama_index.core.postprocessor",
+ "LongContextReorder": "llama_index.core.postprocessor",
+ "BasePydanticProgram": "llama_index.core.program",
+ "LLMTextCompletionProgram": "llama_index.core.program",
+ "MultiModalLLMCompletionProgram": "llama_index.core.program",
+ "LangchainPromptTemplate": "llama_index.core.prompts",
+ "PromptType": "llama_index.core.prompts",
+ "display_prompt_dict": "llama_index.core.prompts",
+ "CitationQueryEngine": "llama_index.core.query_engine",
+ "CogniswitchQueryEngine": "llama_index.core.query_engine",
+ "ComposableGraphQueryEngine": "llama_index.core.query_engine",
+ "RetrieverQueryEngine": "llama_index.core.query_engine",
+ "TransformQueryEngine": "llama_index.core.query_engine",
+ "MultiStepQueryEngine": "llama_index.core.query_engine",
+ "RouterQueryEngine": "llama_index.core.query_engine",
+ "RetrieverRouterQueryEngine": "llama_index.core.query_engine",
+ "ToolRetrieverRouterQueryEngine": "llama_index.core.query_engine",
+ "SubQuestionQueryEngine": "llama_index.core.query_engine",
+ "SubQuestionAnswerPair": "llama_index.core.query_engine",
+ "SQLJoinQueryEngine": "llama_index.core.query_engine",
+ "SQLAutoVectorQueryEngine": "llama_index.core.query_engine",
+ "RetryQueryEngine": "llama_index.core.query_engine",
+ "RetrySourceQueryEngine": "llama_index.core.query_engine",
+ "RetryGuidelineQueryEngine": "llama_index.core.query_engine",
+ "FLAREInstructQueryEngine": "llama_index.core.query_engine",
+ "PandasQueryEngine": "llama_index.core.query_engine",
+ "JSONalyzeQueryEngine": "llama_index.core.query_engine",
+ "KnowledgeGraphQueryEngine": "llama_index.core.query_engine",
+ "BaseQueryEngine": "llama_index.core.query_engine",
+ "CustomQueryEngine": "llama_index.core.query_engine",
+ "# multimodalSimpleMultiModalQueryEngine": "llama_index.core.query_engine",
+ "# SQLSQLTableRetrieverQueryEngine": "llama_index.core.query_engine",
+ "NLSQLTableQueryEngine": "llama_index.core.query_engine",
+ "PGVectorSQLQueryEngine": "llama_index.core.query_engine",
+ "AgentFnComponent": "llama_index.core.query_pipeline",
+ "AgentInputComponent": "llama_index.core.query_pipeline",
+ "ArgPackComponent": "llama_index.core.query_pipeline",
+ "FnComponent": "llama_index.core.query_pipeline",
+ "InputComponent": "llama_index.core.query_pipeline",
+ "RouterComponent": "llama_index.core.query_pipeline",
+ "ToolRunnerComponent": "llama_index.core.query_pipeline",
+ "QueryPipeline": "llama_index.core.query_pipeline",
+ "LLMQuestionGenerator": "llama_index.core.question_gen",
+ "SubQuestionOutputParser": "llama_index.core.question_gen",
+ "ReaderConfig": "llama_index.core.readers",
+ "PDFReader": "llama_index.readers.file",
+ "HTMLTagReader": "llama_index.readers.file",
+ "StringIterableReader": "llama_index.core.readers",
+ "ResponseMode": "llama_index.core.response_synthesizers",
+ "BaseSynthesizer": "llama_index.core.response_synthesizers",
+ "Refine": "llama_index.core.response_synthesizers",
+ "SimpleSummarize": "llama_index.core.response_synthesizers",
+ "TreeSummarize": "llama_index.core.response_synthesizers",
+ "Generation": "llama_index.core.response_synthesizers",
+ "CompactAndRefine": "llama_index.core.response_synthesizers",
+ "Accumulate": "llama_index.core.response_synthesizers",
+ "VectorIndexRetriever": "llama_index.core.retrievers",
+ "VectorIndexAutoRetriever": "llama_index.core.retrievers",
+ "SummaryIndexRetriever": "llama_index.core.retrievers",
+ "SummaryIndexEmbeddingRetriever": "llama_index.core.retrievers",
+ "SummaryIndexLLMRetriever": "llama_index.core.retrievers",
+ "KGTableRetriever": "llama_index.core.retrievers",
+ "KnowledgeGraphRAGRetriever": "llama_index.core.retrievers",
+ "EmptyIndexRetriever": "llama_index.core.retrievers",
+ "TreeAllLeafRetriever": "llama_index.core.retrievers",
+ "TreeSelectLeafEmbeddingRetriever": "llama_index.core.retrievers",
+ "TreeSelectLeafRetriever": "llama_index.core.retrievers",
+ "TreeRootRetriever": "llama_index.core.retrievers",
+ "TransformRetriever": "llama_index.core.retrievers",
+ "KeywordTableSimpleRetriever": "llama_index.core.retrievers",
+ "BaseRetriever": "llama_index.core.retrievers",
+ "RecursiveRetriever": "llama_index.core.retrievers",
+ "AutoMergingRetriever": "llama_index.core.retrievers",
+ "RouterRetriever": "llama_index.core.retrievers",
+ "BM25Retriever": "llama_index.core.retrievers",
+ "QueryFusionRetriever": "llama_index.core.retrievers",
+ "# SQLSQLRetriever": "llama_index.core.retrievers",
+ "NLSQLRetriever": "llama_index.core.retrievers",
+ "SQLParserMode": "llama_index.core.retrievers",
+ "# legacyListIndexEmbeddingRetriever": "llama_index.core.retrievers",
+ "ListIndexRetriever": "llama_index.core.retrievers",
+ "# imageBaseImageRetriever": "llama_index.core.retrievers",
+ "LLMSingleSelector": "llama_index.core.selectors",
+ "LLMMultiSelector": "llama_index.core.selectors",
+ "EmbeddingSingleSelector": "llama_index.core.selectors",
+ "PydanticSingleSelector": "llama_index.core.selectors",
+ "PydanticMultiSelector": "llama_index.core.selectors",
+ "BaseTool": "llama_index.core.tools",
+ "adapt_to_async_tool": "llama_index.core.tools",
+ "AsyncBaseTool": "llama_index.core.tools",
+ "QueryEngineTool": "llama_index.core.tools",
+ "RetrieverTool": "llama_index.core.tools",
+ "ToolMetadata": "llama_index.core.tools",
+ "ToolOutput": "llama_index.core.tools",
+ "FunctionTool": "llama_index.core.tools",
+ "QueryPlanTool": "llama_index.core.tools",
+ "download_tool": "llama_index.core.tools",
+ "VectorStoreQuery": "llama_index.core.vector_stores",
+ "VectorStoreQueryResult": "llama_index.core.vector_stores",
+ "MetadataFilters": "llama_index.core.vector_stores",
+ "MetadataFilter": "llama_index.core.vector_stores",
+ "ExactMatchFilter": "llama_index.core.vector_stores",
+ "FilterCondition": "llama_index.core.vector_stores",
+ "FilterOperator": "llama_index.core.vector_stores",
+ "SimpleVectorStore": "llama_index.core.vector_stores",
+ "BaseParamTuner": "llama_index.experimental.param_tuner",
+ "ParamTuner": "llama_index.experimental.param_tuner",
+ "AsyncParamTuner": "llama_index.experimental.param_tuner",
+ "RayTuneParamTuner": "llama_index.experimental.param_tuner",
+ "OpenAIFinetuneEngine": "llama_index.finetuning",
+ "generate_qa_embedding_pairs": "llama_index.finetuning",
+ "SentenceTransformersFinetuneEngine": "llama_index.finetuning",
+ "EmbeddingAdapterFinetuneEngine": "llama_index.finetuning",
+ "GradientFinetuneEngine": "llama_index.finetuning",
+ "generate_cohere_reranker_finetuning_dataset": "llama_index.finetuning",
+ "CohereRerankerFinetuneEngine": "llama_index.finetuning",
+ "BaseFinetuningHandler": "llama_index.finetuning.callbacks",
+ "OpenAIFineTuningHandler": "llama_index.finetuning.callbacks",
+ "CrossEncoderFinetuneEngine": "llama_index.finetuning.cross_encoders",
+ "CohereRerankerFinetuneDataset": "llama_index.finetuning.rerankers",
+ "SingleStoreVectorStore": "llama_index.vector_stores.singlestoredb",
+ "QdrantVectorStore": "llama_index.vector_stores.qdrant",
+ "PineconeVectorStore": "llama_index.vector_stores.pinecone",
+ "SupabaseVectorStore": "llama_index.vector_stores.supabase",
+ "AstraDBVectorStore": "llama_index.vector_stores.astra",
+ "LanceDBVectorStore": "llama_index.vector_stores.lancedb",
+ "ElasticsearchStore": "llama_index.vector_stores.elasticsearch",
+ "PGVectorStore": "llama_index.vector_stores.postgres",
+ "CassandraVectorStore": "llama_index.vector_stores.cassandra",
+ "ZepVectorStore": "llama_index.vector_stores.zep",
+ "RocksetVectorStore": "llama_index.vector_stores.rocksetdb",
+ "MyScaleVectorStore": "llama_index.vector_stores.myscale",
+ "TencentVectorDB": "llama_index.vector_stores.tencentvectordb",
+ "MilvusVectorStore": "llama_index.vector_stores.milvus",
+ "Neo4jVectorStore": "llama_index.vector_stores.neo4jvector",
+ "DeepLakeVectorStore": "llama_index.vector_stores.deeplake",
+ "WeaviateVectorStore": "llama_index.vector_stores.weaviate",
+ "TimescaleVectorStore": "llama_index.vector_stores.timescalevector",
+ "DashVectorStore": "llama_index.vector_stores.dashvector",
+ "JaguarVectorStore": "llama_index.vector_stores.jaguar",
+ "FaissVectorStore": "llama_index.vector_stores.faiss",
+ "MongoDBAtlasVectorSearch": "llama_index.vector_stores.mongodb",
+ "ChromaVectorStore": "llama_index.vector_stores.chroma",
+ "BagelVectorStore": "llama_index.vector_stores.bagel",
+ "TxtaiVectorStore": "llama_index.vector_stores.txtai",
+ "EpsillaVectorStore": "llama_index.vector_stores.epsilla",
+ "LanternVectorStore": "llama_index.vector_stores.lantern",
+ "AwaDBVectorStore": "llama_index.vector_stores.awadb",
+ "AzureCosmosDBMongoDBVectorSearch": "llama_index.vector_stores.azurecosmosmongo",
+ "TypesenseVectorStore": "llama_index.vector_stores.typesense",
+ "PGVectoRsStore": "llama_index.vector_stores.pgvecto_rs",
+ "OpensearchVectorStore": "llama_index.vector_stores.opensearch",
+ "DocArrayInMemoryVectorStore": "llama_index.vector_stores.docarray",
+ "DocArrayHnswVectorStore": "llama_index.vector_stores.docarray",
+ "DynamoDBVectorStore": "llama_index.vector_stores.dynamodb",
+ "ChatGPTRetrievalPluginClient": "llama_index.vector_stores.chatgpt_plugin",
+ "TairVectorStore": "llama_index.vector_stores.tair",
+ "CognitiveSearchVectorStore": "llama_index.vector_stores.cogsearch",
+ "RedisVectorStore": "llama_index.vector_stores.redis",
+ "set_google_config": "llama_index.vector_stores.google",
+ "GoogleVectorStore": "llama_index.vector_stores.google",
+ "MetalVectorStore": "llama_index.vector_stores.metal",
+ "PathwayRetriever": "llama_index.retrievers.pathway",
+ "YouRetriever": "llama_index.retrievers.you",
+ "ZillizCloudPipelineIndex": "llama_index.indices.managed.zilliz",
+ "ZillizCloudPipelineRetriever": "llama_index.indices.managed.zilliz",
+ "ColbertIndex": "llama_index.indices.managed.colbert",
+ "VectaraIndex": "llama_index.indices.managed.vectara",
+ "VectaraRetriever": "llama_index.indices.managed.vectara",
+ "VectaraAutoRetriever": "llama_index.indices.managed.vectara",
+ "GoogleIndex": "llama_index.indices.managed.google",
+ "SalesforceToolSpec": "llama_index.tools.salesforce",
+ "PythonFileToolSpec": "llama_index.tools.python_file",
+ "TextToImageToolSpec": "llama_index.tools.text_to_image",
+ "OpenAPIToolSpec": "llama_index.tools.openapi",
+ "IonicShoppingToolSpec": "llama_index.tools.ionic_shopping",
+ "ShopifyToolSpec": "llama_index.tools.shopify",
+ "MetaphorToolSpec": "llama_index.tools.metaphor",
+ "ACTION_URL_TMPL": "llama_index.tools.zapier",
+ "ExaToolSpec": "llama_index.tools.exa",
+ "ZapierToolSpec": "llama_index.tools.zapier",
+ "WikipediaToolSpec": "llama_index.tools.wikipedia",
+ "GoogleCalendarToolSpec": "llama_index.tools.google",
+ "GmailToolSpec": "llama_index.tools.google",
+ "GoogleSearchToolSpec": "llama_index.tools.google",
+ "QUERY_URL_TMPL": "llama_index.tools.google",
+ "AzureTranslateToolSpec": "llama_index.tools.azure_translate",
+ "ENDPOINT_BASE_URL": "llama_index.tools.azure_translate",
+ "MultionToolSpec": "llama_index.tools.multion",
+ "DatabaseToolSpec": "llama_index.tools.database",
+ "ChatGPTPluginToolSpec": "llama_index.tools.chatgpt_plugin",
+ "Neo4jQueryToolSpec": "llama_index.tools.neo4j",
+ "BingSearchToolSpec": "llama_index.tools.bing_search",
+ "CogniswitchToolSpec": "llama_index.tools.cogniswitch",
+ "AzureCVToolSpec": "llama_index.tools.azure_cv",
+ "CV_URL_TMPL": "llama_index.tools.azure_cv",
+ "NotionToolSpec": "llama_index.tools.notion",
+ "YelpToolSpec": "llama_index.tools.yelp",
+ "OpenWeatherMapToolSpec": "llama_index.tools.weather",
+ "AzureSpeechToolSpec": "llama_index.tools.azure_speech",
+ "WolframAlphaToolSpec": "llama_index.tools.wolfram_alpha",
+ "SlackToolSpec": "llama_index.tools.slack",
+ "TavilyToolSpec": "llama_index.tools.tavily_research",
+ "ArxivToolSpec": "llama_index.tools.arxiv",
+ "VectorDB": "llama_index.tools.vector_db",
+ "VectorDBToolSpec": "llama_index.tools.vector_db",
+ "CodeInterpreterToolSpec": "llama_index.tools.code_interpreter",
+ "WaiiToolSpec": "llama_index.tools.waii",
+ "INVALID_URL_PROMPT": "llama_index.tools.requests",
+ "RequestsToolSpec": "llama_index.tools.requests",
+ "OpenAIImageGenerationToolSpec": "llama_index.tools.openai",
+ "GraphQLToolSpec": "llama_index.tools.graphql",
+ "PlaygroundsSubgraphConnectorToolSpec": "llama_index.tools.playgrounds",
+ "PlaygroundsSubgraphInspectorToolSpec": "llama_index.tools.playgrounds",
+ "ClipEmbedding": "llama_index.embeddings.clip",
+ "AnyscaleEmbedding": "llama_index.embeddings.anyscale",
+ "LLMRailsEmbedding": "llama_index.embeddings.llm_rails",
+ "LLMRailsEmbeddings": "llama_index.embeddings.llm_rails",
+ "AdapterEmbeddingModel": "llama_index.embeddings.adapter",
+ "TogetherEmbedding": "llama_index.embeddings.together",
+ "VoyageEmbedding": "llama_index.embeddings.voyageai",
+ "GradientEmbedding": "llama_index.embeddings.gradient",
+ "HuggingFaceEmbedding": "llama_index.embeddings.huggingface",
+ "HuggingFaceInferenceAPIEmbedding": "llama_index.embeddings.huggingface",
+ "HuggingFaceInferenceAPIEmbeddings": "llama_index.embeddings.huggingface",
+ "OllamaEmbedding": "llama_index.embeddings.ollama",
+ "SageMakerEmbedding": "llama_index.embeddings.sagemaker_endpoint",
+ "OpenAIEmbedding": "llama_index.embeddings.openai",
+ "OpenAIEmbeddingMode": "llama_index.embeddings.openai",
+ "OpenAIEmbeddingModelType": "llama_index.embeddings.openai",
+ "OpenAIEmbeddingModeModel": "llama_index.embeddings.openai",
+ "CohereEmbedding": "llama_index.embeddings.cohere",
+ "JinaEmbedding": "llama_index.embeddings.jinaai",
+ "NomicEmbedding": "llama_index.embeddings.nomic",
+ "GeminiEmbedding": "llama_index.embeddings.gemini",
+ "FastEmbedEmbedding": "llama_index.embeddings.fastembed",
+ "InstructorEmbedding": "llama_index.embeddings.instructor",
+ "OptimumEmbedding": "llama_index.embeddings.huggingface_optimum",
+ "LangchainEmbedding": "llama_index.embeddings.langchain",
+ "GooglePaLMEmbedding": "llama_index.embeddings.google",
+ "GoogleUnivSentEncoderEmbedding": "llama_index.embeddings.google",
+ "MistralAIEmbedding": "llama_index.embeddings.mistralai",
+ "BedrockEmbedding": "llama_index.embeddings.bedrock",
+ "ClarifaiEmbedding": "llama_index.embeddings.clarifai",
+ "ElasticsearchEmbedding": "llama_index.embeddings.elasticsearch",
+ "AzureOpenAIEmbedding": "llama_index.embeddings.azure_openai",
+ "TextEmbeddingsInference": "llama_index.embeddings.text_embeddings_inference",
+ "LongLLMLinguaPostprocessor": "llama_index.postprocessor.longllmlingua",
+ "RankGPTRerank": "llama_index.postprocessor.rankgpt_rerank",
+ "CohereRerank": "llama_index.postprocessor.cohere_rerank",
+ "FlagEmbeddingReranker": "llama_index.postprocessor.flag_embedding_reranker",
+ "Neo4jGraphStore": "llama_index.graph_stores.neo4j",
+ "FalkorDBGraphStore": "llama_index.graph_stores.falkordb",
+ "KuzuGraphStore": "llama_index.graph_stores.kuzu",
+ "NebulaGraphStore": "llama_index.graph_stores.nebula",
+ "OpenAIMultiModal": "llama_index.multi_modal_llms.openai",
+ "AzureOpenAIMultiModal": "llama_index.multi_modal_llms.azure_openai",
+ "ReplicateMultiModal": "llama_index.multi_modal_llms.replicate",
+ "GeminiMultiModal": "llama_index.multi_modal_llms.gemini",
+ "OllamaMultiModal": "llama_index.multi_modal_llms.ollama",
+ "DashScopeMultiModal": "llama_index.multi_modal_llms.dashscope",
+ "DashScopeMultiModalModels": "llama_index.multi_modal_llms.dashscope",
+ "OpenAIAgent": "llama_index.agent.openai",
+ "OpenAIAgentWorker": "llama_index.agent.openai",
+ "OpenAIAssistantAgent": "llama_index.agent.openai",
+ "BaseOpenAIAgent": "llama_index.agent.openai_legacy",
+ "FnRetrieverOpenAIAgent": "llama_index.agent.openai_legacy",
+ "ContextRetrieverOpenAIAgent": "llama_index.agent.openai_legacy",
+ "PostgresKVStore": "llama_index.storage.kvstore.postgres",
+ "RedisKVStore": "llama_index.storage.kvstore.redis",
+ "FirestoreKVStore": "llama_index.storage.kvstore.firestore",
+ "MongoDBKVStore": "llama_index.storage.kvstore.mongodb",
+ "S3DBKVStore": "llama_index.storage.kvstore.s3",
+ "DynamoDBKVStore": "llama_index.storage.kvstore.dynamodb",
+ "DynamoDBDocumentStore": "llama_index.storage.docstore.dynamodb",
+ "MongoDocumentStore": "llama_index.storage.docstore.mongodb",
+ "FirestoreDocumentStore": "llama_index.storage.docstore.firestore",
+ "RedisDocumentStore": "llama_index.storage.docstore.redis",
+ "PostgresDocumentStore": "llama_index.storage.docstore.postgres",
+ "PostgresIndexStore": "llama_index.storage.index_store.postgres",
+ "DynamoDBIndexStore": "llama_index.storage.index_store.dynamodb",
+ "FirestoreIndexStore": "llama_index.storage.index_store.firestore",
+ "MongoIndexStore": "llama_index.storage.index_store.mongodb",
+ "RedisIndexStore": "llama_index.storage.index_store.redis",
+ "RedisChatStore": "llama_index.storage.chat_store.redis",
+ "GuardrailsOutputParser": "llama_index.output_parsers.guardrails",
+ "OpenAIPydanticProgram": "llama_index.program.openai",
+ "LMFormatEnforcerPydanticProgram": "llama_index.program.lmformatenforcer",
+ "GuidancePydanticProgram": "llama_index.program.guidance",
+ "BaseEvaporateProgram": "llama_index.program.evaporate",
+ "DFEvaporateProgram": "llama_index.program.evaporate",
+ "GoogleTextSynthesizer": "llama_index.response_synthesizers.google",
+ "SynthesizedResponse": "llama_index.response_synthesizers.google",
+ "AnswerConsistencyEvaluator": "llama_index.evaluation.tonic_validate",
+ "AnswerConsistencyBinaryEvaluator": "llama_index.evaluation.tonic_validate",
+ "AnswerSimilarityEvaluator": "llama_index.evaluation.tonic_validate",
+ "AugmentationAccuracyEvaluator": "llama_index.evaluation.tonic_validate",
+ "AugmentationPrecisionEvaluator": "llama_index.evaluation.tonic_validate",
+ "RetrievalPrecisionEvaluator": "llama_index.evaluation.tonic_validate",
+ "TonicValidateEvaluator": "llama_index.evaluation.tonic_validate",
+ "BaseReader": "llama_index.core.readers.base",
+ "DocugamiReader": "llama_index.readers.docugami",
+ "SlackReader": "llama_index.readers.slack",
+ "GeniusReader": "llama_index.readers.genius",
+ "YoutubeTranscriptReader": "llama_index.readers.youtube_transcript",
+ "MboxReader": "llama_index.readers.mbox",
+ "StackoverflowReader": "llama_index.readers.stackoverflow",
+ "PdbAbstractReader": "llama_index.readers.pdb",
+ "SnowflakeReader": "llama_index.readers.snowflake",
+ "DiscordReader": "llama_index.readers.discord",
+ "EarningsCallTranscript": "llama_index.readers.earnings_call_transcript",
+ "SimpleCouchDBReader": "llama_index.readers.couchdb",
+ "CouchbaseReader": "llama_index.readers.couchbase",
+ "SingleStoreReader": "llama_index.readers.singlestore",
+ "JSONReader": "llama_index.readers.json",
+ "TrelloReader": "llama_index.readers.trello",
+ "JaguarReader": "llama_index.readers.jaguar",
+ "JiraReader": "llama_index.readers.jira",
+ "PDFTableReader": "llama_index.readers.pdf_table",
+ "KibelaReader": "llama_index.readers.kibela",
+ "DashVectorReader": "llama_index.readers.dashvector",
+ "BilibiliTranscriptReader": "llama_index.readers.bilibili",
+ "SmartPDFLoader": "llama_index.readers.smart_pdf_loader",
+ "AgentSearchReader": "llama_index.readers.agent_search",
+ "MacrometaGDNReader": "llama_index.readers.macrometa_gdn",
+ "TwitterTweetReader": "llama_index.readers.twitter",
+ "AstraDBReader": "llama_index.readers.astra_db",
+ "OpendalReader": "llama_index.readers.opendal",
+ "OpendalAzblobReader": "llama_index.readers.opendal",
+ "OpendalGcsReader": "llama_index.readers.opendal",
+ "OpendalS3Reader": "llama_index.readers.opendal",
+ "AzStorageBlobReader": "llama_index.readers.azstorage_blob",
+ "ReadwiseReader": "llama_index.readers.readwise",
+ "ApifyActor": "llama_index.readers.apify",
+ "ApifyDataset": "llama_index.readers.apify",
+ "SimpleArangoDBReader": "llama_index.readers.arango_db",
+ "AthenaReader": "llama_index.readers.athena",
+ "DatabaseReader": "llama_index.readers.database",
+ "RemoteReader": "llama_index.readers.remote",
+ "AsanaReader": "llama_index.readers.asana",
+ "HiveReader": "llama_index.readers.hive",
+ "DocstringWalker": "llama_index.readers.docstring_walker",
+ "AirbyteSalesforceReader": "llama_index.readers.airbyte_salesforce",
+ "StripeDocsReader": "llama_index.readers.stripe_docs",
+ "MilvusReader": "llama_index.readers.milvus",
+ "PDFNougatOCR": "llama_index.readers.nougat_ocr",
+ "AssemblyAIAudioTranscriptReader": "llama_index.readers.assemblyai",
+ "GraphDBCypherReader": "llama_index.readers.graphdb_cypher",
+ "ConfluenceReader": "llama_index.readers.confluence",
+ "LilacReader": "llama_index.readers.lilac",
+ "GithubClient": "llama_index.readers.github",
+ "GithubRepositoryReader": "llama_index.readers.github",
+ "GitHubRepositoryCollaboratorsReader": "llama_index.readers.github",
+ "GitHubRepositoryIssuesReader": "llama_index.readers.github",
+ "GitHubIssuesClient": "llama_index.readers.github",
+ "WikipediaReader": "llama_index.readers.wikipedia",
+ "SimpleMongoReader": "llama_index.readers.mongodb",
+ "NotionPageReader": "llama_index.readers.notion",
+ "WordpressReader": "llama_index.readers.wordpress",
+ "XMLReader": "llama_index.readers.file",
+ "PagedCSVReader": "llama_index.readers.file",
+ "AirbyteTypeformReader": "llama_index.readers.airbyte_typeform",
+ "AirbyteZendeskSupportReader": "llama_index.readers.airbyte_zendesk_support",
+ "FirestoreReader": "llama_index.readers.firestore",
+ "OutlookLocalCalendarReader": "llama_index.readers.microsoft_outlook",
+ "S3Reader": "llama_index.readers.s3",
+ "SemanticScholarReader": "llama_index.readers.semanticscholar",
+ "WordLiftLoader": "llama_index.readers.wordlift",
+ "SpotifyReader": "llama_index.readers.spotify",
+ "AirbyteCDKReader": "llama_index.readers.airbyte_cdk",
+ "QdrantReader": "llama_index.readers.qdrant",
+ "FeedlyRssReader": "llama_index.readers.feedly_rss",
+ "AirbyteShopifyReader": "llama_index.readers.airbyte_shopify",
+ "ElasticsearchReader": "llama_index.readers.elasticsearch",
+ "RayyanReader": "llama_index.readers.rayyan",
+ "FirebaseRealtimeDatabaseReader": "llama_index.readers.firebase_realtimedb",
+ "RemoteDepthReader": "llama_index.readers.remote_depth",
+ "MakeWrapper": "llama_index.readers.make_com",
+ "MangaDexReader": "llama_index.readers.mangadex",
+ "IntercomReader": "llama_index.readers.intercom",
+ "AirbyteGongReader": "llama_index.readers.airbyte_gong",
+ "RedditReader": "llama_index.readers.reddit",
+ "FaissReader": "llama_index.readers.faiss",
+ "DadJokesReader": "llama_index.readers.dad_jokes",
+ "PatentsviewReader": "llama_index.readers.patentsview",
+ "MyScaleReader": "llama_index.readers.myscale",
+ "escape_str": "llama_index.readers.myscale",
+ "format_list_to_string": "llama_index.readers.myscale",
+ "GuruReader": "llama_index.readers.guru",
+ "LinearReader": "llama_index.readers.linear",
+ "TelegramReader": "llama_index.readers.telegram",
+ "SteamshipFileReader": "llama_index.readers.steamship",
+ "OpenMap": "llama_index.readers.maps",
+ "PathwayReader": "llama_index.readers.pathway",
+ "AirbyteHubspotReader": "llama_index.readers.airbyte_hubspot",
+ "HatenaBlogReader": "llama_index.readers.hatena_blog",
+ "SECFilingsLoader": "llama_index.readers.sec_filings",
+ "JoplinReader": "llama_index.readers.joplin",
+ "LINK_NOTE_TEMPLATE": "llama_index.readers.joplin",
+ "GraphQLReader": "llama_index.readers.graphql",
+ "BagelReader": "llama_index.readers.bagel",
+ "PreprocessReader": "llama_index.readers.preprocess",
+ "GoogleDocsReader": "llama_index.readers.google",
+ "GoogleSheetsReader": "llama_index.readers.google",
+ "GoogleCalendarReader": "llama_index.readers.google",
+ "GoogleDriveReader": "llama_index.readers.google",
+ "GmailReader": "llama_index.readers.google",
+ "GoogleKeepReader": "llama_index.readers.google",
+ "FeishuDocsReader": "llama_index.readers.feishu_docs",
+ "OpenAlexReader": "llama_index.readers.openalex",
+ "TxtaiReader": "llama_index.readers.txtai",
+ "AzCognitiveSearchReader": "llama_index.readers.azcognitive_search",
+ "PineconeReader": "llama_index.readers.pinecone",
+ "PandasAIReader": "llama_index.readers.pandas_ai",
+ "AirtableReader": "llama_index.readers.airtable",
+ "ZulipReader": "llama_index.readers.zulip",
+ "ZendeskReader": "llama_index.readers.zendesk",
+ "BitbucketReader": "llama_index.readers.bitbucket",
+ "AsyncWebPageReader": "llama_index.readers.web",
+ "BeautifulSoupWebReader": "llama_index.readers.web",
+ "KnowledgeBaseWebReader": "llama_index.readers.web",
+ "MainContentExtractorReader": "llama_index.readers.web",
+ "NewsArticleReader": "llama_index.readers.web",
+ "ReadabilityWebPageReader": "llama_index.readers.web",
+ "RssReader": "llama_index.readers.web",
+ "RssNewsReader": "llama_index.readers.web",
+ "SimpleWebPageReader": "llama_index.readers.web",
+ "SitemapReader": "llama_index.readers.web",
+ "TrafilaturaWebReader": "llama_index.readers.web",
+ "UnstructuredURLLoader": "llama_index.readers.web",
+ "WholeSiteReader": "llama_index.readers.web",
+ "HubspotReader": "llama_index.readers.hubspot",
+ "DocxReader": "llama_index.readers.file",
+ "HWPReader": "llama_index.readers.file",
+ "EpubReader": "llama_index.readers.file",
+ "FlatReader": "llama_index.readers.file",
+ "ImageCaptionReader": "llama_index.readers.file",
+ "ImageReader": "llama_index.readers.file",
+ "ImageVisionLLMReader": "llama_index.readers.file",
+ "IPYNBReader": "llama_index.readers.file",
+ "MarkdownReader": "llama_index.readers.file",
+ "PptxReader": "llama_index.readers.file",
+ "PandasCSVReader": "llama_index.readers.file",
+ "VideoAudioReader": "llama_index.readers.file",
+ "UnstructuredReader": "llama_index.readers.file",
+ "PyMuPDFReader": "llama_index.readers.file",
+ "ImageTabularChartReader": "llama_index.readers.file",
+ "CSVReader": "llama_index.readers.file.tabular",
+ "KalturaESearchReader": "llama_index.readers.kaltura_esearch",
+ "AwadbReader": "llama_index.readers.awadb",
+ "IMDBReviews": "llama_index.readers.imdb_review",
+ "OpensearchReader": "llama_index.readers.opensearch",
+ "SharePointReader": "llama_index.readers.microsoft_sharepoint",
+ "MangoppsGuidesReader": "llama_index.readers.mangoapps_guides",
+ "GPTRepoReader": "llama_index.readers.gpt_repo",
+ "get_ignore_list": "llama_index.readers.gpt_repo",
+ "process_repository": "llama_index.readers.gpt_repo",
+ "should_ignore": "llama_index.readers.gpt_repo",
+ "OneDriveReader": "llama_index.readers.microsoft_onedrive",
+ "HuggingFaceFSReader": "llama_index.readers.huggingface_fs",
+ "WeaviateReader": "llama_index.readers.weaviate",
+ "DeepLakeReader": "llama_index.readers.deeplake",
+ "WhatsappChatLoader": "llama_index.readers.whatsapp",
+ "MondayReader": "llama_index.readers.mondaydotcom",
+ "AirbyteStripeReader": "llama_index.readers.airbyte_stripe",
+ "SnscrapeTwitterReader": "llama_index.readers.snscrape_twitter",
+ "ArxivReader": "llama_index.readers.papers",
+ "PubmedReader": "llama_index.readers.papers",
+ "ObsidianReader": "llama_index.readers.obsidian",
+ "ZepReader": "llama_index.readers.zep",
+ "MemosReader": "llama_index.readers.memos",
+ "PsychicReader": "llama_index.readers.psychic",
+ "ChromaReader": "llama_index.readers.chroma",
+ "WeatherReader": "llama_index.readers.weather",
+ "ChatGPTRetrievalPluginReader": "llama_index.readers.chatgpt_plugin",
+ "MetalReader": "llama_index.readers.metal",
+ "BoardDocsReader": "llama_index.readers.boarddocs",
+ "GuidanceQuestionGenerator": "llama_index.question_gen.guidance",
+ "OpenAIQuestionGenerator": "llama_index.question_gen.openai",
+ "PaLM": "llama_index.llms.palm",
+ "DashScope": "llama_index.llms.dashscope",
+ "DashScopeGenerationModels": "llama_index.llms.dashscope",
+ "WatsonX": "llama_index.llms.watsonx",
+ "Cohere": "llama_index.llms.cohere",
+ "NvidiaTriton": "llama_index.llms.nvidia_triton",
+ "AI21": "llama_index.llms.ai21",
+ "Bedrock": "llama_index.llms.bedrock",
+ "HuggingFaceLLM": "llama_index.llms.huggingface",
+ "HuggingFaceInferenceAPI": "llama_index.llms.huggingface",
+ "AzureOpenAI": "llama_index.llms.azure_openai",
+ "LocalTensorRTLLM": "llama_index.llms.nvidia_tensorrt",
+ "Anthropic": "llama_index.llms.anthropic",
+ "Gemini": "llama_index.llms.gemini",
+ "Clarifai": "llama_index.llms.clarifai",
+ "LlamaAPI": "llama_index.llms.llama_api",
+ "LlamaCPP": "llama_index.llms.llama_cpp",
+ "Perplexity": "llama_index.llms.perplexity",
+ "RunGptLLM": "llama_index.llms.rungpt",
+ "Replicate": "llama_index.llms.replicate",
+ "OpenAILike": "llama_index.llms.openai_like",
+ "Konko": "llama_index.llms.konko",
+ "OpenLLM": "llama_index.llms.openllm",
+ "OpenLLMAPI": "llama_index.llms.openllm",
+ "LiteLLM": "llama_index.llms.litellm",
+ "SageMakerLLM": "llama_index.llms.sagemaker_endpoint",
+ "Portkey": "llama_index.llms.portkey",
+ "Vllm": "llama_index.llms.vllm",
+ "Neutrino": "llama_index.llms.neutrino",
+ "MonsterLLM": "llama_index.llms.monsterapi",
+ "PredibaseLLM": "llama_index.llms.predibase",
+ "Xinference": "llama_index.llms.xinference",
+ "MistralAI": "llama_index.llms.mistralai",
+ "Anyscale": "llama_index.llms.anyscale",
+ "Vertex": "llama_index.llms.vertex",
+ "LocalAI": "llama_index.llms.localai",
+ "TogetherLLM": "llama_index.llms.together",
+ "Ollama": "llama_index.llms.ollama",
+ "LangChainLLM": "llama_index.llms.langchain",
+ "EverlyAI": "llama_index.llms.everlyai",
+ "OpenRouter": "llama_index.llms.openrouter",
+ "OpenAI": "llama_index.llms.openai",
+ "Tokenizer": "llama_index.llms.openai",
+ "GradientBaseModelLLM": "llama_index.llms.gradient",
+ "GradientModelAdapterLLM": "llama_index.llms.gradient",
+ "EntityExtractor": "llama_index.extractors.entity",
+ "MarvinMetadataExtractor": "llama_index.extractors.marvin",
+ "WeaviateRetryEnginePack": "llama_index.packs.retry_engine_weaviate",
+ "LlavaCompletionPack": "llama_index.packs.llava_completion",
+ "VannaPack": "llama_index.packs.vanna",
+ "VannaQueryEngine": "llama_index.packs.vanna",
+ "ZephyrQueryEnginePack": "llama_index.packs.zephyr_query_engine",
+ "TimescaleVectorAutoretrievalPack": "llama_index.packs.timescale_vector_autoretrieval",
+ "MultiDocumentAgentsPack": "llama_index.packs.multi_document_agents",
+ "MultiDocAutoRetrieverPack": "llama_index.packs.multidoc_autoretrieval",
+ "GmailOpenAIAgentPack": "llama_index.packs.gmail_openai_agent",
+ "Neo4jQueryEnginePack": "llama_index.packs.neo4j_query_engine",
+ "ChromaAutoretrievalPack": "llama_index.packs.chroma_autoretrieval",
+ "ResumeScreenerPack": "llama_index.packs.resume_screener",
+ "TruLensRAGTriadPack": "llama_index.packs.trulens_eval_packs",
+ "TruLensHarmlessPack": "llama_index.packs.trulens_eval_packs",
+ "TruLensHelpfulPack": "llama_index.packs.trulens_eval_packs",
+ "EvaluatorBenchmarkerPack": "llama_index.packs.evaluator_benchmarker",
+ "RAGFusionPipelinePack": "llama_index.packs.rag_fusion_query_pipeline",
+ "LlamaGuardModeratorPack": "llama_index.packs.llama_guard_moderator",
+ "SnowflakeQueryEnginePack": "llama_index.packs.snowflake_query_engine",
+ "LlamaDatasetMetadataPack": "llama_index.packs.llama_dataset_metadata",
+ "StockMarketDataQueryEnginePack": "llama_index.packs.stock_market_data_query_engine",
+ "RagEvaluatorPack": "llama_index.packs.rag_evaluator",
+ "ArizePhoenixQueryEnginePack": "llama_index.packs.arize_phoenix_query_engine",
+ "PanelChatPack": "llama_index.packs.panel_chatbot",
+ "MultiTenancyRAGPack": "llama_index.packs.multi_tenancy_rag",
+ "StreamlitChatPack": "llama_index.packs.streamlit_chatbot",
+ "VectaraRagPack": "llama_index.packs.vectara_rag",
+ "ChainOfTablePack": "llama_index.packs.tables",
+ "MixSelfConsistencyPack": "llama_index.packs.tables",
+ "SelfRAGPack": "llama_index.packs.self_rag",
+ "SelfRAGQueryEngine": "llama_index.packs.self_rag",
+ "SemanticChunkingQueryEnginePack": "llama_index.packs.node_parser_semantic_chunking",
+ "RedisIngestionPipelinePack": "llama_index.packs.redis_ingestion_pipeline",
+ "DenseXRetrievalPack": "llama_index.packs.dense_x_retrieval",
+ "LocalRAGCLIPack": "llama_index.packs.rag_cli_local",
+ "InferRetrieveRerankPack": "llama_index.packs.infer_retrieve_rerank",
+ "AutoMergingRetrieverPack": "llama_index.packs.auto_merging_retriever",
+ "LLMCompilerAgentPack": "llama_index.packs.agents_llm_compiler",
+ "GradioReActAgentPack": "llama_index.packs.gradio_react_agent_chatbot",
+ "WeaviateSubQuestionPack": "llama_index.packs.sub_question_weaviate",
+ "DeepMemoryRetrieverPack": "llama_index.packs.deeplake_deepmemory_retriever",
+ "NebulaGraphQueryEnginePack": "llama_index.packs.nebulagraph_query_engine",
+ "VoyageQueryEnginePack": "llama_index.packs.voyage_query_engine",
+ "SentenceWindowRetrieverPack": "llama_index.packs.sentence_window_retriever",
+ "EmbeddedTablesUnstructuredRetrieverPack": "llama_index.packs.recursive_retriever",
+ "RecursiveRetrieverSmallToBigPack": "llama_index.packs.recursive_retriever",
+ "AmazonProductExtractionPack": "llama_index.packs.amazon_product_extraction",
+ "CogniswitchAgentPack": "llama_index.packs.cogniswitch_agent",
+ "OllamaQueryEnginePack": "llama_index.packs.ollama_query_engine",
+ "RAGatouilleRetrieverPack": "llama_index.packs.ragatouille_retriever",
+ "FuzzyCitationEnginePack": "llama_index.packs.fuzzy_citation",
+ "DeepLakeMultimodalRetrieverPack": "llama_index.packs.deeplake_multimodal_retrieval",
+ "GradioAgentChatPack": "llama_index.packs.gradio_agent_chat",
+ "AgentSearchRetriever": "llama_index.packs.agent_search_retriever",
+ "AgentSearchRetrieverPack": "llama_index.packs.agent_search_retriever",
+ "HybridFusionRetrieverPack": "llama_index.packs.fusion_retriever",
+ "QueryRewritingRetrieverPack": "llama_index.packs.fusion_retriever",
+ "BaseNode": "llama_index.core.schema",
+ "TextNode": "llama_index.core.schema",
+ "ImageNode": "llama_index.core.schema",
+ "ImageDocument": "llama_index.core.schema",
+ "NodeWithScore": "llama_index.core.schema",
+ "run_jobs": "llama_index.core.async_utils",
+ "DecomposeQueryTransform": "llama_index.core.query.query_transform.base",
+ "get_eval_results": "llama_index.core.evaluation.eval_utils",
+ "VectorStoreInfo": "llama_index.core.vector_stores",
+ "MetadataInfo": "llama_index.core.vector_stores",
+ "UpstashVectorStore": "llama_index.vector_stores.upstash",
+ "AzureAISearchVectorStore": "llama_index.vector_stores.azureaisearch",
+ "CognitiveSearchVectorStore": "llama_index.vector_stores.azureaisearch",
+ "IndexManagement": "llama_index.vector_stores.azureaisearch",
+ "REPLICATE_MULTI_MODAL_LLM_MODELS": "llama_index.multi_modal_llms.replicate.base"
+}
diff --git a/llama-index-cli/poetry.lock b/llama-index-cli/poetry.lock
new file mode 100644
index 0000000000000..3ed6c4dc07ba2
--- /dev/null
+++ b/llama-index-cli/poetry.lock
@@ -0,0 +1,6002 @@
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+
+[[package]]
+name = "aiohttp"
+version = "3.9.3"
+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"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "annotated-types"
+version = "0.6.0"
+description = "Reusable constraint types to use with typing.Annotated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
+ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+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)"]
+
+[[package]]
+name = "appnope"
+version = "0.1.4"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
+
+[[package]]
+name = "asgiref"
+version = "3.7.2"
+description = "ASGI specs, helper code, and adapters"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"},
+ {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""}
+
+[package.extras]
+tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
+
+[[package]]
+name = "astroid"
+version = "2.13.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
+ {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+wrapt = [
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "attrs"
+version = "23.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"},
+]
+
+[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]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.dependencies]
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
+
+[[package]]
+name = "backoff"
+version = "2.2.1"
+description = "Function decoration for backoff and retry"
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"},
+ {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"},
+]
+
+[[package]]
+name = "bcrypt"
+version = "4.1.2"
+description = "Modern password hashing for your software and your servers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "bcrypt-4.1.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:ac621c093edb28200728a9cca214d7e838529e557027ef0581685909acd28b5e"},
+ {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea505c97a5c465ab8c3ba75c0805a102ce526695cd6818c6de3b1a38f6f60da1"},
+ {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57fa9442758da926ed33a91644649d3e340a71e2d0a5a8de064fb621fd5a3326"},
+ {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb3bd3321517916696233b5e0c67fd7d6281f0ef48e66812db35fc963a422a1c"},
+ {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6cad43d8c63f34b26aef462b6f5e44fdcf9860b723d2453b5d391258c4c8e966"},
+ {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:44290ccc827d3a24604f2c8bcd00d0da349e336e6503656cb8192133e27335e2"},
+ {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:732b3920a08eacf12f93e6b04ea276c489f1c8fb49344f564cca2adb663b3e4c"},
+ {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1c28973decf4e0e69cee78c68e30a523be441972c826703bb93099868a8ff5b5"},
+ {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b8df79979c5bae07f1db22dcc49cc5bccf08a0380ca5c6f391cbb5790355c0b0"},
+ {file = "bcrypt-4.1.2-cp37-abi3-win32.whl", hash = "sha256:fbe188b878313d01b7718390f31528be4010fed1faa798c5a1d0469c9c48c369"},
+ {file = "bcrypt-4.1.2-cp37-abi3-win_amd64.whl", hash = "sha256:9800ae5bd5077b13725e2e3934aa3c9c37e49d3ea3d06318010aa40f54c63551"},
+ {file = "bcrypt-4.1.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:71b8be82bc46cedd61a9f4ccb6c1a493211d031415a34adde3669ee1b0afbb63"},
+ {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e3c6642077b0c8092580c819c1684161262b2e30c4f45deb000c38947bf483"},
+ {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:387e7e1af9a4dd636b9505a465032f2f5cb8e61ba1120e79a0e1cd0b512f3dfc"},
+ {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f70d9c61f9c4ca7d57f3bfe88a5ccf62546ffbadf3681bb1e268d9d2e41c91a7"},
+ {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2a298db2a8ab20056120b45e86c00a0a5eb50ec4075b6142db35f593b97cb3fb"},
+ {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ba55e40de38a24e2d78d34c2d36d6e864f93e0d79d0b6ce915e4335aa81d01b1"},
+ {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3566a88234e8de2ccae31968127b0ecccbb4cddb629da744165db72b58d88ca4"},
+ {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b90e216dc36864ae7132cb151ffe95155a37a14e0de3a8f64b49655dd959ff9c"},
+ {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:69057b9fc5093ea1ab00dd24ede891f3e5e65bee040395fb1e66ee196f9c9b4a"},
+ {file = "bcrypt-4.1.2-cp39-abi3-win32.whl", hash = "sha256:02d9ef8915f72dd6daaef40e0baeef8a017ce624369f09754baf32bb32dba25f"},
+ {file = "bcrypt-4.1.2-cp39-abi3-win_amd64.whl", hash = "sha256:be3ab1071662f6065899fe08428e45c16aa36e28bc42921c4901a191fda6ee42"},
+ {file = "bcrypt-4.1.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d75fc8cd0ba23f97bae88a6ec04e9e5351ff3c6ad06f38fe32ba50cbd0d11946"},
+ {file = "bcrypt-4.1.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:a97e07e83e3262599434816f631cc4c7ca2aa8e9c072c1b1a7fec2ae809a1d2d"},
+ {file = "bcrypt-4.1.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e51c42750b7585cee7892c2614be0d14107fad9581d1738d954a262556dd1aab"},
+ {file = "bcrypt-4.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba4e4cc26610581a6329b3937e02d319f5ad4b85b074846bf4fef8a8cf51e7bb"},
+ {file = "bcrypt-4.1.2.tar.gz", hash = "sha256:33313a1200a3ae90b75587ceac502b048b840fc69e7f7a0905b5f87fac7a1258"},
+]
+
+[package.extras]
+tests = ["pytest (>=3.2.1,!=3.3.0)"]
+typecheck = ["mypy"]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "black"
+version = "23.9.1"
+description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+]
+
+[package.dependencies]
+click = ">=8.0.0"
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
+mypy-extensions = ">=0.4.3"
+packaging = ">=22.0"
+pathspec = ">=0.9.0"
+platformdirs = ">=2"
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "build"
+version = "1.0.3"
+description = "A simple, correct Python build frontend"
+optional = false
+python-versions = ">= 3.7"
+files = [
+ {file = "build-1.0.3-py3-none-any.whl", hash = "sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f"},
+ {file = "build-1.0.3.tar.gz", hash = "sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "os_name == \"nt\""}
+importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""}
+packaging = ">=19.0"
+pyproject_hooks = "*"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+docs = ["furo (>=2023.08.17)", "sphinx (>=7.0,<8.0)", "sphinx-argparse-cli (>=1.5)", "sphinx-autodoc-typehints (>=1.10)", "sphinx-issues (>=3.0.0)"]
+test = ["filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0)", "setuptools (>=56.0.0)", "setuptools (>=56.0.0)", "setuptools (>=67.8.0)", "wheel (>=0.36.0)"]
+typing = ["importlib-metadata (>=5.1)", "mypy (>=1.5.0,<1.6.0)", "tomli", "typing-extensions (>=3.7.4.3)"]
+virtualenv = ["virtualenv (>=20.0.35)"]
+
+[[package]]
+name = "cachetools"
+version = "5.3.2"
+description = "Extensible memoizing collections and decorators"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"},
+ {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"},
+]
+
+[[package]]
+name = "certifi"
+version = "2024.2.2"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+ {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+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"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "chroma-hnswlib"
+version = "0.7.3"
+description = "Chromas fork of hnswlib"
+optional = false
+python-versions = "*"
+files = [
+ {file = "chroma-hnswlib-0.7.3.tar.gz", hash = "sha256:b6137bedde49fffda6af93b0297fe00429fc61e5a072b1ed9377f909ed95a932"},
+ {file = "chroma_hnswlib-0.7.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59d6a7c6f863c67aeb23e79a64001d537060b6995c3eca9a06e349ff7b0998ca"},
+ {file = "chroma_hnswlib-0.7.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d71a3f4f232f537b6152947006bd32bc1629a8686df22fd97777b70f416c127a"},
+ {file = "chroma_hnswlib-0.7.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c92dc1ebe062188e53970ba13f6b07e0ae32e64c9770eb7f7ffa83f149d4210"},
+ {file = "chroma_hnswlib-0.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49da700a6656fed8753f68d44b8cc8ae46efc99fc8a22a6d970dc1697f49b403"},
+ {file = "chroma_hnswlib-0.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:108bc4c293d819b56476d8f7865803cb03afd6ca128a2a04d678fffc139af029"},
+ {file = "chroma_hnswlib-0.7.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:11e7ca93fb8192214ac2b9c0943641ac0daf8f9d4591bb7b73be808a83835667"},
+ {file = "chroma_hnswlib-0.7.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f552e4d23edc06cdeb553cdc757d2fe190cdeb10d43093d6a3319f8d4bf1c6b"},
+ {file = "chroma_hnswlib-0.7.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f96f4d5699e486eb1fb95849fe35ab79ab0901265805be7e60f4eaa83ce263ec"},
+ {file = "chroma_hnswlib-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:368e57fe9ebae05ee5844840fa588028a023d1182b0cfdb1d13f607c9ea05756"},
+ {file = "chroma_hnswlib-0.7.3-cp311-cp311-win_amd64.whl", hash = "sha256:b7dca27b8896b494456db0fd705b689ac6b73af78e186eb6a42fea2de4f71c6f"},
+ {file = "chroma_hnswlib-0.7.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:70f897dc6218afa1d99f43a9ad5eb82f392df31f57ff514ccf4eeadecd62f544"},
+ {file = "chroma_hnswlib-0.7.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aef10b4952708f5a1381c124a29aead0c356f8d7d6e0b520b778aaa62a356f4"},
+ {file = "chroma_hnswlib-0.7.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee2d8d1529fca3898d512079144ec3e28a81d9c17e15e0ea4665697a7923253"},
+ {file = "chroma_hnswlib-0.7.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a4021a70e898783cd6f26e00008b494c6249a7babe8774e90ce4766dd288c8ba"},
+ {file = "chroma_hnswlib-0.7.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a8f61fa1d417fda848e3ba06c07671f14806a2585272b175ba47501b066fe6b1"},
+ {file = "chroma_hnswlib-0.7.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7563be58bc98e8f0866907368e22ae218d6060601b79c42f59af4eccbbd2e0a"},
+ {file = "chroma_hnswlib-0.7.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51b8d411486ee70d7b66ec08cc8b9b6620116b650df9c19076d2d8b6ce2ae914"},
+ {file = "chroma_hnswlib-0.7.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d706782b628e4f43f1b8a81e9120ac486837fbd9bcb8ced70fe0d9b95c72d77"},
+ {file = "chroma_hnswlib-0.7.3-cp38-cp38-win_amd64.whl", hash = "sha256:54f053dedc0e3ba657f05fec6e73dd541bc5db5b09aa8bc146466ffb734bdc86"},
+ {file = "chroma_hnswlib-0.7.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e607c5a71c610a73167a517062d302c0827ccdd6e259af6e4869a5c1306ffb5d"},
+ {file = "chroma_hnswlib-0.7.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2358a795870156af6761890f9eb5ca8cade57eb10c5f046fe94dae1faa04b9e"},
+ {file = "chroma_hnswlib-0.7.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cea425df2e6b8a5e201fff0d922a1cc1d165b3cfe762b1408075723c8892218"},
+ {file = "chroma_hnswlib-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454df3dd3e97aa784fba7cf888ad191e0087eef0fd8c70daf28b753b3b591170"},
+ {file = "chroma_hnswlib-0.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:df587d15007ca701c6de0ee7d5585dd5e976b7edd2b30ac72bc376b3c3f85882"},
+]
+
+[package.dependencies]
+numpy = "*"
+
+[[package]]
+name = "chromadb"
+version = "0.4.22"
+description = "Chroma."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "chromadb-0.4.22-py3-none-any.whl", hash = "sha256:ad210b27b4cda2f09d15adc9c83c81bfa66b69f39648a27b637306e40de0680d"},
+ {file = "chromadb-0.4.22.tar.gz", hash = "sha256:c793149e1c2bbbb52d77602c6c0594c5752f04cd9be12619250ddad2082af27a"},
+]
+
+[package.dependencies]
+bcrypt = ">=4.0.1"
+build = ">=1.0.3"
+chroma-hnswlib = "0.7.3"
+fastapi = ">=0.95.2"
+graphlib-backport = {version = ">=1.0.3", markers = "python_version < \"3.9\""}
+grpcio = ">=1.58.0"
+importlib-resources = "*"
+kubernetes = ">=28.1.0"
+mmh3 = ">=4.0.1"
+numpy = ">=1.22.5"
+onnxruntime = ">=1.14.1"
+opentelemetry-api = ">=1.2.0"
+opentelemetry-exporter-otlp-proto-grpc = ">=1.2.0"
+opentelemetry-instrumentation-fastapi = ">=0.41b0"
+opentelemetry-sdk = ">=1.2.0"
+overrides = ">=7.3.1"
+posthog = ">=2.4.0"
+pulsar-client = ">=3.1.0"
+pydantic = ">=1.9"
+pypika = ">=0.48.9"
+PyYAML = ">=6.0.0"
+requests = ">=2.28"
+tenacity = ">=8.2.3"
+tokenizers = ">=0.13.2"
+tqdm = ">=4.65.0"
+typer = ">=0.9.0"
+typing-extensions = ">=4.5.0"
+uvicorn = {version = ">=0.18.3", extras = ["standard"]}
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "codespell"
+version = "2.2.6"
+description = "Codespell"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+ {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+]
+
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
+
+[package.extras]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
+hard-encoding-detection = ["chardet"]
+toml = ["tomli"]
+types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "coloredlogs"
+version = "15.0.1"
+description = "Colored terminal output for Python's logging module"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"},
+ {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"},
+]
+
+[package.dependencies]
+humanfriendly = ">=9.1"
+
+[package.extras]
+cron = ["capturer (>=2.4)"]
+
+[[package]]
+name = "comm"
+version = "0.2.1"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
+ {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "cryptography"
+version = "42.0.2"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"},
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"},
+ {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"},
+ {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"},
+ {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"},
+ {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"},
+ {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"},
+ {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"},
+]
+
+[package.dependencies]
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
+nox = ["nox"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "dataclasses-json"
+version = "0.6.4"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"},
+ {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "debugpy"
+version = "1.8.1"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
+ {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
+ {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
+ {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
+ {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
+ {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
+ {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
+ {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
+ {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
+ {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
+ {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
+ {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
+ {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
+ {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
+ {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
+ {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
+ {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
+ {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
+ {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
+ {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
+ {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
+ {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "deprecated"
+version = "1.2.14"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
+ {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
+]
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+
+[[package]]
+name = "dill"
+version = "0.3.8"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dirtyjson"
+version = "1.0.8"
+description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
+ {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
+]
+
+[[package]]
+name = "distlib"
+version = "0.3.8"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
+]
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastapi"
+version = "0.109.2"
+description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"},
+ {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"},
+]
+
+[package.dependencies]
+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"
+starlette = ">=0.36.3,<0.37.0"
+typing-extensions = ">=4.8.0"
+
+[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)"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "flatbuffers"
+version = "23.5.26"
+description = "The FlatBuffers serialization format for Python"
+optional = false
+python-versions = "*"
+files = [
+ {file = "flatbuffers-23.5.26-py2.py3-none-any.whl", hash = "sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1"},
+ {file = "flatbuffers-23.5.26.tar.gz", hash = "sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89"},
+]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2024.2.0"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"},
+ {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "google-auth"
+version = "2.27.0"
+description = "Google Authentication Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "google-auth-2.27.0.tar.gz", hash = "sha256:e863a56ccc2d8efa83df7a80272601e43487fa9a728a376205c86c26aaefa821"},
+ {file = "google_auth-2.27.0-py2.py3-none-any.whl", hash = "sha256:8e4bad367015430ff253fe49d500fdc3396c1a434db5740828c728e45bcce245"},
+]
+
+[package.dependencies]
+cachetools = ">=2.0.0,<6.0"
+pyasn1-modules = ">=0.2.1"
+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)"]
+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 = "googleapis-common-protos"
+version = "1.62.0"
+description = "Common protobufs used in Google APIs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "googleapis-common-protos-1.62.0.tar.gz", hash = "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"},
+ {file = "googleapis_common_protos-1.62.0-py2.py3-none-any.whl", hash = "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07"},
+]
+
+[package.dependencies]
+protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<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.0.dev0"
+
+[package.extras]
+grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"]
+
+[[package]]
+name = "graphlib-backport"
+version = "1.0.3"
+description = "Backport of the Python 3.9 graphlib module for Python 3.6+"
+optional = false
+python-versions = ">=3.6,<4.0"
+files = [
+ {file = "graphlib_backport-1.0.3-py3-none-any.whl", hash = "sha256:24246967b9e7e6a91550bc770e6169585d35aa32790258579a8a3899a8c18fde"},
+ {file = "graphlib_backport-1.0.3.tar.gz", hash = "sha256:7bb8fc7757b8ae4e6d8000a26cd49e9232aaa9a3aa57edb478474b8424bfaae2"},
+]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "grpcio"
+version = "1.60.1"
+description = "HTTP/2-based RPC framework"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"},
+ {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"},
+ {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"},
+ {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"},
+ {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"},
+ {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"},
+ {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"},
+ {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"},
+ {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"},
+ {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"},
+ {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"},
+ {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"},
+ {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"},
+ {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"},
+ {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"},
+ {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"},
+ {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"},
+ {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"},
+ {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"},
+ {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"},
+ {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"},
+ {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"},
+ {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"},
+ {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"},
+ {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"},
+ {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"},
+ {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"},
+ {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"},
+ {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"},
+ {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"},
+ {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"},
+ {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"},
+ {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"},
+ {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"},
+ {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"},
+ {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"},
+ {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"},
+ {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"},
+ {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"},
+ {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"},
+ {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"},
+ {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"},
+ {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"},
+ {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"},
+ {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"},
+ {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"},
+ {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"},
+ {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"},
+ {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"},
+ {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"},
+ {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"},
+ {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"},
+ {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"},
+ {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"},
+]
+
+[package.extras]
+protobuf = ["grpcio-tools (>=1.60.1)"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.3"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"},
+ {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"},
+]
+
+[package.dependencies]
+certifi = "*"
+h11 = ">=0.13,<0.15"
+
+[package.extras]
+asyncio = ["anyio (>=4.0,<5.0)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+trio = ["trio (>=0.22.0,<0.24.0)"]
+
+[[package]]
+name = "httptools"
+version = "0.6.1"
+description = "A collection of framework independent HTTP protocol utils."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"},
+ {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"},
+ {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"},
+ {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"},
+ {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"},
+ {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"},
+ {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"},
+ {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"},
+ {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"},
+ {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"},
+ {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"},
+ {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"},
+ {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"},
+ {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"},
+ {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"},
+ {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"},
+ {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"},
+ {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"},
+ {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"},
+ {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"},
+ {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"},
+ {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"},
+ {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"},
+ {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"},
+ {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"},
+ {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"},
+ {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"},
+ {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"},
+ {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"},
+ {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"},
+ {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"},
+ {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"},
+ {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"},
+ {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"},
+ {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"},
+ {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"},
+]
+
+[package.extras]
+test = ["Cython (>=0.29.24,<0.30.0)"]
+
+[[package]]
+name = "httpx"
+version = "0.26.0"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
+ {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
+]
+
+[package.dependencies]
+anyio = "*"
+certifi = "*"
+httpcore = "==1.*"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "huggingface-hub"
+version = "0.20.3"
+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.20.3-py3-none-any.whl", hash = "sha256:d988ae4f00d3e307b0c80c6a05ca6dbb7edba8bba3079f74cda7d9c2e562a7b6"},
+ {file = "huggingface_hub-0.20.3.tar.gz", hash = "sha256:94e7f8e074475fbc67d6a71957b678e1b4a74ff1b64a644fd6cbb83da962d05d"},
+]
+
+[package.dependencies]
+filelock = "*"
+fsspec = ">=2023.5.0"
+packaging = ">=20.9"
+pyyaml = ">=5.1"
+requests = "*"
+tqdm = ">=4.42.1"
+typing-extensions = ">=3.7.4.3"
+
+[package.extras]
+all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "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", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "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"]
+inference = ["aiohttp", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)"]
+quality = ["mypy (==1.5.1)", "ruff (>=0.1.3)"]
+tensorflow = ["graphviz", "pydot", "tensorflow"]
+testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
+torch = ["torch"]
+typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"]
+
+[[package]]
+name = "humanfriendly"
+version = "10.0"
+description = "Human friendly output for text interfaces using Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"},
+ {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"},
+]
+
+[package.dependencies]
+pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""}
+
+[[package]]
+name = "identify"
+version = "2.5.34"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "identify-2.5.34-py2.py3-none-any.whl", hash = "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed"},
+ {file = "identify-2.5.34.tar.gz", hash = "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "importlib-metadata"
+version = "6.11.0"
+description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"},
+ {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"},
+]
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[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"]
+perf = ["ipython"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+
+[[package]]
+name = "importlib-resources"
+version = "6.1.1"
+description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
+ {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "ipykernel"
+version = "6.29.2"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"},
+ {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.10.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
+ {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
+backcall = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+pickleshare = "*"
+prompt-toolkit = ">=3.0.30,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.2"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"},
+ {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.10,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.10,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.7.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
+ {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
+ {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.5"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
+ {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.1.1"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.1.1-py3-none-any.whl", hash = "sha256:fa3e8c18b804eac04e51ceebd9dd3dd396e08106816f0d09cc426799d7087632"},
+ {file = "jupyterlab-4.1.1.tar.gz", hash = "sha256:8acc9f561729d8f32c14c294c397917cddfeeb13a5d46f811979b71b4911a9fd"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+httpx = ">=0.25.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.2.0)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.2.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.1)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post6)", "matplotlib (==3.8.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.0)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.10"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"},
+ {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"},
+]
+
+[[package]]
+name = "kubernetes"
+version = "29.0.0"
+description = "Kubernetes python client"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "kubernetes-29.0.0-py2.py3-none-any.whl", hash = "sha256:ab8cb0e0576ccdfb71886366efb102c6a20f268d817be065ce7f9909c631e43e"},
+ {file = "kubernetes-29.0.0.tar.gz", hash = "sha256:c4812e227ae74d07d53c88293e564e54b850452715a59a927e7e1bc6b9a60459"},
+]
+
+[package.dependencies]
+certifi = ">=14.05.14"
+google-auth = ">=1.0.1"
+oauthlib = ">=3.2.2"
+python-dateutil = ">=2.5.3"
+pyyaml = ">=5.4.1"
+requests = "*"
+requests-oauthlib = "*"
+six = ">=1.9.0"
+urllib3 = ">=1.24.2"
+websocket-client = ">=0.32.0,<0.40.0 || >0.40.0,<0.41.dev0 || >=0.43.dev0"
+
+[package.extras]
+adal = ["adal (>=1.0.2)"]
+
+[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
+description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+]
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.3"
+description = "Interface between LLMs and your data"
+optional = false
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.3-py3-none-any.whl", hash = "sha256:711e2766cb1690a394a209dc6155d1b7a05b44fd6b7e08084d6b96c00bef5dd0"},
+ {file = "llama_index_core-0.10.3.tar.gz", hash = "sha256:5cced2c56bd640311835094fe6946ce6498e6d31dffcdb3df7583ff1aa3861b8"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
+
+[[package]]
+name = "llama-index-embeddings-openai"
+version = "0.1.1"
+description = "llama-index embeddings openai integration"
+optional = false
+python-versions = ">=3.8.1,<3.12"
+files = [
+ {file = "llama_index_embeddings_openai-0.1.1-py3-none-any.whl", hash = "sha256:516a573dc0561e64920f09b61162b72a0bc1a0b1b3dccd02f74609e33cabd362"},
+ {file = "llama_index_embeddings_openai-0.1.1.tar.gz", hash = "sha256:b93d296cb87b2945d60c9e570e2b367711513a239899d2987cb15e11c447c40a"},
+]
+
+[package.dependencies]
+llama-index-core = ">=0.10.1,<0.11.0"
+
+[[package]]
+name = "llama-index-llms-openai"
+version = "0.1.1"
+description = "llama-index llms openai integration"
+optional = false
+python-versions = ">=3.8.1,<3.12"
+files = [
+ {file = "llama_index_llms_openai-0.1.1-py3-none-any.whl", hash = "sha256:4bf677ce6812bbeb5f1130d35aa71ce2eb592cb8a9f158a34d6f6f9a96e8c175"},
+ {file = "llama_index_llms_openai-0.1.1.tar.gz", hash = "sha256:f2241963143715219418436d8cf104a2e75f222bb4c82981a4307942b4e5934b"},
+]
+
+[package.dependencies]
+llama-index-core = ">=0.10.1,<0.11.0"
+
+[[package]]
+name = "llama-index-vector-stores-chroma"
+version = "0.1.1"
+description = "llama-index vector_stores chroma integration"
+optional = false
+python-versions = ">=3.8.1,<3.12"
+files = [
+ {file = "llama_index_vector_stores_chroma-0.1.1-py3-none-any.whl", hash = "sha256:086422e382ff8153bb5140b758685f0f5f5af3571428f1c79a8bba1d32f9c6fc"},
+ {file = "llama_index_vector_stores_chroma-0.1.1.tar.gz", hash = "sha256:c9d15cb71207d9de565865c4db8929f36ad1402512718d2519f3eae9a350fff1"},
+]
+
+[package.dependencies]
+chromadb = ">=0.4.22,<0.5.0"
+llama-index-core = ">=0.10.1,<0.11.0"
+onnxruntime = ">=1.17.0,<2.0.0"
+tokenizers = ">=0.15.1,<0.16.0"
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.20.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
+ {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"]
+docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"]
+lint = ["pre-commit (>=2.4,<4.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "mmh3"
+version = "4.1.0"
+description = "Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions."
+optional = false
+python-versions = "*"
+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"},
+]
+
+[package.extras]
+test = ["mypy (>=1.0)", "pytest (>=7.0.0)"]
+
+[[package]]
+name = "monotonic"
+version = "1.6"
+description = "An implementation of time.monotonic() for Python 2 & < 3.3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"},
+ {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"},
+]
+
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+description = "Python library for arbitrary-precision floating-point arithmetic"
+optional = false
+python-versions = "*"
+files = [
+ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"},
+ {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
+]
+
+[package.extras]
+develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"]
+docs = ["sphinx"]
+gmpy = ["gmpy2 (>=2.1.0a4)"]
+tests = ["pytest (>=4.6)"]
+
+[[package]]
+name = "multidict"
+version = "6.0.5"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[[package]]
+name = "mypy"
+version = "0.991"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
+ {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"},
+ {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"},
+ {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"},
+ {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"},
+ {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"},
+ {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"},
+ {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"},
+ {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"},
+ {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"},
+ {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"},
+ {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"},
+ {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"},
+ {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"},
+ {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"},
+ {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"},
+ {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"},
+ {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"},
+ {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"},
+ {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"},
+ {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"},
+ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
+ {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.4.3"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = ">=3.10"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+python2 = ["typed-ast (>=1.4.0,<2)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.16.0"
+description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"},
+ {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "nltk"
+version = "3.8.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
+ {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "nodeenv"
+version = "1.8.0"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+files = [
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+]
+
+[package.dependencies]
+setuptools = "*"
+
+[[package]]
+name = "notebook"
+version = "7.1.0"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.1.0-py3-none-any.whl", hash = "sha256:a8fa4ccb5e5fe220f29d9900337efd7752bc6f2efe004d6f320db01f7743adc9"},
+ {file = "notebook-7.1.0.tar.gz", hash = "sha256:99caf01ff166b1cc86355c9b37c1ba9bf566c1d7fc4ab57bb6f8f24e36c4260e"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.1.1,<4.2"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.24.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
+ {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
+ {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
+ {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
+ {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
+ {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
+ {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
+ {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
+ {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
+ {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
+ {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
+]
+
+[[package]]
+name = "oauthlib"
+version = "3.2.2"
+description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"},
+ {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"},
+]
+
+[package.extras]
+rsa = ["cryptography (>=3.0.0)"]
+signals = ["blinker (>=1.4.0)"]
+signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
+
+[[package]]
+name = "onnxruntime"
+version = "1.17.0"
+description = "ONNX Runtime is a runtime accelerator for Machine Learning models"
+optional = false
+python-versions = "*"
+files = [
+ {file = "onnxruntime-1.17.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d2b22a25a94109cc983443116da8d9805ced0256eb215c5e6bc6dcbabefeab96"},
+ {file = "onnxruntime-1.17.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4c87d83c6f58d1af2675fc99e3dc810f2dbdb844bcefd0c1b7573632661f6fc"},
+ {file = "onnxruntime-1.17.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dba55723bf9b835e358f48c98a814b41692c393eb11f51e02ece0625c756b797"},
+ {file = "onnxruntime-1.17.0-cp310-cp310-win32.whl", hash = "sha256:ee48422349cc500273beea7607e33c2237909f58468ae1d6cccfc4aecd158565"},
+ {file = "onnxruntime-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f34cc46553359293854e38bdae2ab1be59543aad78a6317e7746d30e311110c3"},
+ {file = "onnxruntime-1.17.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:16d26badd092c8c257fa57c458bb600d96dc15282c647ccad0ed7b2732e6c03b"},
+ {file = "onnxruntime-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6f1273bebcdb47ed932d076c85eb9488bc4768fcea16d5f2747ca692fad4f9d3"},
+ {file = "onnxruntime-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cb60fd3c2c1acd684752eb9680e89ae223e9801a9b0e0dc7b28adabe45a2e380"},
+ {file = "onnxruntime-1.17.0-cp311-cp311-win32.whl", hash = "sha256:4b038324586bc905299e435f7c00007e6242389c856b82fe9357fdc3b1ef2bdc"},
+ {file = "onnxruntime-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:93d39b3fa1ee01f034f098e1c7769a811a21365b4883f05f96c14a2b60c6028b"},
+ {file = "onnxruntime-1.17.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:90c0890e36f880281c6c698d9bc3de2afbeee2f76512725ec043665c25c67d21"},
+ {file = "onnxruntime-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7466724e809a40e986b1637cba156ad9fc0d1952468bc00f79ef340bc0199552"},
+ {file = "onnxruntime-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d47bee7557a8b99c8681b6882657a515a4199778d6d5e24e924d2aafcef55b0a"},
+ {file = "onnxruntime-1.17.0-cp312-cp312-win32.whl", hash = "sha256:bb1bf1ee575c665b8bbc3813ab906e091a645a24ccc210be7932154b8260eca1"},
+ {file = "onnxruntime-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:ac2f286da3494b29b4186ca193c7d4e6a2c1f770c4184c7192c5da142c3dec28"},
+ {file = "onnxruntime-1.17.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1ec485643b93e0a3896c655eb2426decd63e18a278bb7ccebc133b340723624f"},
+ {file = "onnxruntime-1.17.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83c35809cda898c5a11911c69ceac8a2ac3925911854c526f73bad884582f911"},
+ {file = "onnxruntime-1.17.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fa464aa4d81df818375239e481887b656e261377d5b6b9a4692466f5f3261edc"},
+ {file = "onnxruntime-1.17.0-cp38-cp38-win32.whl", hash = "sha256:b7b337cd0586f7836601623cbd30a443df9528ef23965860d11c753ceeb009f2"},
+ {file = "onnxruntime-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:fbb9faaf51d01aa2c147ef52524d9326744c852116d8005b9041809a71838878"},
+ {file = "onnxruntime-1.17.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5a06ab84eaa350bf64b1d747b33ccf10da64221ed1f38f7287f15eccbec81603"},
+ {file = "onnxruntime-1.17.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d3d11db2c8242766212a68d0b139745157da7ce53bd96ba349a5c65e5a02357"},
+ {file = "onnxruntime-1.17.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5632077c3ab8b0cd4f74b0af9c4e924be012b1a7bcd7daa845763c6c6bf14b7d"},
+ {file = "onnxruntime-1.17.0-cp39-cp39-win32.whl", hash = "sha256:61a12732cba869b3ad2d4e29ab6cb62c7a96f61b8c213f7fcb961ba412b70b37"},
+ {file = "onnxruntime-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:461fa0fc7d9c392c352b6cccdedf44d818430f3d6eacd924bb804fdea2dcfd02"},
+]
+
+[package.dependencies]
+coloredlogs = "*"
+flatbuffers = "*"
+numpy = ">=1.21.6"
+packaging = "*"
+protobuf = "*"
+sympy = "*"
+
+[[package]]
+name = "openai"
+version = "1.12.0"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.12.0-py3-none-any.whl", hash = "sha256:a54002c814e05222e413664f651b5916714e4700d041d5cf5724d3ae1a3e3481"},
+ {file = "openai-1.12.0.tar.gz", hash = "sha256:99c5d257d09ea6533d689d1cc77caa0ac679fa21efef8893d8b0832a86877f1b"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.7,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "opentelemetry-api"
+version = "1.22.0"
+description = "OpenTelemetry Python API"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_api-1.22.0-py3-none-any.whl", hash = "sha256:43621514301a7e9f5d06dd8013a1b450f30c2e9372b8e30aaeb4562abf2ce034"},
+ {file = "opentelemetry_api-1.22.0.tar.gz", hash = "sha256:15ae4ca925ecf9cfdfb7a709250846fbb08072260fca08ade78056c502b86bed"},
+]
+
+[package.dependencies]
+deprecated = ">=1.2.6"
+importlib-metadata = ">=6.0,<7.0"
+
+[[package]]
+name = "opentelemetry-exporter-otlp-proto-common"
+version = "1.22.0"
+description = "OpenTelemetry Protobuf encoding"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_exporter_otlp_proto_common-1.22.0-py3-none-any.whl", hash = "sha256:3f2538bec5312587f8676c332b3747f54c89fe6364803a807e217af4603201fa"},
+ {file = "opentelemetry_exporter_otlp_proto_common-1.22.0.tar.gz", hash = "sha256:71ae2f81bc6d6fe408d06388826edc8933759b2ca3a97d24054507dc7cfce52d"},
+]
+
+[package.dependencies]
+backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""}
+opentelemetry-proto = "1.22.0"
+
+[[package]]
+name = "opentelemetry-exporter-otlp-proto-grpc"
+version = "1.22.0"
+description = "OpenTelemetry Collector Protobuf over gRPC Exporter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_exporter_otlp_proto_grpc-1.22.0-py3-none-any.whl", hash = "sha256:b5bcadc129272004316a455e9081216d3380c1fc2231a928ea6a70aa90e173fb"},
+ {file = "opentelemetry_exporter_otlp_proto_grpc-1.22.0.tar.gz", hash = "sha256:1e0e5aa4bbabc74942f06f268deffd94851d12a8dc30b02527472ef1729fe5b1"},
+]
+
+[package.dependencies]
+backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""}
+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.22.0"
+opentelemetry-proto = "1.22.0"
+opentelemetry-sdk = ">=1.22.0,<1.23.0"
+
+[package.extras]
+test = ["pytest-grpc"]
+
+[[package]]
+name = "opentelemetry-instrumentation"
+version = "0.43b0"
+description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_instrumentation-0.43b0-py3-none-any.whl", hash = "sha256:0ff1334d7e359e27640e9d420024efeb73eacae464309c2e14ede7ba6c93967e"},
+ {file = "opentelemetry_instrumentation-0.43b0.tar.gz", hash = "sha256:c3755da6c4be8033be0216d0501e11f4832690f4e2eca5a3576fbf113498f0f6"},
+]
+
+[package.dependencies]
+opentelemetry-api = ">=1.4,<2.0"
+setuptools = ">=16.0"
+wrapt = ">=1.0.0,<2.0.0"
+
+[[package]]
+name = "opentelemetry-instrumentation-asgi"
+version = "0.43b0"
+description = "ASGI instrumentation for OpenTelemetry"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_instrumentation_asgi-0.43b0-py3-none-any.whl", hash = "sha256:1f593829fa039e9367820736fb063e92acd15c25b53d7bcb5d319971b8e93fd7"},
+ {file = "opentelemetry_instrumentation_asgi-0.43b0.tar.gz", hash = "sha256:3f6f19333dca31ef696672e4e36cb1c2613c71dc7e847c11ff36a37e1130dadc"},
+]
+
+[package.dependencies]
+asgiref = ">=3.0,<4.0"
+opentelemetry-api = ">=1.12,<2.0"
+opentelemetry-instrumentation = "0.43b0"
+opentelemetry-semantic-conventions = "0.43b0"
+opentelemetry-util-http = "0.43b0"
+
+[package.extras]
+instruments = ["asgiref (>=3.0,<4.0)"]
+test = ["opentelemetry-instrumentation-asgi[instruments]", "opentelemetry-test-utils (==0.43b0)"]
+
+[[package]]
+name = "opentelemetry-instrumentation-fastapi"
+version = "0.43b0"
+description = "OpenTelemetry FastAPI Instrumentation"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_instrumentation_fastapi-0.43b0-py3-none-any.whl", hash = "sha256:b79c044df68a52e07b35fa12a424e7cc0dd27ff0a171c5fdcc41dea9de8fc938"},
+ {file = "opentelemetry_instrumentation_fastapi-0.43b0.tar.gz", hash = "sha256:2afaaf470622e1a2732182c68f6d2431ffe5e026a7edacd0f83605632b66347f"},
+]
+
+[package.dependencies]
+opentelemetry-api = ">=1.12,<2.0"
+opentelemetry-instrumentation = "0.43b0"
+opentelemetry-instrumentation-asgi = "0.43b0"
+opentelemetry-semantic-conventions = "0.43b0"
+opentelemetry-util-http = "0.43b0"
+
+[package.extras]
+instruments = ["fastapi (>=0.58,<1.0)"]
+test = ["httpx (>=0.22,<1.0)", "opentelemetry-instrumentation-fastapi[instruments]", "opentelemetry-test-utils (==0.43b0)", "requests (>=2.23,<3.0)"]
+
+[[package]]
+name = "opentelemetry-proto"
+version = "1.22.0"
+description = "OpenTelemetry Python Proto"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_proto-1.22.0-py3-none-any.whl", hash = "sha256:ce7188d22c75b6d0fe53e7fb58501613d0feade5139538e79dedd9420610fa0c"},
+ {file = "opentelemetry_proto-1.22.0.tar.gz", hash = "sha256:9ec29169286029f17ca34ec1f3455802ffb90131642d2f545ece9a63e8f69003"},
+]
+
+[package.dependencies]
+protobuf = ">=3.19,<5.0"
+
+[[package]]
+name = "opentelemetry-sdk"
+version = "1.22.0"
+description = "OpenTelemetry Python SDK"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_sdk-1.22.0-py3-none-any.whl", hash = "sha256:a730555713d7c8931657612a88a141e3a4fe6eb5523d9e2d5a8b1e673d76efa6"},
+ {file = "opentelemetry_sdk-1.22.0.tar.gz", hash = "sha256:45267ac1f38a431fc2eb5d6e0c0d83afc0b78de57ac345488aa58c28c17991d0"},
+]
+
+[package.dependencies]
+opentelemetry-api = "1.22.0"
+opentelemetry-semantic-conventions = "0.43b0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "opentelemetry-semantic-conventions"
+version = "0.43b0"
+description = "OpenTelemetry Semantic Conventions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_semantic_conventions-0.43b0-py3-none-any.whl", hash = "sha256:291284d7c1bf15fdaddf309b3bd6d3b7ce12a253cec6d27144439819a15d8445"},
+ {file = "opentelemetry_semantic_conventions-0.43b0.tar.gz", hash = "sha256:b9576fb890df479626fa624e88dde42d3d60b8b6c8ae1152ad157a8b97358635"},
+]
+
+[[package]]
+name = "opentelemetry-util-http"
+version = "0.43b0"
+description = "Web util for OpenTelemetry"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_util_http-0.43b0-py3-none-any.whl", hash = "sha256:f25a820784b030f6cb86b3d76e5676c769b75ed3f55a210bcdae0a5e175ebadb"},
+ {file = "opentelemetry_util_http-0.43b0.tar.gz", hash = "sha256:3ff6ab361dbe99fc81200d625603c0fb890c055c6e416a3e6d661ddf47a6c7f7"},
+]
+
+[[package]]
+name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.0.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.1"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
+aws = ["s3fs (>=2021.08.0)"]
+clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
+compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
+computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2021.07.0)"]
+gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"]
+hdf5 = ["tables (>=3.6.1)"]
+html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"]
+mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
+spss = ["pyreadstat (>=1.1.2)"]
+sql-other = ["SQLAlchemy (>=1.4.16)"]
+test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.6.3)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pathspec"
+version = "0.12.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
+]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+
+[[package]]
+name = "platformdirs"
+version = "4.2.0"
+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.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+ {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+]
+
+[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)"]
+
+[[package]]
+name = "pluggy"
+version = "1.4.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+ {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "posthog"
+version = "3.4.1"
+description = "Integrate PostHog into any python application."
+optional = false
+python-versions = "*"
+files = [
+ {file = "posthog-3.4.1-py2.py3-none-any.whl", hash = "sha256:8f9e01fc223d113ad1b7fc66516bd2b7b745cb460802b757795d4cec16d91696"},
+ {file = "posthog-3.4.1.tar.gz", hash = "sha256:cbdae309e65172dcb7b921c611914139eb46a8a8f38266c2b51d78b60582af9d"},
+]
+
+[package.dependencies]
+backoff = ">=1.10.0"
+monotonic = ">=1.5"
+python-dateutil = ">2.1"
+requests = ">=2.7,<3.0"
+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"]
+
+[[package]]
+name = "pre-commit"
+version = "3.2.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
+ {file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
+[[package]]
+name = "prometheus-client"
+version = "0.20.0"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"},
+ {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "protobuf"
+version = "4.25.2"
+description = ""
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"},
+ {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"},
+ {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"},
+ {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"},
+ {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"},
+ {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"},
+ {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"},
+ {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"},
+ {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"},
+ {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"},
+ {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"},
+]
+
+[[package]]
+name = "psutil"
+version = "5.9.8"
+description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"},
+ {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"},
+ {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"},
+ {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"},
+ {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"},
+ {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"},
+ {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"},
+ {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"},
+ {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
+ {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pulsar-client"
+version = "3.4.0"
+description = "Apache Pulsar Python client library"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pulsar_client-3.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ebf99db5244ff69479283b25621b070492acc4bb643d162d86b90387cb6fdb2a"},
+ {file = "pulsar_client-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6cb5d8e1482a8aea758633be23717e0c4bb7dc53784e37915c0048c0382f134"},
+ {file = "pulsar_client-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a7592e42c76034e9a8d64d42dd5bab361425f869de562e9ccad698e19cd88"},
+ {file = "pulsar_client-3.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5963090a78a5644ba25f41da3a6d49ea3f00c972b095baff365916dc246426a"},
+ {file = "pulsar_client-3.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:419cdcf577f755e3f31bf264300d9ba158325edb2ee9cee555d81ba1909c094e"},
+ {file = "pulsar_client-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:4c93c35ee97307dae153e748b33dcd3d4f06da34bca373321aa2df73f1535705"},
+ {file = "pulsar_client-3.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:11952fb022ee72debf53b169f4482f9dc5c890be0149ae98779864b3a21f1bd3"},
+ {file = "pulsar_client-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8743c320aa96798d20cafa98ea97a68c4295fc4872c23acd5e012fd36cb06ba"},
+ {file = "pulsar_client-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33571de99cd898349f17978ba62e2b839ea0275fb7067f31bf5f6ebfeae0987d"},
+ {file = "pulsar_client-3.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a60c03c3e70f018538e7cd3fa84d95e283b610272b744166dbc48960a809fa07"},
+ {file = "pulsar_client-3.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c47041267b5843ffec54352d842156c279945f3e976d7025ffa89875ff76390"},
+ {file = "pulsar_client-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:49fe4ab04004b476c87ab3ad22fe87346fca564a3e3ca9c0ac58fee45a895d81"},
+ {file = "pulsar_client-3.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:1e077a4839be3ead3de3f05b4c244269dca2df07f47cea0b90544c7e9dc1642f"},
+ {file = "pulsar_client-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f202b84e1f683d64672dd1971114600ae2e5c3735587286ff9bfb431385f08e8"},
+ {file = "pulsar_client-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c606c04f357341042fa6c75477de7d2204f7ae50aa29c2f74b24e54c85f47f96"},
+ {file = "pulsar_client-3.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c67b25ede3a578f5a7dc30230e52609ef38191f74b47e5cbdbc98c42df556927"},
+ {file = "pulsar_client-3.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b7f8211cc9460cdf4d06e4e1cb878689d2aa4a7e4027bd2a2f1419a79ade16a6"},
+ {file = "pulsar_client-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:c5399e9780d6951c69808c0b6175311a966af82fb08addf6e741ae37b1bee7ef"},
+ {file = "pulsar_client-3.4.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:a2d6c850b60106dc915d3476a490fba547c6748a5f742b68abd30d1a35355b82"},
+ {file = "pulsar_client-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a52ea8294a9f30eb6f0a2db5dc16e3aad7ff2284f818c48ad3a6b601723be02b"},
+ {file = "pulsar_client-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eeeede40108be12222e009285c971e5b8f6433d9f0f8ef934d6a131585921c4"},
+ {file = "pulsar_client-3.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9409066c600f2b6f220552c5dfe08aeeabcf07fe0e76367aa5816b2e87a5cf72"},
+ {file = "pulsar_client-3.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:58e2f886e6dab43e66c3ce990fe96209e55ab46350506829a637b77b74125fb9"},
+ {file = "pulsar_client-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:b57dfa5063b0d9dc7664896c55605eac90753e35e80db5a959d3be2be0ab0d48"},
+ {file = "pulsar_client-3.4.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:7704c664aa2c801af4c2d3a58e9d8ffaeef12ce8a0f71712e9187f9a96da856f"},
+ {file = "pulsar_client-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0364db563e27442053bdbb8655e7ffb420f491690bc2c78da5a58bd35c658ad"},
+ {file = "pulsar_client-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3e34de19e0744d8aa3538cb2172076bccd0761b3e94ebadb7bd59765ae3d1ed"},
+ {file = "pulsar_client-3.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:dc8be41dec8cb052fb1837550f495e9b73a8b3cf85e07157904ec84832758a65"},
+ {file = "pulsar_client-3.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b49d669bed15b7edb9c936704310d57808f1d01c511b94d866f54fe8ffe1752d"},
+ {file = "pulsar_client-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:88c93e5fbfc349f3967e931f7a908d15fd4fd725ebdd842423ac9cd961fe293f"},
+]
+
+[package.dependencies]
+certifi = "*"
+
+[package.extras]
+all = ["apache-bookkeeper-client (>=4.16.1)", "fastavro (>=1.9.2)", "grpcio (>=1.60.0)", "prometheus-client", "protobuf (>=3.6.1,<=3.20.3)", "ratelimit"]
+avro = ["fastavro (>=1.9.2)"]
+functions = ["apache-bookkeeper-client (>=4.16.1)", "grpcio (>=1.60.0)", "prometheus-client", "protobuf (>=3.6.1,<=3.20.3)", "ratelimit"]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pyasn1"
+version = "0.5.1"
+description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
+files = [
+ {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"},
+ {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"},
+]
+
+[[package]]
+name = "pyasn1-modules"
+version = "0.3.0"
+description = "A collection of ASN.1-based protocols modules"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
+files = [
+ {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"},
+ {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"},
+]
+
+[package.dependencies]
+pyasn1 = ">=0.4.6,<0.6.0"
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pydantic"
+version = "2.6.1"
+description = "Data validation using Python type hints"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"},
+ {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"},
+]
+
+[package.dependencies]
+annotated-types = ">=0.4.0"
+pydantic-core = "2.16.2"
+typing-extensions = ">=4.6.1"
+
+[package.extras]
+email = ["email-validator (>=2.0.0)"]
+
+[[package]]
+name = "pydantic-core"
+version = "2.16.2"
+description = ""
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"},
+ {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"},
+ {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"},
+ {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"},
+ {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"},
+ {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"},
+ {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"},
+ {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"},
+ {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"},
+ {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pylint"
+version = "2.15.10"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
+ {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+]
+
+[package.dependencies]
+astroid = ">=2.12.13,<=2.14.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = [
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+]
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+tomlkit = ">=0.10.1"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pypika"
+version = "0.48.9"
+description = "A SQL query builder API for Python"
+optional = false
+python-versions = "*"
+files = [
+ {file = "PyPika-0.48.9.tar.gz", hash = "sha256:838836a61747e7c8380cd1b7ff638694b7a7335345d0f559b04b2cd832ad5378"},
+]
+
+[[package]]
+name = "pyproject-hooks"
+version = "1.0.0"
+description = "Wrappers to call pyproject.toml-based build backend hooks."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pyproject_hooks-1.0.0-py3-none-any.whl", hash = "sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8"},
+ {file = "pyproject_hooks-1.0.0.tar.gz", hash = "sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5"},
+]
+
+[package.dependencies]
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "pyreadline3"
+version = "3.4.1"
+description = "A python implementation of GNU readline."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"},
+ {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"},
+]
+
+[[package]]
+name = "pytest"
+version = "7.2.1"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
+ {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
+]
+
+[package.dependencies]
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-mock"
+version = "3.11.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
+ {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+]
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[package.extras]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-dotenv"
+version = "1.0.1"
+description = "Read key-value pairs from a .env file and set them as environment variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"},
+ {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"},
+]
+
+[package.extras]
+cli = ["click (>=5.0)"]
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2024.1"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
+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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {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"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "referencing"
+version = "0.33.0"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"},
+ {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "regex"
+version = "2023.12.25"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
+ {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
+ {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
+ {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
+ {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
+ {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
+ {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
+ {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
+ {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
+ {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
+ {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
+ {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
+ {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
+ {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
+ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
+]
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "requests-oauthlib"
+version = "1.3.1"
+description = "OAuthlib authentication support for Requests."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"},
+ {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"},
+]
+
+[package.dependencies]
+oauthlib = ">=3.0.0"
+requests = ">=2.0.0"
+
+[package.extras]
+rsa = ["oauthlib[signedtoken] (>=3.0.0)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.18.0"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
+ {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
+ {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
+ {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
+ {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
+ {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
+ {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
+ {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
+ {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
+ {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
+ {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
+ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
+]
+
+[[package]]
+name = "rsa"
+version = "4.9"
+description = "Pure-Python RSA implementation"
+optional = false
+python-versions = ">=3.6,<4"
+files = [
+ {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"},
+ {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"},
+]
+
+[package.dependencies]
+pyasn1 = ">=0.1.3"
+
+[[package]]
+name = "ruff"
+version = "0.0.292"
+description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
+ {file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_i686.whl", hash = "sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016"},
+ {file = "ruff-0.0.292-py3-none-win32.whl", hash = "sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003"},
+ {file = "ruff-0.0.292-py3-none-win_amd64.whl", hash = "sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c"},
+ {file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
+ {file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
+]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "setuptools"
+version = "69.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
+ {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+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"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.27"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"},
+ {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"},
+ {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "starlette"
+version = "0.36.3"
+description = "The little ASGI library that shines."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"},
+ {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"},
+]
+
+[package.dependencies]
+anyio = ">=3.4.0,<5"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
+
+[[package]]
+name = "sympy"
+version = "1.12"
+description = "Computer algebra system (CAS) in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"},
+ {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"},
+]
+
+[package.dependencies]
+mpmath = ">=0.19"
+
+[[package]]
+name = "tenacity"
+version = "8.2.3"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
+ {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx", "tornado (>=4.5)"]
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "tiktoken"
+version = "0.6.0"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"},
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"},
+ {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"},
+ {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"},
+ {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"},
+ {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"},
+ {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"},
+]
+
+[package.dependencies]
+regex = ">=2022.1.18"
+requests = ">=2.26.0"
+
+[package.extras]
+blobfile = ["blobfile (>=2)"]
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
+description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
+ {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.15.2"
+description = ""
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tokenizers-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:52f6130c9cbf70544287575a985bf44ae1bda2da7e8c24e97716080593638012"},
+ {file = "tokenizers-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:054c1cc9c6d68f7ffa4e810b3d5131e0ba511b6e4be34157aa08ee54c2f8d9ee"},
+ {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9b9b070fdad06e347563b88c278995735292ded1132f8657084989a4c84a6d5"},
+ {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea621a7eef4b70e1f7a4e84dd989ae3f0eeb50fc8690254eacc08acb623e82f1"},
+ {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf7fd9a5141634fa3aa8d6b7be362e6ae1b4cda60da81388fa533e0b552c98fd"},
+ {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44f2a832cd0825295f7179eaf173381dc45230f9227ec4b44378322d900447c9"},
+ {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b9ec69247a23747669ec4b0ca10f8e3dfb3545d550258129bd62291aabe8605"},
+ {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b6a4c78da863ff26dbd5ad9a8ecc33d8a8d97b535172601cf00aee9d7ce9ce"},
+ {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5ab2a4d21dcf76af60e05af8063138849eb1d6553a0d059f6534357bce8ba364"},
+ {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a47acfac7e511f6bbfcf2d3fb8c26979c780a91e06fb5b9a43831b2c0153d024"},
+ {file = "tokenizers-0.15.2-cp310-none-win32.whl", hash = "sha256:064ff87bb6acdbd693666de9a4b692add41308a2c0ec0770d6385737117215f2"},
+ {file = "tokenizers-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3b919afe4df7eb6ac7cafd2bd14fb507d3f408db7a68c43117f579c984a73843"},
+ {file = "tokenizers-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:89cd1cb93e4b12ff39bb2d626ad77e35209de9309a71e4d3d4672667b4b256e7"},
+ {file = "tokenizers-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cfed5c64e5be23d7ee0f0e98081a25c2a46b0b77ce99a4f0605b1ec43dd481fa"},
+ {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a907d76dcfda37023ba203ab4ceeb21bc5683436ebefbd895a0841fd52f6f6f2"},
+ {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20ea60479de6fc7b8ae756b4b097572372d7e4032e2521c1bbf3d90c90a99ff0"},
+ {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:48e2b9335be2bc0171df9281385c2ed06a15f5cf121c44094338306ab7b33f2c"},
+ {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:112a1dd436d2cc06e6ffdc0b06d55ac019a35a63afd26475205cb4b1bf0bfbff"},
+ {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4620cca5c2817177ee8706f860364cc3a8845bc1e291aaf661fb899e5d1c45b0"},
+ {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccd73a82751c523b3fc31ff8194702e4af4db21dc20e55b30ecc2079c5d43cb7"},
+ {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:107089f135b4ae7817affe6264f8c7a5c5b4fd9a90f9439ed495f54fcea56fb4"},
+ {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0ff110ecc57b7aa4a594396525a3451ad70988e517237fe91c540997c4e50e29"},
+ {file = "tokenizers-0.15.2-cp311-none-win32.whl", hash = "sha256:6d76f00f5c32da36c61f41c58346a4fa7f0a61be02f4301fd30ad59834977cc3"},
+ {file = "tokenizers-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:cc90102ed17271cf0a1262babe5939e0134b3890345d11a19c3145184b706055"},
+ {file = "tokenizers-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f86593c18d2e6248e72fb91c77d413a815153b8ea4e31f7cd443bdf28e467670"},
+ {file = "tokenizers-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0774bccc6608eca23eb9d620196687c8b2360624619623cf4ba9dc9bd53e8b51"},
+ {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d0222c5b7c9b26c0b4822a82f6a7011de0a9d3060e1da176f66274b70f846b98"},
+ {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3835738be1de66624fff2f4f6f6684775da4e9c00bde053be7564cbf3545cc66"},
+ {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0143e7d9dcd811855c1ce1ab9bf5d96d29bf5e528fd6c7824d0465741e8c10fd"},
+ {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db35825f6d54215f6b6009a7ff3eedee0848c99a6271c870d2826fbbedf31a38"},
+ {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f5e64b0389a2be47091d8cc53c87859783b837ea1a06edd9d8e04004df55a5c"},
+ {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0480c452217edd35eca56fafe2029fb4d368b7c0475f8dfa3c5c9c400a7456"},
+ {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a33ab881c8fe70474980577e033d0bc9a27b7ab8272896e500708b212995d834"},
+ {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a308a607ca9de2c64c1b9ba79ec9a403969715a1b8ba5f998a676826f1a7039d"},
+ {file = "tokenizers-0.15.2-cp312-none-win32.whl", hash = "sha256:b8fcfa81bcb9447df582c5bc96a031e6df4da2a774b8080d4f02c0c16b42be0b"},
+ {file = "tokenizers-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:38d7ab43c6825abfc0b661d95f39c7f8af2449364f01d331f3b51c94dcff7221"},
+ {file = "tokenizers-0.15.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:38bfb0204ff3246ca4d5e726e8cc8403bfc931090151e6eede54d0e0cf162ef0"},
+ {file = "tokenizers-0.15.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c861d35e8286a53e06e9e28d030b5a05bcbf5ac9d7229e561e53c352a85b1fc"},
+ {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:936bf3842db5b2048eaa53dade907b1160f318e7c90c74bfab86f1e47720bdd6"},
+ {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:620beacc3373277700d0e27718aa8b25f7b383eb8001fba94ee00aeea1459d89"},
+ {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2735ecbbf37e52db4ea970e539fd2d450d213517b77745114f92867f3fc246eb"},
+ {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:473c83c5e2359bb81b0b6fde870b41b2764fcdd36d997485e07e72cc3a62264a"},
+ {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968fa1fb3c27398b28a4eca1cbd1e19355c4d3a6007f7398d48826bbe3a0f728"},
+ {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:865c60ae6eaebdde7da66191ee9b7db52e542ed8ee9d2c653b6d190a9351b980"},
+ {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7c0d8b52664ab2d4a8d6686eb5effc68b78608a9008f086a122a7b2996befbab"},
+ {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f33dfbdec3784093a9aebb3680d1f91336c56d86cc70ddf88708251da1fe9064"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d44ba80988ff9424e33e0a49445072ac7029d8c0e1601ad25a0ca5f41ed0c1d6"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:dce74266919b892f82b1b86025a613956ea0ea62a4843d4c4237be2c5498ed3a"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0ef06b9707baeb98b316577acb04f4852239d856b93e9ec3a299622f6084e4be"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73e2e74bbb07910da0d37c326869f34113137b23eadad3fc00856e6b3d9930c"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eeb12daf02a59e29f578a865f55d87cd103ce62bd8a3a5874f8fdeaa82e336b"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ba9f6895af58487ca4f54e8a664a322f16c26bbb442effd01087eba391a719e"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccec77aa7150e38eec6878a493bf8c263ff1fa8a62404e16c6203c64c1f16a26"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f40604f5042ff210ba82743dda2b6aa3e55aa12df4e9f2378ee01a17e2855e"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5645938a42d78c4885086767c70923abad047163d809c16da75d6b290cb30bbe"},
+ {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:05a77cbfebe28a61ab5c3891f9939cc24798b63fa236d84e5f29f3a85a200c00"},
+ {file = "tokenizers-0.15.2-cp37-none-win32.whl", hash = "sha256:361abdc068e8afe9c5b818769a48624687fb6aaed49636ee39bec4e95e1a215b"},
+ {file = "tokenizers-0.15.2-cp37-none-win_amd64.whl", hash = "sha256:7ef789f83eb0f9baeb4d09a86cd639c0a5518528f9992f38b28e819df397eb06"},
+ {file = "tokenizers-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4fe1f74a902bee74a3b25aff180fbfbf4f8b444ab37c4d496af7afd13a784ed2"},
+ {file = "tokenizers-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c4b89038a684f40a6b15d6b09f49650ac64d951ad0f2a3ea9169687bbf2a8ba"},
+ {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d05a1b06f986d41aed5f2de464c003004b2df8aaf66f2b7628254bcbfb72a438"},
+ {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508711a108684111ec8af89d3a9e9e08755247eda27d0ba5e3c50e9da1600f6d"},
+ {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:daa348f02d15160cb35439098ac96e3a53bacf35885072611cd9e5be7d333daa"},
+ {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:494fdbe5932d3416de2a85fc2470b797e6f3226c12845cadf054dd906afd0442"},
+ {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2d60f5246f4da9373f75ff18d64c69cbf60c3bca597290cea01059c336d2470"},
+ {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93268e788825f52de4c7bdcb6ebc1fcd4a5442c02e730faa9b6b08f23ead0e24"},
+ {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6fc7083ab404019fc9acafe78662c192673c1e696bd598d16dc005bd663a5cf9"},
+ {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:41e39b41e5531d6b2122a77532dbea60e171ef87a3820b5a3888daa847df4153"},
+ {file = "tokenizers-0.15.2-cp38-none-win32.whl", hash = "sha256:06cd0487b1cbfabefb2cc52fbd6b1f8d4c37799bd6c6e1641281adaa6b2504a7"},
+ {file = "tokenizers-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:5179c271aa5de9c71712e31cb5a79e436ecd0d7532a408fa42a8dbfa4bc23fd9"},
+ {file = "tokenizers-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82f8652a74cc107052328b87ea8b34291c0f55b96d8fb261b3880216a9f9e48e"},
+ {file = "tokenizers-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02458bee6f5f3139f1ebbb6d042b283af712c0981f5bc50edf771d6b762d5e4f"},
+ {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c9a09cd26cca2e1c349f91aa665309ddb48d71636370749414fbf67bc83c5343"},
+ {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158be8ea8554e5ed69acc1ce3fbb23a06060bd4bbb09029431ad6b9a466a7121"},
+ {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ddba9a2b0c8c81633eca0bb2e1aa5b3a15362b1277f1ae64176d0f6eba78ab1"},
+ {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ef5dd1d39797044642dbe53eb2bc56435308432e9c7907728da74c69ee2adca"},
+ {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:454c203164e07a860dbeb3b1f4a733be52b0edbb4dd2e5bd75023ffa8b49403a"},
+ {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cf6b7f1d4dc59af960e6ffdc4faffe6460bbfa8dce27a58bf75755ffdb2526d"},
+ {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2ef09bbc16519f6c25d0c7fc0c6a33a6f62923e263c9d7cca4e58b8c61572afb"},
+ {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c9a2ebdd2ad4ec7a68e7615086e633857c85e2f18025bd05d2a4399e6c5f7169"},
+ {file = "tokenizers-0.15.2-cp39-none-win32.whl", hash = "sha256:918fbb0eab96fe08e72a8c2b5461e9cce95585d82a58688e7f01c2bd546c79d0"},
+ {file = "tokenizers-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:524e60da0135e106b254bd71f0659be9f89d83f006ea9093ce4d1fab498c6d0d"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6a9b648a58281c4672212fab04e60648fde574877d0139cd4b4f93fe28ca8944"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7c7d18b733be6bbca8a55084027f7be428c947ddf871c500ee603e375013ffba"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:13ca3611de8d9ddfbc4dc39ef54ab1d2d4aaa114ac8727dfdc6a6ec4be017378"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:237d1bf3361cf2e6463e6c140628e6406766e8b27274f5fcc62c747ae3c6f094"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67a0fe1e49e60c664915e9fb6b0cb19bac082ab1f309188230e4b2920230edb3"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4e022fe65e99230b8fd89ebdfea138c24421f91c1a4f4781a8f5016fd5cdfb4d"},
+ {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d857be2df69763362ac699f8b251a8cd3fac9d21893de129bc788f8baaef2693"},
+ {file = "tokenizers-0.15.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:708bb3e4283177236309e698da5fcd0879ce8fd37457d7c266d16b550bcbbd18"},
+ {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c35e09e9899b72a76e762f9854e8750213f67567787d45f37ce06daf57ca78"},
+ {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1257f4394be0d3b00de8c9e840ca5601d0a4a8438361ce9c2b05c7d25f6057b"},
+ {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02272fe48280e0293a04245ca5d919b2c94a48b408b55e858feae9618138aeda"},
+ {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dc3ad9ebc76eabe8b1d7c04d38be884b8f9d60c0cdc09b0aa4e3bcf746de0388"},
+ {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:32e16bdeffa7c4f46bf2152172ca511808b952701d13e7c18833c0b73cb5c23f"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fb16ba563d59003028b678d2361a27f7e4ae0ab29c7a80690efa20d829c81fdb"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2277c36d2d6cdb7876c274547921a42425b6810d38354327dd65a8009acf870c"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cf75d32e8d250781940d07f7eece253f2fe9ecdb1dc7ba6e3833fa17b82fcbc"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b3b31884dc8e9b21508bb76da80ebf7308fdb947a17affce815665d5c4d028"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10122d8d8e30afb43bb1fe21a3619f62c3e2574bff2699cf8af8b0b6c5dc4a3"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d88b96ff0fe8e91f6ef01ba50b0d71db5017fa4e3b1d99681cec89a85faf7bf7"},
+ {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:37aaec5a52e959892870a7c47cef80c53797c0db9149d458460f4f31e2fb250e"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2ea752f2b0fe96eb6e2f3adbbf4d72aaa1272079b0dfa1145507bd6a5d537e6"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b19a808d8799fda23504a5cd31d2f58e6f52f140380082b352f877017d6342b"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c86e5e068ac8b19204419ed8ca90f9d25db20578f5881e337d203b314f4104"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de19c4dc503c612847edf833c82e9f73cd79926a384af9d801dcf93f110cea4e"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea09acd2fe3324174063d61ad620dec3bcf042b495515f27f638270a7d466e8b"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cf27fd43472e07b57cf420eee1e814549203d56de00b5af8659cb99885472f1f"},
+ {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7ca22bd897537a0080521445d91a58886c8c04084a6a19e6c78c586e0cfa92a5"},
+ {file = "tokenizers-0.15.2.tar.gz", hash = "sha256:e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91"},
+]
+
+[package.dependencies]
+huggingface_hub = ">=0.16.4,<1.0"
+
+[package.extras]
+dev = ["tokenizers[testing]"]
+docs = ["setuptools_rust", "sphinx", "sphinx_rtd_theme"]
+testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.12.3"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
+ {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
+]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.2"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
+ {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.1"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
+ {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.4"
+description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
+files = [
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9d33a55598dd18a4d8b869a3417de82a4812c3a7dc7e61cb025ece3e9c3e4e96"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cee6955c2c97fc5927a41c7a8b06647c4b4d9b99b8a1581bf1183435c8cec3e"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5022bea67e479ad212be7c05b983a72e297a013efb4e8ea5b5b4d7da79a9fdef"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:640f60a5b966f0990338f1bf559455c3dcb822bc4329d82b3d42f32a48374dfe"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0e83f641fe6f27d91bd4d259fff5d35de1567d3f581b9efe9bbd5be50fe4ddc7"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win32.whl", hash = "sha256:ce6a85027c66fa3f09d482cc6d41927ea40955f7f33b86aedd26dd932709a2c9"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win_amd64.whl", hash = "sha256:fe10779347a6c067af29cb37fd4b75fa96c5cb68f587cc9530b70fe3f2a51a55"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28d5f84e34e276887e3a240b60906ca7e2b51e975f3145c3149ceed977a69508"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c913b65cbe10996116988ac436748f24883b5097e58274223e89bb2c5d1bb1a"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecaed46241e071752195a628bb97d2b740f2fde9e34f8a74456a4ea8bb26df88"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b641e88a97eab002a1736d93ef5a4beac90ea4fd6e25affd1831319b99f456c9"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:327c40f439c6155e4eee54c4657e4701a04f5f4816d9defdcb836bf65bf83d21"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win32.whl", hash = "sha256:1b7c1d95f006b3de42fbf4045bd00c273d113e372fcb6a5378e74ed120c12032"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6140d037239a41046f5d34fba5e0374ee697adb4b48b90579c618b5402781c11"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7eec3b55135fe851a38fa248c9fd75fc3d58ceb6e1865b795e416e4d598c2a1"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc76225529ee14a53e84413480ce81ec3c44eaa0455c140e961c90ac3118ead"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf0396e47efffc0b528959a8f2e2346a98297579f867e9e1834c2aad4be829c"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a15fbabd3bc8e29c48289c156d743e69f5ec72bb125cf44f7adbdaa1937c3da6"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
+ {file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
+]
+
+[[package]]
+name = "tree-sitter-languages"
+version = "1.10.2"
+description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
+files = [
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5580348f0b20233b1d5431fa178ccd3d07423ca4a3275df02a44608fd72344b9"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:103c7466644486b1e9e03850df46fc6aa12f13ca636c74f173270276220ac80b"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d13db84511c6f1a7dc40383b66deafa74dabd8b877e3d65ab253f3719eccafd6"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57adfa32be7e465b54aa72f915f6c78a2b66b227df4f656b5d4fbd1ca7a92b3f"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6385e033e460ceb8f33f3f940335f422ef2b763700a04f0089391a68b56153"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dfa3f38cc5381c5aba01dd7494f59b8a9050e82ff6e06e1233e3a0cbae297e3c"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9f195155acf47f8bc5de7cee46ecd07b2f5697f007ba89435b51ef4c0b953ea5"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2de330e2ac6d7426ca025a3ec0f10d5640c3682c1d0c7702e812dcfb44b58120"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win32.whl", hash = "sha256:c9731cf745f135d9770eeba9bb4e2ff4dabc107b5ae9b8211e919f6b9100ea6d"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:6dd75851c41d0c3c4987a9b7692d90fa8848706c23115669d8224ffd6571e357"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7eb7d7542b2091c875fe52719209631fca36f8c10fa66970d2c576ae6a1b8289"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b41bcb00974b1c8a1800c7f1bb476a1d15a0463e760ee24872f2d53b08ee424"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f370cd7845c6c81df05680d5bd96db8a99d32b56f4728c5d05978911130a853"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1dc195c88ef4c72607e112a809a69190e096a2e5ebc6201548b3e05fdd169ad"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae34ac314a7170be24998a0f994c1ac80761d8d4bd126af27ee53a023d3b849"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01b5742d5f5bd675489486b582bd482215880b26dde042c067f8265a6e925d9c"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab1cbc46244d34fd16f21edaa20231b2a57f09f092a06ee3d469f3117e6eb954"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b1149e7467a4e92b8a70e6005fe762f880f493cf811fc003554b29f04f5e7c8"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win32.whl", hash = "sha256:049276343962f4696390ee555acc2c1a65873270c66a6cbe5cb0bca83bcdf3c6"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:7f3fdd468a577f04db3b63454d939e26e360229b53c80361920aa1ebf2cd7491"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c0f4c8b2734c45859edc7fcaaeaab97a074114111b5ba51ab4ec7ed52104763c"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eecd3c1244ac3425b7a82ba9125b4ddb45d953bbe61de114c0334fd89b7fe782"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15db3c8510bc39a80147ee7421bf4782c15c09581c1dc2237ea89cefbd95b846"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92c6487a6feea683154d3e06e6db68c30e0ae749a7ce4ce90b9e4e46b78c85c7"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2f1cd1d1bdd65332f9c2b67d49dcf148cf1ded752851d159ac3e5ee4f4d260"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:976c8039165b8e12f17a01ddee9f4e23ec6e352b165ad29b44d2bf04e2fbe77e"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dafbbdf16bf668a580902e1620f4baa1913e79438abcce721a50647564c687b9"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1aeabd3d60d6d276b73cd8f3739d595b1299d123cc079a317f1a5b3c5461e2ca"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win32.whl", hash = "sha256:fab8ee641914098e8933b87ea3d657bea4dd00723c1ee7038b847b12eeeef4f5"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e606430d736367e5787fa5a7a0c5a1ec9b85eded0b3596bbc0d83532a40810b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:838d5b48a7ed7a17658721952c77fda4570d2a069f933502653b17e15a9c39c9"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b3c71b1d278c2889e018ee77b8ee05c384e2e3334dec798f8b611c4ab2d1e"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa00abcb2c819027df58472da055d22fa7dfcb77c77413d8500c32ebe24d38b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e102fbbf02322d9201a86a814e79a9734ac80679fdb9682144479044f401a73"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0b87cf1a7b03174ba18dfd81582be82bfed26803aebfe222bd20e444aba003"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0f1b9af9cb67f0b942b020da9fdd000aad5e92f2383ae0ba7a330b318d31912"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a4076c921f7a4d31e643843de7dfe040b65b63a238a5aa8d31d93aabe6572aa"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win32.whl", hash = "sha256:fa6391a3a5d83d32db80815161237b67d70576f090ce5f38339206e917a6f8bd"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:55649d3f254585a064121513627cf9788c1cfdadbc5f097f33d5ba750685a4c0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f85d1edaa2d22d80d4ea5b6d12b95cf3644017b6c227d0d42854439e02e8893"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d78feed4a764ef3141cb54bf00fe94d514d8b6e26e09423e23b4c616fcb7938c"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1aca27531f9dd5308637d76643372856f0f65d0d28677d1bcf4211e8ed1ad0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1031ea440dafb72237437d754eff8940153a3b051e3d18932ac25e75ce060a15"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99d3249beaef2c9fe558ecc9a97853c260433a849dcc68266d9770d196c2e102"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:59a4450f262a55148fb7e68681522f0c2a2f6b7d89666312a2b32708d8f416e1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ce74eab0e430370d5e15a96b6c6205f93405c177a8b2e71e1526643b2fb9bab1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9b4dd2b6b3d24c85dffe33d6c343448869eaf4f41c19ddba662eb5d65d8808f4"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win32.whl", hash = "sha256:92d734fb968fe3927a7596d9f0459f81a8fa7b07e16569476b28e27d0d753348"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:46a13f7d38f2eeb75f7cf127d1201346093748c270d686131f0cbc50e42870a1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f8c6a936ae99fdd8857e91f86c11c2f5e507ff30631d141d98132bb7ab2c8638"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c283a61423f49cdfa7b5a5dfbb39221e3bd126fca33479cd80749d4d7a6b7349"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e60be6bdcff923386a54a5edcb6ff33fc38ab0118636a762024fa2bc98de55"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c00069f9575bd831eabcce2cdfab158dde1ed151e7e5614c2d985ff7d78a7de1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ff53203d8a43ccb19bb322fa2fb200d764001cc037793f1fadd714bb343da"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26fe7c9c412e4141dea87ea4b3592fd12e385465b5bdab106b0d5125754d4f60"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8fed27319957458340f24fe14daad467cd45021da034eef583519f83113a8c5e"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3657a491a7f96cc75a3568ddd062d25f3be82b6a942c68801a7b226ff7130181"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win32.whl", hash = "sha256:33f7d584d01a7a3c893072f34cfc64ec031f3cfe57eebc32da2f8ac046e101a7"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:1b944af3ee729fa70fc8ae82224a9ff597cdb63addea084e0ea2fa2b0ec39bb7"},
+]
+
+[package.dependencies]
+tree-sitter = "*"
+
+[[package]]
+name = "typer"
+version = "0.9.0"
+description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "typer-0.9.0-py3-none-any.whl", hash = "sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee"},
+ {file = "typer-0.9.0.tar.gz", hash = "sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2"},
+]
+
+[package.dependencies]
+click = ">=7.1.1,<9.0.0"
+typing-extensions = ">=3.7.4.3"
+
+[package.extras]
+all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
+dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"]
+doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"]
+test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
+
+[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
+description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
+ {file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
+]
+
+[[package]]
+name = "types-docutils"
+version = "0.20.0.20240201"
+description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-docutils-0.20.0.20240201.tar.gz", hash = "sha256:ba4bfd4ff6dd19640ba7ab5d93900393a65897880f3650997964a943f4e79a6b"},
+ {file = "types_docutils-0.20.0.20240201-py3-none-any.whl", hash = "sha256:79d3bcef235f7c81a63f4f3dcf1d0b138985079bb32d02f5a7d266e1f9f361ba"},
+]
+
+[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240129"
+description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"},
+ {file = "types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"},
+]
+
+[[package]]
+name = "types-pyopenssl"
+version = "24.0.0.20240130"
+description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-pyOpenSSL-24.0.0.20240130.tar.gz", hash = "sha256:c812e5c1c35249f75ef5935708b2a997d62abf9745be222e5f94b9595472ab25"},
+ {file = "types_pyOpenSSL-24.0.0.20240130-py3-none-any.whl", hash = "sha256:24a255458b5b8a7fca8139cf56f2a8ad5a4f1a5f711b73a5bb9cb50dc688fab5"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
+description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
+ {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
+]
+
+[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
+description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+ {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+]
+
+[[package]]
+name = "types-redis"
+version = "4.5.5.0"
+description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
+ {file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+types-pyOpenSSL = "*"
+
+[[package]]
+name = "types-requests"
+version = "2.28.11.8"
+description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
+ {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
+]
+
+[package.dependencies]
+types-urllib3 = "<1.27"
+
+[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
+description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
+ {file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
+]
+
+[package.dependencies]
+types-docutils = "*"
+
+[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
+description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
+ {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "tzdata"
+version = "2024.1"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
+ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.2.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
+ {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+h2 = ["h2 (>=4,<5)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "uvicorn"
+version = "0.27.1"
+description = "The lightning-fast ASGI server."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "uvicorn-0.27.1-py3-none-any.whl", hash = "sha256:5c89da2f3895767472a35556e539fd59f7edbe9b1e9c0e1c99eebeadc61838e4"},
+ {file = "uvicorn-0.27.1.tar.gz", hash = "sha256:3d9a267296243532db80c83a959a3400502165ade2c1338dea4e67915fd4745a"},
+]
+
+[package.dependencies]
+click = ">=7.0"
+colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""}
+h11 = ">=0.8"
+httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""}
+python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
+pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
+typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
+uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""}
+watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
+websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""}
+
+[package.extras]
+standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
+
+[[package]]
+name = "uvloop"
+version = "0.19.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"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"]
+test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"]
+
+[[package]]
+name = "virtualenv"
+version = "20.25.0"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
+ {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
+
+[[package]]
+name = "watchfiles"
+version = "0.21.0"
+description = "Simple, modern and high performance file watching and code reload in python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"},
+ {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"},
+ {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"},
+ {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"},
+ {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"},
+ {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"},
+ {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"},
+ {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"},
+ {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"},
+ {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"},
+ {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"},
+ {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"},
+ {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"},
+ {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"},
+ {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"},
+ {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"},
+ {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"},
+ {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"},
+ {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"},
+ {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"},
+ {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"},
+ {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"},
+ {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"},
+ {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"},
+ {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"},
+ {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"},
+ {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"},
+ {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"},
+ {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"},
+ {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"},
+ {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"},
+ {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"},
+ {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"},
+ {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"},
+ {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"},
+ {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"},
+ {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"},
+ {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"},
+ {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"},
+ {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"},
+ {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"},
+ {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"},
+ {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"},
+ {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"},
+ {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"},
+ {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"},
+ {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"},
+ {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"},
+ {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"},
+ {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"},
+ {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"},
+ {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"},
+ {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"},
+ {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"},
+ {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"},
+ {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"},
+ {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"},
+ {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"},
+ {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"},
+ {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"},
+ {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"},
+ {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"},
+ {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"},
+ {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"},
+ {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"},
+ {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"},
+ {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"},
+ {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"},
+ {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"},
+ {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"},
+ {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"},
+ {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"},
+ {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"},
+ {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"},
+ {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"},
+]
+
+[package.dependencies]
+anyio = ">=3.0.0"
+
+[[package]]
+name = "wcwidth"
+version = "0.2.13"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
+ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+]
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "websockets"
+version = "12.0"
+description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"},
+ {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"},
+ {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"},
+ {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"},
+ {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"},
+ {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"},
+ {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"},
+ {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"},
+ {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"},
+ {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"},
+ {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"},
+ {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"},
+ {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"},
+ {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"},
+ {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"},
+ {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"},
+ {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"},
+ {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"},
+ {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"},
+ {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"},
+ {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"},
+ {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"},
+ {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"},
+ {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"},
+ {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"},
+ {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"},
+ {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"},
+ {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"},
+ {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"},
+ {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"},
+ {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"},
+ {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"},
+ {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"},
+ {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"},
+ {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"},
+ {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"},
+ {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"},
+ {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"},
+ {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"},
+ {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"},
+ {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"},
+ {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"},
+ {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"},
+ {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"},
+ {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"},
+ {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"},
+ {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"},
+ {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"},
+ {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"},
+ {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"},
+ {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"},
+ {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"},
+ {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"},
+ {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"},
+ {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"},
+ {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"},
+ {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"},
+ {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"},
+ {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"},
+ {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"},
+ {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"},
+ {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"},
+ {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"},
+ {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"},
+ {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"},
+ {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"},
+ {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"},
+ {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"},
+ {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"},
+ {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"},
+ {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"},
+ {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"},
+]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.10"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"},
+ {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"},
+]
+
+[[package]]
+name = "wrapt"
+version = "1.16.0"
+description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.4"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[[package]]
+name = "zipp"
+version = "3.17.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
+]
+
+[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "a0c6f7be872d5ca99b5cbba9da4916e5b54805026cdebbda71f7320e0a0f03df"
diff --git a/llama-index-cli/pyproject.toml b/llama-index-cli/pyproject.toml
new file mode 100644
index 0000000000000..ea9fda4493b1e
--- /dev/null
+++ b/llama-index-cli/pyproject.toml
@@ -0,0 +1,63 @@
+[build-system]
+build-backend = "poetry.core.masonry.api"
+requires = ["poetry-core"]
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+# Feel free to un-skip examples, and experimental, you will just need to
+# work through many typos (--write-changes and --interactive will help)
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.mypy]
+disallow_untyped_defs = true
+# Remove venv skip when integrated with pre-commit
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+authors = ["llamaindex"]
+description = "llama-index cli"
+license = "MIT"
+maintainers = [
+ "Andrei Fajardo ",
+ "Haotian Zhang ",
+ "Jerry Liu ",
+ "Logan Markewich ",
+ "Simon Suo ",
+ "Sourabh Desai ",
+]
+name = "llama-index-cli"
+packages = [{include = "llama_index/"}]
+readme = "README.md"
+version = "0.1.0"
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<3.12"
+llama-index-core = "^0.10.3"
+llama-index-vector-stores-chroma = "^0.1.1"
+llama-index-embeddings-openai = "^0.1.1"
+llama-index-llms-openai = "^0.1.1"
+
+[tool.poetry.group.dev.dependencies]
+black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
+codespell = {extras = ["toml"], version = ">=v2.2.6"}
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "^1.8.0"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8" # TODO: unpin when mypy>0.991
+types-setuptools = "67.1.0.0"
+
+[tool.poetry.scripts]
+llamaindex-cli = 'llama_index.cli.command_line:main'
diff --git a/llama-index-cli/tests/BUILD b/llama-index-cli/tests/BUILD
new file mode 100644
index 0000000000000..41045da0d0fa5
--- /dev/null
+++ b/llama-index-cli/tests/BUILD
@@ -0,0 +1,3 @@
+python_tests(
+ skip_tests=True,
+)
diff --git a/llama-index-cli/tests/__init__.py b/llama-index-cli/tests/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-cli/tests/test_cli.py b/llama-index-cli/tests/test_cli.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-core/BUILD b/llama-index-core/BUILD
index 0896ca890d8bf..e229987fbbc30 100644
--- a/llama-index-core/BUILD
+++ b/llama-index-core/BUILD
@@ -1,3 +1,4 @@
poetry_requirements(
name="poetry",
+ module_mapping={"llamaindex-py-client": ["llama_index_client"]},
)
diff --git a/llama-index-core/llama_index/core/agent/runner/base.py b/llama-index-core/llama_index/core/agent/runner/base.py
index 6ad2cb087d02c..b8442a1f159c4 100644
--- a/llama-index-core/llama_index/core/agent/runner/base.py
+++ b/llama-index-core/llama_index/core/agent/runner/base.py
@@ -253,8 +253,10 @@ def from_llm(
)
try:
- from llama_index.llms.openai import OpenAI
- from llama_index.llms.openai.utils import is_function_calling_model
+ from llama_index.llms.openai import OpenAI # pants: no-infer-dep
+ from llama_index.llms.openai.utils import (
+ is_function_calling_model,
+ ) # pants: no-infer-dep
except ImportError:
raise ImportError(
"`llama-index-llms-openai` package not found. Please "
@@ -262,7 +264,7 @@ def from_llm(
)
if isinstance(llm, OpenAI) and is_function_calling_model(llm.model):
- from llama_index.agent.openai import OpenAIAgent
+ from llama_index.agent.openai import OpenAIAgent # pants: no-infer-dep
return OpenAIAgent.from_tools(
tools=tools,
diff --git a/llama-index-core/llama_index/core/callbacks/base.py b/llama-index-core/llama_index/core/callbacks/base.py
index 71722880b6c07..cc6b67119513c 100644
--- a/llama-index-core/llama_index/core/callbacks/base.py
+++ b/llama-index-core/llama_index/core/callbacks/base.py
@@ -139,6 +139,11 @@ def set_handlers(self, handlers: List[BaseCallbackHandler]) -> None:
"""Set handlers as the only handlers on the callback manager."""
self.handlers = handlers
+ @classmethod
+ def __modify_schema__(cls, schema: Dict[str, Any]) -> None:
+ """Avoids serialization errors."""
+ schema.update(type="object", default={})
+
@contextmanager
def event(
self,
diff --git a/llama-index-core/llama_index/core/command_line/command_line.py b/llama-index-core/llama_index/core/command_line/command_line.py
index 39539215df583..f96366183305b 100644
--- a/llama-index-core/llama_index/core/command_line/command_line.py
+++ b/llama-index-core/llama_index/core/command_line/command_line.py
@@ -99,7 +99,7 @@ def default_rag_cli() -> RagCLI:
from llama_index.vector_stores.chroma import (
ChromaVectorStore,
- )
+ ) # pants: no-infer-dep
except ImportError:
ChromaVectorStore = None
diff --git a/llama-index-core/llama_index/core/constants.py b/llama-index-core/llama_index/core/constants.py
index 6e6024eb27031..48aac453f8439 100644
--- a/llama-index-core/llama_index/core/constants.py
+++ b/llama-index-core/llama_index/core/constants.py
@@ -27,3 +27,9 @@
GRAPH_STORE_KEY = "graph_store"
INDEX_STORE_KEY = "index_store"
DOC_STORE_KEY = "doc_store"
+
+# llama-cloud constants
+DEFAULT_PIPELINE_NAME = "default"
+DEFAULT_PROJECT_NAME = "default"
+DEFAULT_BASE_URL = "https://api.cloud.llamaindex.ai"
+DEFAULT_APP_URL = "https://cloud.llamaindex.ai"
diff --git a/llama-index-core/llama_index/core/evaluation/eval_utils.py b/llama-index-core/llama_index/core/evaluation/eval_utils.py
index be097c3a7d0b0..ee06573957332 100644
--- a/llama-index-core/llama_index/core/evaluation/eval_utils.py
+++ b/llama-index-core/llama_index/core/evaluation/eval_utils.py
@@ -5,14 +5,24 @@
"""
import asyncio
+import os
+import subprocess
+import tempfile
from collections import defaultdict
from typing import Any, List, Optional, Tuple
import numpy as np
import pandas as pd
+
+from llama_index_client import ProjectCreate
+from llama_index_client.client import PlatformApi
+from llama_index_client.types.eval_question_create import EvalQuestionCreate
+
from llama_index.core.async_utils import asyncio_module
from llama_index.core.base.base_query_engine import BaseQueryEngine
+from llama_index.core.constants import DEFAULT_BASE_URL, DEFAULT_PROJECT_NAME
from llama_index.core.evaluation.base import EvaluationResult
+from llama_index.core.llama_dataset import LabelledRagDataset
async def aget_responses(
@@ -61,6 +71,100 @@ def get_results_df(
return pd.DataFrame(metric_dict)
+def _download_llama_dataset_from_hub(llama_dataset_id: str) -> LabelledRagDataset:
+ """Uses a subprocess and llamaindex-cli to download a dataset from llama-hub."""
+ with tempfile.TemporaryDirectory() as tmp:
+ try:
+ subprocess.run(
+ [
+ "llamaindex-cli",
+ "download-llamadataset",
+ f"{llama_dataset_id}",
+ "--download-dir",
+ f"{tmp}",
+ ]
+ )
+ return LabelledRagDataset.from_json(f"{tmp}/rag_dataset.json")
+ except FileNotFoundError as err:
+ raise ValueError(
+ "No dataset associated with the supplied `llama_dataset_id`"
+ ) from err
+
+
+def upload_eval_dataset(
+ dataset_name: str,
+ questions: Optional[List[str]] = None,
+ llama_dataset_id: Optional[str] = None,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ base_url: Optional[str] = None,
+ api_key: Optional[str] = None,
+ overwrite: bool = False,
+ append: bool = False,
+) -> str:
+ """Upload questions to platform dataset."""
+ if questions is None and llama_dataset_id is None:
+ raise ValueError(
+ "Must supply either a list of `questions`, or a `llama_dataset_id` to import from llama-hub."
+ )
+
+ base_url = base_url or os.environ.get("LLAMA_CLOUD_BASE_URL", DEFAULT_BASE_URL)
+ assert base_url is not None
+
+ api_key = api_key or os.environ.get("LLAMA_CLOUD_API_KEY", None)
+
+ client = PlatformApi(base_url=base_url, token=api_key)
+
+ project = client.project.upsert_project(request=ProjectCreate(name=project_name))
+ assert project.id is not None
+
+ existing_datasets = client.project.get_datasets_for_project(project_id=project.id)
+
+ # check if dataset already exists
+ cur_dataset = None
+ for dataset in existing_datasets:
+ if dataset.name == dataset_name:
+ if overwrite:
+ assert dataset.id is not None
+ client.eval.delete_dataset(dataset_id=dataset.id)
+ break
+ elif not append:
+ raise ValueError(
+ f"Dataset {dataset_name} already exists in project {project_name}."
+ " Set overwrite=True to overwrite or append=True to append."
+ )
+ else:
+ cur_dataset = dataset
+ break
+
+ # either create new dataset or use existing one
+ if cur_dataset is None:
+ eval_dataset = client.project.create_eval_dataset_for_project(
+ project_id=project.id, name=dataset_name
+ )
+ else:
+ eval_dataset = cur_dataset
+
+ assert eval_dataset.id is not None
+
+ # create questions
+ if questions:
+ questions = questions
+ else:
+ # download `LabelledRagDataset` from llama-hub
+ assert llama_dataset_id is not None
+ rag_dataset = _download_llama_dataset_from_hub(llama_dataset_id)
+ questions = [example.query for example in rag_dataset[:]]
+
+ eval_questions = client.eval.create_questions(
+ dataset_id=eval_dataset.id,
+ request=[EvalQuestionCreate(content=q) for q in questions],
+ )
+
+ assert len(eval_questions) == len(questions)
+ print(f"Uploaded {len(questions)} questions to dataset {dataset_name}")
+ return eval_dataset.id
+
+
def default_parser(eval_response: str) -> Tuple[Optional[float], Optional[str]]:
"""
Default parser function for evaluation response.
diff --git a/llama-index-core/llama_index/core/indices/knowledge_graph/base.py b/llama-index-core/llama_index/core/indices/knowledge_graph/base.py
index 472c8d53da284..86f29a5de8303 100644
--- a/llama-index-core/llama_index/core/indices/knowledge_graph/base.py
+++ b/llama-index-core/llama_index/core/indices/knowledge_graph/base.py
@@ -138,6 +138,7 @@ def as_retriever(
object_map=self._object_map,
llm=self._llm,
embed_model=embed_model or self._embed_model,
+ retriever_mode=retriever_mode,
**kwargs,
)
@@ -240,17 +241,28 @@ def _insert(self, nodes: Sequence[BaseNode], **insert_kwargs: Any) -> None:
rel_embedding = self._embed_model.get_text_embedding(triplet_str)
self._index_struct.add_to_embedding_dict(triplet_str, rel_embedding)
- def upsert_triplet(self, triplet: Tuple[str, str, str]) -> None:
- """Insert triplets.
+ # Update the storage context's index_store
+ self._storage_context.index_store.add_index_struct(self._index_struct)
+
+ def upsert_triplet(
+ self, triplet: Tuple[str, str, str], include_embeddings: bool = False
+ ) -> None:
+ """Insert triplets and optionally embeddings.
Used for manual insertion of KG triplets (in the form
of (subject, relationship, object)).
Args:
- triplet (str): Knowledge triplet
-
+ triplet (tuple): Knowledge triplet
+ embedding (Any, optional): Embedding option for the triplet. Defaults to None.
"""
self._graph_store.upsert_triplet(*triplet)
+ triplet_str = str(triplet)
+ if include_embeddings:
+ set_embedding = self._service_context.embed_model.get_text_embedding(
+ triplet_str
+ )
+ self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def add_node(self, keywords: List[str], node: BaseNode) -> None:
"""Add node.
@@ -266,7 +278,10 @@ def add_node(self, keywords: List[str], node: BaseNode) -> None:
self._docstore.add_documents([node], allow_update=True)
def upsert_triplet_and_node(
- self, triplet: Tuple[str, str, str], node: BaseNode
+ self,
+ triplet: Tuple[str, str, str],
+ node: BaseNode,
+ include_embeddings: bool = False,
) -> None:
"""Upsert KG triplet and node.
@@ -277,11 +292,18 @@ def upsert_triplet_and_node(
Args:
keywords (List[str]): Keywords to index the node.
node (Node): Node to be indexed.
+ include_embeddings (bool): Option to add embeddings for triplets. Defaults to False
"""
subj, _, obj = triplet
self.upsert_triplet(triplet)
self.add_node([subj, obj], node)
+ triplet_str = str(triplet)
+ if include_embeddings:
+ set_embedding = self._service_context.embed_model.get_text_embedding(
+ triplet_str
+ )
+ self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def _delete_node(self, node_id: str, **delete_kwargs: Any) -> None:
"""Delete a node."""
diff --git a/llama-index-core/llama_index/core/indices/knowledge_graph/retrievers.py b/llama-index-core/llama_index/core/indices/knowledge_graph/retrievers.py
index 71e8197b41482..38cd852fd32a0 100644
--- a/llama-index-core/llama_index/core/indices/knowledge_graph/retrievers.py
+++ b/llama-index-core/llama_index/core/indices/knowledge_graph/retrievers.py
@@ -1,4 +1,5 @@
"""KG Retrievers."""
+
import logging
from collections import defaultdict
from enum import Enum
@@ -120,7 +121,11 @@ def __init__(
self.query_keyword_extract_template = query_keyword_extract_template or DQKET
self.similarity_top_k = similarity_top_k
self._include_text = include_text
- self._retriever_mode = KGRetrieverMode(retriever_mode)
+ self._retriever_mode = (
+ KGRetrieverMode(retriever_mode)
+ if retriever_mode
+ else KGRetrieverMode.KEYWORD
+ )
self._llm = llm or llm_from_settings_or_context(Settings, index.service_context)
self._embed_model = embed_model or embed_model_from_settings_or_context(
diff --git a/llama-index-core/llama_index/core/indices/managed/base.py b/llama-index-core/llama_index/core/indices/managed/base.py
index a788af24d02c5..35d375b729545 100644
--- a/llama-index-core/llama_index/core/indices/managed/base.py
+++ b/llama-index-core/llama_index/core/indices/managed/base.py
@@ -93,4 +93,6 @@ def from_documents(
**kwargs: Any,
) -> IndexType:
"""Build an index from a sequence of documents."""
- raise NotImplementedError("ref_doc_info not implemented for BaseManagedIndex.")
+ raise NotImplementedError(
+ "from_documents not implemented for BaseManagedIndex."
+ )
diff --git a/llama-index-core/llama_index/core/ingestion/api_utils.py b/llama-index-core/llama_index/core/ingestion/api_utils.py
new file mode 100644
index 0000000000000..36fdeda5a625c
--- /dev/null
+++ b/llama-index-core/llama_index/core/ingestion/api_utils.py
@@ -0,0 +1,151 @@
+import os
+from typing import List, Optional
+
+from llama_index_client import (
+ ConfigurableDataSourceNames,
+ ConfigurableTransformationNames,
+ ConfiguredTransformationItem,
+ DataSourceCreate,
+ PipelineCreate,
+ PipelineType,
+ ProjectCreate,
+)
+from llama_index_client.client import AsyncPlatformApi, PlatformApi
+
+from llama_index.core.constants import (
+ DEFAULT_APP_URL,
+ DEFAULT_BASE_URL,
+ DEFAULT_PROJECT_NAME,
+)
+from llama_index.core.ingestion.data_sources import (
+ ConfiguredDataSource,
+)
+from llama_index.core.ingestion.transformations import (
+ ConfiguredTransformation,
+)
+from llama_index.core.node_parser import SentenceSplitter
+from llama_index.core.readers.base import ReaderConfig
+from llama_index.core.schema import BaseNode, TransformComponent
+
+
+def default_transformations() -> List[TransformComponent]:
+ """Default transformations."""
+ from llama_index.embeddings.openai import OpenAIEmbedding # pants: no-infer-dep
+
+ return [
+ SentenceSplitter(),
+ OpenAIEmbedding(),
+ ]
+
+
+def get_client(
+ api_key: Optional[str] = None,
+ base_url: Optional[str] = None,
+ app_url: Optional[str] = None,
+ timeout: int = 60,
+) -> PlatformApi:
+ """Get the sync platform API client."""
+ base_url = base_url or os.environ.get("LLAMA_CLOUD_BASE_URL", DEFAULT_BASE_URL)
+ app_url = app_url or os.environ.get("LLAMA_CLOUD_APP_URL", DEFAULT_APP_URL)
+ api_key = api_key or os.environ.get("LLAMA_CLOUD_API_KEY", None)
+
+ return PlatformApi(base_url=base_url, token=api_key, timeout=timeout)
+
+
+def get_aclient(
+ api_key: Optional[str] = None,
+ base_url: Optional[str] = None,
+ app_url: Optional[str] = None,
+ timeout: int = 60,
+) -> AsyncPlatformApi:
+ """Get the async platform API client."""
+ base_url = base_url or os.environ.get("LLAMA_CLOUD_BASE_URL", DEFAULT_BASE_URL)
+ app_url = app_url or os.environ.get("LLAMA_CLOUD_APP_URL", DEFAULT_APP_URL)
+ api_key = api_key or os.environ.get("LLAMA_CLOUD_API_KEY", None)
+
+ return AsyncPlatformApi(base_url=base_url, token=api_key, timeout=timeout)
+
+
+def get_pipeline_create(
+ pipeline_name: str,
+ client: PlatformApi,
+ pipeline_type: PipelineType,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ transformations: Optional[List[TransformComponent]] = None,
+ readers: Optional[List[ReaderConfig]] = None,
+ input_nodes: Optional[List[BaseNode]] = None,
+) -> PipelineCreate:
+ """Get a pipeline create object."""
+ transformations = transformations or []
+ readers = readers or []
+ input_nodes = input_nodes or []
+
+ configured_transformations: List[ConfiguredTransformation] = []
+ for transformation in transformations:
+ try:
+ configured_transformations.append(
+ ConfiguredTransformation.from_component(transformation)
+ )
+ except ValueError:
+ raise ValueError(f"Unsupported transformation: {type(transformation)}")
+
+ configured_transformation_items: List[ConfiguredTransformationItem] = []
+ for item in configured_transformations:
+ name = ConfigurableTransformationNames[
+ item.configurable_transformation_type.name
+ ]
+ configured_transformation_items.append(
+ ConfiguredTransformationItem(
+ transformation_name=name,
+ component=item.component,
+ configurable_transformation_type=item.configurable_transformation_type.name,
+ )
+ )
+
+ # remove callback manager
+ configured_transformation_items[-1].component.pop("callback_manager", None) # type: ignore
+
+ data_sources = []
+ for reader in readers:
+ if reader.reader.is_remote:
+ configured_data_source = ConfiguredDataSource.from_component(
+ reader,
+ )
+ source_type = ConfigurableDataSourceNames[
+ configured_data_source.configurable_data_source_type.name
+ ]
+ data_sources.append(
+ DataSourceCreate(
+ name=configured_data_source.name,
+ source_type=source_type,
+ component=configured_data_source.component,
+ )
+ )
+ else:
+ documents = reader.read()
+ input_nodes += documents
+
+ for node in input_nodes:
+ configured_data_source = ConfiguredDataSource.from_component(node)
+ source_type = ConfigurableDataSourceNames[
+ configured_data_source.configurable_data_source_type.name
+ ]
+ data_sources.append(
+ DataSourceCreate(
+ name=configured_data_source.name,
+ source_type=source_type,
+ component=node,
+ )
+ )
+
+ project = client.project.upsert_project(request=ProjectCreate(name=project_name))
+ assert project.id is not None, "Project ID should not be None"
+
+ # upload
+ return PipelineCreate(
+ name=pipeline_name,
+ configured_transformations=configured_transformation_items,
+ data_sources=data_sources,
+ data_sinks=[],
+ pipeline_type=pipeline_type,
+ )
diff --git a/llama-index-core/llama_index/core/ingestion/data_sinks.py b/llama-index-core/llama_index/core/ingestion/data_sinks.py
new file mode 100644
index 0000000000000..9a1b88b05803e
--- /dev/null
+++ b/llama-index-core/llama_index/core/ingestion/data_sinks.py
@@ -0,0 +1,176 @@
+from enum import Enum
+from typing import Generic, Type, TypeVar
+
+from llama_index.core.bridge.pydantic import BaseModel, Field, GenericModel
+from llama_index.core.vector_stores.types import BasePydanticVectorStore
+
+
+class DataSink(BaseModel):
+ """
+ A class containing metadata for a type of data sink.
+ """
+
+ name: str = Field(
+ description="Unique and human-readable name for the type of data sink"
+ )
+ component_type: Type[BasePydanticVectorStore] = Field(
+ description="Type of component that implements the data sink"
+ )
+
+
+def build_conifurable_data_sink_enum():
+ """
+ Build an enum of configurable data sinks.
+ But conditional on if the corresponding vector store is available.
+ """
+
+ class ConfigurableComponent(Enum):
+ @classmethod
+ def from_component(
+ cls, component: BasePydanticVectorStore
+ ) -> "ConfigurableDataSinks":
+ component_class = type(component)
+ for component_type in cls:
+ if component_type.value.component_type == component_class:
+ return component_type
+ raise ValueError(
+ f"Component {component} is not a supported data sink component."
+ )
+
+ def build_configured_data_sink(
+ self, component: BasePydanticVectorStore
+ ) -> "ConfiguredDataSink":
+ component_type = self.value.component_type
+ if not isinstance(component, component_type):
+ raise ValueError(
+ f"The enum value {self} is not compatible with component of "
+ f"type {type(component)}"
+ )
+ return ConfiguredDataSink[component_type]( # type: ignore
+ component=component, name=self.value.name
+ )
+
+ enum_members = []
+
+ try:
+ from llama_index.vector_stores.chroma import (
+ ChromaVectorStore,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "CHROMA",
+ DataSink(
+ name="Chroma",
+ component_type=ChromaVectorStore,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.vector_stores.pinecone import (
+ PineconeVectorStore,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "PINECONE",
+ DataSink(
+ name="Pinecone",
+ component_type=PineconeVectorStore,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.vector_stores.postgres import (
+ PGVectorStore,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "POSTGRES",
+ DataSink(
+ name="PostgreSQL",
+ component_type=PGVectorStore,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.vector_stores.qdrant import (
+ QdrantVectorStore,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "QDRANT",
+ DataSink(
+ name="Qdrant",
+ component_type=QdrantVectorStore,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.vector_stores.weaviate import (
+ WeaviateVectorStore,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "WEAVIATE",
+ DataSink(
+ name="Weaviate",
+ component_type=WeaviateVectorStore,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ return ConfigurableComponent("ConfigurableDataSinks", enum_members)
+
+
+ConfigurableDataSinks = build_conifurable_data_sink_enum()
+
+
+T = TypeVar("T", bound=BasePydanticVectorStore)
+
+
+class ConfiguredDataSink(GenericModel, Generic[T]):
+ """
+ A class containing metadata & implementation for a data sink in a pipeline.
+ """
+
+ name: str
+ component: T = Field(description="Component that implements the data sink")
+
+ @classmethod
+ def from_component(cls, component: BasePydanticVectorStore) -> "ConfiguredDataSink":
+ """
+ Build a ConfiguredDataSink from a component.
+ This should be the preferred way to build a ConfiguredDataSink
+ as it will ensure that the component is supported as indicated by having a
+ corresponding enum value in DataSources.
+ This has the added bonus that you don't need to specify the generic type
+ like ConfiguredDataSink[Document]. The return value of
+ this ConfiguredDataSink.from_component(document) will be
+ ConfiguredDataSink[Document] if document is
+ a Document object.
+ """
+ return ConfigurableDataSinks.from_component(
+ component
+ ).build_configured_data_sink(component)
+
+ @property
+ def configurable_data_sink_type(self) -> ConfigurableDataSinks:
+ return ConfigurableDataSinks.from_component(self.component)
diff --git a/llama-index-core/llama_index/core/ingestion/data_sources.py b/llama-index-core/llama_index/core/ingestion/data_sources.py
new file mode 100644
index 0000000000000..d728a3b29078d
--- /dev/null
+++ b/llama-index-core/llama_index/core/ingestion/data_sources.py
@@ -0,0 +1,376 @@
+import uuid
+from enum import Enum
+from pathlib import Path
+from typing import Any, Generic, Iterable, List, Optional, Type, TypeVar, cast
+
+from llama_index.core.bridge.pydantic import BaseModel, Field, GenericModel
+from llama_index.core.readers.base import BasePydanticReader, ReaderConfig
+from llama_index.core.schema import BaseComponent, Document, TextNode
+
+
+class DataSource(BaseModel):
+ """
+ A class containing metadata for a type of data source.
+ """
+
+ name: str = Field(
+ description="Unique and human-readable name for the type of data source"
+ )
+ component_type: Type[BaseComponent] = Field(
+ description="Type of component that implements the data source"
+ )
+
+
+class DocumentGroup(BasePydanticReader):
+ """
+ A group of documents, usually separate pages from a single file.
+ """
+
+ file_path: str = Field(description="Path to the file containing the documents")
+ documents: List[Document] = Field(
+ description="Sequential group of documents, usually separate pages from a single file."
+ )
+
+ @property
+ def file_name(self) -> str:
+ return Path(self.file_path).name
+
+ @classmethod
+ def class_name(cls) -> str:
+ return "DocumentGroup"
+
+ def lazy_load_data(self, *args: Any, **load_kwargs: Any) -> Iterable[Document]:
+ """Load data from the input directory lazily."""
+ return self.documents
+
+
+def build_conifurable_data_source_enum():
+ """
+ Build an enum of configurable data sources.
+ But conditional on if the corresponding reader is available.
+ """
+
+ class ConfigurableComponent(Enum):
+ @classmethod
+ def from_component(cls, component: BaseComponent) -> "ConfigurableDataSources":
+ component_class = type(component)
+ for component_type in cls:
+ if component_type.value.component_type == component_class:
+ return component_type
+ raise ValueError(
+ f"Component {component} is not a supported data source component."
+ )
+
+ def build_configured_data_source(
+ self, component: BaseComponent, name: Optional[str] = None
+ ) -> "ConfiguredDataSource":
+ component_type = self.value.component_type
+ if not isinstance(component, component_type):
+ raise ValueError(
+ f"The enum value {self} is not compatible with component of "
+ f"type {type(component)}"
+ )
+ elif isinstance(component, BasePydanticReader):
+ reader_config = ReaderConfig(loader=component)
+ return ConfiguredDataSource[ReaderConfig](
+ component=reader_config
+ ) # type: ignore
+
+ if isinstance(component, DocumentGroup) and name is None:
+ # if the component is a DocumentGroup, we want to use the
+ # full file path as the name of the data source
+ component = cast(DocumentGroup, component)
+ name = component.file_path
+
+ if name is None:
+ suffix = uuid.uuid1()
+ name = self.value.name + f" [{suffix}]]"
+ return ConfiguredDataSource[component_type]( # type: ignore
+ component=component, name=name
+ )
+
+ enum_members = []
+
+ try:
+ from llama_index.readers.discord import DiscordReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "DISCORD",
+ DataSource(
+ name="Discord",
+ component_type=DiscordReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.elasticsearch import (
+ ElasticsearchReader,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "ELASTICSEARCH",
+ DataSource(
+ name="Elasticsearch",
+ component_type=ElasticsearchReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.notion import NotionPageReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "NOTION_PAGE",
+ DataSource(
+ name="Notion Page",
+ component_type=NotionPageReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.slack import SlackReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "SLACK",
+ DataSource(
+ name="Slack",
+ component_type=SlackReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.twitter import (
+ TwitterTweetReader,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "TWITTER",
+ DataSource(
+ name="Twitter",
+ component_type=TwitterTweetReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.web import SimpleWebPageReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "SIMPLE_WEB_PAGE",
+ DataSource(
+ name="Simple Web Page",
+ component_type=SimpleWebPageReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.web import TrafilaturaWebReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "TRAFILATURA_WEB_PAGE",
+ DataSource(
+ name="Trafilatura Web Page",
+ component_type=TrafilaturaWebReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.web import (
+ BeautifulSoupWebReader,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "BEAUTIFUL_SOUP_WEB_PAGE",
+ DataSource(
+ name="Beautiful Soup Web Page",
+ component_type=BeautifulSoupWebReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.web import RssReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "RSS",
+ DataSource(
+ name="RSS",
+ component_type=RssReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.wikipedia import WikipediaReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "WIKIPEDIA",
+ DataSource(
+ name="Wikipedia",
+ component_type=WikipediaReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.youtube_transcript import (
+ YoutubeTranscriptReader,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "YOUTUBE_TRANSCRIPT",
+ DataSource(
+ name="Youtube Transcript",
+ component_type=YoutubeTranscriptReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.google import GoogleDocsReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "GOOGLE_DOCS",
+ DataSource(
+ name="Google Docs",
+ component_type=GoogleDocsReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.readers.google import GoogleSheetsReader # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "GOOGLE_SHEETS",
+ DataSource(
+ name="Google Sheets",
+ component_type=GoogleSheetsReader,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ enum_members.append(
+ (
+ "READER",
+ DataSource(
+ name="Reader",
+ component_type=ReaderConfig,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "DOCUMENT_GROUP",
+ DataSource(
+ name="Document Group",
+ component_type=DocumentGroup,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "TEXT_NODE",
+ DataSource(
+ name="Text Node",
+ component_type=TextNode,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "DOCUMENT",
+ DataSource(
+ name="Document",
+ component_type=Document,
+ ),
+ )
+ )
+
+ return ConfigurableComponent("ConfigurableDataSources", enum_members)
+
+
+ConfigurableDataSources = build_conifurable_data_source_enum()
+
+T = TypeVar("T", bound=BaseComponent)
+
+
+class ConfiguredDataSource(GenericModel, Generic[T]):
+ """
+ A class containing metadata & implementation for a data source in a pipeline.
+ """
+
+ name: str
+ component: T = Field(description="Component that implements the data source")
+
+ @classmethod
+ def from_component(
+ cls, component: BaseComponent, name: Optional[str] = None
+ ) -> "ConfiguredDataSource":
+ """
+ Build a ConfiguredDataSource from a component.
+
+ This should be the preferred way to build a ConfiguredDataSource
+ as it will ensure that the component is supported as indicated by having a
+ corresponding enum value in DataSources.
+
+ This has the added bonus that you don't need to specify the generic type
+ like ConfiguredDataSource[Document]. The return value of
+ this ConfiguredDataSource.from_component(document) will be
+ ConfiguredDataSource[Document] if document is
+ a Document object.
+ """
+ return ConfigurableDataSources.from_component(
+ component
+ ).build_configured_data_source(component, name)
+
+ @property
+ def configurable_data_source_type(self) -> ConfigurableDataSources:
+ return ConfigurableDataSources.from_component(self.component)
diff --git a/llama-index-core/llama_index/core/ingestion/pipeline.py b/llama-index-core/llama_index/core/ingestion/pipeline.py
index c8cc3734b28bf..86c841ebc951b 100644
--- a/llama-index-core/llama_index/core/ingestion/pipeline.py
+++ b/llama-index-core/llama_index/core/ingestion/pipeline.py
@@ -1,5 +1,6 @@
import asyncio
import multiprocessing
+import os
import re
import warnings
from concurrent.futures import ProcessPoolExecutor
@@ -8,14 +9,37 @@
from hashlib import sha256
from itertools import repeat
from pathlib import Path
-from typing import Any, Generator, List, Optional, Sequence, Union
+from typing import Any, Generator, List, Optional, Sequence, Union, cast
from fsspec import AbstractFileSystem
+from llama_index_client import (
+ ConfigurableDataSourceNames,
+ ConfigurableTransformationNames,
+ Pipeline,
+ PipelineType,
+ Project,
+ ProjectCreate,
+)
+from llama_index_client.client import PlatformApi
+
+from llama_index.core.constants import (
+ DEFAULT_APP_URL,
+ DEFAULT_BASE_URL,
+ DEFAULT_PIPELINE_NAME,
+ DEFAULT_PROJECT_NAME,
+)
from llama_index.core.bridge.pydantic import BaseModel, Field
from llama_index.core.ingestion.cache import DEFAULT_CACHE_NAME, IngestionCache
+from llama_index.core.ingestion.data_sources import (
+ ConfigurableDataSources,
+)
+from llama_index.core.ingestion.transformations import (
+ ConfigurableTransformations,
+)
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core.readers.base import ReaderConfig
from llama_index.core.schema import (
+ BaseComponent,
BaseNode,
Document,
MetadataMode,
@@ -31,6 +55,20 @@
from llama_index.core.vector_stores.types import BasePydanticVectorStore
+def deserialize_transformation_component(
+ component_dict: dict, component_type: ConfigurableTransformationNames
+) -> BaseComponent:
+ component_cls = ConfigurableTransformations[component_type].value.component_type
+ return component_cls.from_dict(component_dict)
+
+
+def deserialize_source_component(
+ component_dict: dict, component_type: ConfigurableDataSourceNames
+) -> BaseComponent:
+ component_cls = ConfigurableDataSources[component_type].value.component_type
+ return component_cls.from_dict(component_dict)
+
+
def remove_unstable_values(s: str) -> str:
"""Remove unstable key/value pairs.
@@ -164,12 +202,22 @@ class DocstoreStrategy(str, Enum):
class IngestionPipeline(BaseModel):
"""An ingestion pipeline that can be applied to data."""
+ name: str = Field(
+ default=DEFAULT_PIPELINE_NAME,
+ description="Unique name of the ingestion pipeline",
+ )
+ project_name: str = Field(
+ default=DEFAULT_PROJECT_NAME, description="Unique name of the project"
+ )
+
transformations: List[TransformComponent] = Field(
description="Transformations to apply to the data"
)
documents: Optional[Sequence[Document]] = Field(description="Documents to ingest")
- reader: Optional[ReaderConfig] = Field(description="Reader to use to read the data")
+ readers: Optional[List[ReaderConfig]] = Field(
+ description="Reader to use to read the data"
+ )
vector_store: Optional[BasePydanticVectorStore] = Field(
description="Vector store to use to store the data"
)
@@ -186,34 +234,287 @@ class IngestionPipeline(BaseModel):
)
disable_cache: bool = Field(default=False, description="Disable the cache")
+ base_url: str = Field(
+ default=DEFAULT_BASE_URL, description="Base URL for the LlamaCloud API"
+ )
+ app_url: str = Field(
+ default=DEFAULT_APP_URL, description="Base URL for the LlamaCloud app"
+ )
+ api_key: Optional[str] = Field(default=None, description="LlamaCloud API key")
+
class Config:
arbitrary_types_allowed = True
def __init__(
self,
+ name: str = DEFAULT_PIPELINE_NAME,
+ project_name: str = DEFAULT_PROJECT_NAME,
transformations: Optional[List[TransformComponent]] = None,
- reader: Optional[ReaderConfig] = None,
+ readers: Optional[List[ReaderConfig]] = None,
documents: Optional[Sequence[Document]] = None,
vector_store: Optional[BasePydanticVectorStore] = None,
cache: Optional[IngestionCache] = None,
docstore: Optional[BaseDocumentStore] = None,
docstore_strategy: DocstoreStrategy = DocstoreStrategy.UPSERTS,
+ base_url: Optional[str] = None,
+ app_url: Optional[str] = None,
+ api_key: Optional[str] = None,
disable_cache: bool = False,
) -> None:
if transformations is None:
transformations = self._get_default_transformations()
+ api_key = api_key or os.environ.get("LLAMA_CLOUD_API_KEY", None)
+
super().__init__(
+ name=name,
+ project_name=project_name,
transformations=transformations,
- reader=reader,
+ readers=readers,
documents=documents,
vector_store=vector_store,
cache=cache or IngestionCache(),
docstore=docstore,
docstore_strategy=docstore_strategy,
+ base_url=base_url or DEFAULT_BASE_URL,
+ app_url=app_url or DEFAULT_APP_URL,
+ api_key=api_key,
+ disable_cache=disable_cache,
+ )
+
+ @classmethod
+ def from_pipeline_name(
+ cls,
+ name: str,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ base_url: Optional[str] = None,
+ cache: Optional[IngestionCache] = None,
+ api_key: Optional[str] = None,
+ app_url: Optional[str] = None,
+ vector_store: Optional[BasePydanticVectorStore] = None,
+ disable_cache: bool = False,
+ ) -> "IngestionPipeline":
+ base_url = base_url or os.environ.get("LLAMA_CLOUD_BASE_URL", DEFAULT_BASE_URL)
+ assert base_url is not None
+
+ api_key = api_key or os.environ.get("LLAMA_CLOUD_API_KEY", None)
+ app_url = app_url or os.environ.get("LLAMA_CLOUD_APP_URL", None)
+
+ client = PlatformApi(base_url=base_url, token=api_key)
+
+ projects: List[Project] = client.project.list_projects(
+ project_name=project_name
+ )
+ if len(projects) < 0:
+ raise ValueError(f"Project with name {project_name} not found")
+
+ project = projects[0]
+ assert project.id is not None, "Project ID should not be None"
+
+ pipelines: List[Pipeline] = client.pipeline.search_pipelines(
+ project_name=project_name, pipeline_name=name
+ )
+ if len(pipelines) < 0:
+ raise ValueError(f"Pipeline with name {name} not found")
+
+ pipeline = pipelines[0]
+
+ transformations: List[TransformComponent] = []
+ for configured_transformation in pipeline.configured_transformations:
+ component_dict = cast(dict, configured_transformation.component)
+ transformation_component_type = (
+ configured_transformation.configurable_transformation_type
+ )
+ transformation = deserialize_transformation_component(
+ component_dict, transformation_component_type
+ )
+ transformations.append(transformation)
+
+ documents = []
+ readers = []
+ for data_source in pipeline.data_sources:
+ component_dict = cast(dict, data_source.component)
+ source_component_type = data_source.source_type
+
+ if data_source.source_type == ConfigurableDataSourceNames.READER:
+ source_component = deserialize_source_component(
+ component_dict, source_component_type
+ )
+ readers.append(source_component)
+ elif data_source.source_type == ConfigurableDataSourceNames.DOCUMENT:
+ source_component = deserialize_source_component(
+ component_dict, source_component_type
+ )
+ if (
+ isinstance(source_component, BaseNode)
+ and source_component.get_content()
+ ):
+ documents.append(source_component)
+
+ return cls(
+ name=name,
+ project_name=project_name,
+ transformations=transformations,
+ readers=readers,
+ documents=documents,
+ vector_store=vector_store,
+ base_url=base_url,
+ cache=cache,
disable_cache=disable_cache,
+ api_key=api_key,
+ app_url=app_url,
)
+ @classmethod
+ def from_pipeline_name(
+ cls,
+ name: str,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ base_url: Optional[str] = None,
+ cache: Optional[IngestionCache] = None,
+ api_key: Optional[str] = None,
+ app_url: Optional[str] = None,
+ vector_store: Optional[BasePydanticVectorStore] = None,
+ disable_cache: bool = False,
+ ) -> "IngestionPipeline":
+ base_url = base_url or os.environ.get("LLAMA_CLOUD_BASE_URL", DEFAULT_BASE_URL)
+ assert base_url is not None
+
+ api_key = api_key or os.environ.get("LLAMA_CLOUD_API_KEY", None)
+ app_url = app_url or os.environ.get("LLAMA_CLOUD_APP_URL", None)
+
+ client = PlatformApi(base_url=base_url, token=api_key)
+
+ projects: List[Project] = client.project.list_projects(
+ project_name=project_name
+ )
+ if len(projects) < 0:
+ raise ValueError(f"Project with name {project_name} not found")
+
+ project = projects[0]
+ assert project.id is not None, "Project ID should not be None"
+
+ pipelines: List[Pipeline] = client.pipeline.search_pipelines(
+ project_name=project_name, pipeline_name=name
+ )
+ if len(pipelines) < 0:
+ raise ValueError(f"Pipeline with name {name} not found")
+
+ pipeline = pipelines[0]
+
+ transformations: List[TransformComponent] = []
+ for configured_transformation in pipeline.configured_transformations:
+ component_dict = cast(dict, configured_transformation.component)
+ transformation_component_type = (
+ configured_transformation.configurable_transformation_type
+ )
+ transformation = deserialize_transformation_component(
+ component_dict, transformation_component_type
+ )
+ transformations.append(transformation)
+
+ documents = []
+ readers = []
+ for data_source in pipeline.data_sources:
+ component_dict = cast(dict, data_source.component)
+ source_component_type = data_source.source_type
+
+ if data_source.source_type == ConfigurableDataSourceNames.READER:
+ source_component = deserialize_source_component(
+ component_dict, source_component_type
+ )
+ readers.append(source_component)
+ elif data_source.source_type == ConfigurableDataSourceNames.DOCUMENT:
+ source_component = deserialize_source_component(
+ component_dict, source_component_type
+ )
+ if (
+ isinstance(source_component, BaseNode)
+ and source_component.get_content()
+ ):
+ documents.append(source_component)
+
+ return cls(
+ name=name,
+ project_name=project_name,
+ transformations=transformations,
+ readers=readers,
+ documents=documents,
+ vector_store=vector_store,
+ base_url=base_url,
+ cache=cache,
+ disable_cache=disable_cache,
+ api_key=api_key,
+ app_url=app_url,
+ )
+
+ def register(
+ self,
+ verbose: bool = True,
+ documents: Optional[List[Document]] = None,
+ nodes: Optional[List[BaseNode]] = None,
+ ) -> str:
+ client = PlatformApi(base_url=self.base_url, token=self.api_key)
+
+ input_nodes = self._prepare_inputs(documents, nodes)
+
+ project = client.project.upsert_project(
+ request=ProjectCreate(name=self.project_name)
+ )
+ assert project.id is not None, "Project ID should not be None"
+
+ # avoid circular import
+ from llama_index.core.ingestion.api_utils import get_pipeline_create
+
+ pipeline_create = get_pipeline_create(
+ self.name,
+ client,
+ PipelineType.PLAYGROUND,
+ project_name=self.project_name,
+ transformations=self.transformations,
+ input_nodes=input_nodes,
+ readers=self.readers,
+ )
+
+ # upload
+ pipeline = client.project.upsert_pipeline_for_project(
+ project.id,
+ request=pipeline_create,
+ )
+ assert pipeline.id is not None, "Pipeline ID should not be None"
+
+ # Print playground URL if not running remote
+ if verbose:
+ print(
+ f"Pipeline available at: {self.app_url}/project/{project.id}/playground/{pipeline.id}"
+ )
+
+ return pipeline.id
+
+ def run_remote(
+ self,
+ documents: Optional[List[Document]] = None,
+ nodes: Optional[List[BaseNode]] = None,
+ ) -> str:
+ client = PlatformApi(base_url=self.base_url, token=self.api_key)
+
+ pipeline_id = self.register(documents=documents, nodes=nodes, verbose=False)
+
+ # start pipeline?
+ # the `PipeLineExecution` object should likely generate a URL at some point
+ pipeline_execution = client.pipeline.create_playground_job(pipeline_id)
+
+ assert (
+ pipeline_execution.id is not None
+ ), "Pipeline execution ID should not be None"
+
+ print(
+ f"Find your remote results here: {self.app_url}/"
+ f"pipelines/execution?id={pipeline_execution.id}"
+ )
+
+ return pipeline_execution.id
+
def persist(
self,
persist_dir: str = "./pipeline_storage",
@@ -278,8 +579,9 @@ def _prepare_inputs(
if self.documents is not None:
input_nodes += self.documents
- if self.reader is not None:
- input_nodes += self.reader.read()
+ if self.readers is not None:
+ for reader in self.readers:
+ input_nodes += reader.read()
return input_nodes
diff --git a/llama-index-core/llama_index/core/ingestion/transformations.py b/llama-index-core/llama_index/core/ingestion/transformations.py
new file mode 100644
index 0000000000000..b9d21490ee122
--- /dev/null
+++ b/llama-index-core/llama_index/core/ingestion/transformations.py
@@ -0,0 +1,346 @@
+"""
+This module maintains the list of transformations that are supported by the system.
+"""
+
+from enum import Enum
+from typing import Generic, Sequence, Type, TypeVar
+
+from llama_index.core.bridge.pydantic import BaseModel, Field, GenericModel
+from llama_index.core.extractors import (
+ KeywordExtractor,
+ QuestionsAnsweredExtractor,
+ SummaryExtractor,
+ TitleExtractor,
+)
+from llama_index.core.node_parser import (
+ CodeSplitter,
+ HTMLNodeParser,
+ JSONNodeParser,
+ MarkdownNodeParser,
+ SentenceSplitter,
+ SimpleFileNodeParser,
+ TokenTextSplitter,
+)
+from llama_index.core.schema import BaseComponent, BaseNode, Document
+
+
+# Transform Input/Output Types
+class TransformationIOType(BaseModel):
+ name: str = Field(description="Name of the input/output type")
+ description: str = Field(description="Description of the input/output type")
+ python_type: str = Field(description="Python type of the input/output type")
+
+
+class TransformationIOTypes(Enum):
+ DOCUMENTS = TransformationIOType(
+ name="Documents",
+ description="A sequence of Documents",
+ python_type=str(Sequence[Document]),
+ )
+ NODES = TransformationIOType(
+ name="Nodes",
+ description="A sequence of Nodes from a sequence of Documents",
+ python_type=str(Sequence[BaseNode]),
+ )
+
+
+class TransformationCategory(BaseModel):
+ """A description for a category of transformation within a pipeline."""
+
+ name: str = Field(description="Unique name of the type of transformation")
+ description: str = Field(description="Description for the type of transformation")
+ input_type: TransformationIOType = Field(
+ description="Input type for the transformation type"
+ )
+ output_type: TransformationIOType = Field(
+ description="Output type for the transformation type"
+ )
+
+
+class TransformationCategories(Enum):
+ """Supported transformation categories."""
+
+ METADATA_EXTRACTOR = TransformationCategory(
+ name="MetadataExtractor",
+ description="Applies a function to extract metadata from nodes",
+ input_type=TransformationIOTypes.NODES.value,
+ output_type=TransformationIOTypes.NODES.value,
+ )
+ NODE_PARSER = TransformationCategory(
+ name="NodeParser",
+ description="Applies a function to parse nodes from documents",
+ input_type=TransformationIOTypes.DOCUMENTS.value,
+ output_type=TransformationIOTypes.NODES.value,
+ )
+ EMBEDDING = TransformationCategory(
+ name="Embedding",
+ description="Applies a function to embed nodes",
+ input_type=TransformationIOTypes.NODES.value,
+ output_type=TransformationIOTypes.NODES.value,
+ )
+
+
+class ConfigurableTransformation(BaseModel):
+ """
+ A class containing metadata for a type of transformation that can be in a pipeline.
+ """
+
+ name: str = Field(
+ description="Unique and human-readable name for the type of transformation"
+ )
+ transformation_category: TransformationCategories = Field(
+ description="Type of transformation"
+ )
+ component_type: Type[BaseComponent] = Field(
+ description="Type of component that implements the transformation"
+ )
+
+
+def build_configurable_transformation_enum():
+ """
+ Build an enum of configurable transformations.
+ But conditional on if the corresponding component is available.
+ """
+
+ class ConfigurableComponent(Enum):
+ @classmethod
+ def from_component(
+ cls, component: BaseComponent
+ ) -> "ConfigurableTransformations":
+ component_class = type(component)
+ for component_type in cls:
+ if component_type.value.component_type == component_class:
+ return component_type
+ raise ValueError(
+ f"Component {component} is not a supported transformation component."
+ )
+
+ def build_configured_transformation(
+ self, component: BaseComponent
+ ) -> "ConfiguredTransformation":
+ component_type = self.value.component_type
+ if not isinstance(component, component_type):
+ raise ValueError(
+ f"The enum value {self} is not compatible with component of "
+ f"type {type(component)}"
+ )
+ return ConfiguredTransformation[component_type]( # type: ignore
+ component=component, name=self.value.name
+ )
+
+ enum_members = []
+
+ # Metadata extractors
+ enum_members.append(
+ (
+ "KEYWORD_EXTRACTOR",
+ ConfigurableTransformation(
+ name="Keyword Extractor",
+ transformation_category=TransformationCategories.METADATA_EXTRACTOR,
+ component_type=KeywordExtractor,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "TITLE_EXTRACTOR",
+ ConfigurableTransformation(
+ name="Title Extractor",
+ transformation_category=TransformationCategories.METADATA_EXTRACTOR,
+ component_type=TitleExtractor,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "SUMMARY_EXTRACTOR",
+ ConfigurableTransformation(
+ name="Summary Extractor",
+ transformation_category=TransformationCategories.METADATA_EXTRACTOR,
+ component_type=SummaryExtractor,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "QUESTIONS_ANSWERED_EXTRACTOR",
+ ConfigurableTransformation(
+ name="Questions Answered Extractor",
+ transformation_category=TransformationCategories.METADATA_EXTRACTOR,
+ component_type=QuestionsAnsweredExtractor,
+ ),
+ )
+ )
+
+ # Node parsers
+ enum_members.append(
+ (
+ "CODE_NODE_PARSER",
+ ConfigurableTransformation(
+ name="Code Splitter",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=CodeSplitter,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "SENTENCE_AWARE_NODE_PARSER",
+ ConfigurableTransformation(
+ name="Sentence Splitter",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=SentenceSplitter,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "TOKEN_AWARE_NODE_PARSER",
+ ConfigurableTransformation(
+ name="Token Text Splitter",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=TokenTextSplitter,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "HTML_NODE_PARSER",
+ ConfigurableTransformation(
+ name="HTML Node Parser",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=HTMLNodeParser,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "MARKDOWN_NODE_PARSER",
+ ConfigurableTransformation(
+ name="Markdown Node Parser",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=MarkdownNodeParser,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "JSON_NODE_PARSER",
+ ConfigurableTransformation(
+ name="JSON Node Parser",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=JSONNodeParser,
+ ),
+ )
+ )
+
+ enum_members.append(
+ (
+ "SIMPLE_FILE_NODE_PARSER",
+ ConfigurableTransformation(
+ name="Simple File Node Parser",
+ transformation_category=TransformationCategories.NODE_PARSER,
+ component_type=SimpleFileNodeParser,
+ ),
+ )
+ )
+
+ # Embeddings
+ try:
+ from llama_index.embeddings.openai import OpenAIEmbedding # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "OPENAI_EMBEDDING",
+ ConfigurableTransformation(
+ name="OpenAI Embedding",
+ transformation_category=TransformationCategories.EMBEDDING,
+ component_type=OpenAIEmbedding,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.embeddings.azure_openai import (
+ AzureOpenAIEmbedding,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "AZURE_EMBEDDING",
+ ConfigurableTransformation(
+ name="Azure OpenAI Embedding",
+ transformation_category=TransformationCategories.EMBEDDING,
+ component_type=AzureOpenAIEmbedding,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ try:
+ from llama_index.embeddings.huggingface import (
+ HuggingFaceInferenceAPIEmbedding,
+ ) # pants: no-infer-dep
+
+ enum_members.append(
+ (
+ "HUGGINGFACE_API_EMBEDDING",
+ ConfigurableTransformation(
+ name="HuggingFace API Embedding",
+ transformation_category=TransformationCategories.EMBEDDING,
+ component_type=HuggingFaceInferenceAPIEmbedding,
+ ),
+ )
+ )
+ except ImportError:
+ pass
+
+ return ConfigurableComponent("ConfigurableTransformations", enum_members)
+
+
+ConfigurableTransformations = build_configurable_transformation_enum()
+
+T = TypeVar("T", bound=BaseComponent)
+
+
+class ConfiguredTransformation(GenericModel, Generic[T]):
+ """
+ A class containing metadata & implementation for a transformation in a pipeline.
+ """
+
+ name: str
+ component: T = Field(description="Component that implements the transformation")
+
+ @classmethod
+ def from_component(cls, component: BaseComponent) -> "ConfiguredTransformation":
+ """
+ Build a ConfiguredTransformation from a component.
+
+ This should be the preferred way to build a ConfiguredTransformation
+ as it will ensure that the component is supported as indicated by having a
+ corresponding enum value in ConfigurableTransformations.
+
+ This has the added bonus that you don't need to specify the generic type
+ like ConfiguredTransformation[SentenceSplitter]. The return value of
+ this ConfiguredTransformation.from_component(simple_node_parser) will be
+ ConfiguredTransformation[SentenceSplitter] if simple_node_parser is
+ a SentenceSplitter.
+ """
+ return ConfigurableTransformations.from_component(
+ component
+ ).build_configured_transformation(component)
+
+ @property
+ def configurable_transformation_type(self) -> ConfigurableTransformations:
+ return ConfigurableTransformations.from_component(self.component)
diff --git a/llama-index-core/llama_index/core/llms/llm.py b/llama-index-core/llama_index/core/llms/llm.py
index 2244b2bef285d..658cbb727c506 100644
--- a/llama-index-core/llama_index/core/llms/llm.py
+++ b/llama-index-core/llama_index/core/llms/llm.py
@@ -1,6 +1,7 @@
from collections import ChainMap
from typing import (
Any,
+ Callable,
Dict,
List,
Optional,
@@ -25,7 +26,12 @@
StringableInput,
validate_and_convert_stringable,
)
-from llama_index.core.bridge.pydantic import BaseModel, Field, validator
+from llama_index.core.bridge.pydantic import (
+ BaseModel,
+ Field,
+ root_validator,
+ validator,
+)
from llama_index.core.callbacks import CBEventType, EventPayload
from llama_index.core.llms.base import BaseLLM
from llama_index.core.llms.generic_utils import (
@@ -112,14 +118,14 @@ class LLM(BaseLLM):
system_prompt: Optional[str] = Field(
default=None, description="System prompt for LLM calls."
)
- messages_to_prompt: MessagesToPromptType = Field(
+ messages_to_prompt: Callable = Field(
description="Function to convert a list of messages to an LLM prompt.",
- default=generic_messages_to_prompt,
+ default=None,
exclude=True,
)
- completion_to_prompt: CompletionToPromptType = Field(
+ completion_to_prompt: Callable = Field(
description="Function to convert a completion to an LLM prompt.",
- default=default_completion_to_prompt,
+ default=None,
exclude=True,
)
output_parser: Optional[BaseOutputParser] = Field(
@@ -148,6 +154,14 @@ def set_completion_to_prompt(
) -> CompletionToPromptType:
return completion_to_prompt or default_completion_to_prompt
+ @root_validator
+ def check_prompts(cls, values: Dict[str, Any]) -> Dict[str, Any]:
+ if values.get("completion_to_prompt") is None:
+ values["completion_to_prompt"] = default_completion_to_prompt
+ if values.get("messages_to_prompt") is None:
+ values["messages_to_prompt"] = generic_messages_to_prompt
+ return values
+
def _log_template_data(
self, prompt: BasePromptTemplate, **prompt_args: Any
) -> None:
diff --git a/llama-index-core/llama_index/core/node_parser/interface.py b/llama-index-core/llama_index/core/node_parser/interface.py
index bf450cb156e56..e7ca5b13aa24c 100644
--- a/llama-index-core/llama_index/core/node_parser/interface.py
+++ b/llama-index-core/llama_index/core/node_parser/interface.py
@@ -1,11 +1,10 @@
"""Node parser interface."""
from abc import ABC, abstractmethod
-from typing import Any, List, Sequence
+from typing import Any, Callable, List, Sequence
-from llama_index.core.bridge.pydantic import Field
+from llama_index.core.bridge.pydantic import Field, validator
from llama_index.core.callbacks import CallbackManager, CBEventType, EventPayload
from llama_index.core.node_parser.node_utils import (
- IdFuncCallable,
build_nodes_from_splits,
default_id_func,
)
@@ -31,14 +30,21 @@ class NodeParser(TransformComponent, ABC):
callback_manager: CallbackManager = Field(
default_factory=CallbackManager, exclude=True
)
- id_func: IdFuncCallable = Field(
- default=default_id_func,
+ id_func: Callable = Field(
+ default=None,
description="Function to generate node IDs.",
+ exclude=True,
)
class Config:
arbitrary_types_allowed = True
+ @validator("id_func", pre=True)
+ def _validate_id_func(cls, v: Any) -> Any:
+ if v is None:
+ return default_id_func
+ return v
+
@abstractmethod
def _parse_nodes(
self,
diff --git a/llama-index-core/llama_index/core/node_parser/node_utils.py b/llama-index-core/llama_index/core/node_parser/node_utils.py
index b05d08223b6f5..a8c39cd49ec06 100644
--- a/llama-index-core/llama_index/core/node_parser/node_utils.py
+++ b/llama-index-core/llama_index/core/node_parser/node_utils.py
@@ -38,6 +38,10 @@ def build_nodes_from_splits(
ref_doc = ref_doc or document
id_func = id_func or default_id_func
nodes: List[TextNode] = []
+ """Calling as_related_node_info() on a document recomputes the hash for the whole text and metadata"""
+ """It is not that bad, when creating relationships between the nodes, but is terrible when adding a relationship"""
+ """between the node and a document, hence we create the relationship only once here and pass it to the nodes"""
+ relationships = {NodeRelationship.SOURCE: ref_doc.as_related_node_info()}
for i, text_chunk in enumerate(text_splits):
logger.debug(f"> Adding chunk: {truncate_text(text_chunk, 50)}")
@@ -54,7 +58,7 @@ def build_nodes_from_splits(
metadata_seperator=document.metadata_seperator,
metadata_template=document.metadata_template,
text_template=document.text_template,
- relationships={NodeRelationship.SOURCE: ref_doc.as_related_node_info()},
+ relationships=relationships,
)
nodes.append(image_node) # type: ignore
elif isinstance(document, Document):
@@ -67,7 +71,7 @@ def build_nodes_from_splits(
metadata_seperator=document.metadata_seperator,
metadata_template=document.metadata_template,
text_template=document.text_template,
- relationships={NodeRelationship.SOURCE: ref_doc.as_related_node_info()},
+ relationships=relationships,
)
nodes.append(node)
elif isinstance(document, TextNode):
@@ -80,7 +84,7 @@ def build_nodes_from_splits(
metadata_seperator=document.metadata_seperator,
metadata_template=document.metadata_template,
text_template=document.text_template,
- relationships={NodeRelationship.SOURCE: ref_doc.as_related_node_info()},
+ relationships=relationships,
)
nodes.append(node)
else:
diff --git a/llama-index-core/llama_index/core/node_parser/text/utils.py b/llama-index-core/llama_index/core/node_parser/text/utils.py
index 11e250177a87f..91ca6556f1355 100644
--- a/llama-index-core/llama_index/core/node_parser/text/utils.py
+++ b/llama-index-core/llama_index/core/node_parser/text/utils.py
@@ -5,8 +5,6 @@
logger = logging.getLogger(__name__)
-logger = logging.getLogger(__name__)
-
def truncate_text(text: str, text_splitter: TextSplitter) -> str:
"""Truncate text to fit within the chunk size."""
diff --git a/llama-index-core/llama_index/core/program/utils.py b/llama-index-core/llama_index/core/program/utils.py
index 01fdb348497de..fa60e5734b197 100644
--- a/llama-index-core/llama_index/core/program/utils.py
+++ b/llama-index-core/llama_index/core/program/utils.py
@@ -70,7 +70,9 @@ def get_program_for_llm(
**kwargs,
)
elif pydantic_program_mode == PydanticProgramMode.OPENAI:
- from llama_index.core.program.openai_program import OpenAIPydanticProgram
+ from llama_index.program.openai import (
+ OpenAIPydanticProgram,
+ ) # pants: no-infer-dep
return OpenAIPydanticProgram.from_defaults(
output_cls=output_cls,
diff --git a/llama-index-core/llama_index/core/prompts/base.py b/llama-index-core/llama_index/core/prompts/base.py
index c11c839b579a8..4c3089b0b4478 100644
--- a/llama-index-core/llama_index/core/prompts/base.py
+++ b/llama-index-core/llama_index/core/prompts/base.py
@@ -451,7 +451,7 @@ def partial_format(self, **kwargs: Any) -> "BasePromptTemplate":
def format(self, llm: Optional[BaseLLM] = None, **kwargs: Any) -> str:
"""Format the prompt into a string."""
- from llama_index.core.llms.langchain import LangChainLLM
+ from llama_index.llms.langchain import LangChainLLM # pants: no-infer-dep
if llm is not None:
# if llamaindex LLM is provided, and we require a langchain LLM,
@@ -474,8 +474,10 @@ def format_messages(
self, llm: Optional[BaseLLM] = None, **kwargs: Any
) -> List[ChatMessage]:
"""Format the prompt into a list of chat messages."""
- from llama_index.core.llms.langchain import LangChainLLM
- from llama_index.core.llms.langchain_utils import from_lc_messages
+ from llama_index.llms.langchain import LangChainLLM # pants: no-infer-dep
+ from llama_index.llms.langchain.utils import (
+ from_lc_messages,
+ ) # pants: no-infer-dep
if llm is not None:
# if llamaindex LLM is provided, and we require a langchain LLM,
@@ -497,7 +499,7 @@ def format_messages(
return from_lc_messages(lc_messages)
def get_template(self, llm: Optional[BaseLLM] = None) -> str:
- from llama_index.core.llms.langchain import LangChainLLM
+ from llama_index.llms.langchain import LangChainLLM # pants: no-infer-dep
if llm is not None:
# if llamaindex LLM is provided, and we require a langchain LLM,
diff --git a/llama-index-core/llama_index/core/query_pipeline/__init__.py b/llama-index-core/llama_index/core/query_pipeline/__init__.py
index a82c409cfa499..109025f54058d 100644
--- a/llama-index-core/llama_index/core/query_pipeline/__init__.py
+++ b/llama-index-core/llama_index/core/query_pipeline/__init__.py
@@ -1,4 +1,5 @@
"""Init file."""
+
from llama_index.core.query_pipeline.components.agent import (
AgentFnComponent,
AgentInputComponent,
@@ -6,7 +7,10 @@
QueryComponent,
)
from llama_index.core.query_pipeline.components.argpacks import ArgPackComponent
-from llama_index.core.query_pipeline.components.function import FnComponent
+from llama_index.core.query_pipeline.components.function import (
+ FnComponent,
+ FunctionComponent,
+)
from llama_index.core.query_pipeline.components.input import InputComponent
from llama_index.core.query_pipeline.components.router import RouterComponent
from llama_index.core.query_pipeline.components.tool_runner import ToolRunnerComponent
@@ -25,6 +29,7 @@
"AgentInputComponent",
"ArgPackComponent",
"FnComponent",
+ "FunctionComponent",
"InputComponent",
"RouterComponent",
"ToolRunnerComponent",
diff --git a/llama-index-core/llama_index/core/query_pipeline/components/function.py b/llama-index-core/llama_index/core/query_pipeline/components/function.py
index bef5c377ab084..f6a180da0666c 100644
--- a/llama-index-core/llama_index/core/query_pipeline/components/function.py
+++ b/llama-index-core/llama_index/core/query_pipeline/components/function.py
@@ -114,3 +114,7 @@ def input_keys(self) -> InputKeys:
def output_keys(self) -> OutputKeys:
"""Output keys."""
return OutputKeys.from_keys({self.output_key})
+
+
+# alias
+FunctionComponent = FnComponent
diff --git a/llama-index-core/llama_index/core/types.py b/llama-index-core/llama_index/core/types.py
index 1394d23f0034f..cfa9a0fa54b9a 100644
--- a/llama-index-core/llama_index/core/types.py
+++ b/llama-index-core/llama_index/core/types.py
@@ -3,6 +3,7 @@
from typing import (
Any,
AsyncGenerator,
+ Dict,
Generator,
Generic,
List,
@@ -29,6 +30,11 @@
class BaseOutputParser(Protocol):
"""Output parser class."""
+ @classmethod
+ def __modify_schema__(cls, schema: Dict[str, Any]) -> None:
+ """Avoids serialization issues."""
+ schema.update(type="object", default={})
+
@abstractmethod
def parse(self, output: str) -> Any:
"""Parse, validate, and correct errors programmatically."""
diff --git a/llama-index-core/poetry.lock b/llama-index-core/poetry.lock
index 49e802aaaf517..83154184f2ef3 100644
--- a/llama-index-core/poetry.lock
+++ b/llama-index-core/poetry.lock
@@ -1,14 +1,14 @@
-# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
[[package]]
name = "accelerate"
-version = "0.27.0"
+version = "0.27.2"
description = "Accelerate"
optional = true
python-versions = ">=3.8.0"
files = [
- {file = "accelerate-0.27.0-py3-none-any.whl", hash = "sha256:87eb754a1600a63d6fdbf8683603800388544456bfbdaaf622b89458005937de"},
- {file = "accelerate-0.27.0.tar.gz", hash = "sha256:8e8e34695dc34f6294d4209a617d5f934c9f88a3f26067aeee18e0568d3277a3"},
+ {file = "accelerate-0.27.2-py3-none-any.whl", hash = "sha256:a818dd27b9ba24e9eb5030d1b285cf4cdd1b41bbfa675fb4eb2477ddfc097074"},
+ {file = "accelerate-0.27.2.tar.gz", hash = "sha256:cc715fe9a8bc7a286259bfb6d65fb78363badd3371e7cbda4e4a4ef34a0010aa"},
]
[package.dependencies]
@@ -1572,13 +1572,13 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4
[[package]]
name = "google-api-core"
-version = "2.17.0"
+version = "2.17.1"
description = "Google API client core library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "google-api-core-2.17.0.tar.gz", hash = "sha256:de7ef0450faec7c75e0aea313f29ac870fdc44cfaec9d6499a9a17305980ef66"},
- {file = "google_api_core-2.17.0-py3-none-any.whl", hash = "sha256:08ed79ed8e93e329de5e3e7452746b734e6bf8438d8d64dd3319d21d3164890c"},
+ {file = "google-api-core-2.17.1.tar.gz", hash = "sha256:9df18a1f87ee0df0bc4eea2770ebc4228392d8cc4066655b320e2cfccb15db95"},
+ {file = "google_api_core-2.17.1-py3-none-any.whl", hash = "sha256:610c5b90092c360736baccf17bd3efbcb30dd380e7a6dc28a71059edb8bd0d8e"},
]
[package.dependencies]
@@ -1602,13 +1602,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"]
[[package]]
name = "google-auth"
-version = "2.27.0"
+version = "2.28.0"
description = "Google Authentication Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "google-auth-2.27.0.tar.gz", hash = "sha256:e863a56ccc2d8efa83df7a80272601e43487fa9a728a376205c86c26aaefa821"},
- {file = "google_auth-2.27.0-py2.py3-none-any.whl", hash = "sha256:8e4bad367015430ff253fe49d500fdc3396c1a434db5740828c728e45bcce245"},
+ {file = "google-auth-2.28.0.tar.gz", hash = "sha256:3cfc1b6e4e64797584fb53fc9bd0b7afa9b7c0dba2004fa7dcc9349e58cc3195"},
+ {file = "google_auth-2.28.0-py2.py3-none-any.whl", hash = "sha256:7634d29dcd1e101f5226a23cbc4a0c6cda6394253bf80e281d9c5c6797869c53"},
]
[package.dependencies]
@@ -1868,13 +1868,13 @@ files = [
[[package]]
name = "httpcore"
-version = "1.0.2"
+version = "1.0.3"
description = "A minimal low-level HTTP client."
optional = false
python-versions = ">=3.8"
files = [
- {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
- {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
+ {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"},
+ {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"},
]
[package.dependencies]
@@ -1885,7 +1885,7 @@ h11 = ">=0.13,<0.15"
asyncio = ["anyio (>=4.0,<5.0)"]
http2 = ["h2 (>=3,<5)"]
socks = ["socksio (==1.*)"]
-trio = ["trio (>=0.22.0,<0.23.0)"]
+trio = ["trio (>=0.22.0,<0.24.0)"]
[[package]]
name = "httpx"
@@ -2540,17 +2540,18 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>
[[package]]
name = "jupyterlab"
-version = "4.0.12"
+version = "4.1.1"
description = "JupyterLab computational environment"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyterlab-4.0.12-py3-none-any.whl", hash = "sha256:53f132480e5f6564f4e20d1b5ed4e8b7945952a2decd5bdfa43760b1b536c99d"},
- {file = "jupyterlab-4.0.12.tar.gz", hash = "sha256:965d92efa82a538ed70ccb3968d9aabba788840da882e13d7b061780cdedc3b7"},
+ {file = "jupyterlab-4.1.1-py3-none-any.whl", hash = "sha256:fa3e8c18b804eac04e51ceebd9dd3dd396e08106816f0d09cc426799d7087632"},
+ {file = "jupyterlab-4.1.1.tar.gz", hash = "sha256:8acc9f561729d8f32c14c294c397917cddfeeb13a5d46f811979b71b4911a9fd"},
]
[package.dependencies]
async-lru = ">=1.0.0"
+httpx = ">=0.25.0"
importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
ipykernel = "*"
@@ -2566,9 +2567,9 @@ tornado = ">=6.2.0"
traitlets = "*"
[package.extras]
-dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.6)"]
-docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
-docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.2.0)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.2.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.1)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post6)", "matplotlib (==3.8.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.0)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"]
test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
[[package]]
@@ -2584,13 +2585,13 @@ files = [
[[package]]
name = "jupyterlab-server"
-version = "2.25.2"
+version = "2.25.3"
description = "A set of server components for JupyterLab and JupyterLab like applications."
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
- {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+ {file = "jupyterlab_server-2.25.3-py3-none-any.whl", hash = "sha256:c48862519fded9b418c71645d85a49b2f0ec50d032ba8316738e9276046088c1"},
+ {file = "jupyterlab_server-2.25.3.tar.gz", hash = "sha256:846f125a8a19656611df5b03e5912c8393cea6900859baa64fa515eb64a8dc40"},
]
[package.dependencies]
@@ -2621,13 +2622,13 @@ files = [
[[package]]
name = "langchain"
-version = "0.1.6"
+version = "0.1.7"
description = "Building applications with LLMs through composability"
optional = true
python-versions = ">=3.8.1,<4.0"
files = [
- {file = "langchain-0.1.6-py3-none-any.whl", hash = "sha256:925e180fd1ae53b7085e46b3cdc9db04c24ddc6f4ac08f171eea29498d99603a"},
- {file = "langchain-0.1.6.tar.gz", hash = "sha256:a885e16c10b9ed11f312eaa6570bc48d27305362b26f6c235cafdcc794e26e71"},
+ {file = "langchain-0.1.7-py3-none-any.whl", hash = "sha256:29d95f12afe9690953820970205dba3b098ee1f7531e80eb18c1236d3feda921"},
+ {file = "langchain-0.1.7.tar.gz", hash = "sha256:b40fbe2b65360afe6c0d5bbf37e79469f990779460640edde5b906175c49807e"},
]
[package.dependencies]
@@ -2635,7 +2636,7 @@ aiohttp = ">=3.8.3,<4.0.0"
async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""}
dataclasses-json = ">=0.5.7,<0.7"
jsonpatch = ">=1.33,<2.0"
-langchain-community = ">=0.0.18,<0.1"
+langchain-community = ">=0.0.20,<0.1"
langchain-core = ">=0.1.22,<0.2"
langsmith = ">=0.0.83,<0.1"
numpy = ">=1,<2"
@@ -2661,13 +2662,13 @@ text-helpers = ["chardet (>=5.1.0,<6.0.0)"]
[[package]]
name = "langchain-community"
-version = "0.0.19"
+version = "0.0.20"
description = "Community contributed LangChain integrations."
optional = true
python-versions = ">=3.8.1,<4.0"
files = [
- {file = "langchain_community-0.0.19-py3-none-any.whl", hash = "sha256:ebff8daa0110d53555f4963f1f739b85f9ca63ef82598ece5f5c3f73fe0aa82e"},
- {file = "langchain_community-0.0.19.tar.gz", hash = "sha256:5d18ad9e188b10aaba6361fb2a747cf29b64b21ffb8061933fec090187ca39c2"},
+ {file = "langchain_community-0.0.20-py3-none-any.whl", hash = "sha256:bd112b5813702919c50f89b1afa2b63adf1da89999df4842b327ee11220f8c39"},
+ {file = "langchain_community-0.0.20.tar.gz", hash = "sha256:c56c48bc77d24e1fc399a9ee9a637d96e3b2ff952e3a080b5a41820d9d00fb3c"},
]
[package.dependencies]
@@ -2683,17 +2684,17 @@ tenacity = ">=8.1.0,<9.0.0"
[package.extras]
cli = ["typer (>=0.9.0,<0.10.0)"]
-extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"]
+extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"]
[[package]]
name = "langchain-core"
-version = "0.1.22"
+version = "0.1.23"
description = "Building applications with LLMs through composability"
optional = true
python-versions = ">=3.8.1,<4.0"
files = [
- {file = "langchain_core-0.1.22-py3-none-any.whl", hash = "sha256:d1263c2707ce18bb13654c88f891e53f39edec9b11ff7d0d0f23fd920927b2d6"},
- {file = "langchain_core-0.1.22.tar.gz", hash = "sha256:deac12b3e42a08bbbaa2acf83d5f8dd2d5513256d8daf0e853e9d68ff4c99d79"},
+ {file = "langchain_core-0.1.23-py3-none-any.whl", hash = "sha256:d42fac013c39a8b0bcd7e337a4cb6c17c16046c60d768f89df582ad73ec3c5cb"},
+ {file = "langchain_core-0.1.23.tar.gz", hash = "sha256:34359cc8b6f8c3d45098c54a6a9b35c9f538ef58329cd943a2249d6d7b4e5806"},
]
[package.dependencies]
@@ -2799,6 +2800,21 @@ files = [
six = "*"
tornado = {version = "*", markers = "python_version > \"2.7\""}
+[[package]]
+name = "llamaindex-py-client"
+version = "0.1.12"
+description = ""
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "llamaindex_py_client-0.1.12-py3-none-any.whl", hash = "sha256:7e6008cf9dad6548340be579bbacf3177119a7a971bc60ce20a68c1a1f3242c7"},
+ {file = "llamaindex_py_client-0.1.12.tar.gz", hash = "sha256:32e025240553f31a968c075d518f81879d05c9e44986003c37502024bb95d035"},
+]
+
+[package.dependencies]
+httpx = ">=0.20.0"
+pydantic = ">=1.10"
+
[[package]]
name = "lm-format-enforcer"
version = "0.4.3"
@@ -2821,7 +2837,6 @@ description = "Powerful and Pythonic XML processing library combining libxml2/li
optional = false
python-versions = ">=3.6"
files = [
- {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"},
{file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"},
{file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"},
{file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"},
@@ -2831,7 +2846,6 @@ files = [
{file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"},
{file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"},
{file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"},
- {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"},
{file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"},
{file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"},
{file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"},
@@ -2841,7 +2855,6 @@ files = [
{file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"},
{file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"},
{file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"},
- {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"},
{file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"},
{file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"},
{file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"},
@@ -2867,8 +2880,8 @@ files = [
{file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"},
{file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"},
{file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"},
- {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"},
{file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"},
+ {file = "lxml-5.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cfbac9f6149174f76df7e08c2e28b19d74aed90cad60383ad8671d3af7d0502f"},
{file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"},
{file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"},
{file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"},
@@ -2876,7 +2889,6 @@ files = [
{file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"},
{file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"},
{file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"},
- {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"},
{file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"},
{file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"},
{file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"},
@@ -3595,18 +3607,18 @@ setuptools = "*"
[[package]]
name = "notebook"
-version = "7.0.8"
+version = "7.1.0"
description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
optional = false
python-versions = ">=3.8"
files = [
- {file = "notebook-7.0.8-py3-none-any.whl", hash = "sha256:7f421b3fd46a17d91830e724b94e8e9ae922af152ebfd48b1e13ae4a07d8193c"},
- {file = "notebook-7.0.8.tar.gz", hash = "sha256:3957ecd956056b0014677afc76d3bb44c2d2f29649f87b24d13606ff1d18938f"},
+ {file = "notebook-7.1.0-py3-none-any.whl", hash = "sha256:a8fa4ccb5e5fe220f29d9900337efd7752bc6f2efe004d6f320db01f7743adc9"},
+ {file = "notebook-7.1.0.tar.gz", hash = "sha256:99caf01ff166b1cc86355c9b37c1ba9bf566c1d7fc4ab57bb6f8f24e36c4260e"},
]
[package.dependencies]
jupyter-server = ">=2.4.0,<3"
-jupyterlab = ">=4.0.2,<4.1"
+jupyterlab = ">=4.1.1,<4.2"
jupyterlab-server = ">=2.22.1,<3"
notebook-shim = ">=0.2,<0.3"
tornado = ">=6.2.0"
@@ -3618,13 +3630,13 @@ test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4
[[package]]
name = "notebook-shim"
-version = "0.2.3"
+version = "0.2.4"
description = "A shim layer for notebook traits and config"
optional = false
python-versions = ">=3.7"
files = [
- {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
- {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"},
+ {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"},
]
[package.dependencies]
@@ -4335,13 +4347,13 @@ murmurhash = ">=0.28.0,<1.1.0"
[[package]]
name = "prometheus-client"
-version = "0.19.0"
+version = "0.20.0"
description = "Python client for the Prometheus monitoring system."
optional = false
python-versions = ">=3.8"
files = [
- {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
- {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+ {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"},
+ {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"},
]
[package.extras]
@@ -4380,22 +4392,22 @@ testing = ["google-api-core[grpc] (>=1.31.5)"]
[[package]]
name = "protobuf"
-version = "4.25.2"
+version = "4.25.3"
description = ""
optional = false
python-versions = ">=3.8"
files = [
- {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"},
- {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"},
- {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"},
- {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"},
- {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"},
- {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"},
- {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"},
- {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"},
- {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"},
- {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"},
- {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"},
+ {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"},
]
[[package]]
@@ -4459,7 +4471,6 @@ files = [
{file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"},
{file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"},
- {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"},
@@ -4468,8 +4479,6 @@ files = [
{file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"},
- {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"},
- {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"},
{file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"},
{file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"},
{file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"},
@@ -5078,7 +5087,6 @@ files = [
{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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{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"},
@@ -5474,110 +5482,110 @@ files = [
[[package]]
name = "rpds-py"
-version = "0.17.1"
+version = "0.18.0"
description = "Python bindings to Rust's persistent data structures (rpds)"
optional = false
python-versions = ">=3.8"
files = [
- {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"},
- {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"},
- {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"},
- {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"},
- {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"},
- {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"},
- {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"},
- {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"},
- {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"},
- {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"},
- {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"},
- {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"},
- {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"},
- {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"},
- {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"},
- {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"},
- {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"},
- {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"},
- {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"},
- {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"},
- {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"},
- {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"},
- {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"},
- {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"},
- {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"},
- {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"},
- {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"},
- {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"},
- {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"},
- {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"},
- {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"},
- {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"},
- {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"},
- {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"},
- {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"},
- {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
+ {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
+ {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
+ {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
+ {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
+ {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
+ {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
+ {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
+ {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
+ {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
+ {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
+ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
]
[[package]]
@@ -6007,41 +6015,41 @@ files = [
[[package]]
name = "spacy"
-version = "3.7.2"
+version = "3.7.4"
description = "Industrial-strength Natural Language Processing (NLP) in Python"
optional = true
python-versions = ">=3.7"
files = [
- {file = "spacy-3.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b4e285366d36c85f784d606a2d966912a18f4d24d47330c1c6acbdd9f19ee373"},
- {file = "spacy-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f132c05368781be5d3be3d706afce7e7a9a0c9edc0dbb7c616162c37bc386561"},
- {file = "spacy-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3767b2cabbe337d62779ae4fdc4d57a39755c17dfc499de3ad2bae622caa43"},
- {file = "spacy-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a748ade269bdbea9baaa49ec00882404e7e921163cdc14f5612320d0a957dfd"},
- {file = "spacy-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:66467128e494bfa4dc9c3996e4cbb26bac4741bca4cdd8dd83a6e71182148945"},
- {file = "spacy-3.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5af30aea578e7414fb0eb4dbad0ff0fa0a7d8e833c3e733eceb2617534714c7d"},
- {file = "spacy-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7293de33b1e9ede151555070ad0fee3bac98aefcaac9e615eeeb4296846bd479"},
- {file = "spacy-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26940681cf20c8831c558e2c3d345ff20b5bc3c5e6d41c66172d0c5136042f0b"},
- {file = "spacy-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a334667625153f7aaf188c20af7e82c886e41a88483a056accba5a7d51095c6"},
- {file = "spacy-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:43e6147d3583b62a2d3af0cd913ac025068196d587345751e198391ff0b8c1e9"},
- {file = "spacy-3.7.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2558df8c11905a0f77a2a3639a12ef8a522d171bcd88eaec039bedf6c60d7e01"},
- {file = "spacy-3.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:df1b9c4bbadc89bad10dba226d52c113e231ea6ad35c8a916ab138b31f69fa24"},
- {file = "spacy-3.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbbe055d2170ac7505a9f580bbdcd2146d0701bdbd6cea2333e18b0db655b97a"},
- {file = "spacy-3.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d35129b16ae2ca4212bf22a5c88b67b1e019e434fc48b69d3b95f80bc9e14e42"},
- {file = "spacy-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:a7419682aba99624cc4df7df66764b6ec62ff415f32c3682c1af2a37bd11a913"},
- {file = "spacy-3.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b12ab9c4923ffd38da84baf09464982da44e8275d680fb3c5da2051d7dd7bd2d"},
- {file = "spacy-3.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c5c9db529dc1caa908813c58ba1643e929d2c811768596a2b64e2e01a882b1"},
- {file = "spacy-3.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcaad95e3e7d0ea8f381f3e2d9e80b7f346ecb6566de9bd55361736fa563fc22"},
- {file = "spacy-3.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5d9b12284871ca5daa7774604a964486957567a86f1af898da0260e94b815e0d"},
- {file = "spacy-3.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2bd89770f61d5980e788ef382297322cceb7dcc4b848d68cb1da8af7d80d6eb6"},
- {file = "spacy-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d42f9151a2f01b34227ed31c8db8b7c67889ebcc637eae390faec8093ea1fb12"},
- {file = "spacy-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3d25d2f22ba1d2dd46d103e4a54826582de2b853b6f95dfb97b005563b38838"},
- {file = "spacy-3.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:730f23340dd157817d2da6df21f69966791b0bdbd6ea108845a65f3e1c0e981c"},
- {file = "spacy-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:9c2f3f04b4b894a6c42ee93cec2f2b158f246f344927e65d9d19b72c5a6493ea"},
- {file = "spacy-3.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b22e0e8dac76740d55556fa13ebb9e1c829779ea0b7ec7a9e04f32efc66f74b9"},
- {file = "spacy-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ad7f378350104ca1f9e81180485d8b094aad7acb9b4bce84f1387b905cf230a2"},
- {file = "spacy-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ccbffb7825c08c0586ef7384d0aa23196f9ac106b5c7b3c551907316930f94f"},
- {file = "spacy-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:111955d7f4786b952672e9c5cfd9f8b74d81e64b62d479f71efe9cfc2a027a1d"},
- {file = "spacy-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:e8a7291e7e1cfcb6041b26f96d0a66b603725c1beff4e0391c3d9226fae16e04"},
- {file = "spacy-3.7.2.tar.gz", hash = "sha256:cedf4927bf0d3fec773a6ce48d5d2c91bdb02fed3c7d5ec07bdb873f1126f1a0"},
+ {file = "spacy-3.7.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0f748625192f573c07ddea5fcd324919dbfbf4f4a2f7a1fc731e6dcba7321ea1"},
+ {file = "spacy-3.7.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6288dca7b3a5489b3d7ce68404bc432ca22f826c662a12af47ef7bdb264307fb"},
+ {file = "spacy-3.7.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef59db99b12a72d2646be3888d87f94c59e11cd07adc2f50a8130e83f07eb1cf"},
+ {file = "spacy-3.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f07477a4027711c22b3865e78dc9076335c03fcf318a6736159bf07e2a923125"},
+ {file = "spacy-3.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:787ce42a837f7edfbd4185356eea893a81b7dd75743d0047f2b9bf179775f970"},
+ {file = "spacy-3.7.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e82b9da21853d4aee46811804dc7e136895f087fda25c7585172d95eb9b70833"},
+ {file = "spacy-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07ffedf51899441070fb70432f8f873696f39e0e31c9ce7403101c459f8a1281"},
+ {file = "spacy-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba57bcc111eca7b086ee33a9636df775cfd4b14302f7d0ffbc11e95ac0fb3f0e"},
+ {file = "spacy-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7580d1565f4d1ccbee9a18531f993a5b9b37ced96f145153dd4e98ceec607a55"},
+ {file = "spacy-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:df99c6f0085b1ec8e88beb5fd96d4371cef6fc19c202c41fc4fadc2afd55a157"},
+ {file = "spacy-3.7.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b982ebab417189346acb4722637c573830d62e157ba336c3eb6c417249344be1"},
+ {file = "spacy-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e7c29e152d8ea060af60da9410fa8ef038f3c9068a206905ee5c704de78f6e87"},
+ {file = "spacy-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:023c9a008328f55c4717c56c4f8a28073b9961547f7d38a9405c967a52e66d59"},
+ {file = "spacy-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1969d3d0fd0c811b7485438460f0ae8cfe16d46b54bcb8d1c26e70914e67e3d"},
+ {file = "spacy-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:040f7df5096c817450820eaaa426d54ed266254d16974e9a707a32f5b0f139ae"},
+ {file = "spacy-3.7.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6757e8fbfd35dc0ed830296d5756f46d5b8d4b0353925dbe2f9aa33b82c5308"},
+ {file = "spacy-3.7.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c500c1bad9e0488814a75077089aeef64a6b520ae8131578f266a08168106fa3"},
+ {file = "spacy-3.7.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c992e2c5c0cd06c7f3e74fe8d758885117090013931c7938277d1421660bf71f"},
+ {file = "spacy-3.7.4-cp37-cp37m-win_amd64.whl", hash = "sha256:2463c56ab1378f2b9a675340a2e3dfb618989d0da8cdce06429bc9b1dad4f294"},
+ {file = "spacy-3.7.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b43e92edfa99f34dbb9dd30175f41158d20945e3179055d0071fee19394add96"},
+ {file = "spacy-3.7.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c26a81d33c93e4a8e3360d61dcce0802fb886de79f666a487ea5abbd3ce4b30b"},
+ {file = "spacy-3.7.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d7910ca7a91bf423febd8a9a10ca6a4cfcb5c99abdec79df1eb7b67ea3e3c90"},
+ {file = "spacy-3.7.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b16768b9e5c350b8a383a6bd84cd0481ccdf10ae6231f568598890638065f69"},
+ {file = "spacy-3.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:ed99fb176979b1e3cf6830161f8e881beae54e80147b05fca31d9a67cb12fbca"},
+ {file = "spacy-3.7.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ca8112330982dbeef125cc5eb40e0349493055835a0ebe29028a0953a25d8522"},
+ {file = "spacy-3.7.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:977f37493d7cf0b5dca155f0450d47890378703283c29919cdcc220db994a775"},
+ {file = "spacy-3.7.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ad5e931c294d100ec3edb40e40f2722ef505cea16312839dd6467e81d665740"},
+ {file = "spacy-3.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11ebf6054cd3ec3638801d7ff9b709e32fb9c15512b347b489bfe2ccb1102c9f"},
+ {file = "spacy-3.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:f5b930753027ac599f70bb7e77d6a2256191fe582e6f3f0cd624d88f6c279fa4"},
+ {file = "spacy-3.7.4.tar.gz", hash = "sha256:525f2ced2e40761562c8cace93ef6a1e6e8c483f27bd564bc1b15f608efbe85b"},
]
[package.dependencies]
@@ -6063,7 +6071,7 @@ smart-open = ">=5.2.1,<7.0.0"
spacy-legacy = ">=3.0.11,<3.1.0"
spacy-loggers = ">=1.0.0,<2.0.0"
srsly = ">=2.4.3,<3.0.0"
-thinc = ">=8.1.8,<8.3.0"
+thinc = ">=8.2.2,<8.3.0"
tqdm = ">=4.38.0,<5.0.0"
typer = ">=0.3.0,<0.10.0"
wasabi = ">=0.9.1,<1.2.0"
@@ -6362,60 +6370,60 @@ test = ["pytest"]
[[package]]
name = "sqlalchemy"
-version = "2.0.26"
+version = "2.0.27"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.26-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:56524d767713054f8758217b3a811f6a736e0ae34e7afc33b594926589aa9609"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c2d8a2c68b279617f13088bdc0fc0e9b5126f8017f8882ff08ee41909fab0713"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d377645913d47f0dc802b415bcfe7fb085d86646a12278d77c12eb75b5e1b4"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fc0628d2026926404dabc903dc5628f7d936a792aa3a1fc54a20182df8e2172"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:872f2907ade52601a1e729e85d16913c24dc1f6e7c57d11739f18dcfafde29db"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba46fa770578b3cf3b5b77dadb7e94fda7692dd4d1989268ef3dcb65f31c40a3"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-win32.whl", hash = "sha256:651d10fdba7984bf100222d6e4acc496fec46493262b6170be1981ef860c6184"},
- {file = "SQLAlchemy-2.0.26-cp310-cp310-win_amd64.whl", hash = "sha256:8f95ede696ab0d7328862d69f29b643d35b668c4f3619cb2f0281adc16e64c1b"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fab1bb909bd24accf2024a69edd4f885ded182c079c4dbcd515b4842f86b07cb"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7ee16afd083bb6bb5ab3962ac7f0eafd1d196c6399388af35fef3d1c6d6d9bb"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379af901ceb524cbee5e15c1713bf9fd71dc28053286b7917525d01b938b9628"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94a78f56ea13f4d6e9efcd2a2d08cc13531918e0516563f6303c4ad98c81e21d"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a481cc2eec83776ff7b6bb12c8e85d0378af0e2ec4584ac3309365a2a380c64b"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8cbeb0e49b605cd75f825fb9239a554803ef2bef1a7b2a8b428926ed518b6b63"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-win32.whl", hash = "sha256:e70cce65239089390c193a7b0d171ce89d2e3dedf797f8010031b2aa2b1e9c80"},
- {file = "SQLAlchemy-2.0.26-cp311-cp311-win_amd64.whl", hash = "sha256:750d1ef39d50520527c45c309c3cb10bbfa6131f93081b4e93858abb5ece2501"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b39503c3a56e1b2340a7d09e185ddb60b253ad0210877a9958ac64208eb23674"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1a870e6121a052f826f7ae1e4f0b54ca4c0ccd613278218ca036fa5e0f3be7df"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5901eed6d0e23ca4b04d66a561799d4f0fe55fcbfc7ca203bb8c3277f442085b"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25fe55aab9b20ae4a9523bb269074202be9d92a145fcc0b752fff409754b5f6"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5310958d08b4bafc311052be42a3b7d61a93a2bf126ddde07b85f712e7e4ac7b"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd133afb7e6c59fad365ffa97fb06b1001f88e29e1de351bef3d2b1224e2f132"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-win32.whl", hash = "sha256:dc32ecf643c4904dd413e6a95a3f2c8a89ccd6f15083e586dcf8f42eb4e317ae"},
- {file = "SQLAlchemy-2.0.26-cp312-cp312-win_amd64.whl", hash = "sha256:6e25f029e8ad6d893538b5abe8537e7f09e21d8e96caee46a7e2199f3ddd77b0"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:99a9a8204b8937aa72421e31c493bfc12fd063a8310a0522e5a9b98e6323977c"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:691d68a4fca30c9a676623d094b600797699530e175b6524a9f57e3273f5fa8d"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79a74a4ca4310c812f97bf0f13ce00ed73c890954b5a20b32484a9ab60e567e9"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2efbbeb18c0e1c53b670a46a009fbde7b58e05b397a808c7e598532b17c6f4b"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3fc557f5402206c18ec3d288422f8e5fa764306d49f4efbc6090a7407bf54938"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-win32.whl", hash = "sha256:a9846ffee3283cff4ec476e7ee289314290fcb2384aab5045c6f481c5c4d011f"},
- {file = "SQLAlchemy-2.0.26-cp37-cp37m-win_amd64.whl", hash = "sha256:ed4667d3d5d6e203a271d684d5b213ebcd618f7a8bc605752a8865eb9e67a79a"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:79e629df3f69f849a1482a2d063596b23e32036b83547397e68725e6e0d0a9ab"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4b4d848b095173e0a9e377127b814490499e55f5168f617ae2c07653c326b9d1"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f06afe8e96d7f221cc0b59334dc400151be22f432785e895e37030579d253c3"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f75ac12d302205e60f77f46bd162d40dc37438f1f8db160d2491a78b19a0bd61"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec3717c1efee8ad4b97f6211978351de3abe1e4b5f73e32f775c7becec021c5c"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06ed4d6bb2365222fb9b0a05478a2d23ad8c1dd874047a9ae1ca1d45f18a255e"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-win32.whl", hash = "sha256:caa79a6caeb4a3cc4ddb9aba9205c383f5d3bcb60d814e87e74570514754e073"},
- {file = "SQLAlchemy-2.0.26-cp38-cp38-win_amd64.whl", hash = "sha256:996b41c38e34a980e9f810d6e2709a3196e29ee34e46e3c16f96c63da10a9da1"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4f57af0866f6629eae2d24d022ba1a4c1bac9b16d45027bbfcda4c9d5b0d8f26"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e1a532bc33163fb19c4759a36504a23e63032bc8d47cee1c66b0b70a04a0957b"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02a4f954ccb17bd8cff56662efc806c5301508233dc38d0253a5fdb2f33ca3ba"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a678f728fb075e74aaa7fdc27f8af8f03f82d02e7419362cc8c2a605c16a4114"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8b39462c9588d4780f041e1b84d2ba038ac01c441c961bbee622dd8f53dec69f"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98f4d0d2bda2921af5b0c2ca99207cdab00f2922da46a6336c62c8d6814303a7"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-win32.whl", hash = "sha256:6d68e6b507a3dd20c0add86ac0a0ca061d43c9a0162a122baa5fe952f14240f1"},
- {file = "SQLAlchemy-2.0.26-cp39-cp39-win_amd64.whl", hash = "sha256:fb97a9b93b953084692a52a7877957b7a88dfcedc0c5652124f5aebf5999f7fe"},
- {file = "SQLAlchemy-2.0.26-py3-none-any.whl", hash = "sha256:1128b2cdf49107659f6d1f452695f43a20694cc9305a86e97b70793a1c74eeb4"},
- {file = "SQLAlchemy-2.0.26.tar.gz", hash = "sha256:e1bcd8fcb30305e27355d553608c2c229d3e589fb7ff406da7d7e5d50fa14d0d"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"},
+ {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"},
+ {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"},
]
[package.dependencies]
@@ -6662,13 +6670,13 @@ torch = ["torch (>=1.6.0)"]
[[package]]
name = "threadpoolctl"
-version = "3.2.0"
+version = "3.3.0"
description = "threadpoolctl"
optional = true
python-versions = ">=3.8"
files = [
- {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"},
- {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"},
+ {file = "threadpoolctl-3.3.0-py3-none-any.whl", hash = "sha256:6155be1f4a39f31a18ea70f94a77e0ccd57dced08122ea61109e7da89883781e"},
+ {file = "threadpoolctl-3.3.0.tar.gz", hash = "sha256:5dac632b4fa2d43f42130267929af3ba01399ef4bd1882918e92dbc30365d30c"},
]
[[package]]
@@ -7965,4 +7973,4 @@ query-tools = ["guidance", "jsonpath-ng", "lm-format-enforcer", "rank-bm25", "sc
[metadata]
lock-version = "2.0"
python-versions = ">=3.8.1,<4.0"
-content-hash = "edf61c6e8fcdd425acd766dbdb489bd500f75be8631ca2240161b10325aa5cfa"
+content-hash = "d5364f07fbd28636b7d4f998e45d2383505dfe8fb24eb10cb42f9b148a5d4a19"
diff --git a/llama-index-core/pyproject.toml b/llama-index-core/pyproject.toml
index a59ec960cbeee..8f089d12a8e52 100644
--- a/llama-index-core/pyproject.toml
+++ b/llama-index-core/pyproject.toml
@@ -42,7 +42,7 @@ name = "llama-index-core"
packages = [{include = "llama_index"}]
readme = "README.md"
repository = "https://github.com/run-llama/llama_index"
-version = "0.10.3"
+version = "0.10.5"
[tool.poetry.dependencies]
SQLAlchemy = {extras = ["asyncio"], version = ">=1.4.49"}
@@ -82,6 +82,7 @@ dirtyjson = "^1.0.8"
tqdm = "^4.66.1"
pillow = ">=9.0.0"
PyYAML = ">=6.0.1"
+llamaindex-py-client = ">=0.1.12"
[tool.poetry.extras]
gradientai = [
diff --git a/llama-index-core/tests/embeddings/todo_hf_test_utils.py b/llama-index-core/tests/embeddings/todo_hf_test_utils.py
new file mode 100644
index 0000000000000..b242941b7883a
--- /dev/null
+++ b/llama-index-core/tests/embeddings/todo_hf_test_utils.py
@@ -0,0 +1,56 @@
+from typing import Any, Dict
+
+# pants: no-infer-dep
+from llama_index.core.embeddings.mock_embed_model import MockEmbedding
+from llama_index.core.embeddings.utils import resolve_embed_model
+from llama_index.embeddings.huggingface import (
+ HuggingFaceEmbedding,
+) # pants: no-infer-dep
+from llama_index.embeddings.openai import OpenAIEmbedding # pants: no-infer-dep
+from pytest import MonkeyPatch
+
+
+def mock_hf_embeddings(self: Any, *args: Any, **kwargs: Dict[str, Any]) -> Any:
+ """Mock HuggingFaceEmbeddings."""
+ super(HuggingFaceEmbedding, self).__init__(
+ model_name="fake",
+ tokenizer_name="fake",
+ model="fake",
+ tokenizer="fake",
+ )
+ return
+
+
+def mock_openai_embeddings(self: Any, *args: Any, **kwargs: Dict[str, Any]) -> Any:
+ """Mock OpenAIEmbedding."""
+ super(OpenAIEmbedding, self).__init__(
+ api_key="fake", api_base="fake", api_version="fake"
+ )
+ return
+
+
+def test_resolve_embed_model(monkeypatch: MonkeyPatch) -> None:
+ monkeypatch.setattr(
+ "llama_index.embeddings.huggingface.HuggingFaceEmbedding.__init__",
+ mock_hf_embeddings,
+ )
+ monkeypatch.setattr(
+ "llama_index.embeddings.openai.OpenAIEmbedding.__init__",
+ mock_openai_embeddings,
+ )
+
+ # Test None
+ embed_model = resolve_embed_model(None)
+ assert isinstance(embed_model, MockEmbedding)
+
+ # Test str
+ embed_model = resolve_embed_model("local")
+ assert isinstance(embed_model, HuggingFaceEmbedding)
+
+ # Test LCEmbeddings
+ embed_model = resolve_embed_model(HuggingFaceEmbedding())
+ assert isinstance(embed_model, HuggingFaceEmbedding)
+
+ # Test BaseEmbedding
+ embed_model = resolve_embed_model(OpenAIEmbedding())
+ assert isinstance(embed_model, OpenAIEmbedding)
diff --git a/llama-index-core/tests/evaluation/test_platform_eval.py b/llama-index-core/tests/evaluation/test_platform_eval.py
new file mode 100644
index 0000000000000..392d59ebf1255
--- /dev/null
+++ b/llama-index-core/tests/evaluation/test_platform_eval.py
@@ -0,0 +1,30 @@
+import os
+import sys
+
+import pytest
+from llama_index.core.evaluation.eval_utils import upload_eval_dataset
+from llama_index_client.client import PlatformApi
+
+base_url = os.environ.get("LLAMA_CLOUD_BASE_URL", None)
+api_key = os.environ.get("LLAMA_CLOUD_API_KEY", None)
+python_version = sys.version
+
+
+@pytest.mark.skipif(
+ not base_url or not api_key, reason="No platform base url or api keyset"
+)
+@pytest.mark.integration()
+def test_upload_eval_dataset() -> None:
+ eval_dataset_id = upload_eval_dataset(
+ "test_dataset" + python_version, # avoid CI test clashes
+ project_name="test_project" + python_version,
+ questions=["foo", "bar"],
+ overwrite=True,
+ )
+
+ client = PlatformApi(base_url=base_url, token=api_key)
+ eval_dataset = client.eval.get_dataset(dataset_id=eval_dataset_id)
+ assert eval_dataset.name == "test_dataset" + python_version
+
+ eval_questions = client.eval.get_questions(dataset_id=eval_dataset_id)
+ assert len(eval_questions) == 2
diff --git a/llama-index-core/tests/ingestion/test_data_sinks.py b/llama-index-core/tests/ingestion/test_data_sinks.py
new file mode 100644
index 0000000000000..3c6eb252913f1
--- /dev/null
+++ b/llama-index-core/tests/ingestion/test_data_sinks.py
@@ -0,0 +1,76 @@
+import sys
+from unittest.mock import MagicMock
+
+import pytest
+from llama_index.core.ingestion.data_sinks import (
+ ConfigurableDataSinks,
+ ConfiguredDataSink,
+)
+
+try:
+ from llama_index.vector_store.weaviate import WeaviateVectorStore
+except ImportError:
+ WeaviateVectorStore = None
+
+
+@pytest.mark.parametrize("configurable_data_sink_type", ConfigurableDataSinks)
+def test_can_generate_schema_for_data_sink_component_type(
+ configurable_data_sink_type: ConfigurableDataSinks,
+) -> None:
+ schema = configurable_data_sink_type.value.schema() # type: ignore
+ assert schema is not None
+ assert len(schema) > 0
+
+ # also check that we can generate schemas for
+ # ConfiguredDataSink[component_type]
+ component_type = configurable_data_sink_type.value.component_type
+ configured_schema = ConfiguredDataSink[component_type].schema() # type: ignore
+ assert configured_schema is not None
+ assert len(configured_schema) > 0
+
+
+@pytest.mark.skipif(WeaviateVectorStore is None, reason="weaviate not installed")
+def test_can_build_configured_data_sink_from_component() -> None:
+ sys.modules["weaviate"] = MagicMock()
+ weaviate_client = MagicMock()
+ batch_context_manager = MagicMock()
+ weaviate_client.batch.__enter__.return_value = batch_context_manager
+
+ vector_store = WeaviateVectorStore(weaviate_client=weaviate_client)
+ configured_data_sink = ConfiguredDataSink.from_component(vector_store)
+ assert isinstance(
+ configured_data_sink,
+ ConfiguredDataSink[WeaviateVectorStore], # type: ignore
+ )
+ assert (
+ configured_data_sink.configurable_data_sink_type.value.component_type
+ == WeaviateVectorStore
+ )
+
+
+@pytest.mark.skipif(WeaviateVectorStore is None, reason="weaviate not installed")
+def test_build_configured_data_sink() -> None:
+ sys.modules["weaviate"] = MagicMock()
+ weaviate_client = MagicMock()
+ batch_context_manager = MagicMock()
+ weaviate_client.batch.__enter__.return_value = batch_context_manager
+
+ vector_store = WeaviateVectorStore(weaviate_client=weaviate_client)
+ configured_data_sink = ConfigurableDataSinks.WEAVIATE.build_configured_data_sink(
+ vector_store
+ )
+ assert isinstance(
+ configured_data_sink,
+ ConfiguredDataSink[WeaviateVectorStore], # type: ignore
+ )
+
+ with pytest.raises(ValueError):
+ ConfigurableDataSinks.PINECONE.build_configured_data_sink(vector_store)
+
+
+def test_unique_configurable_data_sink_names() -> None:
+ names = set()
+ for configurable_data_sink_type in ConfigurableDataSinks:
+ assert configurable_data_sink_type.value.name not in names
+ names.add(configurable_data_sink_type.value.name)
+ assert len(names) == len(ConfigurableDataSinks)
diff --git a/llama-index-core/tests/ingestion/test_data_sources.py b/llama-index-core/tests/ingestion/test_data_sources.py
new file mode 100644
index 0000000000000..e2cbb72e4df29
--- /dev/null
+++ b/llama-index-core/tests/ingestion/test_data_sources.py
@@ -0,0 +1,55 @@
+import pytest
+from llama_index.core.ingestion.data_sources import (
+ ConfigurableDataSources,
+ ConfiguredDataSource,
+)
+from llama_index.core.schema import Document
+
+
+@pytest.mark.parametrize("configurable_data_source_type", ConfigurableDataSources)
+def test_can_generate_schema_for_data_source_component_type(
+ configurable_data_source_type: ConfigurableDataSources,
+) -> None:
+ schema = configurable_data_source_type.value.schema() # type: ignore
+ assert schema is not None
+ assert len(schema) > 0
+
+ # also check that we can generate schemas for
+ # ConfiguredDataSource[component_type]
+ component_type = configurable_data_source_type.value.component_type
+ configured_schema = ConfiguredDataSource[component_type].schema() # type: ignore
+ assert configured_schema is not None
+ assert len(configured_schema) > 0
+
+
+def test_can_build_configured_data_source_from_component() -> None:
+ document = Document.example()
+ configured_data_source = ConfiguredDataSource.from_component(document)
+ assert isinstance(
+ configured_data_source,
+ ConfiguredDataSource[Document], # type: ignore
+ )
+ assert (
+ configured_data_source.configurable_data_source_type.value.component_type
+ == Document
+ )
+
+
+def test_build_configured_data_source() -> None:
+ document = Document.example()
+ configured_data_source = (
+ ConfigurableDataSources.DOCUMENT.build_configured_data_source(document)
+ )
+ assert isinstance(
+ configured_data_source,
+ ConfiguredDataSource[Document], # type: ignore
+ )
+
+
+def test_unique_configurable_data_source_names() -> None:
+ names = set()
+ for configurable_data_source_type in ConfigurableDataSources:
+ assert configurable_data_source_type.value.name not in names
+ names.add(configurable_data_source_type.value.name)
+ assert len(names) > 0
+ assert len(names) == len(ConfigurableDataSources)
diff --git a/llama-index-core/tests/ingestion/test_pipeline.py b/llama-index-core/tests/ingestion/test_pipeline.py
index f447932c7caba..eb0b65cf96a48 100644
--- a/llama-index-core/tests/ingestion/test_pipeline.py
+++ b/llama-index-core/tests/ingestion/test_pipeline.py
@@ -19,9 +19,12 @@ def teardown_function() -> None:
def test_build_pipeline() -> None:
pipeline = IngestionPipeline(
- reader=ReaderConfig(
- reader=StringIterableReader(), reader_kwargs={"texts": ["This is a test."]}
- ),
+ readers=[
+ ReaderConfig(
+ reader=StringIterableReader(),
+ reader_kwargs={"texts": ["This is a test."]},
+ )
+ ],
documents=[Document.example()],
transformations=[
SentenceSplitter(),
@@ -35,9 +38,12 @@ def test_build_pipeline() -> None:
def test_run_pipeline() -> None:
pipeline = IngestionPipeline(
- reader=ReaderConfig(
- reader=StringIterableReader(), reader_kwargs={"texts": ["This is a test."]}
- ),
+ readers=[
+ ReaderConfig(
+ reader=StringIterableReader(),
+ reader_kwargs={"texts": ["This is a test."]},
+ )
+ ],
documents=[Document.example()],
transformations=[
SentenceSplitter(),
diff --git a/llama-index-core/tests/ingestion/test_transformations.py b/llama-index-core/tests/ingestion/test_transformations.py
new file mode 100644
index 0000000000000..f4e7fa9b17d39
--- /dev/null
+++ b/llama-index-core/tests/ingestion/test_transformations.py
@@ -0,0 +1,68 @@
+import pytest
+from llama_index.core.ingestion.transformations import (
+ ConfigurableTransformations,
+ ConfiguredTransformation,
+)
+from llama_index.core.node_parser.text import SentenceSplitter, TokenTextSplitter
+
+
+@pytest.mark.parametrize(
+ "configurable_transformation_type", ConfigurableTransformations
+)
+def test_can_generate_schema_for_transformation_component_type(
+ configurable_transformation_type: ConfigurableTransformations,
+) -> None:
+ schema = configurable_transformation_type.value.schema() # type: ignore
+ assert schema is not None
+ assert len(schema) > 0
+
+ # also check that we can generate schemas for
+ # ConfiguredTransformation[component_type]
+ component_type = configurable_transformation_type.value.component_type
+ configured_schema = ConfiguredTransformation[
+ component_type # type: ignore
+ ].schema()
+ assert configured_schema is not None
+ assert len(configured_schema) > 0
+
+
+def test_can_build_configured_transform_from_component() -> None:
+ parser = SentenceSplitter()
+ configured_transformation = ConfiguredTransformation.from_component(parser)
+ assert isinstance(
+ configured_transformation,
+ ConfiguredTransformation[SentenceSplitter], # type: ignore
+ )
+ assert not isinstance(
+ configured_transformation,
+ ConfiguredTransformation[TokenTextSplitter], # type: ignore
+ )
+ assert (
+ configured_transformation.configurable_transformation_type.value.component_type
+ == SentenceSplitter
+ )
+
+
+def test_build_configured_transformation() -> None:
+ parser = SentenceSplitter()
+ configured_transformation = ConfigurableTransformations.SENTENCE_AWARE_NODE_PARSER.build_configured_transformation(
+ parser
+ )
+ assert isinstance(
+ configured_transformation,
+ ConfiguredTransformation[SentenceSplitter], # type: ignore
+ )
+
+ with pytest.raises(ValueError):
+ ConfigurableTransformations.TOKEN_AWARE_NODE_PARSER.build_configured_transformation(
+ parser
+ )
+
+
+def test_unique_configurable_transformations_names() -> None:
+ names = set()
+ for configurable_transformation_type in ConfigurableTransformations:
+ assert configurable_transformation_type.value.name not in names
+ names.add(configurable_transformation_type.value.name)
+ assert len(names) > 0
+ assert len(names) == len(ConfigurableTransformations)
diff --git a/llama-index-finetuning/llama_index/finetuning/embeddings/adapter.py b/llama-index-finetuning/llama_index/finetuning/embeddings/adapter.py
index 1d1a394832ef3..b719ae619d56f 100644
--- a/llama-index-finetuning/llama_index/finetuning/embeddings/adapter.py
+++ b/llama-index-finetuning/llama_index/finetuning/embeddings/adapter.py
@@ -50,7 +50,7 @@ def __init__(
) -> None:
"""Init params."""
import torch
- from llama_index.finetuning.embeddings.adapter_utils import (
+ from llama_index.embeddings.adapter import (
BaseAdapter,
LinearLayer,
)
@@ -108,7 +108,7 @@ def from_model_path(
**kwargs (Any): Additional kwargs (see __init__)
"""
- from llama_index.finetuning.embeddings.adapter_utils import LinearLayer
+ from llama_index.embeddings.adapter import LinearLayer
model_cls = model_cls or LinearLayer
model = model_cls.load(model_path)
diff --git a/llama-index-finetuning/llama_index/finetuning/embeddings/adapter_utils.py b/llama-index-finetuning/llama_index/finetuning/embeddings/adapter_utils.py
index 495f6689c9b02..5f51874f8dae3 100644
--- a/llama-index-finetuning/llama_index/finetuning/embeddings/adapter_utils.py
+++ b/llama-index-finetuning/llama_index/finetuning/embeddings/adapter_utils.py
@@ -6,7 +6,7 @@
import torch
import transformers
from llama_index.core.utils import print_text
-from llama_index.embeddings.adapter.utils import BaseAdapter
+from llama_index.embeddings.adapter import BaseAdapter
from sentence_transformers.util import cos_sim
from torch import Tensor, nn
from torch.optim import Optimizer
diff --git a/llama-index-finetuning/pyproject.toml b/llama-index-finetuning/pyproject.toml
index b073a6e23459c..6c5b63661f15c 100644
--- a/llama-index-finetuning/pyproject.toml
+++ b/llama-index-finetuning/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index finetuning"
license = "MIT"
name = "llama-index-finetuning"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
@@ -32,7 +32,7 @@ llama-index-core = "^0.10.1"
llama-index-llms-openai = "^0.1.1"
llama-index-llms-gradient = "^0.1.1"
llama-index-postprocessor-cohere-rerank = "^0.1.1"
-llama-index-embeddings-adapter = "^0.1.1"
+llama-index-embeddings-adapter = "^0.1.2"
sentence-transformers = "^2.3.0"
[tool.poetry.group.dev.dependencies]
diff --git a/llama-index-integrations/README.md b/llama-index-integrations/README.md
index 9090ed7112a20..0c6b29f0f4e9c 100644
--- a/llama-index-integrations/README.md
+++ b/llama-index-integrations/README.md
@@ -1,4 +1,4 @@
# LlamaIndex Integrations
Building LLM applications with LlamaIndex involves building with LlamaIndex
-[core](https://github.com/run-llamae/llama_index/tree/main/llama-index-core) as well as with the LlamaIndex Integrations required for your application.Integrations are categorized by type and each are their own Python package.
+[core](https://github.com/run-llama/llama_index/tree/main/llama-index-core) as well as with the LlamaIndex Integrations required for your application.Integrations are categorized by type and each are their own Python package.
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/poetry.lock b/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/poetry.lock
index cdcc450e0e4f6..1908afb0c76f3 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/poetry.lock
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/poetry.lock
@@ -1,98 +1,93 @@
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
-[metadata]
-content-hash = "6e160c7805d0284811eaf128438ad20db0024581b06fdfac788b67318dc3c468"
-lock-version = "2.0"
-python-versions = ">=3.8.1,<3.12"
-
[[package]]
-description = "Async http client/server framework (asyncio)"
-files = [
- {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590"},
- {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0"},
- {file = "aiohttp-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83"},
- {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5"},
- {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4"},
- {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f"},
- {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f"},
- {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6"},
- {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f"},
- {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26"},
- {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4"},
- {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d"},
- {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501"},
- {file = "aiohttp-3.9.1-cp310-cp310-win32.whl", hash = "sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489"},
- {file = "aiohttp-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23"},
- {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d"},
- {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e"},
- {file = "aiohttp-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0"},
- {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35"},
- {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff"},
- {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87"},
- {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d"},
- {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01"},
- {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3"},
- {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449"},
- {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2"},
- {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd"},
- {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a"},
- {file = "aiohttp-3.9.1-cp311-cp311-win32.whl", hash = "sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544"},
- {file = "aiohttp-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587"},
- {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065"},
- {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821"},
- {file = "aiohttp-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af"},
- {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57"},
- {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5"},
- {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb"},
- {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c"},
- {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66"},
- {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe"},
- {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183"},
- {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b"},
- {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f"},
- {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f"},
- {file = "aiohttp-3.9.1-cp312-cp312-win32.whl", hash = "sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed"},
- {file = "aiohttp-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213"},
- {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70"},
- {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672"},
- {file = "aiohttp-3.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1"},
- {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd"},
- {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690"},
- {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca"},
- {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361"},
- {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28"},
- {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014"},
- {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431"},
- {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd"},
- {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a"},
- {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8"},
- {file = "aiohttp-3.9.1-cp38-cp38-win32.whl", hash = "sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4"},
- {file = "aiohttp-3.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7"},
- {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766"},
- {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0"},
- {file = "aiohttp-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558"},
- {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636"},
- {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499"},
- {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4"},
- {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f"},
- {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a"},
- {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e"},
- {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5"},
- {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0"},
- {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f"},
- {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c"},
- {file = "aiohttp-3.9.1-cp39-cp39-win32.whl", hash = "sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7"},
- {file = "aiohttp-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf"},
- {file = "aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"},
-]
name = "aiohttp"
+version = "3.9.3"
+description = "Async http client/server framework (asyncio)"
optional = false
python-versions = ">=3.8"
-version = "3.9.1"
+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"},
+]
[package.dependencies]
aiosignal = ">=1.1.2"
-async-timeout = {markers = "python_version < \"3.11\"", version = ">=4.0,<5.0"}
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
attrs = ">=17.3.0"
frozenlist = ">=1.1.1"
multidict = ">=4.5,<7.0"
@@ -102,49 +97,49 @@ yarl = ">=1.0,<2.0"
speedups = ["Brotli", "aiodns", "brotlicffi"]
[[package]]
+name = "aiosignal"
+version = "1.3.1"
description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
{file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
]
-name = "aiosignal"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.1"
[package.dependencies]
frozenlist = ">=1.1.0"
[[package]]
+name = "annotated-types"
+version = "0.6.0"
description = "Reusable constraint types to use with typing.Annotated"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
{file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
]
-name = "annotated-types"
-optional = false
-python-versions = ">=3.8"
-version = "0.6.0"
[package.dependencies]
-typing-extensions = {markers = "python_version < \"3.9\"", version = ">=4.0.0"}
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
[[package]]
+name = "anyio"
+version = "4.2.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
{file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
]
-name = "anyio"
-optional = false
-python-versions = ">=3.8"
-version = "4.2.0"
[package.dependencies]
-exceptiongroup = {markers = "python_version < \"3.11\"", version = ">=1.0.2"}
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
idna = ">=2.8"
sniffio = ">=1.1"
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.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"]
@@ -152,26 +147,26 @@ test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypo
trio = ["trio (>=0.23)"]
[[package]]
+name = "appnope"
+version = "0.1.4"
description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
files = [
- {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
- {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
]
-name = "appnope"
-optional = false
-python-versions = "*"
-version = "0.1.3"
[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
{file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
]
-name = "argon2-cffi"
-optional = false
-python-versions = ">=3.7"
-version = "23.1.0"
[package.dependencies]
argon2-cffi-bindings = "*"
@@ -183,7 +178,11 @@ tests = ["hypothesis", "pytest"]
typing = ["mypy"]
[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
{file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
@@ -207,10 +206,6 @@ files = [
{file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
{file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
]
-name = "argon2-cffi-bindings"
-optional = false
-python-versions = ">=3.6"
-version = "21.2.0"
[package.dependencies]
cffi = ">=1.0.1"
@@ -220,21 +215,26 @@ dev = ["cogapp", "pre-commit", "pytest", "wheel"]
tests = ["pytest"]
[[package]]
-description = "ML Observability in your notebook"
-files = [
- {file = "arize_phoenix-2.5.0-py3-none-any.whl", hash = "sha256:601d69f770d5772f0fbdfae7a66c4bd95d0361eca896e4d73a59544baf522dc8"},
- {file = "arize_phoenix-2.5.0.tar.gz", hash = "sha256:9f69400aa1fccfb74bc874eb0bd801a6816b01dc495eb8ae395ea9c6b372245e"},
-]
name = "arize-phoenix"
+version = "3.0.3"
+description = "ML Observability in your notebook"
optional = false
python-versions = "<3.12,>=3.8"
-version = "2.5.0"
+files = [
+ {file = "arize_phoenix-3.0.3-py3-none-any.whl", hash = "sha256:1ca7bf38decefecfe77846b429057e5d8c53e94fb4189acf75d5e5e6299305e7"},
+ {file = "arize_phoenix-3.0.3.tar.gz", hash = "sha256:3bb540f249afafd25eb92b9492afd90a0f87971b154c561bd8cc8f47f1a7f13a"},
+]
[package.dependencies]
ddsketch = "*"
hdbscan = ">=0.8.33,<1.0.0"
jinja2 = "*"
numpy = "*"
+openinference-instrumentation-langchain = "*"
+openinference-instrumentation-llama-index = "*"
+openinference-instrumentation-openai = "*"
+openinference-semantic-conventions = "*"
+opentelemetry-exporter-otlp = "*"
opentelemetry-proto = "*"
opentelemetry-sdk = "*"
pandas = "*"
@@ -254,20 +254,20 @@ uvicorn = "*"
wrapt = "*"
[package.extras]
-dev = ["anthropic", "arize[autoembeddings,llm-evaluation]", "gcsfs", "google-cloud-aiplatform (>=1.3)", "hatch", "jupyter", "langchain (>=0.0.334)", "litellm (>=1.0.3)", "llama-index (>=0.9.14)", "nbqa", "pandas-stubs (<=2.0.2.230605)", "pre-commit", "pytest", "pytest-asyncio", "pytest-cov", "pytest-lazy-fixture", "ruff (==0.1.5)", "strawberry-graphql[debug-server] (==0.208.2)"]
+dev = ["anthropic", "arize[autoembeddings,llm-evaluation]", "gcsfs", "google-cloud-aiplatform (>=1.3)", "hatch", "jupyter", "langchain (>=0.0.334)", "litellm (>=1.0.3)", "llama-index (<0.10.0)", "nbqa", "pandas-stubs (<=2.0.2.230605)", "pre-commit", "pytest (==7.4.4)", "pytest-asyncio", "pytest-cov", "pytest-lazy-fixture", "ruff (==0.1.5)", "strawberry-graphql[debug-server] (==0.208.2)"]
experimental = ["tenacity"]
-llama-index = ["llama-index (==0.9.14)"]
+llama-index = ["llama-index (==0.9.45)", "openinference-instrumentation-llama-index (==0.1.3)"]
[[package]]
+name = "arrow"
+version = "1.3.0"
description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
{file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
]
-name = "arrow"
-optional = false
-python-versions = ">=3.8"
-version = "1.3.0"
[package.dependencies]
python-dateutil = ">=2.7.0"
@@ -278,34 +278,34 @@ doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints
test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
[[package]]
+name = "astroid"
+version = "2.13.5"
description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
files = [
{file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
{file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
]
-name = "astroid"
-optional = false
-python-versions = ">=3.7.2"
-version = "2.13.5"
[package.dependencies]
lazy-object-proxy = ">=1.4.0"
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0.0"}
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
wrapt = [
- {markers = "python_version < \"3.11\"", version = ">=1.11,<2"},
- {markers = "python_version >= \"3.11\"", version = ">=1.14,<2"},
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
]
[[package]]
+name = "asttokens"
+version = "2.4.1"
description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
files = [
{file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
{file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
]
-name = "asttokens"
-optional = false
-python-versions = "*"
-version = "2.4.1"
[package.dependencies]
six = ">=1.12.0"
@@ -315,55 +315,55 @@ astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
[[package]]
+name = "astunparse"
+version = "1.6.3"
description = "An AST unparser for Python"
+optional = false
+python-versions = "*"
files = [
{file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"},
{file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"},
]
-name = "astunparse"
-optional = false
-python-versions = "*"
-version = "1.6.3"
[package.dependencies]
six = ">=1.6.1,<2.0"
wheel = ">=0.23.0,<1.0"
[[package]]
+name = "async-lru"
+version = "2.0.4"
description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
{file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
]
-name = "async-lru"
-optional = false
-python-versions = ">=3.8"
-version = "2.0.4"
[package.dependencies]
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0.0"}
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
[[package]]
+name = "async-timeout"
+version = "4.0.3"
description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
{file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
]
-name = "async-timeout"
-optional = false
-python-versions = ">=3.7"
-version = "4.0.3"
[[package]]
+name = "attrs"
+version = "23.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"},
]
-name = "attrs"
-optional = false
-python-versions = ">=3.7"
-version = "23.2.0"
[package.extras]
cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
@@ -374,43 +374,54 @@ tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"]
tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"]
[[package]]
+name = "babel"
+version = "2.14.0"
description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
{file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
]
-name = "babel"
-optional = false
-python-versions = ">=3.7"
-version = "2.14.0"
[package.dependencies]
-pytz = {markers = "python_version < \"3.9\"", version = ">=2015.7"}
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
[package.extras]
dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
[[package]]
+name = "backcall"
+version = "0.2.0"
description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
files = [
{file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
{file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
]
-name = "backcall"
+
+[[package]]
+name = "backoff"
+version = "2.2.1"
+description = "Function decoration for backoff and retry"
optional = false
-python-versions = "*"
-version = "0.2.0"
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"},
+ {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"},
+]
[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
files = [
{file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
{file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
]
-name = "beautifulsoup4"
-optional = false
-python-versions = ">=3.6.0"
-version = "4.12.3"
[package.dependencies]
soupsieve = ">1.2"
@@ -423,7 +434,11 @@ html5lib = ["html5lib"]
lxml = ["lxml"]
[[package]]
+name = "black"
+version = "23.9.1"
description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
{file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
@@ -448,21 +463,17 @@ files = [
{file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
{file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
]
-name = "black"
-optional = false
-python-versions = ">=3.8"
-version = "23.9.1"
[package.dependencies]
click = ">=8.0.0"
-ipython = {markers = "extra == \"jupyter\"", optional = true, version = ">=7.8.0"}
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
mypy-extensions = ">=0.4.3"
packaging = ">=22.0"
pathspec = ">=0.9.0"
platformdirs = ">=2"
-tokenize-rt = {markers = "extra == \"jupyter\"", optional = true, version = ">=3.2.0"}
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.1.0"}
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0.1"}
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
@@ -471,15 +482,15 @@ jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
uvloop = ["uvloop (>=0.15.2)"]
[[package]]
+name = "bleach"
+version = "6.1.0"
description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
{file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
]
-name = "bleach"
-optional = false
-python-versions = ">=3.8"
-version = "6.1.0"
[package.dependencies]
six = ">=1.9.0"
@@ -489,18 +500,22 @@ webencodings = "*"
css = ["tinycss2 (>=1.1.0,<1.3)"]
[[package]]
-description = "Python package for providing Mozilla's CA Bundle."
-files = [
- {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"},
- {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"},
-]
name = "certifi"
+version = "2024.2.2"
+description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.6"
-version = "2023.11.17"
+files = [
+ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+ {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
+]
[[package]]
+name = "cffi"
+version = "1.16.0"
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"},
@@ -555,27 +570,27 @@ files = [
{file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"},
{file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"},
]
-name = "cffi"
-optional = false
-python-versions = ">=3.8"
-version = "1.16.0"
[package.dependencies]
pycparser = "*"
[[package]]
+name = "cfgv"
+version = "3.4.0"
description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
{file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
]
-name = "cfgv"
-optional = false
-python-versions = ">=3.8"
-version = "3.4.0"
[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
files = [
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
@@ -668,38 +683,34 @@ files = [
{file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
]
-name = "charset-normalizer"
-optional = false
-python-versions = ">=3.7.0"
-version = "3.3.2"
[[package]]
+name = "click"
+version = "8.1.7"
description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
{file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
]
-name = "click"
-optional = false
-python-versions = ">=3.7"
-version = "8.1.7"
[package.dependencies]
-colorama = {markers = "platform_system == \"Windows\"", version = "*"}
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
+name = "codespell"
+version = "2.2.6"
description = "Codespell"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
{file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
]
-name = "codespell"
-optional = false
-python-versions = ">=3.8"
-version = "2.2.6"
[package.dependencies]
-tomli = {markers = "python_version < \"3.11\" and extra == \"toml\"", optional = true, version = "*"}
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
[package.extras]
dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
@@ -708,26 +719,26 @@ toml = ["tomli"]
types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
[[package]]
+name = "colorama"
+version = "0.4.6"
description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
-name = "colorama"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-version = "0.4.6"
[[package]]
+name = "comm"
+version = "0.2.1"
description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
{file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
]
-name = "comm"
-optional = false
-python-versions = ">=3.8"
-version = "0.2.1"
[package.dependencies]
traitlets = ">=4"
@@ -736,52 +747,65 @@ traitlets = ">=4"
test = ["pytest"]
[[package]]
-description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
-files = [
- {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"},
- {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"},
- {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"},
- {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"},
- {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"},
- {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"},
- {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"},
- {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"},
- {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"},
- {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"},
- {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"},
- {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"},
- {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"},
- {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"},
- {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"},
- {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"},
- {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"},
- {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"},
- {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"},
- {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"},
- {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"},
- {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"},
- {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"},
-]
name = "cryptography"
+version = "42.0.2"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
optional = false
python-versions = ">=3.7"
-version = "41.0.7"
+files = [
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"},
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"},
+ {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"},
+ {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"},
+ {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"},
+ {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"},
+ {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"},
+ {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"},
+]
[package.dependencies]
-cffi = ">=1.12"
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
[package.extras]
docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
-docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
nox = ["nox"]
-pep8test = ["black", "check-sdist", "mypy", "ruff"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
sdist = ["build"]
ssh = ["bcrypt (>=3.1.5)"]
-test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
test-randomorder = ["pytest-randomly"]
[[package]]
+name = "cython"
+version = "0.29.37"
description = "The Cython compiler for writing C extensions for the Python language."
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
{file = "Cython-0.29.37-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2d621fe4cb50007446742134a890500b34e3f50abaf7993baaca02634af7e15"},
{file = "Cython-0.29.37-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d94caf90ae9cb56116ca6d54cdcbccd3c4df6b0cb7233922b2233ee7fe81d05b"},
@@ -826,100 +850,100 @@ files = [
{file = "Cython-0.29.37-py2.py3-none-any.whl", hash = "sha256:95f1d6a83ef2729e67b3fa7318c829ce5b07ac64c084cd6af11c228e0364662c"},
{file = "Cython-0.29.37.tar.gz", hash = "sha256:f813d4a6dd94adee5d4ff266191d1d95bf6d4164a4facc535422c021b2504cfb"},
]
-name = "cython"
-optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "0.29.37"
[[package]]
-description = "Easily serialize dataclasses to and from JSON."
-files = [
- {file = "dataclasses_json-0.6.3-py3-none-any.whl", hash = "sha256:4aeb343357997396f6bca1acae64e486c3a723d8f5c76301888abeccf0c45176"},
- {file = "dataclasses_json-0.6.3.tar.gz", hash = "sha256:35cb40aae824736fdf959801356641836365219cfe14caeb115c39136f775d2a"},
-]
name = "dataclasses-json"
+version = "0.6.4"
+description = "Easily serialize dataclasses to and from JSON."
optional = false
python-versions = ">=3.7,<4.0"
-version = "0.6.3"
+files = [
+ {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"},
+ {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
+]
[package.dependencies]
marshmallow = ">=3.18.0,<4.0.0"
typing-inspect = ">=0.4.0,<1"
[[package]]
+name = "ddsketch"
+version = "2.0.4"
description = "Distributed quantile sketches"
+optional = false
+python-versions = ">=2.7"
files = [
{file = "ddsketch-2.0.4-py3-none-any.whl", hash = "sha256:3227a270fd686a29d3a7128f9352ccf852314410380fc11384356f1ae2a75938"},
{file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"},
]
-name = "ddsketch"
-optional = false
-python-versions = ">=2.7"
-version = "2.0.4"
[package.dependencies]
-protobuf = {markers = "python_version >= \"3.7\"", version = ">=3.0.0"}
+protobuf = {version = ">=3.0.0", markers = "python_version >= \"3.7\""}
six = "*"
[[package]]
+name = "debugpy"
+version = "1.8.1"
description = "An implementation of the Debug Adapter Protocol for Python"
-files = [
- {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"},
- {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"},
- {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"},
- {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"},
- {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"},
- {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"},
- {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"},
- {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"},
- {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"},
- {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"},
- {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"},
- {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"},
- {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"},
- {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"},
- {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"},
- {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"},
- {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"},
- {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"},
-]
-name = "debugpy"
optional = false
python-versions = ">=3.8"
-version = "1.8.0"
+files = [
+ {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
+ {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
+ {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
+ {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
+ {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
+ {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
+ {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
+ {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
+ {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
+ {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
+ {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
+ {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
+ {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
+ {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
+ {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
+ {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
+ {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
+ {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
+ {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
+ {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
+ {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
+ {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+]
[[package]]
+name = "decorator"
+version = "5.1.1"
description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
]
-name = "decorator"
-optional = false
-python-versions = ">=3.5"
-version = "5.1.1"
[[package]]
+name = "defusedxml"
+version = "0.7.1"
description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
{file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
]
-name = "defusedxml"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.7.1"
[[package]]
+name = "deprecated"
+version = "1.2.14"
description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
{file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
]
-name = "deprecated"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.2.14"
[package.dependencies]
wrapt = ">=1.10,<2"
@@ -928,104 +952,105 @@ wrapt = ">=1.10,<2"
dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
[[package]]
+name = "dill"
+version = "0.3.8"
description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
files = [
- {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"},
- {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"},
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
]
-name = "dill"
-optional = false
-python-versions = ">=3.7"
-version = "0.3.7"
[package.extras]
graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
[[package]]
+name = "dirtyjson"
+version = "1.0.8"
description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
files = [
{file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
{file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
]
-name = "dirtyjson"
-optional = false
-python-versions = "*"
-version = "1.0.8"
[[package]]
+name = "distlib"
+version = "0.3.8"
description = "Distribution utilities"
+optional = false
+python-versions = "*"
files = [
{file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
{file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
]
-name = "distlib"
-optional = false
-python-versions = "*"
-version = "0.3.8"
[[package]]
+name = "distro"
+version = "1.9.0"
description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
{file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
]
-name = "distro"
-optional = false
-python-versions = ">=3.6"
-version = "1.9.0"
[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
{file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
]
-name = "exceptiongroup"
-optional = false
-python-versions = ">=3.7"
-version = "1.2.0"
[package.extras]
test = ["pytest (>=6)"]
[[package]]
+name = "executing"
+version = "2.0.1"
description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
{file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
]
-name = "executing"
-optional = false
-python-versions = ">=3.5"
-version = "2.0.1"
[package.extras]
tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
files = [
{file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
{file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
]
-name = "fastjsonschema"
-optional = false
-python-versions = "*"
-version = "2.19.1"
[package.extras]
devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
[[package]]
+name = "filelock"
+version = "3.13.1"
description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
{file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
]
-name = "filelock"
-optional = false
-python-versions = ">=3.8"
-version = "3.13.1"
[package.extras]
docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
@@ -1033,57 +1058,22 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pyt
typing = ["typing-extensions (>=4.8)"]
[[package]]
-description = "Interface between LLMs and your data"
-files = [
- {file = "flying_delta_core-0.9.40-py3-none-any.whl", hash = "sha256:578de9dc4679de9b82bdbbcd94e4078da0bdfb8f816dad0c2b0ea7195b643575"},
- {file = "flying_delta_core-0.9.40.tar.gz", hash = "sha256:76da80405d0c2beb0179f6aab32f77e57f6d7c3b14c656c2505ae5cdca88f07d"},
-]
-name = "flying-delta-core"
-optional = false
-python-versions = ">=3.8.1,<4.0"
-version = "0.9.40"
-
-[package.dependencies]
-SQLAlchemy = {extras = ["asyncio"], version = ">=1.4.49"}
-aiohttp = ">=3.8.6,<4.0.0"
-dataclasses-json = "*"
-deprecated = ">=1.2.9.3"
-dirtyjson = ">=1.0.8,<2.0.0"
-fsspec = ">=2023.5.0"
-httpx = "*"
-nest-asyncio = ">=1.5.8,<2.0.0"
-networkx = ">=3.0"
-nltk = ">=3.8.1,<4.0.0"
-numpy = "*"
-openai = ">=1.1.0"
-pandas = "*"
-requests = ">=2.31.0"
-tenacity = ">=8.2.0,<9.0.0"
-tiktoken = ">=0.3.3"
-typing-extensions = ">=4.5.0"
-typing-inspect = ">=0.8.0"
-
-[package.extras]
-gradientai = ["gradientai (>=1.4.0)"]
-html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
-langchain = ["langchain (>=0.0.303)"]
-local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
-postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
-query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
-
-[[package]]
+name = "fqdn"
+version = "1.5.1"
description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
files = [
{file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
{file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
]
-name = "fqdn"
-optional = false
-python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
-version = "1.5.1"
[[package]]
+name = "frozenlist"
+version = "1.4.1"
description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
{file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
@@ -1163,21 +1153,17 @@ files = [
{file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
{file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
]
-name = "frozenlist"
-optional = false
-python-versions = ">=3.8"
-version = "1.4.1"
[[package]]
-description = "File-system specification"
-files = [
- {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"},
- {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"},
-]
name = "fsspec"
+version = "2024.2.0"
+description = "File-system specification"
optional = false
python-versions = ">=3.8"
-version = "2023.12.2"
+files = [
+ {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"},
+ {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"},
+]
[package.extras]
abfs = ["adlfs"]
@@ -1194,7 +1180,7 @@ github = ["requests"]
gs = ["gcsfs"]
gui = ["panel"]
hdfs = ["pyarrow (>=1)"]
-http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
libarchive = ["libarchive-c"]
oci = ["ocifs"]
s3 = ["s3fs"]
@@ -1204,18 +1190,39 @@ ssh = ["paramiko"]
tqdm = ["tqdm"]
[[package]]
-description = "GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL."
+name = "googleapis-common-protos"
+version = "1.62.0"
+description = "Common protobufs used in Google APIs"
+optional = false
+python-versions = ">=3.7"
files = [
- {file = "graphql-core-3.2.3.tar.gz", hash = "sha256:06d2aad0ac723e35b1cb47885d3e5c45e956a53bc1b209a9fc5369007fe46676"},
- {file = "graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3"},
+ {file = "googleapis-common-protos-1.62.0.tar.gz", hash = "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"},
+ {file = "googleapis_common_protos-1.62.0-py2.py3-none-any.whl", hash = "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07"},
]
+
+[package.dependencies]
+protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<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.0.dev0"
+
+[package.extras]
+grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"]
+
+[[package]]
name = "graphql-core"
+version = "3.2.3"
+description = "GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL."
optional = false
python-versions = ">=3.6,<4"
-version = "3.2.3"
+files = [
+ {file = "graphql-core-3.2.3.tar.gz", hash = "sha256:06d2aad0ac723e35b1cb47885d3e5c45e956a53bc1b209a9fc5369007fe46676"},
+ {file = "graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3"},
+]
[[package]]
+name = "greenlet"
+version = "3.0.3"
description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
{file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
@@ -1276,35 +1283,97 @@ files = [
{file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
{file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
]
-name = "greenlet"
-optional = false
-python-versions = ">=3.7"
-version = "3.0.3"
[package.extras]
docs = ["Sphinx", "furo"]
test = ["objgraph", "psutil"]
[[package]]
-description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+name = "grpcio"
+version = "1.60.1"
+description = "HTTP/2-based RPC framework"
+optional = false
+python-versions = ">=3.7"
files = [
- {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
- {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+ {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"},
+ {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"},
+ {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"},
+ {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"},
+ {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"},
+ {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"},
+ {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"},
+ {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"},
+ {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"},
+ {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"},
+ {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"},
+ {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"},
+ {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"},
+ {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"},
+ {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"},
+ {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"},
+ {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"},
+ {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"},
+ {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"},
+ {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"},
+ {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"},
+ {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"},
+ {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"},
+ {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"},
+ {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"},
+ {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"},
+ {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"},
+ {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"},
+ {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"},
+ {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"},
+ {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"},
+ {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"},
+ {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"},
+ {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"},
+ {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"},
+ {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"},
+ {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"},
+ {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"},
+ {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"},
+ {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"},
+ {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"},
+ {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"},
+ {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"},
+ {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"},
+ {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"},
+ {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"},
+ {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"},
+ {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"},
+ {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"},
+ {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"},
+ {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"},
+ {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"},
+ {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"},
+ {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"},
]
+
+[package.extras]
+protobuf = ["grpcio-tools (>=1.60.1)"]
+
+[[package]]
name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
optional = false
python-versions = ">=3.7"
-version = "0.14.0"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
[[package]]
+name = "hdbscan"
+version = "0.8.33"
description = "Clustering based on density with variable density clusters"
+optional = false
+python-versions = "*"
files = [
{file = "hdbscan-0.8.33.tar.gz", hash = "sha256:57fabc5f0e45f48d2407b35c731192abc896376411fe7e4bb836ffa03d38f90d"},
]
-name = "hdbscan"
-optional = false
-python-versions = "*"
-version = "0.8.33"
[package.dependencies]
cython = ">=0.27,<3"
@@ -1314,15 +1383,15 @@ scikit-learn = ">=0.20"
scipy = ">=1.0"
[[package]]
+name = "httpcore"
+version = "1.0.2"
description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
{file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
]
-name = "httpcore"
-optional = false
-python-versions = ">=3.8"
-version = "1.0.2"
[package.dependencies]
certifi = "*"
@@ -1335,15 +1404,15 @@ socks = ["socksio (==1.*)"]
trio = ["trio (>=0.22.0,<0.23.0)"]
[[package]]
+name = "httpx"
+version = "0.26.0"
description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
{file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
]
-name = "httpx"
-optional = false
-python-versions = ">=3.8"
-version = "0.26.0"
[package.dependencies]
anyio = "*"
@@ -1359,40 +1428,40 @@ http2 = ["h2 (>=3,<5)"]
socks = ["socksio (==1.*)"]
[[package]]
-description = "File identification library for Python"
-files = [
- {file = "identify-2.5.33-py2.py3-none-any.whl", hash = "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"},
- {file = "identify-2.5.33.tar.gz", hash = "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d"},
-]
name = "identify"
+version = "2.5.34"
+description = "File identification library for Python"
optional = false
python-versions = ">=3.8"
-version = "2.5.33"
+files = [
+ {file = "identify-2.5.34-py2.py3-none-any.whl", hash = "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed"},
+ {file = "identify-2.5.34.tar.gz", hash = "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d"},
+]
[package.extras]
license = ["ukkonen"]
[[package]]
+name = "idna"
+version = "3.6"
description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
{file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
]
-name = "idna"
-optional = false
-python-versions = ">=3.5"
-version = "3.6"
[[package]]
+name = "importlib-metadata"
+version = "6.11.0"
description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"},
{file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"},
]
-name = "importlib-metadata"
-optional = false
-python-versions = ">=3.8"
-version = "6.11.0"
[package.dependencies]
zipp = ">=0.5"
@@ -1403,47 +1472,47 @@ perf = ["ipython"]
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
[[package]]
+name = "importlib-resources"
+version = "6.1.1"
description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
{file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
]
-name = "importlib-resources"
-optional = false
-python-versions = ">=3.8"
-version = "6.1.1"
[package.dependencies]
-zipp = {markers = "python_version < \"3.10\"", version = ">=3.1.0"}
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
[[package]]
+name = "iniconfig"
+version = "2.0.0"
description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
-name = "iniconfig"
-optional = false
-python-versions = ">=3.7"
-version = "2.0.0"
[[package]]
+name = "ipykernel"
+version = "6.29.2"
description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
files = [
- {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"},
- {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"},
+ {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"},
+ {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"},
]
-name = "ipykernel"
-optional = false
-python-versions = ">=3.8"
-version = "6.29.0"
[package.dependencies]
-appnope = {markers = "platform_system == \"Darwin\"", version = "*"}
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
comm = ">=0.1.1"
debugpy = ">=1.6.5"
ipython = ">=7.23.1"
@@ -1462,27 +1531,27 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
pyqt5 = ["pyqt5"]
pyside6 = ["pyside6"]
-test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"]
[[package]]
+name = "ipython"
+version = "8.10.0"
description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
{file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
]
-name = "ipython"
-optional = false
-python-versions = ">=3.8"
-version = "8.10.0"
[package.dependencies]
-appnope = {markers = "sys_platform == \"darwin\"", version = "*"}
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
backcall = "*"
-colorama = {markers = "sys_platform == \"win32\"", version = "*"}
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*"
jedi = ">=0.16"
matplotlib-inline = "*"
-pexpect = {markers = "sys_platform != \"win32\"", version = ">4.3"}
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
pickleshare = "*"
prompt-toolkit = ">=3.0.30,<3.1.0"
pygments = ">=2.4.0"
@@ -1490,7 +1559,7 @@ stack-data = "*"
traitlets = ">=5"
[package.extras]
-all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib (!=3.2.0)", "matplotlib", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
black = ["black"]
doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
kernel = ["ipykernel"]
@@ -1503,64 +1572,64 @@ test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
[[package]]
-description = "Jupyter interactive widgets"
-files = [
- {file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"},
- {file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"},
-]
name = "ipywidgets"
+version = "8.1.2"
+description = "Jupyter interactive widgets"
optional = false
python-versions = ">=3.7"
-version = "8.1.1"
+files = [
+ {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"},
+ {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"},
+]
[package.dependencies]
comm = ">=0.1.3"
ipython = ">=6.1.0"
-jupyterlab-widgets = ">=3.0.9,<3.1.0"
+jupyterlab-widgets = ">=3.0.10,<3.1.0"
traitlets = ">=4.3.1"
-widgetsnbextension = ">=4.0.9,<4.1.0"
+widgetsnbextension = ">=4.0.10,<4.1.0"
[package.extras]
test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
[[package]]
+name = "isoduration"
+version = "20.11.0"
description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
{file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
]
-name = "isoduration"
-optional = false
-python-versions = ">=3.7"
-version = "20.11.0"
[package.dependencies]
arrow = ">=0.15.0"
[[package]]
+name = "isort"
+version = "5.13.2"
description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
files = [
{file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
{file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
]
-name = "isort"
-optional = false
-python-versions = ">=3.8.0"
-version = "5.13.2"
[package.extras]
colors = ["colorama (>=0.4.6)"]
[[package]]
+name = "jedi"
+version = "0.19.1"
description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
{file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
]
-name = "jedi"
-optional = false
-python-versions = ">=3.6"
-version = "0.19.1"
[package.dependencies]
parso = ">=0.8.3,<0.9.0"
@@ -1571,15 +1640,15 @@ qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
[[package]]
+name = "jinja2"
+version = "3.1.3"
description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
{file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
]
-name = "jinja2"
-optional = false
-python-versions = ">=3.7"
-version = "3.1.3"
[package.dependencies]
MarkupSafe = ">=2.0"
@@ -1588,98 +1657,98 @@ MarkupSafe = ">=2.0"
i18n = ["Babel (>=2.7)"]
[[package]]
+name = "joblib"
+version = "1.3.2"
description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
{file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
]
-name = "joblib"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.2"
[[package]]
+name = "json5"
+version = "0.9.14"
description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
files = [
{file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
{file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
]
-name = "json5"
-optional = false
-python-versions = "*"
-version = "0.9.14"
[package.extras]
dev = ["hypothesis"]
[[package]]
+name = "jsonpointer"
+version = "2.4"
description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
files = [
{file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
{file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
]
-name = "jsonpointer"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
-version = "2.4"
[[package]]
-description = "An implementation of JSON Schema validation for Python"
-files = [
- {file = "jsonschema-4.21.0-py3-none-any.whl", hash = "sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c"},
- {file = "jsonschema-4.21.0.tar.gz", hash = "sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167"},
-]
name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
optional = false
python-versions = ">=3.8"
-version = "4.21.0"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
[package.dependencies]
attrs = ">=22.2.0"
-fqdn = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-idna = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-importlib-resources = {markers = "python_version < \"3.9\"", version = ">=1.4.0"}
-isoduration = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-jsonpointer = {markers = "extra == \"format-nongpl\"", optional = true, version = ">1.13"}
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
jsonschema-specifications = ">=2023.03.6"
-pkgutil-resolve-name = {markers = "python_version < \"3.9\"", version = ">=1.3.10"}
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
referencing = ">=0.28.4"
-rfc3339-validator = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-rfc3986-validator = {markers = "extra == \"format-nongpl\"", optional = true, version = ">0.1.0"}
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
rpds-py = ">=0.7.1"
-uri-template = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-webcolors = {markers = "extra == \"format-nongpl\"", optional = true, version = ">=1.11"}
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
[package.extras]
format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
{file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
]
-name = "jsonschema-specifications"
-optional = false
-python-versions = ">=3.8"
-version = "2023.12.1"
[package.dependencies]
-importlib-resources = {markers = "python_version < \"3.9\"", version = ">=1.4.0"}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
referencing = ">=0.31.0"
[[package]]
+name = "jupyter"
+version = "1.0.0"
description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
files = [
{file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
{file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
{file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
]
-name = "jupyter"
-optional = false
-python-versions = "*"
-version = "1.0.0"
[package.dependencies]
ipykernel = "*"
@@ -1690,18 +1759,18 @@ notebook = "*"
qtconsole = "*"
[[package]]
+name = "jupyter-client"
+version = "8.6.0"
description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
{file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
]
-name = "jupyter-client"
-optional = false
-python-versions = ">=3.8"
-version = "8.6.0"
[package.dependencies]
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
python-dateutil = ">=2.8.2"
pyzmq = ">=23.0"
@@ -1713,15 +1782,15 @@ docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphi
test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
[[package]]
+name = "jupyter-console"
+version = "6.6.3"
description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
{file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
]
-name = "jupyter-console"
-optional = false
-python-versions = ">=3.7"
-version = "6.6.3"
[package.dependencies]
ipykernel = ">=6.14"
@@ -1737,19 +1806,19 @@ traitlets = ">=5.4"
test = ["flaky", "pexpect", "pytest"]
[[package]]
+name = "jupyter-core"
+version = "5.7.1"
description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
{file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
]
-name = "jupyter-core"
-optional = false
-python-versions = ">=3.8"
-version = "5.7.1"
[package.dependencies]
platformdirs = ">=2.5"
-pywin32 = {markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"", version = ">=300"}
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
traitlets = ">=5.3"
[package.extras]
@@ -1757,18 +1826,18 @@ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphin
test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
[[package]]
+name = "jupyter-events"
+version = "0.9.0"
description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
{file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
]
-name = "jupyter-events"
-optional = false
-python-versions = ">=3.8"
-version = "0.9.0"
[package.dependencies]
-jsonschema = {extras = ["format-nongpl"], version = ">=4.18.0"}
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
python-json-logger = ">=2.0.4"
pyyaml = ">=5.3"
referencing = "*"
@@ -1782,30 +1851,30 @@ docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontr
test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
{file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
]
-name = "jupyter-lsp"
-optional = false
-python-versions = ">=3.8"
-version = "2.2.2"
[package.dependencies]
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
jupyter-server = ">=1.1.2"
[[package]]
+name = "jupyter-server"
+version = "2.12.5"
description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
{file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
]
-name = "jupyter-server"
-optional = false
-python-versions = ">=3.8"
-version = "2.12.5"
[package.dependencies]
anyio = ">=3.1.0"
@@ -1820,7 +1889,7 @@ nbformat = ">=5.3.0"
overrides = "*"
packaging = "*"
prometheus-client = "*"
-pywinpty = {markers = "os_name == \"nt\"", version = "*"}
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
pyzmq = ">=24"
send2trash = ">=1.8.2"
terminado = ">=0.8.3"
@@ -1833,18 +1902,18 @@ docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser"
test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
[[package]]
-description = "A Jupyter Server Extension Providing Terminals."
-files = [
- {file = "jupyter_server_terminals-0.5.1-py3-none-any.whl", hash = "sha256:5e63e947ddd97bb2832db5ef837a258d9ccd4192cd608c1270850ad947ae5dd7"},
- {file = "jupyter_server_terminals-0.5.1.tar.gz", hash = "sha256:16d3be9cf48be6a1f943f3a6c93c033be259cf4779184c66421709cf63dccfea"},
-]
name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
optional = false
python-versions = ">=3.8"
-version = "0.5.1"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
[package.dependencies]
-pywinpty = {markers = "os_name == \"nt\"", version = ">=2.0.3"}
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
terminado = ">=0.8.3"
[package.extras]
@@ -1852,20 +1921,21 @@ docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat",
test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
[[package]]
-description = "JupyterLab computational environment"
-files = [
- {file = "jupyterlab-4.0.11-py3-none-any.whl", hash = "sha256:536bf0e78723153a5016ca7efb88ed0ecd7070d3f1555d5b0e2770658f900a3c"},
- {file = "jupyterlab-4.0.11.tar.gz", hash = "sha256:d1aec24712566bc25a36229788242778e498ca4088028e2f9aa156b8b7fdc8fc"},
-]
name = "jupyterlab"
+version = "4.1.1"
+description = "JupyterLab computational environment"
optional = false
python-versions = ">=3.8"
-version = "4.0.11"
+files = [
+ {file = "jupyterlab-4.1.1-py3-none-any.whl", hash = "sha256:fa3e8c18b804eac04e51ceebd9dd3dd396e08106816f0d09cc426799d7087632"},
+ {file = "jupyterlab-4.1.1.tar.gz", hash = "sha256:8acc9f561729d8f32c14c294c397917cddfeeb13a5d46f811979b71b4911a9fd"},
+]
[package.dependencies]
async-lru = ">=1.0.0"
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
-importlib-resources = {markers = "python_version < \"3.9\"", version = ">=1.4"}
+httpx = ">=0.25.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
ipykernel = "*"
jinja2 = ">=3.0.3"
jupyter-core = "*"
@@ -1874,41 +1944,41 @@ jupyter-server = ">=2.4.0,<3"
jupyterlab-server = ">=2.19.0,<3"
notebook-shim = ">=0.2"
packaging = "*"
-tomli = {markers = "python_version < \"3.11\"", version = "*"}
+tomli = {version = "*", markers = "python_version < \"3.11\""}
tornado = ">=6.2.0"
traitlets = "*"
[package.extras]
-dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.6)"]
-docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
-docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.2.0)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.2.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.1)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post6)", "matplotlib (==3.8.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.0)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"]
test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
{file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
]
-name = "jupyterlab-pygments"
-optional = false
-python-versions = ">=3.8"
-version = "0.3.0"
[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
{file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
]
-name = "jupyterlab-server"
-optional = false
-python-versions = ">=3.8"
-version = "2.25.2"
[package.dependencies]
babel = ">=2.10"
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
jinja2 = ">=3.0.3"
json5 = ">=0.9.0"
jsonschema = ">=4.18.0"
@@ -1922,18 +1992,22 @@ openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
[[package]]
-description = "Jupyter interactive widgets for JupyterLab"
-files = [
- {file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"},
- {file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"},
-]
name = "jupyterlab-widgets"
+version = "3.0.10"
+description = "Jupyter interactive widgets for JupyterLab"
optional = false
python-versions = ">=3.7"
-version = "3.0.9"
+files = [
+ {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"},
+ {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"},
+]
[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
{file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
@@ -1973,13 +2047,55 @@ files = [
{file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
{file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
]
-name = "lazy-object-proxy"
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.3"
+description = "Interface between LLMs and your data"
optional = false
-python-versions = ">=3.8"
-version = "1.10.0"
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.3-py3-none-any.whl", hash = "sha256:711e2766cb1690a394a209dc6155d1b7a05b44fd6b7e08084d6b96c00bef5dd0"},
+ {file = "llama_index_core-0.10.3.tar.gz", hash = "sha256:5cced2c56bd640311835094fe6946ce6498e6d31dffcdb3df7583ff1aa3861b8"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
[[package]]
+name = "llvmlite"
+version = "0.41.1"
description = "lightweight wrapper around basic LLVM functionality"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "llvmlite-0.41.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1e1029d47ee66d3a0c4d6088641882f75b93db82bd0e6178f7bd744ebce42b9"},
{file = "llvmlite-0.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:150d0bc275a8ac664a705135e639178883293cf08c1a38de3bbaa2f693a0a867"},
@@ -2006,90 +2122,86 @@ files = [
{file = "llvmlite-0.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:92f093986ab92e71c9ffe334c002f96defc7986efda18397d0f08534f3ebdc4d"},
{file = "llvmlite-0.41.1.tar.gz", hash = "sha256:f19f767a018e6ec89608e1f6b13348fa2fcde657151137cb64e56d48598a92db"},
]
-name = "llvmlite"
-optional = false
-python-versions = ">=3.8"
-version = "0.41.1"
[[package]]
-description = "Safely add untrusted strings to HTML/XML markup."
-files = [
- {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
- {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
- {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
- {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
- {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
- {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
- {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
- {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
-]
name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
optional = false
python-versions = ">=3.7"
-version = "2.1.3"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
[[package]]
+name = "marshmallow"
+version = "3.20.2"
description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
{file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
]
-name = "marshmallow"
-optional = false
-python-versions = ">=3.8"
-version = "3.20.2"
[package.dependencies]
packaging = ">=17.0"
@@ -2101,126 +2213,146 @@ lint = ["pre-commit (>=2.4,<4.0)"]
tests = ["pytest", "pytz", "simplejson"]
[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
{file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
]
-name = "matplotlib-inline"
-optional = false
-python-versions = ">=3.5"
-version = "0.1.6"
[package.dependencies]
traitlets = "*"
[[package]]
+name = "mccabe"
+version = "0.7.0"
description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
-name = "mccabe"
-optional = false
-python-versions = ">=3.6"
-version = "0.7.0"
[[package]]
+name = "mistune"
+version = "3.0.2"
description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
{file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
]
-name = "mistune"
-optional = false
-python-versions = ">=3.7"
-version = "3.0.2"
[[package]]
-description = "multidict implementation"
-files = [
- {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
- {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
- {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"},
- {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"},
- {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"},
- {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"},
- {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"},
- {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"},
- {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"},
- {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"},
- {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"},
- {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"},
- {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"},
- {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"},
- {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"},
- {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"},
- {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"},
- {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"},
- {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"},
- {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"},
- {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"},
- {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"},
- {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"},
- {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"},
- {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"},
- {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"},
- {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"},
- {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"},
- {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"},
- {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"},
- {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"},
- {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"},
- {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"},
- {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"},
- {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"},
- {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"},
- {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"},
- {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"},
- {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"},
- {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"},
- {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"},
- {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"},
- {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"},
- {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"},
- {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"},
- {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"},
- {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"},
- {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"},
- {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"},
- {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"},
- {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"},
- {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"},
- {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"},
- {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"},
- {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"},
- {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"},
- {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"},
- {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"},
- {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"},
- {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"},
- {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"},
- {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"},
- {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"},
- {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"},
- {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"},
- {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"},
- {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"},
- {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"},
- {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"},
- {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"},
- {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"},
- {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"},
- {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
- {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
-]
name = "multidict"
+version = "6.0.5"
+description = "multidict implementation"
optional = false
python-versions = ">=3.7"
-version = "6.0.4"
+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"},
+]
[[package]]
+name = "mypy"
+version = "0.991"
description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
{file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
@@ -2253,14 +2385,10 @@ files = [
{file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
{file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
]
-name = "mypy"
-optional = false
-python-versions = ">=3.7"
-version = "0.991"
[package.dependencies]
mypy-extensions = ">=0.4.3"
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.1.0"}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = ">=3.10"
[package.extras]
@@ -2270,26 +2398,26 @@ python2 = ["typed-ast (>=1.4.0,<2)"]
reports = ["lxml"]
[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
files = [
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
]
-name = "mypy-extensions"
-optional = false
-python-versions = ">=3.5"
-version = "1.0.0"
[[package]]
+name = "nbclient"
+version = "0.9.0"
description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
files = [
{file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
{file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
]
-name = "nbclient"
-optional = false
-python-versions = ">=3.8.0"
-version = "0.9.0"
[package.dependencies]
jupyter-client = ">=6.1.12"
@@ -2303,21 +2431,21 @@ docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphi
test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
[[package]]
-description = "Converting Jupyter Notebooks"
-files = [
- {file = "nbconvert-7.14.2-py3-none-any.whl", hash = "sha256:db28590cef90f7faf2ebbc71acd402cbecf13d29176df728c0a9025a49345ea1"},
- {file = "nbconvert-7.14.2.tar.gz", hash = "sha256:a7f8808fd4e082431673ac538400218dd45efd076fbeb07cc6e5aa5a3a4e949e"},
-]
name = "nbconvert"
+version = "7.16.0"
+description = "Converting Jupyter Notebooks"
optional = false
python-versions = ">=3.8"
-version = "7.14.2"
+files = [
+ {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"},
+ {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"},
+]
[package.dependencies]
beautifulsoup4 = "*"
bleach = "!=5.0.0"
defusedxml = "*"
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=3.6"}
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
jinja2 = ">=3.0"
jupyter-core = ">=4.7"
jupyterlab-pygments = "*"
@@ -2341,15 +2469,15 @@ test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
webpdf = ["playwright"]
[[package]]
+name = "nbformat"
+version = "5.9.2"
description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
{file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
]
-name = "nbformat"
-optional = false
-python-versions = ">=3.8"
-version = "5.9.2"
[package.dependencies]
fastjsonschema = "*"
@@ -2362,26 +2490,26 @@ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-al
test = ["pep440", "pre-commit", "pytest", "testpath"]
[[package]]
-description = "Patch asyncio to allow nested event loops"
-files = [
- {file = "nest_asyncio-1.5.9-py3-none-any.whl", hash = "sha256:61ec07ef052e72e3de22045b81b2cc7d71fceb04c568ba0b2e4b2f9f5231bec2"},
- {file = "nest_asyncio-1.5.9.tar.gz", hash = "sha256:d1e1144e9c6e3e6392e0fcf5211cb1c8374b5648a98f1ebe48e5336006b41907"},
-]
name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
optional = false
python-versions = ">=3.5"
-version = "1.5.9"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
[[package]]
+name = "networkx"
+version = "3.1"
description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
{file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
]
-name = "networkx"
-optional = false
-python-versions = ">=3.8"
-version = "3.1"
[package.extras]
default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
@@ -2391,15 +2519,15 @@ extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.1
test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
[[package]]
+name = "nltk"
+version = "3.8.1"
description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
{file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
]
-name = "nltk"
-optional = false
-python-versions = ">=3.7"
-version = "3.8.1"
[package.dependencies]
click = "*"
@@ -2416,33 +2544,33 @@ tgrep = ["pyparsing"]
twitter = ["twython"]
[[package]]
+name = "nodeenv"
+version = "1.8.0"
description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
files = [
{file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
{file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
]
-name = "nodeenv"
-optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
-version = "1.8.0"
[package.dependencies]
setuptools = "*"
[[package]]
-description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
-files = [
- {file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"},
- {file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"},
-]
name = "notebook"
+version = "7.1.0"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
optional = false
python-versions = ">=3.8"
-version = "7.0.7"
+files = [
+ {file = "notebook-7.1.0-py3-none-any.whl", hash = "sha256:a8fa4ccb5e5fe220f29d9900337efd7752bc6f2efe004d6f320db01f7743adc9"},
+ {file = "notebook-7.1.0.tar.gz", hash = "sha256:99caf01ff166b1cc86355c9b37c1ba9bf566c1d7fc4ab57bb6f8f24e36c4260e"},
+]
[package.dependencies]
jupyter-server = ">=2.4.0,<3"
-jupyterlab = ">=4.0.2,<5"
+jupyterlab = ">=4.1.1,<4.2"
jupyterlab-server = ">=2.22.1,<3"
notebook-shim = ">=0.2,<0.3"
tornado = ">=6.2.0"
@@ -2453,15 +2581,15 @@ docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "s
test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
[[package]]
+name = "notebook-shim"
+version = "0.2.3"
description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
{file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
]
-name = "notebook-shim"
-optional = false
-python-versions = ">=3.7"
-version = "0.2.3"
[package.dependencies]
jupyter-server = ">=1.8,<3"
@@ -2470,7 +2598,11 @@ jupyter-server = ">=1.8,<3"
test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
[[package]]
+name = "numba"
+version = "0.58.1"
description = "compiling Python code using LLVM"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "numba-0.58.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:07f2fa7e7144aa6f275f27260e73ce0d808d3c62b30cff8906ad1dec12d87bbe"},
{file = "numba-0.58.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7bf1ddd4f7b9c2306de0384bf3854cac3edd7b4d8dffae2ec1b925e4c436233f"},
@@ -2494,18 +2626,18 @@ files = [
{file = "numba-0.58.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd3dda77955be03ff366eebbfdb39919ce7c2620d86c906203bed92124989032"},
{file = "numba-0.58.1.tar.gz", hash = "sha256:487ded0633efccd9ca3a46364b40006dbdaca0f95e99b8b83e778d1195ebcbaa"},
]
-name = "numba"
-optional = false
-python-versions = ">=3.8"
-version = "0.58.1"
[package.dependencies]
-importlib-metadata = {markers = "python_version < \"3.9\"", version = "*"}
+importlib-metadata = {version = "*", markers = "python_version < \"3.9\""}
llvmlite = "==0.41.*"
numpy = ">=1.22,<1.27"
[[package]]
+name = "numpy"
+version = "1.24.4"
description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
{file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
@@ -2536,21 +2668,17 @@ files = [
{file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
{file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
]
-name = "numpy"
-optional = false
-python-versions = ">=3.8"
-version = "1.24.4"
[[package]]
-description = "The official Python library for the openai API"
-files = [
- {file = "openai-1.8.0-py3-none-any.whl", hash = "sha256:0f8f53805826103fdd8adaf379ad3ec23f9d867e698cbc14caf34b778d150175"},
- {file = "openai-1.8.0.tar.gz", hash = "sha256:93366be27802f517e89328801913d2a5ede45e3b86fdcab420385b8a1b88c767"},
-]
name = "openai"
+version = "1.12.0"
+description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.7.1"
-version = "1.8.0"
+files = [
+ {file = "openai-1.12.0-py3-none-any.whl", hash = "sha256:a54002c814e05222e413664f651b5916714e4700d041d5cf5724d3ae1a3e3481"},
+ {file = "openai-1.12.0.tar.gz", hash = "sha256:99c5d257d09ea6533d689d1cc77caa0ac679fa21efef8893d8b0832a86877f1b"},
+]
[package.dependencies]
anyio = ">=3.5.0,<5"
@@ -2565,44 +2693,215 @@ typing-extensions = ">=4.7,<5"
datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
[[package]]
+name = "openinference-instrumentation-langchain"
+version = "0.1.5"
+description = "OpenInference LangChain Instrumentation"
+optional = false
+python-versions = "<3.12,>=3.8"
+files = [
+ {file = "openinference_instrumentation_langchain-0.1.5-py3-none-any.whl", hash = "sha256:bc04490dab22e07491afba13fdd1de0311d5f41c652a18700a49568f99d1bca5"},
+ {file = "openinference_instrumentation_langchain-0.1.5.tar.gz", hash = "sha256:2200124f86687add560d4c97a80df00f600493219dbc9fe9ef97f9500a2eeff6"},
+]
+
+[package.dependencies]
+openinference-semantic-conventions = ">=0.1.3"
+opentelemetry-api = "*"
+opentelemetry-instrumentation = "*"
+opentelemetry-semantic-conventions = "*"
+
+[package.extras]
+instruments = ["langchain-core (>=0.1.0)"]
+test = ["langchain (==0.1.0)", "langchain-community (==0.0.10)", "langchain-core (==0.1.8)", "langchain-openai (==0.0.2)", "opentelemetry-sdk", "respx"]
+type-check = ["langchain-core (==0.1.0)"]
+
+[[package]]
+name = "openinference-instrumentation-llama-index"
+version = "1.0.0"
+description = "OpenInference LlamaIndex Instrumentation"
+optional = false
+python-versions = "<3.12,>=3.8"
+files = [
+ {file = "openinference_instrumentation_llama_index-1.0.0-py3-none-any.whl", hash = "sha256:6e26de1dafbc2703a40d5ff24ffc1ff2608c01a371d21dfb38a65235cd9d2f30"},
+ {file = "openinference_instrumentation_llama_index-1.0.0.tar.gz", hash = "sha256:f654eb2c4f23069a608996e769cf4bab47e53e068dbdcdbc20d3971eec07be5f"},
+]
+
+[package.dependencies]
+openinference-semantic-conventions = "*"
+opentelemetry-api = "*"
+opentelemetry-instrumentation = "*"
+opentelemetry-semantic-conventions = "*"
+wrapt = "*"
+
+[package.extras]
+instruments = ["llama-index (>=0.10.0)"]
+test = ["llama-index (==0.10.1)", "llama-index-llms-openai", "opentelemetry-sdk", "respx"]
+
+[[package]]
+name = "openinference-instrumentation-openai"
+version = "0.1.1"
+description = "OpenInference OpenAI Instrumentation"
+optional = false
+python-versions = "<3.12,>=3.8"
+files = [
+ {file = "openinference_instrumentation_openai-0.1.1-py3-none-any.whl", hash = "sha256:247e76c78cfdb560492aa5c04cf847c5f8afce9904653d395da538458275fe74"},
+ {file = "openinference_instrumentation_openai-0.1.1.tar.gz", hash = "sha256:203f14077aace9141a077b02a3a07feed490f6eea03e83bdacc609810fd1e818"},
+]
+
+[package.dependencies]
+openinference-semantic-conventions = "*"
+opentelemetry-api = "*"
+opentelemetry-instrumentation = "*"
+opentelemetry-semantic-conventions = "*"
+wrapt = "*"
+
+[package.extras]
+instruments = ["openai (>=1.0.0)"]
+test = ["numpy", "openai (==1.0.0)", "opentelemetry-instrumentation-httpx", "opentelemetry-sdk", "respx"]
+
+[[package]]
+name = "openinference-semantic-conventions"
+version = "0.1.4"
+description = "OpenInference Semantic Conventions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "openinference_semantic_conventions-0.1.4-py3-none-any.whl", hash = "sha256:ec69e98341cb8ecdc2323dee9f5d2625d0179dfa699a32038c345ff764a35023"},
+ {file = "openinference_semantic_conventions-0.1.4.tar.gz", hash = "sha256:b7a9930226bc75c53fd6e98e7462d5c8450e105d72d6e286ea24fa2e4d3f1683"},
+]
+
+[[package]]
+name = "opentelemetry-api"
+version = "1.22.0"
description = "OpenTelemetry Python API"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "opentelemetry_api-1.22.0-py3-none-any.whl", hash = "sha256:43621514301a7e9f5d06dd8013a1b450f30c2e9372b8e30aaeb4562abf2ce034"},
{file = "opentelemetry_api-1.22.0.tar.gz", hash = "sha256:15ae4ca925ecf9cfdfb7a709250846fbb08072260fca08ade78056c502b86bed"},
]
-name = "opentelemetry-api"
+
+[package.dependencies]
+deprecated = ">=1.2.6"
+importlib-metadata = ">=6.0,<7.0"
+
+[[package]]
+name = "opentelemetry-exporter-otlp"
+version = "1.22.0"
+description = "OpenTelemetry Collector Exporters"
optional = false
python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_exporter_otlp-1.22.0-py3-none-any.whl", hash = "sha256:cb03a1cbf300e12b47690858be13dd26fe2f60b2610204959f3497cd6645e3a1"},
+ {file = "opentelemetry_exporter_otlp-1.22.0.tar.gz", hash = "sha256:309a7d4dc67602801f15818e110ce452e78989886aaab5d37e7cf7f55f1d3d27"},
+]
+
+[package.dependencies]
+opentelemetry-exporter-otlp-proto-grpc = "1.22.0"
+opentelemetry-exporter-otlp-proto-http = "1.22.0"
+
+[[package]]
+name = "opentelemetry-exporter-otlp-proto-common"
version = "1.22.0"
+description = "OpenTelemetry Protobuf encoding"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_exporter_otlp_proto_common-1.22.0-py3-none-any.whl", hash = "sha256:3f2538bec5312587f8676c332b3747f54c89fe6364803a807e217af4603201fa"},
+ {file = "opentelemetry_exporter_otlp_proto_common-1.22.0.tar.gz", hash = "sha256:71ae2f81bc6d6fe408d06388826edc8933759b2ca3a97d24054507dc7cfce52d"},
+]
[package.dependencies]
+backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""}
+opentelemetry-proto = "1.22.0"
+
+[[package]]
+name = "opentelemetry-exporter-otlp-proto-grpc"
+version = "1.22.0"
+description = "OpenTelemetry Collector Protobuf over gRPC Exporter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_exporter_otlp_proto_grpc-1.22.0-py3-none-any.whl", hash = "sha256:b5bcadc129272004316a455e9081216d3380c1fc2231a928ea6a70aa90e173fb"},
+ {file = "opentelemetry_exporter_otlp_proto_grpc-1.22.0.tar.gz", hash = "sha256:1e0e5aa4bbabc74942f06f268deffd94851d12a8dc30b02527472ef1729fe5b1"},
+]
+
+[package.dependencies]
+backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""}
deprecated = ">=1.2.6"
-importlib-metadata = ">=6.0,<7.0"
+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.22.0"
+opentelemetry-proto = "1.22.0"
+opentelemetry-sdk = ">=1.22.0,<1.23.0"
+
+[package.extras]
+test = ["pytest-grpc"]
[[package]]
-description = "OpenTelemetry Python Proto"
+name = "opentelemetry-exporter-otlp-proto-http"
+version = "1.22.0"
+description = "OpenTelemetry Collector Protobuf over HTTP Exporter"
+optional = false
+python-versions = ">=3.7"
files = [
- {file = "opentelemetry_proto-1.22.0-py3-none-any.whl", hash = "sha256:ce7188d22c75b6d0fe53e7fb58501613d0feade5139538e79dedd9420610fa0c"},
- {file = "opentelemetry_proto-1.22.0.tar.gz", hash = "sha256:9ec29169286029f17ca34ec1f3455802ffb90131642d2f545ece9a63e8f69003"},
+ {file = "opentelemetry_exporter_otlp_proto_http-1.22.0-py3-none-any.whl", hash = "sha256:e002e842190af45b91dc55a97789d0b98e4308c88d886b16049ee90e17a4d396"},
+ {file = "opentelemetry_exporter_otlp_proto_http-1.22.0.tar.gz", hash = "sha256:79ed108981ec68d5f7985355bca32003c2f3a5be1534a96d62d5861b758a82f4"},
]
-name = "opentelemetry-proto"
+
+[package.dependencies]
+backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""}
+deprecated = ">=1.2.6"
+googleapis-common-protos = ">=1.52,<2.0"
+opentelemetry-api = ">=1.15,<2.0"
+opentelemetry-exporter-otlp-proto-common = "1.22.0"
+opentelemetry-proto = "1.22.0"
+opentelemetry-sdk = ">=1.22.0,<1.23.0"
+requests = ">=2.7,<3.0"
+
+[package.extras]
+test = ["responses (==0.22.0)"]
+
+[[package]]
+name = "opentelemetry-instrumentation"
+version = "0.43b0"
+description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python"
optional = false
python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_instrumentation-0.43b0-py3-none-any.whl", hash = "sha256:0ff1334d7e359e27640e9d420024efeb73eacae464309c2e14ede7ba6c93967e"},
+ {file = "opentelemetry_instrumentation-0.43b0.tar.gz", hash = "sha256:c3755da6c4be8033be0216d0501e11f4832690f4e2eca5a3576fbf113498f0f6"},
+]
+
+[package.dependencies]
+opentelemetry-api = ">=1.4,<2.0"
+setuptools = ">=16.0"
+wrapt = ">=1.0.0,<2.0.0"
+
+[[package]]
+name = "opentelemetry-proto"
version = "1.22.0"
+description = "OpenTelemetry Python Proto"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "opentelemetry_proto-1.22.0-py3-none-any.whl", hash = "sha256:ce7188d22c75b6d0fe53e7fb58501613d0feade5139538e79dedd9420610fa0c"},
+ {file = "opentelemetry_proto-1.22.0.tar.gz", hash = "sha256:9ec29169286029f17ca34ec1f3455802ffb90131642d2f545ece9a63e8f69003"},
+]
[package.dependencies]
protobuf = ">=3.19,<5.0"
[[package]]
+name = "opentelemetry-sdk"
+version = "1.22.0"
description = "OpenTelemetry Python SDK"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "opentelemetry_sdk-1.22.0-py3-none-any.whl", hash = "sha256:a730555713d7c8931657612a88a141e3a4fe6eb5523d9e2d5a8b1e673d76efa6"},
{file = "opentelemetry_sdk-1.22.0.tar.gz", hash = "sha256:45267ac1f38a431fc2eb5d6e0c0d83afc0b78de57ac345488aa58c28c17991d0"},
]
-name = "opentelemetry-sdk"
-optional = false
-python-versions = ">=3.7"
-version = "1.22.0"
[package.dependencies]
opentelemetry-api = "1.22.0"
@@ -2610,40 +2909,44 @@ opentelemetry-semantic-conventions = "0.43b0"
typing-extensions = ">=3.7.4"
[[package]]
+name = "opentelemetry-semantic-conventions"
+version = "0.43b0"
description = "OpenTelemetry Semantic Conventions"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "opentelemetry_semantic_conventions-0.43b0-py3-none-any.whl", hash = "sha256:291284d7c1bf15fdaddf309b3bd6d3b7ce12a253cec6d27144439819a15d8445"},
{file = "opentelemetry_semantic_conventions-0.43b0.tar.gz", hash = "sha256:b9576fb890df479626fa624e88dde42d3d60b8b6c8ae1152ad157a8b97358635"},
]
-name = "opentelemetry-semantic-conventions"
-optional = false
-python-versions = ">=3.7"
-version = "0.43b0"
[[package]]
-description = "A decorator to automatically detect mismatch when overriding a method."
-files = [
- {file = "overrides-7.4.0-py3-none-any.whl", hash = "sha256:3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d"},
- {file = "overrides-7.4.0.tar.gz", hash = "sha256:9502a3cca51f4fac40b5feca985b6703a5c1f6ad815588a7ca9e285b9dca6757"},
-]
name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
optional = false
python-versions = ">=3.6"
-version = "7.4.0"
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
[[package]]
+name = "packaging"
+version = "23.2"
description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
{file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
-name = "packaging"
-optional = false
-python-versions = ">=3.7"
-version = "23.2"
[[package]]
+name = "pandas"
+version = "2.0.3"
description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
{file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
@@ -2671,16 +2974,12 @@ files = [
{file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
{file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
]
-name = "pandas"
-optional = false
-python-versions = ">=3.8"
-version = "2.0.3"
[package.dependencies]
numpy = [
- {markers = "python_version < \"3.10\"", version = ">=1.20.3"},
- {markers = "python_version >= \"3.10\" and python_version < \"3.11\"", version = ">=1.21.0"},
- {markers = "python_version >= \"3.11\"", version = ">=1.23.2"},
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
]
python-dateutil = ">=2.8.2"
pytz = ">=2020.1"
@@ -2710,118 +3009,203 @@ test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)"
xml = ["lxml (>=4.6.3)"]
[[package]]
+name = "pandocfilters"
+version = "1.5.1"
description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
{file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
]
-name = "pandocfilters"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.5.1"
[[package]]
+name = "parso"
+version = "0.8.3"
description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
{file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
]
-name = "parso"
-optional = false
-python-versions = ">=3.6"
-version = "0.8.3"
[package.extras]
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["docopt", "pytest (<6.0.0)"]
[[package]]
+name = "pathspec"
+version = "0.12.1"
description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
]
-name = "pathspec"
-optional = false
-python-versions = ">=3.8"
-version = "0.12.1"
[[package]]
+name = "pexpect"
+version = "4.9.0"
description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
files = [
{file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
{file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
]
-name = "pexpect"
-optional = false
-python-versions = "*"
-version = "4.9.0"
[package.dependencies]
ptyprocess = ">=0.5"
[[package]]
+name = "pickleshare"
+version = "0.7.5"
description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
files = [
{file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
{file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
]
-name = "pickleshare"
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
optional = false
-python-versions = "*"
-version = "0.7.5"
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
{file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
]
-name = "pkgutil-resolve-name"
-optional = false
-python-versions = ">=3.6"
-version = "1.3.10"
[[package]]
-description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
-files = [
- {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"},
- {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"},
-]
name = "platformdirs"
+version = "4.2.0"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
optional = false
python-versions = ">=3.8"
-version = "4.1.0"
+files = [
+ {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+ {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+]
[package.extras]
-docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
+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)"]
[[package]]
-description = "plugin and hook calling mechanisms for python"
-files = [
- {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
- {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
-]
name = "pluggy"
+version = "1.4.0"
+description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.8"
-version = "1.3.0"
+files = [
+ {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+ {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+]
[package.extras]
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
[[package]]
+name = "pre-commit"
+version = "3.2.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
{file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
]
-name = "pre-commit"
-optional = false
-python-versions = ">=3.8"
-version = "3.2.0"
[package.dependencies]
cfgv = ">=2.0.0"
@@ -2831,35 +3215,39 @@ pyyaml = ">=5.1"
virtualenv = ">=20.10.0"
[[package]]
+name = "prometheus-client"
+version = "0.19.0"
description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
{file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
]
-name = "prometheus-client"
-optional = false
-python-versions = ">=3.8"
-version = "0.19.0"
[package.extras]
twisted = ["twisted"]
[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
files = [
{file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
{file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
]
-name = "prompt-toolkit"
-optional = false
-python-versions = ">=3.7.0"
-version = "3.0.43"
[package.dependencies]
wcwidth = "*"
[[package]]
+name = "protobuf"
+version = "4.25.2"
description = ""
+optional = false
+python-versions = ">=3.8"
files = [
{file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"},
{file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"},
@@ -2873,13 +3261,13 @@ files = [
{file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"},
{file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"},
]
-name = "protobuf"
-optional = false
-python-versions = ">=3.8"
-version = "4.25.2"
[[package]]
+name = "psutil"
+version = "5.9.8"
description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
{file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
{file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
@@ -2898,288 +3286,258 @@ files = [
{file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
{file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
]
-name = "psutil"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
-version = "5.9.8"
[package.extras]
test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
[[package]]
+name = "ptyprocess"
+version = "0.7.0"
description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
files = [
{file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
{file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
]
-name = "ptyprocess"
-optional = false
-python-versions = "*"
-version = "0.7.0"
[[package]]
+name = "pure-eval"
+version = "0.2.2"
description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
files = [
{file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
{file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
]
-name = "pure-eval"
-optional = false
-python-versions = "*"
-version = "0.2.2"
[package.extras]
tests = ["pytest"]
[[package]]
-description = "Python library for Apache Arrow"
-files = [
- {file = "pyarrow-14.0.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9fe808596c5dbd08b3aeffe901e5f81095baaa28e7d5118e01354c64f22807"},
- {file = "pyarrow-14.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:22a768987a16bb46220cef490c56c671993fbee8fd0475febac0b3e16b00a10e"},
- {file = "pyarrow-14.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dbba05e98f247f17e64303eb876f4a80fcd32f73c7e9ad975a83834d81f3fda"},
- {file = "pyarrow-14.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a898d134d00b1eca04998e9d286e19653f9d0fcb99587310cd10270907452a6b"},
- {file = "pyarrow-14.0.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:87e879323f256cb04267bb365add7208f302df942eb943c93a9dfeb8f44840b1"},
- {file = "pyarrow-14.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:76fc257559404ea5f1306ea9a3ff0541bf996ff3f7b9209fc517b5e83811fa8e"},
- {file = "pyarrow-14.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0c4a18e00f3a32398a7f31da47fefcd7a927545b396e1f15d0c85c2f2c778cd"},
- {file = "pyarrow-14.0.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:87482af32e5a0c0cce2d12eb3c039dd1d853bd905b04f3f953f147c7a196915b"},
- {file = "pyarrow-14.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:059bd8f12a70519e46cd64e1ba40e97eae55e0cbe1695edd95384653d7626b23"},
- {file = "pyarrow-14.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f16111f9ab27e60b391c5f6d197510e3ad6654e73857b4e394861fc79c37200"},
- {file = "pyarrow-14.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06ff1264fe4448e8d02073f5ce45a9f934c0f3db0a04460d0b01ff28befc3696"},
- {file = "pyarrow-14.0.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6dd4f4b472ccf4042f1eab77e6c8bce574543f54d2135c7e396f413046397d5a"},
- {file = "pyarrow-14.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:32356bfb58b36059773f49e4e214996888eeea3a08893e7dbde44753799b2a02"},
- {file = "pyarrow-14.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:52809ee69d4dbf2241c0e4366d949ba035cbcf48409bf404f071f624ed313a2b"},
- {file = "pyarrow-14.0.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:c87824a5ac52be210d32906c715f4ed7053d0180c1060ae3ff9b7e560f53f944"},
- {file = "pyarrow-14.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a25eb2421a58e861f6ca91f43339d215476f4fe159eca603c55950c14f378cc5"},
- {file = "pyarrow-14.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c1da70d668af5620b8ba0a23f229030a4cd6c5f24a616a146f30d2386fec422"},
- {file = "pyarrow-14.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cc61593c8e66194c7cdfae594503e91b926a228fba40b5cf25cc593563bcd07"},
- {file = "pyarrow-14.0.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:78ea56f62fb7c0ae8ecb9afdd7893e3a7dbeb0b04106f5c08dbb23f9c0157591"},
- {file = "pyarrow-14.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:37c233ddbce0c67a76c0985612fef27c0c92aef9413cf5aa56952f359fcb7379"},
- {file = "pyarrow-14.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:e4b123ad0f6add92de898214d404e488167b87b5dd86e9a434126bc2b7a5578d"},
- {file = "pyarrow-14.0.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e354fba8490de258be7687f341bc04aba181fc8aa1f71e4584f9890d9cb2dec2"},
- {file = "pyarrow-14.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:20e003a23a13da963f43e2b432483fdd8c38dc8882cd145f09f21792e1cf22a1"},
- {file = "pyarrow-14.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc0de7575e841f1595ac07e5bc631084fd06ca8b03c0f2ecece733d23cd5102a"},
- {file = "pyarrow-14.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e986dc859712acb0bd45601229021f3ffcdfc49044b64c6d071aaf4fa49e98"},
- {file = "pyarrow-14.0.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:f7d029f20ef56673a9730766023459ece397a05001f4e4d13805111d7c2108c0"},
- {file = "pyarrow-14.0.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:209bac546942b0d8edc8debda248364f7f668e4aad4741bae58e67d40e5fcf75"},
- {file = "pyarrow-14.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:1e6987c5274fb87d66bb36816afb6f65707546b3c45c44c28e3c4133c010a881"},
- {file = "pyarrow-14.0.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a01d0052d2a294a5f56cc1862933014e696aa08cc7b620e8c0cce5a5d362e976"},
- {file = "pyarrow-14.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a51fee3a7db4d37f8cda3ea96f32530620d43b0489d169b285d774da48ca9785"},
- {file = "pyarrow-14.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64df2bf1ef2ef14cee531e2dfe03dd924017650ffaa6f9513d7a1bb291e59c15"},
- {file = "pyarrow-14.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c0fa3bfdb0305ffe09810f9d3e2e50a2787e3a07063001dcd7adae0cee3601a"},
- {file = "pyarrow-14.0.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c65bf4fd06584f058420238bc47a316e80dda01ec0dfb3044594128a6c2db794"},
- {file = "pyarrow-14.0.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:63ac901baec9369d6aae1cbe6cca11178fb018a8d45068aaf5bb54f94804a866"},
- {file = "pyarrow-14.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:75ee0efe7a87a687ae303d63037d08a48ef9ea0127064df18267252cfe2e9541"},
- {file = "pyarrow-14.0.2.tar.gz", hash = "sha256:36cef6ba12b499d864d1def3e990f97949e0b79400d08b7cf74504ffbd3eb025"},
-]
name = "pyarrow"
+version = "15.0.0"
+description = "Python library for Apache Arrow"
optional = false
python-versions = ">=3.8"
-version = "14.0.2"
+files = [
+ {file = "pyarrow-15.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:0a524532fd6dd482edaa563b686d754c70417c2f72742a8c990b322d4c03a15d"},
+ {file = "pyarrow-15.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a6bdb314affa9c2e0d5dddf3d9cbb9ef4a8dddaa68669975287d47ece67642"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66958fd1771a4d4b754cd385835e66a3ef6b12611e001d4e5edfcef5f30391e2"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f500956a49aadd907eaa21d4fff75f73954605eaa41f61cb94fb008cf2e00c6"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6f87d9c4f09e049c2cade559643424da84c43a35068f2a1c4653dc5b1408a929"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85239b9f93278e130d86c0e6bb455dcb66fc3fd891398b9d45ace8799a871a1e"},
+ {file = "pyarrow-15.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b8d43e31ca16aa6e12402fcb1e14352d0d809de70edd185c7650fe80e0769e3"},
+ {file = "pyarrow-15.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:fa7cd198280dbd0c988df525e50e35b5d16873e2cdae2aaaa6363cdb64e3eec5"},
+ {file = "pyarrow-15.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8780b1a29d3c8b21ba6b191305a2a607de2e30dab399776ff0aa09131e266340"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0ec198ccc680f6c92723fadcb97b74f07c45ff3fdec9dd765deb04955ccf19"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036a7209c235588c2f07477fe75c07e6caced9b7b61bb897c8d4e52c4b5f9555"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2bd8a0e5296797faf9a3294e9fa2dc67aa7f10ae2207920dbebb785c77e9dbe5"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e8ebed6053dbe76883a822d4e8da36860f479d55a762bd9e70d8494aed87113e"},
+ {file = "pyarrow-15.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:17d53a9d1b2b5bd7d5e4cd84d018e2a45bc9baaa68f7e6e3ebed45649900ba99"},
+ {file = "pyarrow-15.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9950a9c9df24090d3d558b43b97753b8f5867fb8e521f29876aa021c52fda351"},
+ {file = "pyarrow-15.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:003d680b5e422d0204e7287bb3fa775b332b3fce2996aa69e9adea23f5c8f970"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f75fce89dad10c95f4bf590b765e3ae98bcc5ba9f6ce75adb828a334e26a3d40"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca9cb0039923bec49b4fe23803807e4ef39576a2bec59c32b11296464623dc2"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ed5a78ed29d171d0acc26a305a4b7f83c122d54ff5270810ac23c75813585e4"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6eda9e117f0402dfcd3cd6ec9bfee89ac5071c48fc83a84f3075b60efa96747f"},
+ {file = "pyarrow-15.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a3a6180c0e8f2727e6f1b1c87c72d3254cac909e609f35f22532e4115461177"},
+ {file = "pyarrow-15.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:19a8918045993349b207de72d4576af0191beef03ea655d8bdb13762f0cd6eac"},
+ {file = "pyarrow-15.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0ec076b32bacb6666e8813a22e6e5a7ef1314c8069d4ff345efa6246bc38593"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5db1769e5d0a77eb92344c7382d6543bea1164cca3704f84aa44e26c67e320fb"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2617e3bf9df2a00020dd1c1c6dce5cc343d979efe10bc401c0632b0eef6ef5b"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:d31c1d45060180131caf10f0f698e3a782db333a422038bf7fe01dace18b3a31"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:c8c287d1d479de8269398b34282e206844abb3208224dbdd7166d580804674b7"},
+ {file = "pyarrow-15.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:07eb7f07dc9ecbb8dace0f58f009d3a29ee58682fcdc91337dfeb51ea618a75b"},
+ {file = "pyarrow-15.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:47af7036f64fce990bb8a5948c04722e4e3ea3e13b1007ef52dfe0aa8f23cf7f"},
+ {file = "pyarrow-15.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93768ccfff85cf044c418bfeeafce9a8bb0cee091bd8fd19011aff91e58de540"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6ee87fd6892700960d90abb7b17a72a5abb3b64ee0fe8db6c782bcc2d0dc0b4"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:001fca027738c5f6be0b7a3159cc7ba16a5c52486db18160909a0831b063c4e4"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:d1c48648f64aec09accf44140dccb92f4f94394b8d79976c426a5b79b11d4fa7"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:972a0141be402bb18e3201448c8ae62958c9c7923dfaa3b3d4530c835ac81aed"},
+ {file = "pyarrow-15.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f01fc5cf49081426429127aa2d427d9d98e1cb94a32cb961d583a70b7c4504e6"},
+ {file = "pyarrow-15.0.0.tar.gz", hash = "sha256:876858f549d540898f927eba4ef77cd549ad8d24baa3207cf1b72e5788b50e83"},
+]
[package.dependencies]
-numpy = ">=1.16.6"
+numpy = ">=1.16.6,<2"
[[package]]
+name = "pycparser"
+version = "2.21"
description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
{file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
]
-name = "pycparser"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.21"
[[package]]
+name = "pydantic"
+version = "2.6.1"
description = "Data validation using Python type hints"
+optional = false
+python-versions = ">=3.8"
files = [
- {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"},
- {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"},
+ {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"},
+ {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"},
]
-name = "pydantic"
-optional = false
-python-versions = ">=3.7"
-version = "2.5.3"
[package.dependencies]
annotated-types = ">=0.4.0"
-pydantic-core = "2.14.6"
+pydantic-core = "2.16.2"
typing-extensions = ">=4.6.1"
[package.extras]
email = ["email-validator (>=2.0.0)"]
[[package]]
+name = "pydantic-core"
+version = "2.16.2"
description = ""
+optional = false
+python-versions = ">=3.8"
files = [
- {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"},
- {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"},
- {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"},
- {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"},
- {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"},
- {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"},
- {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"},
- {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"},
- {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"},
- {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"},
- {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"},
- {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"},
- {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"},
- {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"},
- {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"},
- {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"},
- {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"},
- {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"},
- {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"},
- {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"},
- {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"},
- {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"},
- {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"},
- {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"},
- {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"},
- {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"},
- {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"},
- {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"},
- {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"},
- {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"},
- {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"},
- {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"},
- {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"},
- {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"},
- {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"},
- {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"},
- {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"},
- {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"},
- {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"},
- {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"},
- {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"},
- {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"},
- {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"},
- {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"},
- {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"},
- {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"},
- {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"},
- {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"},
- {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"},
- {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"},
- {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"},
- {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"},
- {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"},
- {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"},
- {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"},
- {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"},
- {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"},
- {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"},
- {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"},
- {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"},
- {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"},
- {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"},
- {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"},
- {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"},
- {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"},
- {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"},
- {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"},
- {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"},
- {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"},
- {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"},
- {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"},
- {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"},
- {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"},
- {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"},
- {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"},
+ {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"},
+ {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"},
+ {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"},
+ {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"},
+ {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"},
+ {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"},
+ {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"},
+ {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"},
+ {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"},
]
-name = "pydantic-core"
-optional = false
-python-versions = ">=3.7"
-version = "2.14.6"
[package.dependencies]
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
[[package]]
+name = "pygments"
+version = "2.17.2"
description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
{file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
]
-name = "pygments"
-optional = false
-python-versions = ">=3.7"
-version = "2.17.2"
[package.extras]
plugins = ["importlib-metadata"]
windows-terminal = ["colorama (>=0.4.6)"]
[[package]]
+name = "pylint"
+version = "2.15.10"
description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
files = [
{file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
{file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
]
-name = "pylint"
-optional = false
-python-versions = ">=3.7.2"
-version = "2.15.10"
[package.dependencies]
astroid = ">=2.12.13,<=2.14.0-dev0"
-colorama = {markers = "sys_platform == \"win32\"", version = ">=0.4.5"}
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = [
- {markers = "python_version < \"3.11\"", version = ">=0.2"},
- {markers = "python_version >= \"3.11\"", version = ">=0.3.6"},
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
]
isort = ">=4.2.5,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.1.0"}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
tomlkit = ">=0.10.1"
-typing-extensions = {markers = "python_version < \"3.10\"", version = ">=3.10.0"}
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
[package.extras]
spelling = ["pyenchant (>=3.2,<4.0)"]
testutils = ["gitpython (>3)"]
[[package]]
+name = "pynndescent"
+version = "0.5.11"
description = "Nearest Neighbor Descent"
+optional = false
+python-versions = "*"
files = [
{file = "pynndescent-0.5.11-py3-none-any.whl", hash = "sha256:a628f4fc8a67757c8fa15613449ac513fd056258a55b4084e47c06640ec90a8d"},
{file = "pynndescent-0.5.11.tar.gz", hash = "sha256:6f44ced9d5a9da2c87d9b2fff30bb5308540c0657605e4d5cde7ed3275bbad50"},
]
-name = "pynndescent"
-optional = false
-python-versions = "*"
-version = "0.5.11"
[package.dependencies]
joblib = ">=0.11"
@@ -3189,38 +3547,38 @@ scikit-learn = ">=0.18"
scipy = ">=1.0"
[[package]]
+name = "pytest"
+version = "7.2.1"
description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
{file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
]
-name = "pytest"
-optional = false
-python-versions = ">=3.7"
-version = "7.2.1"
[package.dependencies]
attrs = ">=19.2.0"
-colorama = {markers = "sys_platform == \"win32\"", version = "*"}
-exceptiongroup = {markers = "python_version < \"3.11\"", version = ">=1.0.0rc8"}
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<2.0"
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.0.0"}
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
[package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
[[package]]
+name = "pytest-mock"
+version = "3.11.1"
description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
{file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
]
-name = "pytest-mock"
-optional = false
-python-versions = ">=3.7"
-version = "3.11.1"
[package.dependencies]
pytest = ">=5.0"
@@ -3229,43 +3587,47 @@ pytest = ">=5.0"
dev = ["pre-commit", "pytest-asyncio", "tox"]
[[package]]
+name = "python-dateutil"
+version = "2.8.2"
description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
-name = "python-dateutil"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-version = "2.8.2"
[package.dependencies]
six = ">=1.5"
[[package]]
+name = "python-json-logger"
+version = "2.0.7"
description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
{file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
]
-name = "python-json-logger"
-optional = false
-python-versions = ">=3.6"
-version = "2.0.7"
[[package]]
-description = "World timezone definitions, modern and historical"
-files = [
- {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"},
- {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
-]
name = "pytz"
+version = "2024.1"
+description = "World timezone definitions, modern and historical"
optional = false
python-versions = "*"
-version = "2023.3.post1"
+files = [
+ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+]
[[package]]
+name = "pywin32"
+version = "306"
description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
files = [
{file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
{file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
@@ -3282,13 +3644,13 @@ files = [
{file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
{file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
]
-name = "pywin32"
-optional = false
-python-versions = "*"
-version = "306"
[[package]]
+name = "pywinpty"
+version = "2.0.12"
description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
{file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
@@ -3297,13 +3659,13 @@ files = [
{file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
{file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
]
-name = "pywinpty"
-optional = false
-python-versions = ">=3.8"
-version = "2.0.12"
[[package]]
+name = "pyyaml"
+version = "6.0.1"
description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
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"},
@@ -3323,6 +3685,7 @@ files = [
{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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{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"},
@@ -3356,13 +3719,13 @@ files = [
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
]
-name = "pyyaml"
-optional = false
-python-versions = ">=3.6"
-version = "6.0.1"
[[package]]
+name = "pyzmq"
+version = "25.1.2"
description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
{file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
@@ -3458,24 +3821,20 @@ files = [
{file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
{file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
]
-name = "pyzmq"
-optional = false
-python-versions = ">=3.6"
-version = "25.1.2"
[package.dependencies]
-cffi = {markers = "implementation_name == \"pypy\"", version = "*"}
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
[[package]]
+name = "qtconsole"
+version = "5.5.1"
description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
files = [
{file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
{file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
]
-name = "qtconsole"
-optional = false
-python-versions = ">= 3.8"
-version = "5.5.1"
[package.dependencies]
ipykernel = ">=4.1"
@@ -3492,15 +3851,15 @@ doc = ["Sphinx (>=1.3)"]
test = ["flaky", "pytest", "pytest-qt"]
[[package]]
+name = "qtpy"
+version = "2.4.1"
description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
{file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
]
-name = "qtpy"
-optional = false
-python-versions = ">=3.7"
-version = "2.4.1"
[package.dependencies]
packaging = "*"
@@ -3509,22 +3868,26 @@ packaging = "*"
test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
[[package]]
-description = "JSON Referencing + Python"
-files = [
- {file = "referencing-0.32.1-py3-none-any.whl", hash = "sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"},
- {file = "referencing-0.32.1.tar.gz", hash = "sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3"},
-]
name = "referencing"
+version = "0.33.0"
+description = "JSON Referencing + Python"
optional = false
python-versions = ">=3.8"
-version = "0.32.1"
+files = [
+ {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"},
+ {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"},
+]
[package.dependencies]
attrs = ">=22.2.0"
rpds-py = ">=0.7.0"
[[package]]
+name = "regex"
+version = "2023.12.25"
description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
{file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
@@ -3620,21 +3983,17 @@ files = [
{file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
{file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
]
-name = "regex"
-optional = false
-python-versions = ">=3.7"
-version = "2023.12.25"
[[package]]
+name = "requests"
+version = "2.31.0"
description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
{file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
]
-name = "requests"
-optional = false
-python-versions = ">=3.7"
-version = "2.31.0"
[package.dependencies]
certifi = ">=2017.4.17"
@@ -3647,140 +4006,144 @@ socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
{file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
]
-name = "rfc3339-validator"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.1.4"
[package.dependencies]
six = "*"
[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
{file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
]
-name = "rfc3986-validator"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.1.1"
[[package]]
-description = "Python bindings to Rust's persistent data structures (rpds)"
-files = [
- {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"},
- {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"},
- {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"},
- {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"},
- {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"},
- {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"},
- {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"},
- {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"},
- {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"},
- {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"},
- {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"},
- {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"},
- {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"},
- {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"},
- {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"},
- {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"},
- {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"},
- {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"},
- {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"},
- {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"},
- {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"},
- {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"},
- {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"},
- {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"},
- {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"},
- {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"},
- {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"},
- {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"},
- {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"},
- {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"},
- {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"},
- {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"},
- {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"},
- {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"},
- {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"},
- {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"},
- {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"},
- {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"},
- {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"},
- {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"},
- {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"},
- {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"},
- {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"},
- {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"},
-]
name = "rpds-py"
+version = "0.18.0"
+description = "Python bindings to Rust's persistent data structures (rpds)"
optional = false
python-versions = ">=3.8"
-version = "0.17.1"
+files = [
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
+ {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
+ {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
+ {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
+ {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
+ {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
+ {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
+ {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
+ {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
+ {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
+ {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
+ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
+]
[[package]]
+name = "ruff"
+version = "0.0.292"
description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
{file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
@@ -3800,13 +4163,13 @@ files = [
{file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
{file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
]
-name = "ruff"
-optional = false
-python-versions = ">=3.7"
-version = "0.0.292"
[[package]]
+name = "scikit-learn"
+version = "1.2.2"
description = "A set of python modules for machine learning and data mining"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "scikit-learn-1.2.2.tar.gz", hash = "sha256:8429aea30ec24e7a8c7ed8a3fa6213adf3814a6efbea09e16e0a0c71e1a1a3d7"},
{file = "scikit_learn-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99cc01184e347de485bf253d19fcb3b1a3fb0ee4cea5ee3c43ec0cc429b6d29f"},
@@ -3830,10 +4193,6 @@ files = [
{file = "scikit_learn-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea061bf0283bf9a9f36ea3c5d3231ba2176221bbd430abd2603b1c3b2ed85c89"},
{file = "scikit_learn-1.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:6477eed40dbce190f9f9e9d0d37e020815825b300121307942ec2110302b66a3"},
]
-name = "scikit-learn"
-optional = false
-python-versions = ">=3.8"
-version = "1.2.2"
[package.dependencies]
joblib = ">=1.1.1"
@@ -3848,7 +4207,11 @@ examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.10.0)", "po
tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.3)", "mypy (>=0.961)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=5.3.1)", "pytest-cov (>=2.9.0)", "scikit-image (>=0.16.2)"]
[[package]]
+name = "scipy"
+version = "1.10.1"
description = "Fundamental algorithms for scientific computing in Python"
+optional = false
+python-versions = "<3.12,>=3.8"
files = [
{file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"},
{file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"},
@@ -3872,10 +4235,6 @@ files = [
{file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"},
{file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"},
]
-name = "scipy"
-optional = false
-python-versions = "<3.12,>=3.8"
-version = "1.10.1"
[package.dependencies]
numpy = ">=1.19.5,<1.27.0"
@@ -3886,15 +4245,15 @@ doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (
test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
[[package]]
+name = "send2trash"
+version = "1.8.2"
description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
{file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
{file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
]
-name = "send2trash"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
-version = "1.8.2"
[package.extras]
nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
@@ -3902,125 +4261,113 @@ objc = ["pyobjc-framework-Cocoa"]
win32 = ["pywin32"]
[[package]]
-description = "Easily download, build, install, upgrade, and uninstall Python packages"
-files = [
- {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"},
- {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"},
-]
name = "setuptools"
+version = "69.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
optional = false
python-versions = ">=3.8"
-version = "69.0.3"
+files = [
+ {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
+ {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
+name = "six"
+version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
-name = "six"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "1.16.0"
[[package]]
+name = "sniffio"
+version = "1.3.0"
description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
{file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
]
-name = "sniffio"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.0"
[[package]]
+name = "sortedcontainers"
+version = "2.4.0"
description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set"
+optional = false
+python-versions = "*"
files = [
{file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"},
{file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"},
]
-name = "sortedcontainers"
-optional = false
-python-versions = "*"
-version = "2.4.0"
[[package]]
+name = "soupsieve"
+version = "2.5"
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"},
]
-name = "soupsieve"
-optional = false
-python-versions = ">=3.8"
-version = "2.5"
[[package]]
-description = "Database Abstraction Library"
-files = [
- {file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4344d059265cc8b1b1be351bfb88749294b87a8b2bbe21dfbe066c4199541ebd"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9e2e59cbcc6ba1488404aad43de005d05ca56e069477b33ff74e91b6319735"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84daa0a2055df9ca0f148a64fdde12ac635e30edbca80e87df9b3aaf419e144a"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc8b7dabe8e67c4832891a5d322cec6d44ef02f432b4588390017f5cec186a84"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db854730a25db7c956423bb9fb4bdd1216c839a689bf9cc15fada0a7fb2f4570"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-win32.whl", hash = "sha256:14a6f68e8fc96e5e8f5647ef6cda6250c780612a573d99e4d881581432ef1669"},
- {file = "SQLAlchemy-2.0.25-cp310-cp310-win_amd64.whl", hash = "sha256:87f6e732bccd7dcf1741c00f1ecf33797383128bd1c90144ac8adc02cbb98643"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:342d365988ba88ada8af320d43df4e0b13a694dbd75951f537b2d5e4cb5cd002"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa9373708763ef46782d10e950b49d0235bfe58facebd76917d3f5cbf5971aed"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d24f571990c05f6b36a396218f251f3e0dda916e0c687ef6fdca5072743208f5"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75432b5b14dc2fff43c50435e248b45c7cdadef73388e5610852b95280ffd0e9"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:884272dcd3ad97f47702965a0e902b540541890f468d24bd1d98bcfe41c3f018"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-win32.whl", hash = "sha256:e607cdd99cbf9bb80391f54446b86e16eea6ad309361942bf88318bcd452363c"},
- {file = "SQLAlchemy-2.0.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d505815ac340568fd03f719446a589162d55c52f08abd77ba8964fbb7eb5b5f"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b801154027107461ee992ff4b5c09aa7cc6ec91ddfe50d02bca344918c3265c6"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59a21853f5daeb50412d459cfb13cb82c089ad4c04ec208cd14dddd99fc23b39"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29049e2c299b5ace92cbed0c1610a7a236f3baf4c6b66eb9547c01179f638ec5"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b64b183d610b424a160b0d4d880995e935208fc043d0302dd29fee32d1ee3f95"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4f7a7d7fcc675d3d85fbf3b3828ecd5990b8d61bd6de3f1b260080b3beccf215"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-win32.whl", hash = "sha256:cf18ff7fc9941b8fc23437cc3e68ed4ebeff3599eec6ef5eebf305f3d2e9a7c2"},
- {file = "SQLAlchemy-2.0.25-cp312-cp312-win_amd64.whl", hash = "sha256:91f7d9d1c4dd1f4f6e092874c128c11165eafcf7c963128f79e28f8445de82d5"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bb209a73b8307f8fe4fe46f6ad5979649be01607f11af1eb94aa9e8a3aaf77f0"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798f717ae7c806d67145f6ae94dc7c342d3222d3b9a311a784f371a4333212c7"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd402169aa00df3142149940b3bf9ce7dde075928c1886d9a1df63d4b8de62"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:74b080c897563f81062b74e44f5a72fa44c2b373741a9ade701d5f789a10ba23"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-win32.whl", hash = "sha256:87d91043ea0dc65ee583026cb18e1b458d8ec5fc0a93637126b5fc0bc3ea68c4"},
- {file = "SQLAlchemy-2.0.25-cp37-cp37m-win_amd64.whl", hash = "sha256:75f99202324383d613ddd1f7455ac908dca9c2dd729ec8584c9541dd41822a2c"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:420362338681eec03f53467804541a854617faed7272fe71a1bfdb07336a381e"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c88f0c7dcc5f99bdb34b4fd9b69b93c89f893f454f40219fe923a3a2fd11625"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3be4987e3ee9d9a380b66393b77a4cd6d742480c951a1c56a23c335caca4ce3"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8b8cb63d3ea63b29074dcd29da4dc6a97ad1349151f2d2949495418fd6e48db9"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:736ea78cd06de6c21ecba7416499e7236a22374561493b456a1f7ffbe3f6cdb4"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-win32.whl", hash = "sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e"},
- {file = "SQLAlchemy-2.0.25-cp38-cp38-win_amd64.whl", hash = "sha256:c55731c116806836a5d678a70c84cb13f2cedba920212ba7dcad53260997666d"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:605b6b059f4b57b277f75ace81cc5bc6335efcbcc4ccb9066695e515dbdb3900"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:665f0a3954635b5b777a55111ababf44b4fc12b1f3ba0a435b602b6387ffd7cf"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecf6d4cda1f9f6cb0b45803a01ea7f034e2f1aed9475e883410812d9f9e3cfcf"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c51db269513917394faec5e5c00d6f83829742ba62e2ac4fa5c98d58be91662f"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:790f533fa5c8901a62b6fef5811d48980adeb2f51f1290ade8b5e7ba990ba3de"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1b1180cda6df7af84fe72e4530f192231b1f29a7496951db4ff38dac1687202d"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-win32.whl", hash = "sha256:555651adbb503ac7f4cb35834c5e4ae0819aab2cd24857a123370764dc7d7e24"},
- {file = "SQLAlchemy-2.0.25-cp39-cp39-win_amd64.whl", hash = "sha256:dc55990143cbd853a5d038c05e79284baedf3e299661389654551bd02a6a68d7"},
- {file = "SQLAlchemy-2.0.25-py3-none-any.whl", hash = "sha256:a86b4240e67d4753dc3092d9511886795b3c2852abe599cffe108952f7af7ac3"},
- {file = "SQLAlchemy-2.0.25.tar.gz", hash = "sha256:a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08"},
-]
name = "sqlalchemy"
+version = "2.0.27"
+description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
-version = "2.0.25"
+files = [
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"},
+ {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"},
+ {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"},
+]
[package.dependencies]
-greenlet = {markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\"", optional = true, version = "!=0.4.17"}
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
typing-extensions = ">=4.6.0"
[package.extras]
@@ -4049,15 +4396,15 @@ pymysql = ["pymysql"]
sqlcipher = ["sqlcipher3_binary"]
[[package]]
+name = "stack-data"
+version = "0.6.3"
description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
files = [
{file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
{file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
]
-name = "stack-data"
-optional = false
-python-versions = "*"
-version = "0.6.3"
[package.dependencies]
asttokens = ">=2.1.0"
@@ -4068,36 +4415,36 @@ pure-eval = "*"
tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
[[package]]
-description = "The little ASGI library that shines."
-files = [
- {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"},
- {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"},
-]
name = "starlette"
+version = "0.37.1"
+description = "The little ASGI library that shines."
optional = false
python-versions = ">=3.8"
-version = "0.35.1"
+files = [
+ {file = "starlette-0.37.1-py3-none-any.whl", hash = "sha256:92a816002d4e8c552477b089520e3085bb632e854eb32cef99acb6f6f7830b69"},
+ {file = "starlette-0.37.1.tar.gz", hash = "sha256:345cfd562236b557e76a045715ac66fdc355a1e7e617b087834a76a87dcc6533"},
+]
[package.dependencies]
anyio = ">=3.4.0,<5"
-typing-extensions = {markers = "python_version < \"3.10\"", version = ">=3.10.0"}
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
[package.extras]
-full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"]
+full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
[[package]]
+name = "strawberry-graphql"
+version = "0.208.2"
description = "A library for creating GraphQL APIs"
+optional = false
+python-versions = ">=3.8,<4.0"
files = [
{file = "strawberry_graphql-0.208.2-py3-none-any.whl", hash = "sha256:682a07bd9fe8691d145eb02e3ce8f65114f6c293184c659b31545f728351f813"},
{file = "strawberry_graphql-0.208.2.tar.gz", hash = "sha256:70b9a481baee7ef37d497fc8dd11ab3c0bb4a9ca304434493f868874cbb546a6"},
]
-name = "strawberry-graphql"
-optional = false
-python-versions = ">=3.8,<4.0"
-version = "0.208.2"
[package.dependencies]
-astunparse = {markers = "python_version < \"3.9\"", version = ">=1.6.3,<2.0.0"}
+astunparse = {version = ">=1.6.3,<2.0.0", markers = "python_version < \"3.9\""}
graphql-core = ">=3.2.0,<3.3.0"
python-dateutil = ">=2.7.0,<3.0.0"
typing-extensions = ">=4.5.0"
@@ -4120,33 +4467,33 @@ sanic = ["sanic (>=20.12.2)"]
starlite = ["starlite (>=1.48.0)"]
[[package]]
+name = "tenacity"
+version = "8.2.3"
description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
{file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
]
-name = "tenacity"
-optional = false
-python-versions = ">=3.7"
-version = "8.2.3"
[package.extras]
doc = ["reno", "sphinx", "tornado (>=4.5)"]
[[package]]
+name = "terminado"
+version = "0.18.0"
description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
{file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
]
-name = "terminado"
-optional = false
-python-versions = ">=3.8"
-version = "0.18.0"
[package.dependencies]
-ptyprocess = {markers = "os_name != \"nt\"", version = "*"}
-pywinpty = {markers = "os_name == \"nt\"", version = ">=1.1.0"}
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
tornado = ">=6.1.0"
[package.extras]
@@ -4155,60 +4502,60 @@ test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
[[package]]
+name = "threadpoolctl"
+version = "3.2.0"
description = "threadpoolctl"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"},
{file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"},
]
-name = "threadpoolctl"
-optional = false
-python-versions = ">=3.8"
-version = "3.2.0"
[[package]]
-description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
-files = [
- {file = "tiktoken-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c4e654282ef05ec1bd06ead22141a9a1687991cef2c6a81bdd1284301abc71d"},
- {file = "tiktoken-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b3134aa24319f42c27718c6967f3c1916a38a715a0fa73d33717ba121231307"},
- {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6092e6e77730929c8c6a51bb0d7cfdf1b72b63c4d033d6258d1f2ee81052e9e5"},
- {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ad8ae2a747622efae75837abba59be6c15a8f31b4ac3c6156bc56ec7a8e631"},
- {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51cba7c8711afa0b885445f0637f0fcc366740798c40b981f08c5f984e02c9d1"},
- {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3d8c7d2c9313f8e92e987d585ee2ba0f7c40a0de84f4805b093b634f792124f5"},
- {file = "tiktoken-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:692eca18c5fd8d1e0dde767f895c17686faaa102f37640e884eecb6854e7cca7"},
- {file = "tiktoken-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:138d173abbf1ec75863ad68ca289d4da30caa3245f3c8d4bfb274c4d629a2f77"},
- {file = "tiktoken-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7388fdd684690973fdc450b47dfd24d7f0cbe658f58a576169baef5ae4658607"},
- {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a114391790113bcff670c70c24e166a841f7ea8f47ee2fe0e71e08b49d0bf2d4"},
- {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca96f001e69f6859dd52926d950cfcc610480e920e576183497ab954e645e6ac"},
- {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:15fed1dd88e30dfadcdd8e53a8927f04e1f6f81ad08a5ca824858a593ab476c7"},
- {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f8e692db5756f7ea8cb0cfca34638316dcf0841fb8469de8ed7f6a015ba0b0"},
- {file = "tiktoken-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:bcae1c4c92df2ffc4fe9f475bf8148dbb0ee2404743168bbeb9dcc4b79dc1fdd"},
- {file = "tiktoken-0.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b76a1e17d4eb4357d00f0622d9a48ffbb23401dcf36f9716d9bd9c8e79d421aa"},
- {file = "tiktoken-0.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01d8b171bb5df4035580bc26d4f5339a6fd58d06f069091899d4a798ea279d3e"},
- {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42adf7d4fb1ed8de6e0ff2e794a6a15005f056a0d83d22d1d6755a39bffd9e7f"},
- {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3f894dbe0adb44609f3d532b8ea10820d61fdcb288b325a458dfc60fefb7db"},
- {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:58ccfddb4e62f0df974e8f7e34a667981d9bb553a811256e617731bf1d007d19"},
- {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58902a8bad2de4268c2a701f1c844d22bfa3cbcc485b10e8e3e28a050179330b"},
- {file = "tiktoken-0.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e39257826d0647fcac403d8fa0a474b30d02ec8ffc012cfaf13083e9b5e82c5"},
- {file = "tiktoken-0.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bde3b0fbf09a23072d39c1ede0e0821f759b4fa254a5f00078909158e90ae1f"},
- {file = "tiktoken-0.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2ddee082dcf1231ccf3a591d234935e6acf3e82ee28521fe99af9630bc8d2a60"},
- {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35c057a6a4e777b5966a7540481a75a31429fc1cb4c9da87b71c8b75b5143037"},
- {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c4a049b87e28f1dc60509f8eb7790bc8d11f9a70d99b9dd18dfdd81a084ffe6"},
- {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5bf5ce759089f4f6521ea6ed89d8f988f7b396e9f4afb503b945f5c949c6bec2"},
- {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0c964f554af1a96884e01188f480dad3fc224c4bbcf7af75d4b74c4b74ae0125"},
- {file = "tiktoken-0.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:368dd5726d2e8788e47ea04f32e20f72a2012a8a67af5b0b003d1e059f1d30a3"},
- {file = "tiktoken-0.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a2deef9115b8cd55536c0a02c0203512f8deb2447f41585e6d929a0b878a0dd2"},
- {file = "tiktoken-0.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ed7d380195affbf886e2f8b92b14edfe13f4768ff5fc8de315adba5b773815e"},
- {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76fce01309c8140ffe15eb34ded2bb94789614b7d1d09e206838fc173776a18"},
- {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60a5654d6a2e2d152637dd9a880b4482267dfc8a86ccf3ab1cec31a8c76bfae8"},
- {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41d4d3228e051b779245a8ddd21d4336f8975563e92375662f42d05a19bdff41"},
- {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c1cdec2c92fcde8c17a50814b525ae6a88e8e5b02030dc120b76e11db93f13"},
- {file = "tiktoken-0.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:84ddb36faedb448a50b246e13d1b6ee3437f60b7169b723a4b2abad75e914f3e"},
- {file = "tiktoken-0.5.2.tar.gz", hash = "sha256:f54c581f134a8ea96ce2023ab221d4d4d81ab614efa0b2fbce926387deb56c80"},
-]
name = "tiktoken"
+version = "0.6.0"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
optional = false
python-versions = ">=3.8"
-version = "0.5.2"
+files = [
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"},
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"},
+ {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"},
+ {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"},
+ {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"},
+ {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"},
+ {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"},
+]
[package.dependencies]
regex = ">=2022.1.18"
@@ -4218,15 +4565,15 @@ requests = ">=2.26.0"
blobfile = ["blobfile (>=2)"]
[[package]]
+name = "tinycss2"
+version = "1.2.1"
description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
{file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
]
-name = "tinycss2"
-optional = false
-python-versions = ">=3.7"
-version = "1.2.1"
[package.dependencies]
webencodings = ">=0.4"
@@ -4236,40 +4583,44 @@ doc = ["sphinx", "sphinx_rtd_theme"]
test = ["flake8", "isort", "pytest"]
[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
{file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
]
-name = "tokenize-rt"
-optional = false
-python-versions = ">=3.8"
-version = "5.2.0"
[[package]]
+name = "tomli"
+version = "2.0.1"
description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
-name = "tomli"
-optional = false
-python-versions = ">=3.7"
-version = "2.0.1"
[[package]]
+name = "tomlkit"
+version = "0.12.3"
description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
{file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
]
-name = "tomlkit"
-optional = false
-python-versions = ">=3.7"
-version = "0.12.3"
[[package]]
+name = "tornado"
+version = "6.4"
description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
files = [
{file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
{file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
@@ -4283,24 +4634,20 @@ files = [
{file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
{file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
]
-name = "tornado"
-optional = false
-python-versions = ">= 3.8"
-version = "6.4"
[[package]]
-description = "Fast, Extensible Progress Meter"
-files = [
- {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"},
- {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"},
-]
name = "tqdm"
+version = "4.66.2"
+description = "Fast, Extensible Progress Meter"
optional = false
python-versions = ">=3.7"
-version = "4.66.1"
+files = [
+ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
+ {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+]
[package.dependencies]
-colorama = {markers = "platform_system == \"Windows\"", version = "*"}
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
[package.extras]
dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
@@ -4309,22 +4656,26 @@ slack = ["slack-sdk"]
telegram = ["requests"]
[[package]]
+name = "traitlets"
+version = "5.14.1"
description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
{file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
]
-name = "traitlets"
-optional = false
-python-versions = ">=3.8"
-version = "5.14.1"
[package.extras]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
[[package]]
+name = "tree-sitter"
+version = "0.20.4"
description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
files = [
{file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
{file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
@@ -4403,260 +4754,247 @@ files = [
{file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
{file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
]
-name = "tree-sitter"
-optional = false
-python-versions = ">=3.3"
-version = "0.20.4"
[[package]]
-description = "Binary Python wheels for all tree sitter languages."
-files = [
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5dee458cf1bd1e725470949124e24db842dc789039ea7ff5ba46b338e5f0dc60"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81921135fa15469586b1528088f78553e60a900d3045f4f37021ad3836219216"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edd60780d14c727179acb7bb48fbe4f79da9b830abdeb0d12c06a9f2c37928c7"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a28da3f60a6bc23195d6850836e477c149d4aaf58cdb0eb662741dca4f6401e2"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9778c00a58ee77006abc5af905b591551b158ce106c8cc6c3b4148d624ccabf"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6f68cfec0d74d6344db9c83414f401dcfc753916e71fac7d37f3a5e35b79e5ec"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:02142d81b2cd759b5fe246d403e4fba80b70268d108bd2b108301e64a84437a6"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ca4e0041c2ead2a8b354b9c229faee152bfd4617480c85cf2b352acf459db3cc"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-win32.whl", hash = "sha256:506ff5c3646e7b3a533f9e925221d4fe63b88dad0b7ffc1fb96db4c271994606"},
- {file = "tree_sitter_languages-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ac3899e05f2bf0a7c8da70ef5a077ab3dbd442f99eb7452aabbe67bc7b29ddf"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:823426c3768eea88b6a4fd70dc668b72de90cc9f44d041a579c76d024d7d0697"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51f64b11f30cef3c5c9741e06221a46948f7c82d53ea2468139028eaf4858cca"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e1c384bcd2695ebf873bc63eccfa0b9e1c3c944cd6a6ebdd1139a2528d2d6f"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fecf8553645fc1ad84921e97b03615d84aca22c35d020f629bb44cb6a28a302e"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1a499004189bf9f338f3412d4c1c05a643e86d4619a60ba4b3ae56bc4bf5db9"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:634ef22744b4af2ed9a43fea8309ec1171b062e37c609c3463364c790a08dae3"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9394eb34208abcfa9c26ece39778037a8d97da3ef59501185303fef0ab850290"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:221c367be0129da540fbb84170e18c5b8c56c09fd2f6143e116eebbef72c780e"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-win32.whl", hash = "sha256:15d03f54f913f47ac36277d8a521cd425415a25b020e0845d7b8843f5f5e1209"},
- {file = "tree_sitter_languages-1.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:7c565c18cebc72417ebc8f0f4cd5cb91dda51874164045cc274f47c913b194aa"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cde380cdc37594e7fcbade6a4b396dbeab52a1cecfe884cd814e1a1541ca6b93"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9c4f2409e5460bdec5921ee445f748ea7c319469e347a13373e3c7086dbf0315"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a17bbe91a78a29a9c14ab8bb07ed3761bb2708b58815bafc02d0965b15cb99e5"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:369402e2b395de2655d769e515401fe7c7df247a83aa28a6362e808b8a017fae"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a382d1e463e6ae60bbbd0c1f3db48e83b3c1a3af98d652af11de4c0e6171fc"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc60fb35f377143b30f4319fbaac0503b12cfb49de34082a479c7f0cc28927f1"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e953fb43767e327bf5c1d0585ee39236eaff47683cbda2811cbe0227fd41ad7"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c5a6df25eae23a5e2d448218b130207476cb8a613ac40570d49008243b0915bb"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-win32.whl", hash = "sha256:2720f9a639f5d5c17692135f3f2d60506c240699d0c1becdb895546e553f2339"},
- {file = "tree_sitter_languages-1.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:f19157c33ddc1e75ae7843b813e65575ed2040e1638643251bd603bb0f52046b"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:40880b5e774c3d5759b726273c36f83042d39c600c3aeefaf39248c3adec92d0"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad71366ee2458bda6df5a7476fc0e465a1e1579f53335ce901935efc5c67fdeb"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8000c6bf889e35e8b75407ea2d56153534b3f80c3b768378f4ca5a6fe286c0f"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7e20ead363d70b3f0f0b04cf6da30257d22a166700fa39e06c9f263b527688"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:444d2662912bc439c54c1b0ffe38354ae648f1f1ac8d1254b14fa768aa1a8587"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cceac9018359310fee46204b452860bfdcb3da00f4518d430790f909cbbf6b4c"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:332c182afbd9f7601e268426470e8c453740769a6227e7d1a9636d905cd7d707"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-win32.whl", hash = "sha256:25e993a41ad11fc433cb18ce0cc1d51eb7a285560c5cdddf781139312dac1881"},
- {file = "tree_sitter_languages-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:57419c215092ba9ba1964e07620dd386fc88ebb075b981fbb80f68f58004d4b4"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06747cac4789c436affa7c6b3483f68cc234e6a75b508a0f8369c77eb1faa04b"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b40bc82005543309c9cd4059f362c9d0d51277c942c71a5fdbed118389e5543a"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44920c9654ae03e94baa45c6e8c4b36a5f7bdd0c93877c72931bd77e862adaf1"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82e44f63a5449a41c5de3e9350967dc1c9183d9375881af5efb970c58c3fcfd8"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df177fa87b655f6234e4dae540ba3917cf8e87c3646423b809415711e926765e"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:abdc8793328aa13fbd1cef3a0dff1c2e057a430fe2a64251628bbc97c4774eba"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b3f319f95f4464c35381755422f6dc0a518ad7d295d3cfe57bbaa564d225f3f"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-win32.whl", hash = "sha256:9f3a59bb4e8ec0a598566e02b7900eb8142236bda6c8b1069c4f3cdaf641950d"},
- {file = "tree_sitter_languages-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:517bdfe34bf24a05a496d441bee836fa77a6864f256508b82457ac28a9ac36bc"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9383331026f736bcbdf6b67f9b45417fe8fbb47225fe2517a1e4f974c319d9a8"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bba45ff3715e20e6e9a9b402f1ec2f2fc5ce11ce7b223584d0b5be5a4f8c60bb"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03558927c6e731d81706e3a8b26276eaa4fadba17e2fd83a5e0bc2a32b261975"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f0231140e2d29fcf987216277483c93bc7ce4c2f88b8af77756d796e17a2957"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ead59b416f03da262df26e282cd40eb487f15384c90290f5105451e9a8ecfea"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fd27b7bdb95a2b35b730069d7dea60d0f6cc37e5ab2e900d2940a82d1db608bd"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d8b65a5fafd774a6c6dcacd9ac8b4c258c9f1efe2bfdca0a63818c83e591b949"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f32f7a7b8fd9952f82e2b881c1c8701a467b27db209590e0effb2fb4d71fe3d3"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-win32.whl", hash = "sha256:b52321e2a3a7cd1660cd7dadea16d7c7b9c981e177e0f77f9735e04cd89de015"},
- {file = "tree_sitter_languages-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8752bec9372937094a2557d9bfff357f30f5aa398e41e76e656baf53b4939d3"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:119f32cfc7c561e252e8958259ef997f2adfd4587ae43e82819b56f2810b8b42"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:582b04e11c67706b0a5ea64fd53ce4910fe11ad29d74ec7680c4014a02d09d4a"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a816f76c52f6c9fb3316c5d44195f8de48e09f2214b7fdb5f9232395033c789c"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a099b2f69cf22ab77de811b148de7d2d8ba8c51176a64bc56304cf42a627dd4"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:447b6c62c59255c89341ec0968e467e8c59c60fc5c2c3dc1f7dfe159a820dd3c"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41f4fee9b7de9646ef9711b6dbcdd5a4e7079e3d175089c8ef3f2c68b5adb5f4"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ee3b70594b79ff1155d5d9fea64e3af240d9327a52526d446e6bd792ac5b43cf"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:087b82cc3943fc5ffac30dc1b4192936a27c3c06fbd8718935a269e30dedc83b"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-win32.whl", hash = "sha256:155483058dc11de302f47922d31feec5e1bb9888e661aed7be0dad6f70bfe691"},
- {file = "tree_sitter_languages-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:5335405a937f788a2608d1b25c654461dddddbc6a1341672c833d2c8943397a8"},
-]
name = "tree-sitter-languages"
+version = "1.10.2"
+description = "Binary Python wheels for all tree sitter languages."
optional = false
python-versions = "*"
-version = "1.9.1"
+files = [
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5580348f0b20233b1d5431fa178ccd3d07423ca4a3275df02a44608fd72344b9"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:103c7466644486b1e9e03850df46fc6aa12f13ca636c74f173270276220ac80b"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d13db84511c6f1a7dc40383b66deafa74dabd8b877e3d65ab253f3719eccafd6"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57adfa32be7e465b54aa72f915f6c78a2b66b227df4f656b5d4fbd1ca7a92b3f"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6385e033e460ceb8f33f3f940335f422ef2b763700a04f0089391a68b56153"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dfa3f38cc5381c5aba01dd7494f59b8a9050e82ff6e06e1233e3a0cbae297e3c"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9f195155acf47f8bc5de7cee46ecd07b2f5697f007ba89435b51ef4c0b953ea5"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2de330e2ac6d7426ca025a3ec0f10d5640c3682c1d0c7702e812dcfb44b58120"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win32.whl", hash = "sha256:c9731cf745f135d9770eeba9bb4e2ff4dabc107b5ae9b8211e919f6b9100ea6d"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:6dd75851c41d0c3c4987a9b7692d90fa8848706c23115669d8224ffd6571e357"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7eb7d7542b2091c875fe52719209631fca36f8c10fa66970d2c576ae6a1b8289"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b41bcb00974b1c8a1800c7f1bb476a1d15a0463e760ee24872f2d53b08ee424"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f370cd7845c6c81df05680d5bd96db8a99d32b56f4728c5d05978911130a853"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1dc195c88ef4c72607e112a809a69190e096a2e5ebc6201548b3e05fdd169ad"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae34ac314a7170be24998a0f994c1ac80761d8d4bd126af27ee53a023d3b849"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01b5742d5f5bd675489486b582bd482215880b26dde042c067f8265a6e925d9c"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab1cbc46244d34fd16f21edaa20231b2a57f09f092a06ee3d469f3117e6eb954"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b1149e7467a4e92b8a70e6005fe762f880f493cf811fc003554b29f04f5e7c8"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win32.whl", hash = "sha256:049276343962f4696390ee555acc2c1a65873270c66a6cbe5cb0bca83bcdf3c6"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:7f3fdd468a577f04db3b63454d939e26e360229b53c80361920aa1ebf2cd7491"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c0f4c8b2734c45859edc7fcaaeaab97a074114111b5ba51ab4ec7ed52104763c"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eecd3c1244ac3425b7a82ba9125b4ddb45d953bbe61de114c0334fd89b7fe782"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15db3c8510bc39a80147ee7421bf4782c15c09581c1dc2237ea89cefbd95b846"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92c6487a6feea683154d3e06e6db68c30e0ae749a7ce4ce90b9e4e46b78c85c7"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2f1cd1d1bdd65332f9c2b67d49dcf148cf1ded752851d159ac3e5ee4f4d260"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:976c8039165b8e12f17a01ddee9f4e23ec6e352b165ad29b44d2bf04e2fbe77e"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dafbbdf16bf668a580902e1620f4baa1913e79438abcce721a50647564c687b9"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1aeabd3d60d6d276b73cd8f3739d595b1299d123cc079a317f1a5b3c5461e2ca"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win32.whl", hash = "sha256:fab8ee641914098e8933b87ea3d657bea4dd00723c1ee7038b847b12eeeef4f5"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e606430d736367e5787fa5a7a0c5a1ec9b85eded0b3596bbc0d83532a40810b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:838d5b48a7ed7a17658721952c77fda4570d2a069f933502653b17e15a9c39c9"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b3c71b1d278c2889e018ee77b8ee05c384e2e3334dec798f8b611c4ab2d1e"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa00abcb2c819027df58472da055d22fa7dfcb77c77413d8500c32ebe24d38b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e102fbbf02322d9201a86a814e79a9734ac80679fdb9682144479044f401a73"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0b87cf1a7b03174ba18dfd81582be82bfed26803aebfe222bd20e444aba003"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0f1b9af9cb67f0b942b020da9fdd000aad5e92f2383ae0ba7a330b318d31912"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a4076c921f7a4d31e643843de7dfe040b65b63a238a5aa8d31d93aabe6572aa"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win32.whl", hash = "sha256:fa6391a3a5d83d32db80815161237b67d70576f090ce5f38339206e917a6f8bd"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:55649d3f254585a064121513627cf9788c1cfdadbc5f097f33d5ba750685a4c0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f85d1edaa2d22d80d4ea5b6d12b95cf3644017b6c227d0d42854439e02e8893"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d78feed4a764ef3141cb54bf00fe94d514d8b6e26e09423e23b4c616fcb7938c"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1aca27531f9dd5308637d76643372856f0f65d0d28677d1bcf4211e8ed1ad0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1031ea440dafb72237437d754eff8940153a3b051e3d18932ac25e75ce060a15"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99d3249beaef2c9fe558ecc9a97853c260433a849dcc68266d9770d196c2e102"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:59a4450f262a55148fb7e68681522f0c2a2f6b7d89666312a2b32708d8f416e1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ce74eab0e430370d5e15a96b6c6205f93405c177a8b2e71e1526643b2fb9bab1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9b4dd2b6b3d24c85dffe33d6c343448869eaf4f41c19ddba662eb5d65d8808f4"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win32.whl", hash = "sha256:92d734fb968fe3927a7596d9f0459f81a8fa7b07e16569476b28e27d0d753348"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:46a13f7d38f2eeb75f7cf127d1201346093748c270d686131f0cbc50e42870a1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f8c6a936ae99fdd8857e91f86c11c2f5e507ff30631d141d98132bb7ab2c8638"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c283a61423f49cdfa7b5a5dfbb39221e3bd126fca33479cd80749d4d7a6b7349"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e60be6bdcff923386a54a5edcb6ff33fc38ab0118636a762024fa2bc98de55"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c00069f9575bd831eabcce2cdfab158dde1ed151e7e5614c2d985ff7d78a7de1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ff53203d8a43ccb19bb322fa2fb200d764001cc037793f1fadd714bb343da"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26fe7c9c412e4141dea87ea4b3592fd12e385465b5bdab106b0d5125754d4f60"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8fed27319957458340f24fe14daad467cd45021da034eef583519f83113a8c5e"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3657a491a7f96cc75a3568ddd062d25f3be82b6a942c68801a7b226ff7130181"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win32.whl", hash = "sha256:33f7d584d01a7a3c893072f34cfc64ec031f3cfe57eebc32da2f8ac046e101a7"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:1b944af3ee729fa70fc8ae82224a9ff597cdb63addea084e0ea2fa2b0ec39bb7"},
+]
[package.dependencies]
tree-sitter = "*"
[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
{file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
]
-name = "types-deprecated"
-optional = false
-python-versions = ">=3.8"
-version = "1.2.9.20240106"
[[package]]
-description = "Typing stubs for docutils"
-files = [
- {file = "types-docutils-0.20.0.20240106.tar.gz", hash = "sha256:03992ec976fbe080db588e1e56a83c5e4aba5c733022b25bb26cb84397b96049"},
- {file = "types_docutils-0.20.0.20240106-py3-none-any.whl", hash = "sha256:d408f9305761905b157ea3cb80f53d4026bce7d4cc47312939118715467d0278"},
-]
name = "types-docutils"
+version = "0.20.0.20240201"
+description = "Typing stubs for docutils"
optional = false
python-versions = ">=3.8"
-version = "0.20.0.20240106"
-
-[[package]]
-description = "Typing stubs for protobuf"
files = [
- {file = "types-protobuf-4.24.0.20240106.tar.gz", hash = "sha256:024f034f3b5e2bb2bbff55ebc4d591ed0d2280d90faceedcb148b9e714a3f3ee"},
- {file = "types_protobuf-4.24.0.20240106-py3-none-any.whl", hash = "sha256:0612ef3156bd80567460a15ac7c109b313f6022f1fee04b4d922ab2789baab79"},
+ {file = "types-docutils-0.20.0.20240201.tar.gz", hash = "sha256:ba4bfd4ff6dd19640ba7ab5d93900393a65897880f3650997964a943f4e79a6b"},
+ {file = "types_docutils-0.20.0.20240201-py3-none-any.whl", hash = "sha256:79d3bcef235f7c81a63f4f3dcf1d0b138985079bb32d02f5a7d266e1f9f361ba"},
]
+
+[[package]]
name = "types-protobuf"
+version = "4.24.0.20240129"
+description = "Typing stubs for protobuf"
optional = false
python-versions = ">=3.8"
-version = "4.24.0.20240106"
-
-[[package]]
-description = "Typing stubs for pyOpenSSL"
files = [
- {file = "types-pyOpenSSL-23.3.0.20240106.tar.gz", hash = "sha256:3d6f3462bec0c260caadf93fbb377225c126661b779c7d9ab99b6dad5ca10db9"},
- {file = "types_pyOpenSSL-23.3.0.20240106-py3-none-any.whl", hash = "sha256:47a7eedbd18b7bcad17efebf1c53416148f5a173918a6d75027e75e32fe039ae"},
+ {file = "types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"},
+ {file = "types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"},
]
+
+[[package]]
name = "types-pyopenssl"
+version = "24.0.0.20240130"
+description = "Typing stubs for pyOpenSSL"
optional = false
python-versions = ">=3.8"
-version = "23.3.0.20240106"
+files = [
+ {file = "types-pyOpenSSL-24.0.0.20240130.tar.gz", hash = "sha256:c812e5c1c35249f75ef5935708b2a997d62abf9745be222e5f94b9595472ab25"},
+ {file = "types_pyOpenSSL-24.0.0.20240130-py3-none-any.whl", hash = "sha256:24a255458b5b8a7fca8139cf56f2a8ad5a4f1a5f711b73a5bb9cb50dc688fab5"},
+]
[package.dependencies]
cryptography = ">=35.0.0"
[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
{file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
]
-name = "types-python-dateutil"
-optional = false
-python-versions = ">=3.8"
-version = "2.8.19.20240106"
[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
files = [
{file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
{file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
]
-name = "types-pyyaml"
-optional = false
-python-versions = "*"
-version = "6.0.12.12"
[[package]]
+name = "types-redis"
+version = "4.5.5.0"
description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
files = [
{file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
{file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
]
-name = "types-redis"
-optional = false
-python-versions = "*"
-version = "4.5.5.0"
[package.dependencies]
cryptography = ">=35.0.0"
types-pyOpenSSL = "*"
[[package]]
+name = "types-requests"
+version = "2.28.11.8"
description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
files = [
{file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
{file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
]
-name = "types-requests"
-optional = false
-python-versions = "*"
-version = "2.28.11.8"
[package.dependencies]
types-urllib3 = "<1.27"
[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
files = [
{file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
{file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
]
-name = "types-setuptools"
-optional = false
-python-versions = "*"
-version = "67.1.0.0"
[package.dependencies]
types-docutils = "*"
[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
files = [
{file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
{file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
]
-name = "types-urllib3"
-optional = false
-python-versions = "*"
-version = "1.26.25.14"
[[package]]
+name = "typing-extensions"
+version = "4.9.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
{file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
]
-name = "typing-extensions"
-optional = false
-python-versions = ">=3.8"
-version = "4.9.0"
[[package]]
+name = "typing-inspect"
+version = "0.9.0"
description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
files = [
{file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
{file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
]
-name = "typing-inspect"
-optional = false
-python-versions = "*"
-version = "0.9.0"
[package.dependencies]
mypy-extensions = ">=0.3.0"
typing-extensions = ">=3.7.4"
[[package]]
-description = "Provider of IANA time zone data"
-files = [
- {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"},
- {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"},
-]
name = "tzdata"
+version = "2024.1"
+description = "Provider of IANA time zone data"
optional = false
python-versions = ">=2"
-version = "2023.4"
+files = [
+ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
+ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+]
[[package]]
+name = "umap-learn"
+version = "0.5.5"
description = "Uniform Manifold Approximation and Projection"
+optional = false
+python-versions = "*"
files = [
{file = "umap-learn-0.5.5.tar.gz", hash = "sha256:c54d607364413eade968b73ba07c8b3ea14412817f53cd07b6f720ac957293c4"},
]
-name = "umap-learn"
-optional = false
-python-versions = "*"
-version = "0.5.5"
[package.dependencies]
numba = ">=0.51.2"
@@ -4672,64 +5010,65 @@ plot = ["bokeh", "colorcet", "datashader", "holoviews", "matplotlib", "pandas",
tbb = ["tbb (>=2019.0)"]
[[package]]
+name = "uri-template"
+version = "1.3.0"
description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
{file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
]
-name = "uri-template"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.0"
[package.extras]
dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
[[package]]
-description = "HTTP library with thread-safe connection pooling, file post, and more."
-files = [
- {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"},
- {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"},
-]
name = "urllib3"
+version = "2.2.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
-version = "2.1.0"
+files = [
+ {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
+ {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+]
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+h2 = ["h2 (>=4,<5)"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
[[package]]
-description = "The lightning-fast ASGI server."
-files = [
- {file = "uvicorn-0.26.0-py3-none-any.whl", hash = "sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d"},
- {file = "uvicorn-0.26.0.tar.gz", hash = "sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602"},
-]
name = "uvicorn"
+version = "0.27.1"
+description = "The lightning-fast ASGI server."
optional = false
python-versions = ">=3.8"
-version = "0.26.0"
+files = [
+ {file = "uvicorn-0.27.1-py3-none-any.whl", hash = "sha256:5c89da2f3895767472a35556e539fd59f7edbe9b1e9c0e1c99eebeadc61838e4"},
+ {file = "uvicorn-0.27.1.tar.gz", hash = "sha256:3d9a267296243532db80c83a959a3400502165ade2c1338dea4e67915fd4745a"},
+]
[package.dependencies]
click = ">=7.0"
h11 = ">=0.8"
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0"}
+typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
[package.extras]
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
[[package]]
+name = "virtualenv"
+version = "20.25.0"
description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
{file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
]
-name = "virtualenv"
-optional = false
-python-versions = ">=3.7"
-version = "20.25.0"
[package.dependencies]
distlib = ">=0.3.7,<1"
@@ -4741,52 +5080,52 @@ docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-
test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
[[package]]
+name = "wcwidth"
+version = "0.2.13"
description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
files = [
{file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
{file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
]
-name = "wcwidth"
-optional = false
-python-versions = "*"
-version = "0.2.13"
[[package]]
+name = "webcolors"
+version = "1.13"
description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
{file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
]
-name = "webcolors"
-optional = false
-python-versions = ">=3.7"
-version = "1.13"
[package.extras]
docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
tests = ["pytest", "pytest-cov"]
[[package]]
+name = "webencodings"
+version = "0.5.1"
description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
files = [
{file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
{file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
]
-name = "webencodings"
-optional = false
-python-versions = "*"
-version = "0.5.1"
[[package]]
+name = "websocket-client"
+version = "1.7.0"
description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
{file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
]
-name = "websocket-client"
-optional = false
-python-versions = ">=3.8"
-version = "1.7.0"
[package.extras]
docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
@@ -4794,32 +5133,36 @@ optional = ["python-socks", "wsaccel"]
test = ["websockets"]
[[package]]
+name = "wheel"
+version = "0.42.0"
description = "A built-package format for Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "wheel-0.42.0-py3-none-any.whl", hash = "sha256:177f9c9b0d45c47873b619f5b650346d632cdc35fb5e4d25058e09c9e581433d"},
{file = "wheel-0.42.0.tar.gz", hash = "sha256:c45be39f7882c9d34243236f2d63cbd58039e360f85d0913425fbd7ceea617a8"},
]
-name = "wheel"
-optional = false
-python-versions = ">=3.7"
-version = "0.42.0"
[package.extras]
test = ["pytest (>=6.0.0)", "setuptools (>=65)"]
[[package]]
-description = "Jupyter interactive widgets for Jupyter Notebook"
-files = [
- {file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"},
- {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"},
-]
name = "widgetsnbextension"
+version = "4.0.10"
+description = "Jupyter interactive widgets for Jupyter Notebook"
optional = false
python-versions = ">=3.7"
-version = "4.0.9"
+files = [
+ {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"},
+ {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"},
+]
[[package]]
+name = "wrapt"
+version = "1.16.0"
description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
{file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
@@ -4892,13 +5235,13 @@ files = [
{file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
{file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
]
-name = "wrapt"
-optional = false
-python-versions = ">=3.6"
-version = "1.16.0"
[[package]]
+name = "yarl"
+version = "1.9.4"
description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
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"},
@@ -4991,26 +5334,27 @@ files = [
{file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"},
{file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"},
]
-name = "yarl"
-optional = false
-python-versions = ">=3.7"
-version = "1.9.4"
[package.dependencies]
idna = ">=2.0"
multidict = ">=4.0"
[[package]]
+name = "zipp"
+version = "3.17.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
{file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
]
-name = "zipp"
-optional = false
-python-versions = ">=3.8"
-version = "3.17.0"
[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "e78f1dd735af2151cfb0ffc09257cfd6aa3af47dc14691c6c61c0cf1c910267e"
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml
index 1de9f3cd3b8b4..1210ae92cda10 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml
@@ -20,16 +20,20 @@ ignore_missing_imports = true
python_version = "3.8"
[tool.poetry]
-authors = ["Your Name "]
+authors = [
+ "Arize AI ",
+ "OpenInference Authors ",
+]
description = "llama-index callbacks arize-phoenix integration"
license = "MIT"
name = "llama-index-callbacks-arize-phoenix"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
-arize-phoenix = "^2.5.0"
+arize-phoenix = ">=3.0.3"
+openinference-instrumentation-llama-index = ">=1.0.0"
llama-index-core = "^0.10.1"
[tool.poetry.group.dev.dependencies]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/llama_index/callbacks/openinference/__pycache__/__init__.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-openinference/llama_index/callbacks/openinference/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index fc29fa6bc1878..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/llama_index/callbacks/openinference/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/llama_index/callbacks/openinference/__pycache__/base.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-openinference/llama_index/callbacks/openinference/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 26e2ff6354989..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/llama_index/callbacks/openinference/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/tests/__pycache__/__init__.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-openinference/tests/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 0a39a97c68c52..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/tests/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/tests/__pycache__/test_openinference_callback.cpython-310-pytest-7.2.1.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-openinference/tests/__pycache__/test_openinference_callback.cpython-310-pytest-7.2.1.pyc
deleted file mode 100644
index eb3b30a23f370..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/tests/__pycache__/test_openinference_callback.cpython-310-pytest-7.2.1.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/llama_index/callbacks/promptlayer/__pycache__/__init__.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/llama_index/callbacks/promptlayer/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index ed25a88d6ac41..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/llama_index/callbacks/promptlayer/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/llama_index/callbacks/promptlayer/__pycache__/base.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/llama_index/callbacks/promptlayer/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 6f3d849fecb35..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/llama_index/callbacks/promptlayer/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/tests/__pycache__/__init__.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/tests/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 40851e1f4d3ba..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/tests/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/tests/__pycache__/test_promptlayer_callback.cpython-310-pytest-7.2.1.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/tests/__pycache__/test_promptlayer_callback.cpython-310-pytest-7.2.1.pyc
deleted file mode 100644
index 38e5ff25f91ac..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/tests/__pycache__/test_promptlayer_callback.cpython-310-pytest-7.2.1.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/BUILD b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/BUILD
new file mode 100644
index 0000000000000..0896ca890d8bf
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/BUILD
@@ -0,0 +1,3 @@
+poetry_requirements(
+ name="poetry",
+)
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/Makefile b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/README.md b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/README.md
new file mode 100644
index 0000000000000..f9c12773deaa9
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/README.md
@@ -0,0 +1,35 @@
+# LlamaIndex Callbacks Integration: UpTrain
+
+UpTrain is an open-source tool to evaluate and monitor the performance of language models. It provides a set of pre-built evaluations to assess the quality of responses generated by the model. Once you add UpTrainCallbackHandler to your existing LlamaIndex pipeline, it will take care of sending the generated responses to the UpTrain Managed Service for evaluations and display the results in the output.
+
+Three additional evaluations for Llamaindex have been introduced, complementing existing ones. These evaluations run automatically, with results displayed in the output. More details on UpTrain's evaluations can be found [here](https://github.com/uptrain-ai/uptrain?tab=readme-ov-file#pre-built-evaluations-we-offer-).
+
+Selected operators from the LlamaIndex pipeline are highlighted for demonstration:
+
+## 1. **RAG Query Engine Evaluations**:
+
+The RAG query engine plays a crucial role in retrieving context and generating responses. To ensure its performance and response quality, we conduct the following evaluations:
+
+- **Context Relevance**: Determines if the context extracted from the query is relevant to the response.
+- **Factual Accuracy**: Assesses if the LLM is hallcuinating or providing incorrect information.
+- **Response Completeness**: Checks if the response contains all the information requested by the query.
+
+## 2. **Sub-Question Query Generation Evaluation**:
+
+The SubQuestionQueryGeneration operator decomposes a question into sub-questions, generating responses for each using a RAG query engine. Given the complexity, we include the previous evaluations and add:
+
+- **Sub Query Completeness**: Assures that the sub-questions accurately and comprehensively cover the original query.
+
+## 3. **Re-Ranking Evaluations**:
+
+Re-ranking involves reordering nodes based on relevance to the query and choosing top n nodes. Different evaluations are performed based on the number of nodes returned after re-ranking.
+
+a. Same Number of Nodes
+
+- **Context Reranking**: Checks if the order of re-ranked nodes is more relevant to the query than the original order.
+
+b. Different Number of Nodes:
+
+- **Context Conciseness**: Examines whether the reduced number of nodes still provides all the required information.
+
+These evaluations collectively ensure the robustness and effectiveness of the RAG query engine, SubQuestionQueryGeneration operator, and the re-ranking process in the LlamaIndex pipeline.
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/BUILD b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/__init__.py b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/__init__.py
new file mode 100644
index 0000000000000..438dd5f6c5fb3
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/__init__.py
@@ -0,0 +1,3 @@
+from llama_index.callbacks.uptrain.base import UpTrainCallbackHandler
+
+__all__ = ["UpTrainCallbackHandler"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/base.py b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/base.py
new file mode 100644
index 0000000000000..69ab6de8e509b
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/llama_index/callbacks/uptrain/base.py
@@ -0,0 +1,320 @@
+from collections import defaultdict
+from typing import Any, DefaultDict, Dict, List, Literal, Optional, Set
+
+import nest_asyncio
+
+from llama_index.core.callbacks.base_handler import BaseCallbackHandler
+from llama_index.core.callbacks.schema import (
+ CBEvent,
+ CBEventType,
+)
+
+
+class UpTrainDataSchema:
+ """UpTrain data schema."""
+
+ def __init__(self, project_name_prefix: str) -> None:
+ """Initialize the UpTrain data schema."""
+ # For tracking project name and results
+ self.project_name_prefix: str = project_name_prefix
+ self.uptrain_results: DefaultDict[str, Any] = defaultdict(list)
+
+ # For tracking event types - reranking, sub_question
+ self.eval_types: Set[str] = set()
+
+ ## SYNTHESIZE
+ self.question: str = ""
+ self.context: str = ""
+ self.response: str = ""
+
+ ## RERANKING
+ self.old_context: List[str] = []
+ self.new_context: List[str] = []
+
+ ## SUB_QUESTION
+ # Map of sub question ID to question, context, and response
+ self.sub_question_map: DefaultDict[str, dict] = defaultdict(dict)
+ # Parent ID of sub questions
+ self.sub_question_parent_id: str = ""
+ # Parent question
+ self.parent_question: str = ""
+
+
+class UpTrainCallbackHandler(BaseCallbackHandler):
+ """
+ UpTrain callback handler.
+
+ This class is responsible for handling the UpTrain API and logging events to UpTrain.
+
+ """
+
+ def __init__(
+ self,
+ api_key: str,
+ key_type: Literal["uptrain", "openai"],
+ project_name_prefix: str = "llama",
+ ) -> None:
+ """Initialize the UpTrain callback handler."""
+ try:
+ from uptrain import APIClient, EvalLLM, Settings
+ except ImportError:
+ raise ImportError(
+ "UpTrainCallbackHandler requires the 'uptrain' package. "
+ "Please install it using 'pip install uptrain'."
+ )
+ nest_asyncio.apply()
+ super().__init__(
+ event_starts_to_ignore=[],
+ event_ends_to_ignore=[],
+ )
+ self.schema = UpTrainDataSchema(project_name_prefix=project_name_prefix)
+ self._event_pairs_by_id: Dict[str, List[CBEvent]] = defaultdict(list)
+ self._trace_map: Dict[str, List[str]] = defaultdict(list)
+
+ # Based on whether the user enters an UpTrain API key or an OpenAI API key, the client is initialized
+ # If both are entered, the UpTrain API key is used
+ if key_type == "uptrain":
+ settings = Settings(uptrain_access_token=api_key)
+ self.uptrain_client = APIClient(settings=settings)
+ elif key_type == "openai":
+ settings = Settings(openai_api_key=api_key)
+ self.uptrain_client = EvalLLM(settings=settings)
+ else:
+ raise ValueError("Invalid key type: Must be 'uptrain' or 'openai'")
+
+ def uptrain_evaluate(
+ self,
+ project_name: str,
+ data: List[Dict[str, str]],
+ checks: List[str],
+ ) -> None:
+ """Run an evaluation on the UpTrain server using UpTrain client."""
+ if self.uptrain_client.__class__.__name__ == "APIClient":
+ uptrain_result = self.uptrain_client.log_and_evaluate(
+ project_name=project_name,
+ data=data,
+ checks=checks,
+ )
+ else:
+ uptrain_result = self.uptrain_client.evaluate(
+ data=data,
+ checks=checks,
+ )
+ self.schema.uptrain_results[project_name].append(uptrain_result)
+
+ score_name_map = {
+ "score_context_relevance": "Context Relevance Score",
+ "score_factual_accuracy": "Factual Accuracy Score",
+ "score_response_completeness": "Response Completeness Score",
+ "score_sub_query_completeness": "Sub Query Completeness Score",
+ "score_context_reranking": "Context Reranking Score",
+ "score_context_conciseness": "Context Conciseness Score",
+ }
+
+ # Print the results
+ for row in uptrain_result:
+ columns = list(row.keys())
+ for column in columns:
+ if column == "question":
+ print(f"\nQuestion: {row[column]}")
+ elif column == "response":
+ print(f"Response: {row[column]}")
+ elif column.startswith("score"):
+ if column in score_name_map:
+ print(f"{score_name_map[column]}: {row[column]}")
+ else:
+ print(f"{column}: {row[column]}")
+ print()
+
+ def on_event_start(
+ self,
+ event_type: CBEventType,
+ payload: Any = None,
+ event_id: str = "",
+ parent_id: str = "",
+ **kwargs: Any,
+ ) -> str:
+ """Run when an event starts and return id of event."""
+ event = CBEvent(event_type, payload=payload, id_=event_id)
+ self._event_pairs_by_id[event.id_].append(event)
+
+ if event_type is CBEventType.QUERY:
+ self.schema.question = payload["query_str"]
+ if event_type is CBEventType.TEMPLATING and "template_vars" in payload:
+ template_vars = payload["template_vars"]
+ self.schema.context = template_vars.get("context_str", "")
+ elif event_type is CBEventType.RERANKING and "nodes" in payload:
+ self.schema.eval_types.add("reranking")
+ # Store old context data
+ self.schema.old_context = [node.text for node in payload["nodes"]]
+ elif event_type is CBEventType.SUB_QUESTION:
+ # For the first sub question, store parent question and parent id
+ if "sub_question" not in self.schema.eval_types:
+ self.schema.parent_question = self.schema.question
+ self.schema.eval_types.add("sub_question")
+ # Store sub question data - question and parent id
+ self.schema.sub_question_parent_id = parent_id
+ return event_id
+
+ def on_event_end(
+ self,
+ event_type: CBEventType,
+ payload: Any = None,
+ event_id: str = "",
+ **kwargs: Any,
+ ) -> None:
+ """Run when an event ends."""
+ try:
+ from uptrain import Evals
+ except ImportError:
+ raise ImportError(
+ "UpTrainCallbackHandler requires the 'uptrain' package. "
+ "Please install it using 'pip install uptrain'."
+ )
+ event = CBEvent(event_type, payload=payload, id_=event_id)
+ self._event_pairs_by_id[event.id_].append(event)
+ self._trace_map = defaultdict(list)
+ if event_id == self.schema.sub_question_parent_id:
+ # Perform individual evaluations for sub questions (but send all sub questions at once)
+ self.uptrain_evaluate(
+ project_name=f"{self.schema.project_name_prefix}_sub_question_answering",
+ data=list(self.schema.sub_question_map.values()),
+ checks=[
+ Evals.CONTEXT_RELEVANCE,
+ Evals.FACTUAL_ACCURACY,
+ Evals.RESPONSE_COMPLETENESS,
+ ],
+ )
+ # Perform evaluation for question and all sub questions (as a whole)
+ sub_questions = [
+ sub_question["question"]
+ for sub_question in self.schema.sub_question_map.values()
+ ]
+ sub_questions_formatted = "\n".join(
+ [
+ f"{index}. {string}"
+ for index, string in enumerate(sub_questions, start=1)
+ ]
+ )
+ self.uptrain_evaluate(
+ project_name=f"{self.schema.project_name_prefix}_sub_query_completeness",
+ data=[
+ {
+ "question": self.schema.parent_question,
+ "sub_questions": sub_questions_formatted,
+ }
+ ],
+ checks=[Evals.SUB_QUERY_COMPLETENESS],
+ )
+ # Should not be called for sub questions
+ if (
+ event_type is CBEventType.SYNTHESIZE
+ and "sub_question" not in self.schema.eval_types
+ ):
+ self.schema.response = payload["response"].response
+ # Perform evaluation for synthesization
+ self.uptrain_evaluate(
+ project_name=f"{self.schema.project_name_prefix}_question_answering",
+ data=[
+ {
+ "question": self.schema.question,
+ "context": self.schema.context,
+ "response": self.schema.response,
+ }
+ ],
+ checks=[
+ Evals.CONTEXT_RELEVANCE,
+ Evals.FACTUAL_ACCURACY,
+ Evals.RESPONSE_COMPLETENESS,
+ ],
+ )
+
+ elif event_type is CBEventType.RERANKING:
+ # Store new context data
+ self.schema.new_context = [node.text for node in payload["nodes"]]
+ if len(self.schema.old_context) == len(self.schema.new_context):
+ context = "\n".join(
+ [
+ f"{index}. {string}"
+ for index, string in enumerate(self.schema.old_context, start=1)
+ ]
+ )
+ reranked_context = "\n".join(
+ [
+ f"{index}. {string}"
+ for index, string in enumerate(self.schema.new_context, start=1)
+ ]
+ )
+ # Perform evaluation for reranking
+ self.uptrain_evaluate(
+ project_name=f"{self.schema.project_name_prefix}_context_reranking",
+ data=[
+ {
+ "question": self.schema.question,
+ "context": context,
+ "reranked_context": reranked_context,
+ }
+ ],
+ checks=[
+ Evals.CONTEXT_RERANKING,
+ ],
+ )
+ else:
+ context = "\n".join(self.schema.old_context)
+ concise_context = "\n".join(self.schema.new_context)
+ # Perform evaluation for resizing
+ self.uptrain_evaluate(
+ project_name=f"{self.schema.project_name_prefix}_context_conciseness",
+ data=[
+ {
+ "question": self.schema.question,
+ "context": context,
+ "concise_context": concise_context,
+ }
+ ],
+ checks=[
+ Evals.CONTEXT_CONCISENESS,
+ ],
+ )
+ elif event_type is CBEventType.SUB_QUESTION:
+ # Store sub question data
+ self.schema.sub_question_map[event_id]["question"] = payload[
+ "sub_question"
+ ].sub_q.sub_question
+ self.schema.sub_question_map[event_id]["context"] = (
+ payload["sub_question"].sources[0].node.text
+ )
+ self.schema.sub_question_map[event_id]["response"] = payload[
+ "sub_question"
+ ].answer
+
+ def start_trace(self, trace_id: Optional[str] = None) -> None:
+ self._trace_map = defaultdict(list)
+ return super().start_trace(trace_id)
+
+ def end_trace(
+ self,
+ trace_id: Optional[str] = None,
+ trace_map: Optional[Dict[str, List[str]]] = None,
+ ) -> None:
+ self._trace_map = trace_map or defaultdict(list)
+ return super().end_trace(trace_id, trace_map)
+
+ def build_trace_map(
+ self,
+ cur_event_id: str,
+ trace_map: Any,
+ ) -> Dict[str, Any]:
+ event_pair = self._event_pairs_by_id[cur_event_id]
+ if event_pair:
+ event_data = {
+ "event_type": event_pair[0].event_type,
+ "event_id": event_pair[0].id_,
+ "children": {},
+ }
+ trace_map[cur_event_id] = event_data
+
+ child_event_ids = self._trace_map[cur_event_id]
+ for child_event_id in child_event_ids:
+ self.build_trace_map(child_event_id, event_data["children"])
+ return trace_map
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/poetry.lock b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/poetry.lock
new file mode 100644
index 0000000000000..64f1cf4b053cc
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/poetry.lock
@@ -0,0 +1,4595 @@
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+
+[[package]]
+name = "aiohttp"
+version = "3.9.3"
+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"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+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)"]
+
+[[package]]
+name = "appnope"
+version = "0.1.4"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
+
+[[package]]
+name = "astroid"
+version = "2.13.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
+ {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+wrapt = [
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "attrs"
+version = "23.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"},
+]
+
+[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]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.dependencies]
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "black"
+version = "23.9.1"
+description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+]
+
+[package.dependencies]
+click = ">=8.0.0"
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
+mypy-extensions = ">=0.4.3"
+packaging = ">=22.0"
+pathspec = ">=0.9.0"
+platformdirs = ">=2"
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "certifi"
+version = "2024.2.2"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+ {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+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"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "codespell"
+version = "2.2.6"
+description = "Codespell"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+ {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+]
+
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
+
+[package.extras]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
+hard-encoding-detection = ["chardet"]
+toml = ["tomli"]
+types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "comm"
+version = "0.2.1"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
+ {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "cryptography"
+version = "42.0.2"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"},
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"},
+ {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"},
+ {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"},
+ {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"},
+ {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"},
+ {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"},
+ {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"},
+]
+
+[package.dependencies]
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
+nox = ["nox"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "dataclasses-json"
+version = "0.6.4"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"},
+ {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "debugpy"
+version = "1.8.1"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
+ {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
+ {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
+ {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
+ {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
+ {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
+ {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
+ {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
+ {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
+ {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
+ {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
+ {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
+ {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
+ {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
+ {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
+ {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
+ {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
+ {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
+ {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
+ {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
+ {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
+ {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "deprecated"
+version = "1.2.14"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
+ {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
+]
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+
+[[package]]
+name = "dill"
+version = "0.3.8"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dirtyjson"
+version = "1.0.8"
+description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
+ {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
+]
+
+[[package]]
+name = "distlib"
+version = "0.3.8"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
+]
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2024.2.0"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"},
+ {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.2"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
+ {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
+]
+
+[package.dependencies]
+certifi = "*"
+h11 = ">=0.13,<0.15"
+
+[package.extras]
+asyncio = ["anyio (>=4.0,<5.0)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+trio = ["trio (>=0.22.0,<0.23.0)"]
+
+[[package]]
+name = "httpx"
+version = "0.26.0"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
+ {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
+]
+
+[package.dependencies]
+anyio = "*"
+certifi = "*"
+httpcore = "==1.*"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "identify"
+version = "2.5.34"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "identify-2.5.34-py2.py3-none-any.whl", hash = "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed"},
+ {file = "identify-2.5.34.tar.gz", hash = "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "importlib-metadata"
+version = "7.0.1"
+description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"},
+ {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"},
+]
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[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"]
+perf = ["ipython"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+
+[[package]]
+name = "importlib-resources"
+version = "6.1.1"
+description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
+ {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "ipykernel"
+version = "6.29.2"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"},
+ {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.10.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
+ {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
+backcall = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+pickleshare = "*"
+prompt-toolkit = ">=3.0.30,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.2"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"},
+ {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.10,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.10,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.7.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
+ {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
+ {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.5"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
+ {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.1.1"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.1.1-py3-none-any.whl", hash = "sha256:fa3e8c18b804eac04e51ceebd9dd3dd396e08106816f0d09cc426799d7087632"},
+ {file = "jupyterlab-4.1.1.tar.gz", hash = "sha256:8acc9f561729d8f32c14c294c397917cddfeeb13a5d46f811979b71b4911a9fd"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+httpx = ">=0.25.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.2.0)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.2.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.1)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post6)", "matplotlib (==3.8.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.0)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.10"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"},
+ {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"},
+]
+
+[[package]]
+name = "lazy-loader"
+version = "0.3"
+description = "lazy_loader"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "lazy_loader-0.3-py3-none-any.whl", hash = "sha256:1e9e76ee8631e264c62ce10006718e80b2cfc74340d17d1031e0f84af7478554"},
+ {file = "lazy_loader-0.3.tar.gz", hash = "sha256:3b68898e34f5b2a29daaaac172c6555512d0f32074f147e2254e4a6d9d838f37"},
+]
+
+[package.extras]
+lint = ["pre-commit (>=3.3)"]
+test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"]
+
+[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
+description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+]
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.0"
+description = "Interface between LLMs and your data"
+optional = false
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.0-py3-none-any.whl", hash = "sha256:f532189aad6693abbf5ea82f98ce325ad6b41e597bbc9b9814f22ef13d5f89b9"},
+ {file = "llama_index_core-0.10.0.tar.gz", hash = "sha256:f45e2decf5a1636a1b49799b0e3fc9834d5b3d028fe0a7e2eb3860fda11a9e59"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
+
+[[package]]
+name = "loguru"
+version = "0.7.2"
+description = "Python logging made (stupidly) simple"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb"},
+ {file = "loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac"},
+]
+
+[package.dependencies]
+colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""}
+win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""}
+
+[package.extras]
+dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.4.1)", "mypy (==v1.5.1)", "pre-commit (==3.4.0)", "pytest (==6.1.2)", "pytest (==7.4.0)", "pytest-cov (==2.12.1)", "pytest-cov (==4.1.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.0.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.3.0)", "tox (==3.27.1)", "tox (==4.11.0)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.20.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
+ {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"]
+docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"]
+lint = ["pre-commit (>=2.4,<4.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "multidict"
+version = "6.0.5"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[[package]]
+name = "mypy"
+version = "0.991"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
+ {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"},
+ {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"},
+ {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"},
+ {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"},
+ {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"},
+ {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"},
+ {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"},
+ {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"},
+ {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"},
+ {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"},
+ {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"},
+ {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"},
+ {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"},
+ {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"},
+ {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"},
+ {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"},
+ {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"},
+ {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"},
+ {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"},
+ {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"},
+ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
+ {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.4.3"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = ">=3.10"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+python2 = ["typed-ast (>=1.4.0,<2)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.16.0"
+description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"},
+ {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "nltk"
+version = "3.8.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
+ {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "nodeenv"
+version = "1.8.0"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+files = [
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+]
+
+[package.dependencies]
+setuptools = "*"
+
+[[package]]
+name = "notebook"
+version = "7.1.0"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.1.0-py3-none-any.whl", hash = "sha256:a8fa4ccb5e5fe220f29d9900337efd7752bc6f2efe004d6f320db01f7743adc9"},
+ {file = "notebook-7.1.0.tar.gz", hash = "sha256:99caf01ff166b1cc86355c9b37c1ba9bf566c1d7fc4ab57bb6f8f24e36c4260e"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.1.1,<4.2"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.24.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
+ {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
+ {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
+ {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
+ {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
+ {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
+ {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
+ {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
+ {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
+ {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
+ {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
+]
+
+[[package]]
+name = "openai"
+version = "1.12.0"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.12.0-py3-none-any.whl", hash = "sha256:a54002c814e05222e413664f651b5916714e4700d041d5cf5724d3ae1a3e3481"},
+ {file = "openai-1.12.0.tar.gz", hash = "sha256:99c5d257d09ea6533d689d1cc77caa0ac679fa21efef8893d8b0832a86877f1b"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.7,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.0.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.1"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
+aws = ["s3fs (>=2021.08.0)"]
+clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
+compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
+computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2021.07.0)"]
+gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"]
+hdf5 = ["tables (>=3.6.1)"]
+html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"]
+mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
+spss = ["pyreadstat (>=1.1.2)"]
+sql-other = ["SQLAlchemy (>=1.4.16)"]
+test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.6.3)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pathspec"
+version = "0.12.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
+]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+
+[[package]]
+name = "platformdirs"
+version = "4.2.0"
+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.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+ {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+]
+
+[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)"]
+
+[[package]]
+name = "plotly"
+version = "5.18.0"
+description = "An open-source, interactive data visualization library for Python"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "plotly-5.18.0-py3-none-any.whl", hash = "sha256:23aa8ea2f4fb364a20d34ad38235524bd9d691bf5299e800bca608c31e8db8de"},
+ {file = "plotly-5.18.0.tar.gz", hash = "sha256:360a31e6fbb49d12b007036eb6929521343d6bee2236f8459915821baefa2cbb"},
+]
+
+[package.dependencies]
+packaging = "*"
+tenacity = ">=6.2.0"
+
+[[package]]
+name = "pluggy"
+version = "1.4.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+ {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "polars"
+version = "0.20.8"
+description = "Blazingly fast DataFrame library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "polars-0.20.8-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:73f1d369aeddda5f11411b6497f697f2471bbe6ae55fd936677a10a40995c83c"},
+ {file = "polars-0.20.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:dc3a446fe606095b3ad6df3cf3dddd8ad54be7745f255fedb29f8bdf71a60760"},
+ {file = "polars-0.20.8-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3d58ebc7a24d26930535d06b8772e125038a87a6abab4c5dfd87ea19bba61f3"},
+ {file = "polars-0.20.8-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:5b733816ac61156c12bd0edd6d7c1a5e63859830ce0e425b6450b335024f0cd5"},
+ {file = "polars-0.20.8-cp38-abi3-win_amd64.whl", hash = "sha256:2300f48ff7120eefe2cac2113990d0b0b5beedad93266b9fedfc8df133e7b13b"},
+ {file = "polars-0.20.8.tar.gz", hash = "sha256:a34f6ce1c5469872b291aaf90467e632e81f92dec6c2e18136bc40cd92877411"},
+]
+
+[package.extras]
+adbc = ["adbc_driver_sqlite"]
+all = ["polars[adbc,cloudpickle,connectorx,deltalake,fsspec,gevent,numpy,pandas,plot,pyarrow,pydantic,pyiceberg,sqlalchemy,timezone,xlsx2csv,xlsxwriter]"]
+cloudpickle = ["cloudpickle"]
+connectorx = ["connectorx (>=0.3.2)"]
+deltalake = ["deltalake (>=0.14.0)"]
+fsspec = ["fsspec"]
+gevent = ["gevent"]
+matplotlib = ["matplotlib"]
+numpy = ["numpy (>=1.16.0)"]
+openpyxl = ["openpyxl (>=3.0.0)"]
+pandas = ["pandas", "pyarrow (>=7.0.0)"]
+plot = ["hvplot (>=0.9.1)"]
+pyarrow = ["pyarrow (>=7.0.0)"]
+pydantic = ["pydantic"]
+pyiceberg = ["pyiceberg (>=0.5.0)"]
+pyxlsb = ["pyxlsb (>=1.0)"]
+sqlalchemy = ["pandas", "sqlalchemy"]
+timezone = ["backports.zoneinfo", "tzdata"]
+xlsx2csv = ["xlsx2csv (>=0.8.0)"]
+xlsxwriter = ["xlsxwriter"]
+
+[[package]]
+name = "pre-commit"
+version = "3.2.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
+ {file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
+ {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "psutil"
+version = "5.9.8"
+description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"},
+ {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"},
+ {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"},
+ {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"},
+ {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"},
+ {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"},
+ {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"},
+ {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"},
+ {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
+ {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pydantic"
+version = "1.10.9"
+description = "Data validation and settings management using python type hints"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"},
+ {file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"},
+ {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"},
+ {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d"},
+ {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"},
+ {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"},
+ {file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"},
+ {file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"},
+ {file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"},
+ {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"},
+ {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c"},
+ {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"},
+ {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"},
+ {file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"},
+ {file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"},
+ {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"},
+ {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a"},
+ {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"},
+ {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"},
+ {file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"},
+ {file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"},
+ {file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"},
+ {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"},
+ {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3"},
+ {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"},
+ {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"},
+ {file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"},
+ {file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"},
+ {file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"},
+ {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"},
+ {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc"},
+ {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"},
+ {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"},
+ {file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"},
+ {file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"},
+ {file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.2.0"
+
+[package.extras]
+dotenv = ["python-dotenv (>=0.10.4)"]
+email = ["email-validator (>=1.0.3)"]
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pylint"
+version = "2.15.10"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
+ {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+]
+
+[package.dependencies]
+astroid = ">=2.12.13,<=2.14.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = [
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+]
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+tomlkit = ">=0.10.1"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pytest"
+version = "7.2.1"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
+ {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
+]
+
+[package.dependencies]
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-mock"
+version = "3.11.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
+ {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+]
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[package.extras]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2024.1"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
+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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {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"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "referencing"
+version = "0.33.0"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"},
+ {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "regex"
+version = "2023.12.25"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
+ {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
+ {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
+ {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
+ {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
+ {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
+ {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
+ {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
+ {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
+ {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
+ {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
+ {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
+ {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
+ {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
+ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
+]
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.18.0"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
+ {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
+ {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
+ {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
+ {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
+ {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
+ {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
+ {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
+ {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
+ {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
+ {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
+ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
+]
+
+[[package]]
+name = "ruff"
+version = "0.0.292"
+description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
+ {file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_i686.whl", hash = "sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016"},
+ {file = "ruff-0.0.292-py3-none-win32.whl", hash = "sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003"},
+ {file = "ruff-0.0.292-py3-none-win_amd64.whl", hash = "sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c"},
+ {file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
+ {file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
+]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "setuptools"
+version = "69.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
+ {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+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"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.27"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"},
+ {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"},
+ {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "tenacity"
+version = "8.2.3"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
+ {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx", "tornado (>=4.5)"]
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "tiktoken"
+version = "0.6.0"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"},
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"},
+ {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"},
+ {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"},
+ {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"},
+ {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"},
+ {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"},
+]
+
+[package.dependencies]
+regex = ">=2022.1.18"
+requests = ">=2.26.0"
+
+[package.extras]
+blobfile = ["blobfile (>=2)"]
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
+description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
+ {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
+]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.12.3"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
+ {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
+]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.2"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
+ {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.1"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
+ {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.4"
+description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
+files = [
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9d33a55598dd18a4d8b869a3417de82a4812c3a7dc7e61cb025ece3e9c3e4e96"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cee6955c2c97fc5927a41c7a8b06647c4b4d9b99b8a1581bf1183435c8cec3e"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5022bea67e479ad212be7c05b983a72e297a013efb4e8ea5b5b4d7da79a9fdef"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:640f60a5b966f0990338f1bf559455c3dcb822bc4329d82b3d42f32a48374dfe"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0e83f641fe6f27d91bd4d259fff5d35de1567d3f581b9efe9bbd5be50fe4ddc7"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win32.whl", hash = "sha256:ce6a85027c66fa3f09d482cc6d41927ea40955f7f33b86aedd26dd932709a2c9"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win_amd64.whl", hash = "sha256:fe10779347a6c067af29cb37fd4b75fa96c5cb68f587cc9530b70fe3f2a51a55"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28d5f84e34e276887e3a240b60906ca7e2b51e975f3145c3149ceed977a69508"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c913b65cbe10996116988ac436748f24883b5097e58274223e89bb2c5d1bb1a"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecaed46241e071752195a628bb97d2b740f2fde9e34f8a74456a4ea8bb26df88"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b641e88a97eab002a1736d93ef5a4beac90ea4fd6e25affd1831319b99f456c9"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:327c40f439c6155e4eee54c4657e4701a04f5f4816d9defdcb836bf65bf83d21"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win32.whl", hash = "sha256:1b7c1d95f006b3de42fbf4045bd00c273d113e372fcb6a5378e74ed120c12032"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6140d037239a41046f5d34fba5e0374ee697adb4b48b90579c618b5402781c11"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7eec3b55135fe851a38fa248c9fd75fc3d58ceb6e1865b795e416e4d598c2a1"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc76225529ee14a53e84413480ce81ec3c44eaa0455c140e961c90ac3118ead"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf0396e47efffc0b528959a8f2e2346a98297579f867e9e1834c2aad4be829c"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a15fbabd3bc8e29c48289c156d743e69f5ec72bb125cf44f7adbdaa1937c3da6"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
+ {file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
+]
+
+[[package]]
+name = "tree-sitter-languages"
+version = "1.9.1"
+description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
+files = [
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5dee458cf1bd1e725470949124e24db842dc789039ea7ff5ba46b338e5f0dc60"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81921135fa15469586b1528088f78553e60a900d3045f4f37021ad3836219216"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edd60780d14c727179acb7bb48fbe4f79da9b830abdeb0d12c06a9f2c37928c7"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a28da3f60a6bc23195d6850836e477c149d4aaf58cdb0eb662741dca4f6401e2"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9778c00a58ee77006abc5af905b591551b158ce106c8cc6c3b4148d624ccabf"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6f68cfec0d74d6344db9c83414f401dcfc753916e71fac7d37f3a5e35b79e5ec"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:02142d81b2cd759b5fe246d403e4fba80b70268d108bd2b108301e64a84437a6"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ca4e0041c2ead2a8b354b9c229faee152bfd4617480c85cf2b352acf459db3cc"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-win32.whl", hash = "sha256:506ff5c3646e7b3a533f9e925221d4fe63b88dad0b7ffc1fb96db4c271994606"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ac3899e05f2bf0a7c8da70ef5a077ab3dbd442f99eb7452aabbe67bc7b29ddf"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:823426c3768eea88b6a4fd70dc668b72de90cc9f44d041a579c76d024d7d0697"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51f64b11f30cef3c5c9741e06221a46948f7c82d53ea2468139028eaf4858cca"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e1c384bcd2695ebf873bc63eccfa0b9e1c3c944cd6a6ebdd1139a2528d2d6f"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fecf8553645fc1ad84921e97b03615d84aca22c35d020f629bb44cb6a28a302e"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1a499004189bf9f338f3412d4c1c05a643e86d4619a60ba4b3ae56bc4bf5db9"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:634ef22744b4af2ed9a43fea8309ec1171b062e37c609c3463364c790a08dae3"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9394eb34208abcfa9c26ece39778037a8d97da3ef59501185303fef0ab850290"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:221c367be0129da540fbb84170e18c5b8c56c09fd2f6143e116eebbef72c780e"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-win32.whl", hash = "sha256:15d03f54f913f47ac36277d8a521cd425415a25b020e0845d7b8843f5f5e1209"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:7c565c18cebc72417ebc8f0f4cd5cb91dda51874164045cc274f47c913b194aa"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cde380cdc37594e7fcbade6a4b396dbeab52a1cecfe884cd814e1a1541ca6b93"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9c4f2409e5460bdec5921ee445f748ea7c319469e347a13373e3c7086dbf0315"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a17bbe91a78a29a9c14ab8bb07ed3761bb2708b58815bafc02d0965b15cb99e5"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:369402e2b395de2655d769e515401fe7c7df247a83aa28a6362e808b8a017fae"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a382d1e463e6ae60bbbd0c1f3db48e83b3c1a3af98d652af11de4c0e6171fc"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc60fb35f377143b30f4319fbaac0503b12cfb49de34082a479c7f0cc28927f1"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e953fb43767e327bf5c1d0585ee39236eaff47683cbda2811cbe0227fd41ad7"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c5a6df25eae23a5e2d448218b130207476cb8a613ac40570d49008243b0915bb"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-win32.whl", hash = "sha256:2720f9a639f5d5c17692135f3f2d60506c240699d0c1becdb895546e553f2339"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:f19157c33ddc1e75ae7843b813e65575ed2040e1638643251bd603bb0f52046b"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:40880b5e774c3d5759b726273c36f83042d39c600c3aeefaf39248c3adec92d0"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad71366ee2458bda6df5a7476fc0e465a1e1579f53335ce901935efc5c67fdeb"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8000c6bf889e35e8b75407ea2d56153534b3f80c3b768378f4ca5a6fe286c0f"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7e20ead363d70b3f0f0b04cf6da30257d22a166700fa39e06c9f263b527688"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:444d2662912bc439c54c1b0ffe38354ae648f1f1ac8d1254b14fa768aa1a8587"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cceac9018359310fee46204b452860bfdcb3da00f4518d430790f909cbbf6b4c"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:332c182afbd9f7601e268426470e8c453740769a6227e7d1a9636d905cd7d707"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-win32.whl", hash = "sha256:25e993a41ad11fc433cb18ce0cc1d51eb7a285560c5cdddf781139312dac1881"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:57419c215092ba9ba1964e07620dd386fc88ebb075b981fbb80f68f58004d4b4"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06747cac4789c436affa7c6b3483f68cc234e6a75b508a0f8369c77eb1faa04b"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b40bc82005543309c9cd4059f362c9d0d51277c942c71a5fdbed118389e5543a"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44920c9654ae03e94baa45c6e8c4b36a5f7bdd0c93877c72931bd77e862adaf1"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82e44f63a5449a41c5de3e9350967dc1c9183d9375881af5efb970c58c3fcfd8"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df177fa87b655f6234e4dae540ba3917cf8e87c3646423b809415711e926765e"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:abdc8793328aa13fbd1cef3a0dff1c2e057a430fe2a64251628bbc97c4774eba"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b3f319f95f4464c35381755422f6dc0a518ad7d295d3cfe57bbaa564d225f3f"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-win32.whl", hash = "sha256:9f3a59bb4e8ec0a598566e02b7900eb8142236bda6c8b1069c4f3cdaf641950d"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:517bdfe34bf24a05a496d441bee836fa77a6864f256508b82457ac28a9ac36bc"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9383331026f736bcbdf6b67f9b45417fe8fbb47225fe2517a1e4f974c319d9a8"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bba45ff3715e20e6e9a9b402f1ec2f2fc5ce11ce7b223584d0b5be5a4f8c60bb"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03558927c6e731d81706e3a8b26276eaa4fadba17e2fd83a5e0bc2a32b261975"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f0231140e2d29fcf987216277483c93bc7ce4c2f88b8af77756d796e17a2957"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ead59b416f03da262df26e282cd40eb487f15384c90290f5105451e9a8ecfea"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fd27b7bdb95a2b35b730069d7dea60d0f6cc37e5ab2e900d2940a82d1db608bd"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d8b65a5fafd774a6c6dcacd9ac8b4c258c9f1efe2bfdca0a63818c83e591b949"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f32f7a7b8fd9952f82e2b881c1c8701a467b27db209590e0effb2fb4d71fe3d3"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-win32.whl", hash = "sha256:b52321e2a3a7cd1660cd7dadea16d7c7b9c981e177e0f77f9735e04cd89de015"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8752bec9372937094a2557d9bfff357f30f5aa398e41e76e656baf53b4939d3"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:119f32cfc7c561e252e8958259ef997f2adfd4587ae43e82819b56f2810b8b42"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:582b04e11c67706b0a5ea64fd53ce4910fe11ad29d74ec7680c4014a02d09d4a"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a816f76c52f6c9fb3316c5d44195f8de48e09f2214b7fdb5f9232395033c789c"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a099b2f69cf22ab77de811b148de7d2d8ba8c51176a64bc56304cf42a627dd4"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:447b6c62c59255c89341ec0968e467e8c59c60fc5c2c3dc1f7dfe159a820dd3c"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41f4fee9b7de9646ef9711b6dbcdd5a4e7079e3d175089c8ef3f2c68b5adb5f4"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ee3b70594b79ff1155d5d9fea64e3af240d9327a52526d446e6bd792ac5b43cf"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:087b82cc3943fc5ffac30dc1b4192936a27c3c06fbd8718935a269e30dedc83b"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-win32.whl", hash = "sha256:155483058dc11de302f47922d31feec5e1bb9888e661aed7be0dad6f70bfe691"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:5335405a937f788a2608d1b25c654461dddddbc6a1341672c833d2c8943397a8"},
+]
+
+[package.dependencies]
+tree-sitter = "*"
+
+[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
+description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
+ {file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
+]
+
+[[package]]
+name = "types-docutils"
+version = "0.20.0.20240201"
+description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-docutils-0.20.0.20240201.tar.gz", hash = "sha256:ba4bfd4ff6dd19640ba7ab5d93900393a65897880f3650997964a943f4e79a6b"},
+ {file = "types_docutils-0.20.0.20240201-py3-none-any.whl", hash = "sha256:79d3bcef235f7c81a63f4f3dcf1d0b138985079bb32d02f5a7d266e1f9f361ba"},
+]
+
+[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240129"
+description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"},
+ {file = "types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"},
+]
+
+[[package]]
+name = "types-pyopenssl"
+version = "24.0.0.20240130"
+description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-pyOpenSSL-24.0.0.20240130.tar.gz", hash = "sha256:c812e5c1c35249f75ef5935708b2a997d62abf9745be222e5f94b9595472ab25"},
+ {file = "types_pyOpenSSL-24.0.0.20240130-py3-none-any.whl", hash = "sha256:24a255458b5b8a7fca8139cf56f2a8ad5a4f1a5f711b73a5bb9cb50dc688fab5"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
+description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
+ {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
+]
+
+[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
+description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+ {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+]
+
+[[package]]
+name = "types-redis"
+version = "4.5.5.0"
+description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
+ {file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+types-pyOpenSSL = "*"
+
+[[package]]
+name = "types-requests"
+version = "2.28.11.8"
+description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
+ {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
+]
+
+[package.dependencies]
+types-urllib3 = "<1.27"
+
+[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
+description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
+ {file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
+]
+
+[package.dependencies]
+types-docutils = "*"
+
+[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
+description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
+ {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "tzdata"
+version = "2024.1"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
+ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+]
+
+[[package]]
+name = "uptrain"
+version = "0.5.0"
+description = "UpTrain - tool to evaluate LLM applications on aspects like factual accuracy, response quality, retrieval quality, tonality, etc."
+optional = false
+python-versions = "*"
+files = [
+ {file = "uptrain-0.5.0-py3-none-any.whl", hash = "sha256:7a168c82136f5d3869204e4176b959676075c085dd109582a1fec67e030f58ad"},
+ {file = "uptrain-0.5.0.tar.gz", hash = "sha256:81cd37b938d3805cc3dc6031bce4be94c79e57684247b21f341508aad9bc96e6"},
+]
+
+[package.dependencies]
+httpx = ">=0.24.1"
+lazy-loader = "*"
+loguru = "*"
+networkx = "*"
+numpy = ">=1.23.0"
+pandas = "*"
+plotly = ">=5.0.0"
+polars = ">=0.18"
+pydantic = "<1.10.10"
+
+[package.extras]
+test = ["pytest (>=7.0)"]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.2.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
+ {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+h2 = ["h2 (>=4,<5)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "virtualenv"
+version = "20.25.0"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
+ {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.13"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
+ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+]
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.10"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"},
+ {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"},
+]
+
+[[package]]
+name = "win32-setctime"
+version = "1.1.0"
+description = "A small Python utility to set file creation time on Windows"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"},
+ {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"},
+]
+
+[package.extras]
+dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"]
+
+[[package]]
+name = "wrapt"
+version = "1.16.0"
+description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.4"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[[package]]
+name = "zipp"
+version = "3.17.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
+]
+
+[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "1abf8c8fe8824de42816fc0bab833f23e98f29fb2b8a550e067f6d85cb1fcbaa"
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml
new file mode 100644
index 0000000000000..5cd3d191cc538
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml
@@ -0,0 +1,55 @@
+[build-system]
+build-backend = "poetry.core.masonry.api"
+requires = ["poetry-core"]
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.mypy]
+disallow_untyped_defs = true
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+authors = ["Your Name "]
+description = "llama-index callbacks uptrain integration"
+license = "MIT"
+name = "llama-index-callbacks-uptrain"
+readme = "README.md"
+version = "0.1.0"
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<3.12"
+llama-index-core = "0.10.0"
+uptrain = ">=0.5.0"
+
+[tool.poetry.group.dev.dependencies]
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "1.9.1"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8"
+types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/BUILD b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/BUILD
new file mode 100644
index 0000000000000..dabf212d7e716
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/BUILD
@@ -0,0 +1 @@
+python_tests()
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/__init__.py b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/test_uptrain_callback.py b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/test_uptrain_callback.py
new file mode 100644
index 0000000000000..7abf9a195d59c
--- /dev/null
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/tests/test_uptrain_callback.py
@@ -0,0 +1,7 @@
+from llama_index.callbacks.uptrain.base import UpTrainCallbackHandler
+from llama_index.core.callbacks.base_handler import BaseCallbackHandler
+
+
+def test_handler_callable():
+ names_of_base_classes = [b.__name__ for b in UpTrainCallbackHandler.__mro__]
+ assert BaseCallbackHandler.__name__ in names_of_base_classes
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/llama_index/callbacks/wandb/__pycache__/__init__.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-wandb/llama_index/callbacks/wandb/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 52772321900f9..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/llama_index/callbacks/wandb/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/llama_index/callbacks/wandb/__pycache__/base.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-wandb/llama_index/callbacks/wandb/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index b90ae214e7876..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/llama_index/callbacks/wandb/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/tests/__pycache__/__init__.cpython-310.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-wandb/tests/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 06d5695628c0a..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/tests/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/tests/__pycache__/test_wandb_callback.cpython-310-pytest-7.2.1.pyc b/llama-index-integrations/callbacks/llama-index-callbacks-wandb/tests/__pycache__/test_wandb_callback.cpython-310-pytest-7.2.1.pyc
deleted file mode 100644
index 2f6c5321b3dfb..0000000000000
Binary files a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/tests/__pycache__/test_wandb_callback.cpython-310-pytest-7.2.1.pyc and /dev/null differ
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-adapter/llama_index/embeddings/adapter/__init__.py b/llama-index-integrations/embeddings/llama-index-embeddings-adapter/llama_index/embeddings/adapter/__init__.py
index 2376cd580b2d7..bbdfb36e5536a 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-adapter/llama_index/embeddings/adapter/__init__.py
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-adapter/llama_index/embeddings/adapter/__init__.py
@@ -1,3 +1,12 @@
-from llama_index.embeddings.adapter.base import AdapterEmbeddingModel
+from llama_index.embeddings.adapter.base import (
+ AdapterEmbeddingModel,
+ LinearAdapterEmbeddingModel,
+)
+from llama_index.embeddings.adapter.utils import BaseAdapter, LinearLayer
-__all__ = ["AdapterEmbeddingModel"]
+__all__ = [
+ "AdapterEmbeddingModel",
+ "LinearAdapterEmbeddingModel",
+ "BaseAdapter",
+ "LinearLayer",
+]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml
index 9a8c719a27aa8..c3c2fc05ac5a7 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index embeddings adapter integration"
license = "MIT"
name = "llama-index-embeddings-adapter"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py
index f44631b931570..fc699fee9fbfe 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/llama_index/embeddings/azure_openai/base.py
@@ -22,6 +22,11 @@ class AzureOpenAIEmbedding(OpenAIEmbedding):
default=None, description="The Azure deployment to use."
)
+ api_base: str = Field(default="", description="The base URL for Azure deployment.")
+ api_version: str = Field(
+ default="", description="The version for Azure OpenAI API."
+ )
+
_client: AzureOpenAI = PrivateAttr()
_aclient: AsyncAzureOpenAI = PrivateAttr()
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml
index 74238ea32c373..e29d141428fa5 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index embeddings azure openai integration"
license = "MIT"
name = "llama-index-embeddings-azure-openai"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-clip/CHANGELOG.md b/llama-index-integrations/embeddings/llama-index-embeddings-clip/CHANGELOG.md
new file mode 100644
index 0000000000000..3bce19e3fb289
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-clip/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-2-15
+
+- Remove incorrect one; resort back to lazy load of clip/torch
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-clip/llama_index/embeddings/clip/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-clip/llama_index/embeddings/clip/base.py
index 8bcf0b849213f..6bc6da46c37fc 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-clip/llama_index/embeddings/clip/base.py
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-clip/llama_index/embeddings/clip/base.py
@@ -1,7 +1,6 @@
import logging
from typing import Any, List
-import torch
from llama_index.core.base.embeddings.base import Embedding
from llama_index.core.bridge.pydantic import Field, PrivateAttr
from llama_index.core.constants import DEFAULT_EMBED_BATCH_SIZE
@@ -9,8 +8,6 @@
from llama_index.core.schema import ImageType
from PIL import Image
-import clip
-
logger = logging.getLogger(__name__)
@@ -75,6 +72,14 @@ def __init__(
if embed_batch_size <= 0:
raise ValueError(f"Embed batch size {embed_batch_size} must be > 0.")
+ try:
+ import clip
+ import torch
+ except ImportError:
+ raise ImportError(
+ "ClipEmbedding requires `pip install git+https://github.com/openai/CLIP.git` and torch."
+ )
+
super().__init__(
embed_batch_size=embed_batch_size, model_name=model_name, **kwargs
)
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-clip/poetry.lock b/llama-index-integrations/embeddings/llama-index-embeddings-clip/poetry.lock
index 7d8c9642d88bf..c4387b1b22937 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-clip/poetry.lock
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-clip/poetry.lock
@@ -1,12 +1,11 @@
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
-[metadata]
-content-hash = "6ae708f07026a838fa4b1568bad4200675cd4f7252f529f6f16b7c7cff8e7b56"
-lock-version = "2.0"
-python-versions = ">=3.8.1,<3.12"
-
[[package]]
+name = "aiohttp"
+version = "3.9.1"
description = "Async http client/server framework (asyncio)"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590"},
{file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0"},
@@ -85,14 +84,10 @@ files = [
{file = "aiohttp-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf"},
{file = "aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"},
]
-name = "aiohttp"
-optional = false
-python-versions = ">=3.8"
-version = "3.9.1"
[package.dependencies]
aiosignal = ">=1.1.2"
-async-timeout = {markers = "python_version < \"3.11\"", version = ">=4.0,<5.0"}
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
attrs = ">=17.3.0"
frozenlist = ">=1.1.1"
multidict = ">=4.5,<7.0"
@@ -102,49 +97,49 @@ yarl = ">=1.0,<2.0"
speedups = ["Brotli", "aiodns", "brotlicffi"]
[[package]]
+name = "aiosignal"
+version = "1.3.1"
description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
{file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
]
-name = "aiosignal"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.1"
[package.dependencies]
frozenlist = ">=1.1.0"
[[package]]
+name = "annotated-types"
+version = "0.6.0"
description = "Reusable constraint types to use with typing.Annotated"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
{file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
]
-name = "annotated-types"
-optional = false
-python-versions = ">=3.8"
-version = "0.6.0"
[package.dependencies]
-typing-extensions = {markers = "python_version < \"3.9\"", version = ">=4.0.0"}
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
[[package]]
+name = "anyio"
+version = "4.2.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
{file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
]
-name = "anyio"
-optional = false
-python-versions = ">=3.8"
-version = "4.2.0"
[package.dependencies]
-exceptiongroup = {markers = "python_version < \"3.11\"", version = ">=1.0.2"}
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
idna = ">=2.8"
sniffio = ">=1.1"
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.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"]
@@ -152,26 +147,26 @@ test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypo
trio = ["trio (>=0.23)"]
[[package]]
+name = "appnope"
+version = "0.1.3"
description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = "*"
files = [
{file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
{file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
]
-name = "appnope"
-optional = false
-python-versions = "*"
-version = "0.1.3"
[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
{file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
]
-name = "argon2-cffi"
-optional = false
-python-versions = ">=3.7"
-version = "23.1.0"
[package.dependencies]
argon2-cffi-bindings = "*"
@@ -183,7 +178,11 @@ tests = ["hypothesis", "pytest"]
typing = ["mypy"]
[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
{file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
@@ -207,10 +206,6 @@ files = [
{file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
{file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
]
-name = "argon2-cffi-bindings"
-optional = false
-python-versions = ">=3.6"
-version = "21.2.0"
[package.dependencies]
cffi = ">=1.0.1"
@@ -220,15 +215,15 @@ dev = ["cogapp", "pre-commit", "pytest", "wheel"]
tests = ["pytest"]
[[package]]
+name = "arrow"
+version = "1.3.0"
description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
{file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
]
-name = "arrow"
-optional = false
-python-versions = ">=3.8"
-version = "1.3.0"
[package.dependencies]
python-dateutil = ">=2.7.0"
@@ -239,34 +234,34 @@ doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints
test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
[[package]]
+name = "astroid"
+version = "2.13.5"
description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
files = [
{file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
{file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
]
-name = "astroid"
-optional = false
-python-versions = ">=3.7.2"
-version = "2.13.5"
[package.dependencies]
lazy-object-proxy = ">=1.4.0"
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0.0"}
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
wrapt = [
- {markers = "python_version < \"3.11\"", version = ">=1.11,<2"},
- {markers = "python_version >= \"3.11\"", version = ">=1.14,<2"},
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
]
[[package]]
+name = "asttokens"
+version = "2.4.1"
description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
files = [
{file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
{file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
]
-name = "asttokens"
-optional = false
-python-versions = "*"
-version = "2.4.1"
[package.dependencies]
six = ">=1.12.0"
@@ -276,40 +271,40 @@ astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
[[package]]
+name = "async-lru"
+version = "2.0.4"
description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
{file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
]
-name = "async-lru"
-optional = false
-python-versions = ">=3.8"
-version = "2.0.4"
[package.dependencies]
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0.0"}
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
[[package]]
+name = "async-timeout"
+version = "4.0.3"
description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
{file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
]
-name = "async-timeout"
-optional = false
-python-versions = ">=3.7"
-version = "4.0.3"
[[package]]
+name = "attrs"
+version = "23.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"},
]
-name = "attrs"
-optional = false
-python-versions = ">=3.7"
-version = "23.2.0"
[package.extras]
cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
@@ -320,43 +315,43 @@ tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"]
tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"]
[[package]]
+name = "babel"
+version = "2.14.0"
description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
{file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
]
-name = "babel"
-optional = false
-python-versions = ">=3.7"
-version = "2.14.0"
[package.dependencies]
-pytz = {markers = "python_version < \"3.9\"", version = ">=2015.7"}
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
[package.extras]
dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
[[package]]
+name = "backcall"
+version = "0.2.0"
description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
files = [
{file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
{file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
]
-name = "backcall"
-optional = false
-python-versions = "*"
-version = "0.2.0"
[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
files = [
{file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
{file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
]
-name = "beautifulsoup4"
-optional = false
-python-versions = ">=3.6.0"
-version = "4.12.3"
[package.dependencies]
soupsieve = ">1.2"
@@ -369,7 +364,11 @@ html5lib = ["html5lib"]
lxml = ["lxml"]
[[package]]
+name = "black"
+version = "23.9.1"
description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
{file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
@@ -394,21 +393,17 @@ files = [
{file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
{file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
]
-name = "black"
-optional = false
-python-versions = ">=3.8"
-version = "23.9.1"
[package.dependencies]
click = ">=8.0.0"
-ipython = {markers = "extra == \"jupyter\"", optional = true, version = ">=7.8.0"}
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
mypy-extensions = ">=0.4.3"
packaging = ">=22.0"
pathspec = ">=0.9.0"
platformdirs = ">=2"
-tokenize-rt = {markers = "extra == \"jupyter\"", optional = true, version = ">=3.2.0"}
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.1.0"}
-typing-extensions = {markers = "python_version < \"3.11\"", version = ">=4.0.1"}
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
@@ -417,15 +412,15 @@ jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
uvloop = ["uvloop (>=0.15.2)"]
[[package]]
+name = "bleach"
+version = "6.1.0"
description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
{file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
]
-name = "bleach"
-optional = false
-python-versions = ">=3.8"
-version = "6.1.0"
[package.dependencies]
six = ">=1.9.0"
@@ -435,18 +430,22 @@ webencodings = "*"
css = ["tinycss2 (>=1.1.0,<1.3)"]
[[package]]
+name = "certifi"
+version = "2023.11.17"
description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"},
{file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"},
]
-name = "certifi"
-optional = false
-python-versions = ">=3.6"
-version = "2023.11.17"
[[package]]
+name = "cffi"
+version = "1.16.0"
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"},
@@ -501,27 +500,27 @@ files = [
{file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"},
{file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"},
]
-name = "cffi"
-optional = false
-python-versions = ">=3.8"
-version = "1.16.0"
[package.dependencies]
pycparser = "*"
[[package]]
+name = "cfgv"
+version = "3.4.0"
description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
{file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
]
-name = "cfgv"
-optional = false
-python-versions = ">=3.8"
-version = "3.4.0"
[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
files = [
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
@@ -614,48 +613,34 @@ files = [
{file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
]
-name = "charset-normalizer"
-optional = false
-python-versions = ">=3.7.0"
-version = "3.3.2"
[[package]]
+name = "click"
+version = "8.1.7"
description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
{file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
]
-name = "click"
-optional = false
-python-versions = ">=3.7"
-version = "8.1.7"
[package.dependencies]
-colorama = {markers = "platform_system == \"Windows\"", version = "*"}
-
-[[package]]
-description = "A CLI clipboard manager"
-files = [
- {file = "clip-0.2.0.tar.gz", hash = "sha256:c0913fbb1a0eac8a20da4a5c890d454b081305f64429c0aa5b652164450253b8"},
-]
-name = "clip"
-optional = false
-python-versions = "*"
-version = "0.2.0"
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
+name = "codespell"
+version = "2.2.6"
description = "Codespell"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
{file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
]
-name = "codespell"
-optional = false
-python-versions = ">=3.8"
-version = "2.2.6"
[package.dependencies]
-tomli = {markers = "python_version < \"3.11\" and extra == \"toml\"", optional = true, version = "*"}
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
[package.extras]
dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
@@ -664,26 +649,26 @@ toml = ["tomli"]
types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
[[package]]
+name = "colorama"
+version = "0.4.6"
description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
-name = "colorama"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-version = "0.4.6"
[[package]]
+name = "comm"
+version = "0.2.1"
description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
{file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
]
-name = "comm"
-optional = false
-python-versions = ">=3.8"
-version = "0.2.1"
[package.dependencies]
traitlets = ">=4"
@@ -692,7 +677,11 @@ traitlets = ">=4"
test = ["pytest"]
[[package]]
+name = "cryptography"
+version = "42.0.0"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:c640b0ef54138fde761ec99a6c7dc4ce05e80420262c20fa239e694ca371d434"},
{file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:678cfa0d1e72ef41d48993a7be75a76b0725d29b820ff3cfd606a5b2b33fda01"},
@@ -727,13 +716,9 @@ files = [
{file = "cryptography-42.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:988b738f56c665366b1e4bfd9045c3efae89ee366ca3839cd5af53eaa1401bce"},
{file = "cryptography-42.0.0.tar.gz", hash = "sha256:6cf9b76d6e93c62114bd19485e5cb003115c134cf9ce91f8ac924c44f8c8c3f4"},
]
-name = "cryptography"
-optional = false
-python-versions = ">=3.7"
-version = "42.0.0"
[package.dependencies]
-cffi = {markers = "platform_python_implementation != \"PyPy\"", version = ">=1.12"}
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
[package.extras]
docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
@@ -746,22 +731,26 @@ test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-co
test-randomorder = ["pytest-randomly"]
[[package]]
+name = "dataclasses-json"
+version = "0.6.3"
description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
files = [
{file = "dataclasses_json-0.6.3-py3-none-any.whl", hash = "sha256:4aeb343357997396f6bca1acae64e486c3a723d8f5c76301888abeccf0c45176"},
{file = "dataclasses_json-0.6.3.tar.gz", hash = "sha256:35cb40aae824736fdf959801356641836365219cfe14caeb115c39136f775d2a"},
]
-name = "dataclasses-json"
-optional = false
-python-versions = ">=3.7,<4.0"
-version = "0.6.3"
[package.dependencies]
marshmallow = ">=3.18.0,<4.0.0"
typing-inspect = ">=0.4.0,<1"
[[package]]
+name = "debugpy"
+version = "1.8.0"
description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"},
{file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"},
@@ -782,43 +771,39 @@ files = [
{file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"},
{file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"},
]
-name = "debugpy"
-optional = false
-python-versions = ">=3.8"
-version = "1.8.0"
[[package]]
+name = "decorator"
+version = "5.1.1"
description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
]
-name = "decorator"
-optional = false
-python-versions = ">=3.5"
-version = "5.1.1"
[[package]]
+name = "defusedxml"
+version = "0.7.1"
description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
{file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
]
-name = "defusedxml"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.7.1"
[[package]]
+name = "deprecated"
+version = "1.2.14"
description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
{file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
]
-name = "deprecated"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.2.14"
[package.dependencies]
wrapt = ">=1.10,<2"
@@ -827,104 +812,104 @@ wrapt = ">=1.10,<2"
dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
[[package]]
+name = "dill"
+version = "0.3.7"
description = "serialize all of Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"},
{file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"},
]
-name = "dill"
-optional = false
-python-versions = ">=3.7"
-version = "0.3.7"
[package.extras]
graph = ["objgraph (>=1.7.2)"]
[[package]]
+name = "dirtyjson"
+version = "1.0.8"
description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
files = [
{file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
{file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
]
-name = "dirtyjson"
-optional = false
-python-versions = "*"
-version = "1.0.8"
[[package]]
+name = "distlib"
+version = "0.3.8"
description = "Distribution utilities"
+optional = false
+python-versions = "*"
files = [
{file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
{file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
]
-name = "distlib"
-optional = false
-python-versions = "*"
-version = "0.3.8"
[[package]]
+name = "distro"
+version = "1.9.0"
description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
{file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
]
-name = "distro"
-optional = false
-python-versions = ">=3.6"
-version = "1.9.0"
[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
{file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
]
-name = "exceptiongroup"
-optional = false
-python-versions = ">=3.7"
-version = "1.2.0"
[package.extras]
test = ["pytest (>=6)"]
[[package]]
+name = "executing"
+version = "2.0.1"
description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
{file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
]
-name = "executing"
-optional = false
-python-versions = ">=3.5"
-version = "2.0.1"
[package.extras]
tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
files = [
{file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
{file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
]
-name = "fastjsonschema"
-optional = false
-python-versions = "*"
-version = "2.19.1"
[package.extras]
devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
[[package]]
+name = "filelock"
+version = "3.13.1"
description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
{file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
]
-name = "filelock"
-optional = false
-python-versions = ">=3.8"
-version = "3.13.1"
[package.extras]
docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
@@ -932,57 +917,22 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pyt
typing = ["typing-extensions (>=4.8)"]
[[package]]
-description = "Interface between LLMs and your data"
-files = [
- {file = "flying_delta_core-0.9.40-py3-none-any.whl", hash = "sha256:578de9dc4679de9b82bdbbcd94e4078da0bdfb8f816dad0c2b0ea7195b643575"},
- {file = "flying_delta_core-0.9.40.tar.gz", hash = "sha256:76da80405d0c2beb0179f6aab32f77e57f6d7c3b14c656c2505ae5cdca88f07d"},
-]
-name = "flying-delta-core"
-optional = false
-python-versions = ">=3.8.1,<4.0"
-version = "0.9.40"
-
-[package.dependencies]
-SQLAlchemy = {extras = ["asyncio"], version = ">=1.4.49"}
-aiohttp = ">=3.8.6,<4.0.0"
-dataclasses-json = "*"
-deprecated = ">=1.2.9.3"
-dirtyjson = ">=1.0.8,<2.0.0"
-fsspec = ">=2023.5.0"
-httpx = "*"
-nest-asyncio = ">=1.5.8,<2.0.0"
-networkx = ">=3.0"
-nltk = ">=3.8.1,<4.0.0"
-numpy = "*"
-openai = ">=1.1.0"
-pandas = "*"
-requests = ">=2.31.0"
-tenacity = ">=8.2.0,<9.0.0"
-tiktoken = ">=0.3.3"
-typing-extensions = ">=4.5.0"
-typing-inspect = ">=0.8.0"
-
-[package.extras]
-gradientai = ["gradientai (>=1.4.0)"]
-html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
-langchain = ["langchain (>=0.0.303)"]
-local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
-postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
-query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
-
-[[package]]
+name = "fqdn"
+version = "1.5.1"
description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
files = [
{file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
{file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
]
-name = "fqdn"
-optional = false
-python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
-version = "1.5.1"
[[package]]
+name = "frozenlist"
+version = "1.4.1"
description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
{file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
@@ -1062,21 +1012,17 @@ files = [
{file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
{file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
]
-name = "frozenlist"
-optional = false
-python-versions = ">=3.8"
-version = "1.4.1"
[[package]]
+name = "fsspec"
+version = "2023.12.2"
description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"},
{file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"},
]
-name = "fsspec"
-optional = false
-python-versions = ">=3.8"
-version = "2023.12.2"
[package.extras]
abfs = ["adlfs"]
@@ -1103,7 +1049,25 @@ ssh = ["paramiko"]
tqdm = ["tqdm"]
[[package]]
+name = "ftfy"
+version = "6.1.3"
+description = "Fixes mojibake and other problems with Unicode, after the fact"
+optional = false
+python-versions = ">=3.8,<4"
+files = [
+ {file = "ftfy-6.1.3-py3-none-any.whl", hash = "sha256:e49c306c06a97f4986faa7a8740cfe3c13f3106e85bcec73eb629817e671557c"},
+ {file = "ftfy-6.1.3.tar.gz", hash = "sha256:693274aead811cff24c1e8784165aa755cd2f6e442a5ec535c7d697f6422a422"},
+]
+
+[package.dependencies]
+wcwidth = ">=0.2.12,<0.3.0"
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
{file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
@@ -1164,36 +1128,32 @@ files = [
{file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
{file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
]
-name = "greenlet"
-optional = false
-python-versions = ">=3.7"
-version = "3.0.3"
[package.extras]
docs = ["Sphinx", "furo"]
test = ["objgraph", "psutil"]
[[package]]
+name = "h11"
+version = "0.14.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
{file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
]
-name = "h11"
-optional = false
-python-versions = ">=3.7"
-version = "0.14.0"
[[package]]
+name = "httpcore"
+version = "1.0.2"
description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
{file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
]
-name = "httpcore"
-optional = false
-python-versions = ">=3.8"
-version = "1.0.2"
[package.dependencies]
certifi = "*"
@@ -1206,15 +1166,15 @@ socks = ["socksio (==1.*)"]
trio = ["trio (>=0.22.0,<0.23.0)"]
[[package]]
+name = "httpx"
+version = "0.26.0"
description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
{file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
]
-name = "httpx"
-optional = false
-python-versions = ">=3.8"
-version = "0.26.0"
[package.dependencies]
anyio = "*"
@@ -1230,40 +1190,40 @@ http2 = ["h2 (>=3,<5)"]
socks = ["socksio (==1.*)"]
[[package]]
+name = "identify"
+version = "2.5.33"
description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "identify-2.5.33-py2.py3-none-any.whl", hash = "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"},
{file = "identify-2.5.33.tar.gz", hash = "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d"},
]
-name = "identify"
-optional = false
-python-versions = ">=3.8"
-version = "2.5.33"
[package.extras]
license = ["ukkonen"]
[[package]]
+name = "idna"
+version = "3.6"
description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
{file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
]
-name = "idna"
-optional = false
-python-versions = ">=3.5"
-version = "3.6"
[[package]]
+name = "importlib-metadata"
+version = "7.0.1"
description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"},
{file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"},
]
-name = "importlib-metadata"
-optional = false
-python-versions = ">=3.8"
-version = "7.0.1"
[package.dependencies]
zipp = ">=0.5"
@@ -1274,47 +1234,47 @@ perf = ["ipython"]
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
[[package]]
+name = "importlib-resources"
+version = "6.1.1"
description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
{file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
]
-name = "importlib-resources"
-optional = false
-python-versions = ">=3.8"
-version = "6.1.1"
[package.dependencies]
-zipp = {markers = "python_version < \"3.10\"", version = ">=3.1.0"}
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
[[package]]
+name = "iniconfig"
+version = "2.0.0"
description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
-name = "iniconfig"
-optional = false
-python-versions = ">=3.7"
-version = "2.0.0"
[[package]]
+name = "ipykernel"
+version = "6.29.0"
description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"},
{file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"},
]
-name = "ipykernel"
-optional = false
-python-versions = ">=3.8"
-version = "6.29.0"
[package.dependencies]
-appnope = {markers = "platform_system == \"Darwin\"", version = "*"}
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
comm = ">=0.1.1"
debugpy = ">=1.6.5"
ipython = ">=7.23.1"
@@ -1336,24 +1296,24 @@ pyside6 = ["pyside6"]
test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"]
[[package]]
+name = "ipython"
+version = "8.10.0"
description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
{file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
]
-name = "ipython"
-optional = false
-python-versions = ">=3.8"
-version = "8.10.0"
[package.dependencies]
-appnope = {markers = "sys_platform == \"darwin\"", version = "*"}
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
backcall = "*"
-colorama = {markers = "sys_platform == \"win32\"", version = "*"}
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*"
jedi = ">=0.16"
matplotlib-inline = "*"
-pexpect = {markers = "sys_platform != \"win32\"", version = ">4.3"}
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
pickleshare = "*"
prompt-toolkit = ">=3.0.30,<3.1.0"
pygments = ">=2.4.0"
@@ -1361,7 +1321,7 @@ stack-data = "*"
traitlets = ">=5"
[package.extras]
-all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib (!=3.2.0)", "matplotlib", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
black = ["black"]
doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
kernel = ["ipykernel"]
@@ -1374,15 +1334,15 @@ test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
[[package]]
+name = "ipywidgets"
+version = "8.1.1"
description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"},
{file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"},
]
-name = "ipywidgets"
-optional = false
-python-versions = ">=3.7"
-version = "8.1.1"
[package.dependencies]
comm = ">=0.1.3"
@@ -1395,43 +1355,43 @@ widgetsnbextension = ">=4.0.9,<4.1.0"
test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
[[package]]
+name = "isoduration"
+version = "20.11.0"
description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
{file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
]
-name = "isoduration"
-optional = false
-python-versions = ">=3.7"
-version = "20.11.0"
[package.dependencies]
arrow = ">=0.15.0"
[[package]]
+name = "isort"
+version = "5.13.2"
description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
files = [
{file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
{file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
]
-name = "isort"
-optional = false
-python-versions = ">=3.8.0"
-version = "5.13.2"
[package.extras]
colors = ["colorama (>=0.4.6)"]
[[package]]
+name = "jedi"
+version = "0.19.1"
description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
{file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
]
-name = "jedi"
-optional = false
-python-versions = ">=3.6"
-version = "0.19.1"
[package.dependencies]
parso = ">=0.8.3,<0.9.0"
@@ -1442,15 +1402,15 @@ qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
[[package]]
+name = "jinja2"
+version = "3.1.3"
description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
{file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
]
-name = "jinja2"
-optional = false
-python-versions = ">=3.7"
-version = "3.1.3"
[package.dependencies]
MarkupSafe = ">=2.0"
@@ -1459,98 +1419,98 @@ MarkupSafe = ">=2.0"
i18n = ["Babel (>=2.7)"]
[[package]]
+name = "joblib"
+version = "1.3.2"
description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
{file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
]
-name = "joblib"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.2"
[[package]]
+name = "json5"
+version = "0.9.14"
description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
files = [
{file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
{file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
]
-name = "json5"
-optional = false
-python-versions = "*"
-version = "0.9.14"
[package.extras]
dev = ["hypothesis"]
[[package]]
+name = "jsonpointer"
+version = "2.4"
description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
files = [
{file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
{file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
]
-name = "jsonpointer"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
-version = "2.4"
[[package]]
+name = "jsonschema"
+version = "4.21.1"
description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
{file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
]
-name = "jsonschema"
-optional = false
-python-versions = ">=3.8"
-version = "4.21.1"
[package.dependencies]
attrs = ">=22.2.0"
-fqdn = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-idna = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-importlib-resources = {markers = "python_version < \"3.9\"", version = ">=1.4.0"}
-isoduration = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-jsonpointer = {markers = "extra == \"format-nongpl\"", optional = true, version = ">1.13"}
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
jsonschema-specifications = ">=2023.03.6"
-pkgutil-resolve-name = {markers = "python_version < \"3.9\"", version = ">=1.3.10"}
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
referencing = ">=0.28.4"
-rfc3339-validator = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-rfc3986-validator = {markers = "extra == \"format-nongpl\"", optional = true, version = ">0.1.0"}
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
rpds-py = ">=0.7.1"
-uri-template = {markers = "extra == \"format-nongpl\"", optional = true, version = "*"}
-webcolors = {markers = "extra == \"format-nongpl\"", optional = true, version = ">=1.11"}
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
[package.extras]
format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
{file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
]
-name = "jsonschema-specifications"
-optional = false
-python-versions = ">=3.8"
-version = "2023.12.1"
[package.dependencies]
-importlib-resources = {markers = "python_version < \"3.9\"", version = ">=1.4.0"}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
referencing = ">=0.31.0"
[[package]]
+name = "jupyter"
+version = "1.0.0"
description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
files = [
{file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
{file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
{file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
]
-name = "jupyter"
-optional = false
-python-versions = "*"
-version = "1.0.0"
[package.dependencies]
ipykernel = "*"
@@ -1561,18 +1521,18 @@ notebook = "*"
qtconsole = "*"
[[package]]
+name = "jupyter-client"
+version = "8.6.0"
description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
{file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
]
-name = "jupyter-client"
-optional = false
-python-versions = ">=3.8"
-version = "8.6.0"
[package.dependencies]
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
python-dateutil = ">=2.8.2"
pyzmq = ">=23.0"
@@ -1584,15 +1544,15 @@ docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphi
test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
[[package]]
+name = "jupyter-console"
+version = "6.6.3"
description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
{file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
]
-name = "jupyter-console"
-optional = false
-python-versions = ">=3.7"
-version = "6.6.3"
[package.dependencies]
ipykernel = ">=6.14"
@@ -1608,19 +1568,19 @@ traitlets = ">=5.4"
test = ["flaky", "pexpect", "pytest"]
[[package]]
+name = "jupyter-core"
+version = "5.7.1"
description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
{file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
]
-name = "jupyter-core"
-optional = false
-python-versions = ">=3.8"
-version = "5.7.1"
[package.dependencies]
platformdirs = ">=2.5"
-pywin32 = {markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"", version = ">=300"}
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
traitlets = ">=5.3"
[package.extras]
@@ -1628,18 +1588,18 @@ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphin
test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
[[package]]
+name = "jupyter-events"
+version = "0.9.0"
description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
{file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
]
-name = "jupyter-events"
-optional = false
-python-versions = ">=3.8"
-version = "0.9.0"
[package.dependencies]
-jsonschema = {extras = ["format-nongpl"], version = ">=4.18.0"}
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
python-json-logger = ">=2.0.4"
pyyaml = ">=5.3"
referencing = "*"
@@ -1653,30 +1613,30 @@ docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontr
test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
{file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
]
-name = "jupyter-lsp"
-optional = false
-python-versions = ">=3.8"
-version = "2.2.2"
[package.dependencies]
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
jupyter-server = ">=1.1.2"
[[package]]
+name = "jupyter-server"
+version = "2.12.5"
description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
{file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
]
-name = "jupyter-server"
-optional = false
-python-versions = ">=3.8"
-version = "2.12.5"
[package.dependencies]
anyio = ">=3.1.0"
@@ -1691,7 +1651,7 @@ nbformat = ">=5.3.0"
overrides = "*"
packaging = "*"
prometheus-client = "*"
-pywinpty = {markers = "os_name == \"nt\"", version = "*"}
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
pyzmq = ">=24"
send2trash = ">=1.8.2"
terminado = ">=0.8.3"
@@ -1704,18 +1664,18 @@ docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser"
test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
{file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
]
-name = "jupyter-server-terminals"
-optional = false
-python-versions = ">=3.8"
-version = "0.5.2"
[package.dependencies]
-pywinpty = {markers = "os_name == \"nt\"", version = ">=2.0.3"}
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
terminado = ">=0.8.3"
[package.extras]
@@ -1723,20 +1683,20 @@ docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat",
test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
[[package]]
+name = "jupyterlab"
+version = "4.0.11"
description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyterlab-4.0.11-py3-none-any.whl", hash = "sha256:536bf0e78723153a5016ca7efb88ed0ecd7070d3f1555d5b0e2770658f900a3c"},
{file = "jupyterlab-4.0.11.tar.gz", hash = "sha256:d1aec24712566bc25a36229788242778e498ca4088028e2f9aa156b8b7fdc8fc"},
]
-name = "jupyterlab"
-optional = false
-python-versions = ">=3.8"
-version = "4.0.11"
[package.dependencies]
async-lru = ">=1.0.0"
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
-importlib-resources = {markers = "python_version < \"3.9\"", version = ">=1.4"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
ipykernel = "*"
jinja2 = ">=3.0.3"
jupyter-core = "*"
@@ -1745,7 +1705,7 @@ jupyter-server = ">=2.4.0,<3"
jupyterlab-server = ">=2.19.0,<3"
notebook-shim = ">=0.2"
packaging = "*"
-tomli = {markers = "python_version < \"3.11\"", version = "*"}
+tomli = {version = "*", markers = "python_version < \"3.11\""}
tornado = ">=6.2.0"
traitlets = "*"
@@ -1756,30 +1716,30 @@ docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0
test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
{file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
]
-name = "jupyterlab-pygments"
-optional = false
-python-versions = ">=3.8"
-version = "0.3.0"
[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
{file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
]
-name = "jupyterlab-server"
-optional = false
-python-versions = ">=3.8"
-version = "2.25.2"
[package.dependencies]
babel = ">=2.10"
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=4.8.3"}
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
jinja2 = ">=3.0.3"
json5 = ">=0.9.0"
jsonschema = ">=4.18.0"
@@ -1793,18 +1753,22 @@ openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.9"
description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"},
{file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"},
]
-name = "jupyterlab-widgets"
-optional = false
-python-versions = ">=3.7"
-version = "3.0.9"
[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
{file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
@@ -1844,13 +1808,55 @@ files = [
{file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
{file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
]
-name = "lazy-object-proxy"
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.3"
+description = "Interface between LLMs and your data"
optional = false
-python-versions = ">=3.8"
-version = "1.10.0"
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.3-py3-none-any.whl", hash = "sha256:711e2766cb1690a394a209dc6155d1b7a05b44fd6b7e08084d6b96c00bef5dd0"},
+ {file = "llama_index_core-0.10.3.tar.gz", hash = "sha256:5cced2c56bd640311835094fe6946ce6498e6d31dffcdb3df7583ff1aa3861b8"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
[[package]]
+name = "markupsafe"
+version = "2.1.4"
description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"},
{file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"},
@@ -1913,21 +1919,17 @@ files = [
{file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"},
{file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"},
]
-name = "markupsafe"
-optional = false
-python-versions = ">=3.7"
-version = "2.1.4"
[[package]]
+name = "marshmallow"
+version = "3.20.2"
description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
{file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
]
-name = "marshmallow"
-optional = false
-python-versions = ">=3.8"
-version = "3.20.2"
[package.dependencies]
packaging = ">=17.0"
@@ -1939,51 +1941,51 @@ lint = ["pre-commit (>=2.4,<4.0)"]
tests = ["pytest", "pytz", "simplejson"]
[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
{file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
]
-name = "matplotlib-inline"
-optional = false
-python-versions = ">=3.5"
-version = "0.1.6"
[package.dependencies]
traitlets = "*"
[[package]]
+name = "mccabe"
+version = "0.7.0"
description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
-name = "mccabe"
-optional = false
-python-versions = ">=3.6"
-version = "0.7.0"
[[package]]
+name = "mistune"
+version = "3.0.2"
description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
{file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
]
-name = "mistune"
-optional = false
-python-versions = ">=3.7"
-version = "3.0.2"
[[package]]
+name = "mpmath"
+version = "1.3.0"
description = "Python library for arbitrary-precision floating-point arithmetic"
+optional = false
+python-versions = "*"
files = [
{file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"},
{file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
]
-name = "mpmath"
-optional = false
-python-versions = "*"
-version = "1.3.0"
[package.extras]
develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"]
@@ -1992,7 +1994,11 @@ gmpy = ["gmpy2 (>=2.1.0a4)"]
tests = ["pytest (>=4.6)"]
[[package]]
+name = "multidict"
+version = "6.0.4"
description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
{file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
@@ -2069,13 +2075,13 @@ files = [
{file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
{file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
]
-name = "multidict"
-optional = false
-python-versions = ">=3.7"
-version = "6.0.4"
[[package]]
+name = "mypy"
+version = "0.991"
description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
{file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
@@ -2108,14 +2114,10 @@ files = [
{file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
{file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
]
-name = "mypy"
-optional = false
-python-versions = ">=3.7"
-version = "0.991"
[package.dependencies]
mypy-extensions = ">=0.4.3"
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.1.0"}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = ">=3.10"
[package.extras]
@@ -2125,26 +2127,26 @@ python2 = ["typed-ast (>=1.4.0,<2)"]
reports = ["lxml"]
[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
files = [
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
]
-name = "mypy-extensions"
-optional = false
-python-versions = ">=3.5"
-version = "1.0.0"
[[package]]
+name = "nbclient"
+version = "0.9.0"
description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
files = [
{file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
{file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
]
-name = "nbclient"
-optional = false
-python-versions = ">=3.8.0"
-version = "0.9.0"
[package.dependencies]
jupyter-client = ">=6.1.12"
@@ -2158,21 +2160,21 @@ docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphi
test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
[[package]]
+name = "nbconvert"
+version = "7.14.2"
description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "nbconvert-7.14.2-py3-none-any.whl", hash = "sha256:db28590cef90f7faf2ebbc71acd402cbecf13d29176df728c0a9025a49345ea1"},
{file = "nbconvert-7.14.2.tar.gz", hash = "sha256:a7f8808fd4e082431673ac538400218dd45efd076fbeb07cc6e5aa5a3a4e949e"},
]
-name = "nbconvert"
-optional = false
-python-versions = ">=3.8"
-version = "7.14.2"
[package.dependencies]
beautifulsoup4 = "*"
bleach = "!=5.0.0"
defusedxml = "*"
-importlib-metadata = {markers = "python_version < \"3.10\"", version = ">=3.6"}
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
jinja2 = ">=3.0"
jupyter-core = ">=4.7"
jupyterlab-pygments = "*"
@@ -2196,15 +2198,15 @@ test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
webpdf = ["playwright"]
[[package]]
+name = "nbformat"
+version = "5.9.2"
description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
{file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
]
-name = "nbformat"
-optional = false
-python-versions = ">=3.8"
-version = "5.9.2"
[package.dependencies]
fastjsonschema = "*"
@@ -2217,26 +2219,26 @@ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-al
test = ["pep440", "pre-commit", "pytest", "testpath"]
[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
files = [
{file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
{file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
]
-name = "nest-asyncio"
-optional = false
-python-versions = ">=3.5"
-version = "1.6.0"
[[package]]
+name = "networkx"
+version = "3.1"
description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
{file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
]
-name = "networkx"
-optional = false
-python-versions = ">=3.8"
-version = "3.1"
[package.extras]
default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
@@ -2246,15 +2248,15 @@ extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.1
test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
[[package]]
+name = "nltk"
+version = "3.8.1"
description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
{file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
]
-name = "nltk"
-optional = false
-python-versions = ">=3.7"
-version = "3.8.1"
[package.dependencies]
click = "*"
@@ -2271,29 +2273,29 @@ tgrep = ["pyparsing"]
twitter = ["twython"]
[[package]]
+name = "nodeenv"
+version = "1.8.0"
description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
files = [
{file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
{file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
]
-name = "nodeenv"
-optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
-version = "1.8.0"
[package.dependencies]
setuptools = "*"
[[package]]
+name = "notebook"
+version = "7.0.7"
description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"},
{file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"},
]
-name = "notebook"
-optional = false
-python-versions = ">=3.8"
-version = "7.0.7"
[package.dependencies]
jupyter-server = ">=2.4.0,<3"
@@ -2308,15 +2310,15 @@ docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "s
test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
[[package]]
+name = "notebook-shim"
+version = "0.2.3"
description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
{file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
]
-name = "notebook-shim"
-optional = false
-python-versions = ">=3.7"
-version = "0.2.3"
[package.dependencies]
jupyter-server = ">=1.8,<3"
@@ -2325,7 +2327,11 @@ jupyter-server = ">=1.8,<3"
test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
[[package]]
+name = "numpy"
+version = "1.24.4"
description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
{file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
@@ -2356,100 +2362,96 @@ files = [
{file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
{file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
]
-name = "numpy"
-optional = false
-python-versions = ">=3.8"
-version = "1.24.4"
[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.1.3.1"
description = "CUBLAS native runtime libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"},
{file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"},
]
-name = "nvidia-cublas-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.1.3.1"
[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.1.105"
description = "CUDA profiling tools runtime libs."
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"},
{file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"},
]
-name = "nvidia-cuda-cupti-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.1.105"
[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.1.105"
description = "NVRTC native runtime libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"},
{file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"},
]
-name = "nvidia-cuda-nvrtc-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.1.105"
[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.1.105"
description = "CUDA Runtime native Libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"},
{file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"},
]
-name = "nvidia-cuda-runtime-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.1.105"
[[package]]
+name = "nvidia-cudnn-cu12"
+version = "8.9.2.26"
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"},
]
-name = "nvidia-cudnn-cu12"
-optional = false
-python-versions = ">=3"
-version = "8.9.2.26"
[package.dependencies]
nvidia-cublas-cu12 = "*"
[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.0.2.54"
description = "CUFFT native runtime libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"},
{file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"},
]
-name = "nvidia-cufft-cu12"
-optional = false
-python-versions = ">=3"
-version = "11.0.2.54"
[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.2.106"
description = "CURAND native runtime libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"},
{file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"},
]
-name = "nvidia-curand-cu12"
-optional = false
-python-versions = ">=3"
-version = "10.3.2.106"
[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.4.5.107"
description = "CUDA solver native runtime libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"},
{file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"},
]
-name = "nvidia-cusolver-cu12"
-optional = false
-python-versions = ">=3"
-version = "11.4.5.107"
[package.dependencies]
nvidia-cublas-cu12 = "*"
@@ -2457,61 +2459,61 @@ nvidia-cusparse-cu12 = "*"
nvidia-nvjitlink-cu12 = "*"
[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.1.0.106"
description = "CUSPARSE native runtime libraries"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"},
{file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"},
]
-name = "nvidia-cusparse-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.1.0.106"
[package.dependencies]
nvidia-nvjitlink-cu12 = "*"
[[package]]
-description = "NVIDIA Collective Communication Library (NCCL) Runtime"
-files = [
- {file = "nvidia_nccl_cu12-2.18.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:1a6c4acefcbebfa6de320f412bf7866de856e786e0462326ba1bac40de0b5e71"},
-]
name = "nvidia-nccl-cu12"
+version = "2.19.3"
+description = "NVIDIA Collective Communication Library (NCCL) Runtime"
optional = false
python-versions = ">=3"
-version = "2.18.1"
+files = [
+ {file = "nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl", hash = "sha256:a9734707a2c96443331c1e48c717024aa6678a0e2a4cb66b2c364d18cee6b48d"},
+]
[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.3.101"
description = "Nvidia JIT LTO Library"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_nvjitlink_cu12-12.3.101-py3-none-manylinux1_x86_64.whl", hash = "sha256:64335a8088e2b9d196ae8665430bc6a2b7e6ef2eb877a9c735c804bd4ff6467c"},
{file = "nvidia_nvjitlink_cu12-12.3.101-py3-none-win_amd64.whl", hash = "sha256:1b2e317e437433753530792f13eece58f0aec21a2b05903be7bffe58a606cbd1"},
]
-name = "nvidia-nvjitlink-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.3.101"
[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.1.105"
description = "NVIDIA Tools Extension"
+optional = false
+python-versions = ">=3"
files = [
{file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"},
{file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"},
]
-name = "nvidia-nvtx-cu12"
-optional = false
-python-versions = ">=3"
-version = "12.1.105"
[[package]]
+name = "openai"
+version = "1.9.0"
description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
files = [
{file = "openai-1.9.0-py3-none-any.whl", hash = "sha256:5774a0582ed82f6de92200ed5024e03e272b93e04e9d31caeda5fb80f63df50d"},
{file = "openai-1.9.0.tar.gz", hash = "sha256:3e9947a544556c051fa138a4def5bd8b468364ec52803c6628532ab949ddce55"},
]
-name = "openai"
-optional = false
-python-versions = ">=3.7.1"
-version = "1.9.0"
[package.dependencies]
anyio = ">=3.5.0,<5"
@@ -2526,29 +2528,33 @@ typing-extensions = ">=4.7,<5"
datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
[[package]]
+name = "overrides"
+version = "7.6.0"
description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "overrides-7.6.0-py3-none-any.whl", hash = "sha256:c36e6635519ea9c5b043b65c36d4b886aee8bd45b7d4681d2a6df0898df4b654"},
{file = "overrides-7.6.0.tar.gz", hash = "sha256:01e15bbbf15b766f0675c275baa1878bd1c7dc9bc7b9ee13e677cdba93dc1bd9"},
]
-name = "overrides"
-optional = false
-python-versions = ">=3.6"
-version = "7.6.0"
[[package]]
+name = "packaging"
+version = "23.2"
description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
{file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
-name = "packaging"
-optional = false
-python-versions = ">=3.7"
-version = "23.2"
[[package]]
+name = "pandas"
+version = "2.0.3"
description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
{file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
@@ -2576,16 +2582,12 @@ files = [
{file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
{file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
]
-name = "pandas"
-optional = false
-python-versions = ">=3.8"
-version = "2.0.3"
[package.dependencies]
numpy = [
- {markers = "python_version < \"3.10\"", version = ">=1.20.3"},
- {markers = "python_version >= \"3.10\" and python_version < \"3.11\"", version = ">=1.21.0"},
- {markers = "python_version >= \"3.11\"", version = ">=1.23.2"},
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
]
python-dateutil = ">=2.8.2"
pytz = ">=2020.1"
@@ -2615,69 +2617,73 @@ test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)"
xml = ["lxml (>=4.6.3)"]
[[package]]
+name = "pandocfilters"
+version = "1.5.1"
description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
{file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
]
-name = "pandocfilters"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.5.1"
[[package]]
+name = "parso"
+version = "0.8.3"
description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
{file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
]
-name = "parso"
-optional = false
-python-versions = ">=3.6"
-version = "0.8.3"
[package.extras]
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["docopt", "pytest (<6.0.0)"]
[[package]]
+name = "pathspec"
+version = "0.12.1"
description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
]
-name = "pathspec"
-optional = false
-python-versions = ">=3.8"
-version = "0.12.1"
[[package]]
+name = "pexpect"
+version = "4.9.0"
description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
files = [
{file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
{file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
]
-name = "pexpect"
-optional = false
-python-versions = "*"
-version = "4.9.0"
[package.dependencies]
ptyprocess = ">=0.5"
[[package]]
+name = "pickleshare"
+version = "0.7.5"
description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
files = [
{file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
{file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
]
-name = "pickleshare"
-optional = false
-python-versions = "*"
-version = "0.7.5"
[[package]]
+name = "pillow"
+version = "10.2.0"
description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
{file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
@@ -2748,10 +2754,6 @@ files = [
{file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
{file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
]
-name = "pillow"
-optional = false
-python-versions = ">=3.8"
-version = "10.2.0"
[package.extras]
docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
@@ -2762,56 +2764,56 @@ typing = ["typing-extensions"]
xmp = ["defusedxml"]
[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
{file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
]
-name = "pkgutil-resolve-name"
-optional = false
-python-versions = ">=3.6"
-version = "1.3.10"
[[package]]
+name = "platformdirs"
+version = "4.1.0"
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.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"},
{file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"},
]
-name = "platformdirs"
-optional = false
-python-versions = ">=3.8"
-version = "4.1.0"
[package.extras]
docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
[[package]]
+name = "pluggy"
+version = "1.3.0"
description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
{file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
]
-name = "pluggy"
-optional = false
-python-versions = ">=3.8"
-version = "1.3.0"
[package.extras]
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
[[package]]
+name = "pre-commit"
+version = "3.2.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
{file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
]
-name = "pre-commit"
-optional = false
-python-versions = ">=3.8"
-version = "3.2.0"
[package.dependencies]
cfgv = ">=2.0.0"
@@ -2821,35 +2823,39 @@ pyyaml = ">=5.1"
virtualenv = ">=20.10.0"
[[package]]
+name = "prometheus-client"
+version = "0.19.0"
description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
{file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
]
-name = "prometheus-client"
-optional = false
-python-versions = ">=3.8"
-version = "0.19.0"
[package.extras]
twisted = ["twisted"]
[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
files = [
{file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
{file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
]
-name = "prompt-toolkit"
-optional = false
-python-versions = ">=3.7.0"
-version = "3.0.43"
[package.dependencies]
wcwidth = "*"
[[package]]
+name = "psutil"
+version = "5.9.8"
description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
{file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
{file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
@@ -2868,60 +2874,56 @@ files = [
{file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
{file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
]
-name = "psutil"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
-version = "5.9.8"
[package.extras]
test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
[[package]]
+name = "ptyprocess"
+version = "0.7.0"
description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
files = [
{file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
{file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
]
-name = "ptyprocess"
-optional = false
-python-versions = "*"
-version = "0.7.0"
[[package]]
+name = "pure-eval"
+version = "0.2.2"
description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
files = [
{file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
{file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
]
-name = "pure-eval"
-optional = false
-python-versions = "*"
-version = "0.2.2"
[package.extras]
tests = ["pytest"]
[[package]]
+name = "pycparser"
+version = "2.21"
description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
{file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
{file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
]
-name = "pycparser"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.21"
[[package]]
+name = "pydantic"
+version = "2.5.3"
description = "Data validation using Python type hints"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"},
{file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"},
]
-name = "pydantic"
-optional = false
-python-versions = ">=3.7"
-version = "2.5.3"
[package.dependencies]
annotated-types = ">=0.4.0"
@@ -2932,7 +2934,11 @@ typing-extensions = ">=4.6.1"
email = ["email-validator (>=2.0.0)"]
[[package]]
+name = "pydantic-core"
+version = "2.14.6"
description = ""
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"},
{file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"},
@@ -3040,91 +3046,87 @@ files = [
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"},
{file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"},
]
-name = "pydantic-core"
-optional = false
-python-versions = ">=3.7"
-version = "2.14.6"
[package.dependencies]
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
[[package]]
+name = "pygments"
+version = "2.17.2"
description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
{file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
]
-name = "pygments"
-optional = false
-python-versions = ">=3.7"
-version = "2.17.2"
[package.extras]
plugins = ["importlib-metadata"]
windows-terminal = ["colorama (>=0.4.6)"]
[[package]]
+name = "pylint"
+version = "2.15.10"
description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
files = [
{file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
{file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
]
-name = "pylint"
-optional = false
-python-versions = ">=3.7.2"
-version = "2.15.10"
[package.dependencies]
astroid = ">=2.12.13,<=2.14.0-dev0"
-colorama = {markers = "sys_platform == \"win32\"", version = ">=0.4.5"}
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = [
- {markers = "python_version < \"3.11\"", version = ">=0.2"},
- {markers = "python_version >= \"3.11\"", version = ">=0.3.6"},
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
]
isort = ">=4.2.5,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.1.0"}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
tomlkit = ">=0.10.1"
-typing-extensions = {markers = "python_version < \"3.10\"", version = ">=3.10.0"}
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
[package.extras]
spelling = ["pyenchant (>=3.2,<4.0)"]
testutils = ["gitpython (>3)"]
[[package]]
+name = "pytest"
+version = "7.2.1"
description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
{file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
]
-name = "pytest"
-optional = false
-python-versions = ">=3.7"
-version = "7.2.1"
[package.dependencies]
attrs = ">=19.2.0"
-colorama = {markers = "sys_platform == \"win32\"", version = "*"}
-exceptiongroup = {markers = "python_version < \"3.11\"", version = ">=1.0.0rc8"}
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<2.0"
-tomli = {markers = "python_version < \"3.11\"", version = ">=1.0.0"}
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
[package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
[[package]]
+name = "pytest-mock"
+version = "3.11.1"
description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
{file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
]
-name = "pytest-mock"
-optional = false
-python-versions = ">=3.7"
-version = "3.11.1"
[package.dependencies]
pytest = ">=5.0"
@@ -3133,43 +3135,47 @@ pytest = ">=5.0"
dev = ["pre-commit", "pytest-asyncio", "tox"]
[[package]]
+name = "python-dateutil"
+version = "2.8.2"
description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
-name = "python-dateutil"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-version = "2.8.2"
[package.dependencies]
six = ">=1.5"
[[package]]
+name = "python-json-logger"
+version = "2.0.7"
description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
{file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
]
-name = "python-json-logger"
-optional = false
-python-versions = ">=3.6"
-version = "2.0.7"
[[package]]
+name = "pytz"
+version = "2023.3.post1"
description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
files = [
{file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"},
{file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
]
-name = "pytz"
-optional = false
-python-versions = "*"
-version = "2023.3.post1"
[[package]]
+name = "pywin32"
+version = "306"
description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
files = [
{file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
{file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
@@ -3186,13 +3192,13 @@ files = [
{file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
{file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
]
-name = "pywin32"
-optional = false
-python-versions = "*"
-version = "306"
[[package]]
+name = "pywinpty"
+version = "2.0.12"
description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
{file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
@@ -3201,13 +3207,13 @@ files = [
{file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
{file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
]
-name = "pywinpty"
-optional = false
-python-versions = ">=3.8"
-version = "2.0.12"
[[package]]
+name = "pyyaml"
+version = "6.0.1"
description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
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"},
@@ -3227,6 +3233,7 @@ files = [
{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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{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"},
@@ -3260,13 +3267,13 @@ files = [
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
]
-name = "pyyaml"
-optional = false
-python-versions = ">=3.6"
-version = "6.0.1"
[[package]]
+name = "pyzmq"
+version = "25.1.2"
description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
files = [
{file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
{file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
@@ -3362,24 +3369,20 @@ files = [
{file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
{file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
]
-name = "pyzmq"
-optional = false
-python-versions = ">=3.6"
-version = "25.1.2"
[package.dependencies]
-cffi = {markers = "implementation_name == \"pypy\"", version = "*"}
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
[[package]]
+name = "qtconsole"
+version = "5.5.1"
description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
files = [
{file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
{file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
]
-name = "qtconsole"
-optional = false
-python-versions = ">= 3.8"
-version = "5.5.1"
[package.dependencies]
ipykernel = ">=4.1"
@@ -3396,15 +3399,15 @@ doc = ["Sphinx (>=1.3)"]
test = ["flaky", "pytest", "pytest-qt"]
[[package]]
+name = "qtpy"
+version = "2.4.1"
description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
{file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
]
-name = "qtpy"
-optional = false
-python-versions = ">=3.7"
-version = "2.4.1"
[package.dependencies]
packaging = "*"
@@ -3413,22 +3416,26 @@ packaging = "*"
test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
[[package]]
+name = "referencing"
+version = "0.32.1"
description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "referencing-0.32.1-py3-none-any.whl", hash = "sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"},
{file = "referencing-0.32.1.tar.gz", hash = "sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3"},
]
-name = "referencing"
-optional = false
-python-versions = ">=3.8"
-version = "0.32.1"
[package.dependencies]
attrs = ">=22.2.0"
rpds-py = ">=0.7.0"
[[package]]
+name = "regex"
+version = "2023.12.25"
description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
{file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
@@ -3524,21 +3531,17 @@ files = [
{file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
{file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
]
-name = "regex"
-optional = false
-python-versions = ">=3.7"
-version = "2023.12.25"
[[package]]
+name = "requests"
+version = "2.31.0"
description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
{file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
]
-name = "requests"
-optional = false
-python-versions = ">=3.7"
-version = "2.31.0"
[package.dependencies]
certifi = ">=2017.4.17"
@@ -3551,32 +3554,36 @@ socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
{file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
]
-name = "rfc3339-validator"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.1.4"
[package.dependencies]
six = "*"
[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
{file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
]
-name = "rfc3986-validator"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "0.1.1"
[[package]]
+name = "rpds-py"
+version = "0.17.1"
description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"},
{file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"},
@@ -3678,13 +3685,13 @@ files = [
{file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"},
{file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"},
]
-name = "rpds-py"
-optional = false
-python-versions = ">=3.8"
-version = "0.17.1"
[[package]]
+name = "ruff"
+version = "0.0.292"
description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
{file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
@@ -3704,21 +3711,17 @@ files = [
{file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
{file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
]
-name = "ruff"
-optional = false
-python-versions = ">=3.7"
-version = "0.0.292"
[[package]]
+name = "send2trash"
+version = "1.8.2"
description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
{file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
{file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
]
-name = "send2trash"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
-version = "1.8.2"
[package.extras]
nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
@@ -3726,15 +3729,15 @@ objc = ["pyobjc-framework-Cocoa"]
win32 = ["pywin32"]
[[package]]
+name = "setuptools"
+version = "69.0.3"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"},
{file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"},
]
-name = "setuptools"
-optional = false
-python-versions = ">=3.8"
-version = "69.0.3"
[package.extras]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
@@ -3742,40 +3745,44 @@ testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[l
testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
+name = "six"
+version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
-name = "six"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-version = "1.16.0"
[[package]]
+name = "sniffio"
+version = "1.3.0"
description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
{file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
]
-name = "sniffio"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.0"
[[package]]
+name = "soupsieve"
+version = "2.5"
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"},
]
-name = "soupsieve"
-optional = false
-python-versions = ">=3.8"
-version = "2.5"
[[package]]
+name = "sqlalchemy"
+version = "2.0.25"
description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4344d059265cc8b1b1be351bfb88749294b87a8b2bbe21dfbe066c4199541ebd"},
{file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9e2e59cbcc6ba1488404aad43de005d05ca56e069477b33ff74e91b6319735"},
@@ -3827,13 +3834,9 @@ files = [
{file = "SQLAlchemy-2.0.25-py3-none-any.whl", hash = "sha256:a86b4240e67d4753dc3092d9511886795b3c2852abe599cffe108952f7af7ac3"},
{file = "SQLAlchemy-2.0.25.tar.gz", hash = "sha256:a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08"},
]
-name = "sqlalchemy"
-optional = false
-python-versions = ">=3.7"
-version = "2.0.25"
[package.dependencies]
-greenlet = {markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\"", optional = true, version = "!=0.4.17"}
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
typing-extensions = ">=4.6.0"
[package.extras]
@@ -3862,15 +3865,15 @@ pymysql = ["pymysql"]
sqlcipher = ["sqlcipher3_binary"]
[[package]]
+name = "stack-data"
+version = "0.6.3"
description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
files = [
{file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
{file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
]
-name = "stack-data"
-optional = false
-python-versions = "*"
-version = "0.6.3"
[package.dependencies]
asttokens = ">=2.1.0"
@@ -3881,47 +3884,47 @@ pure-eval = "*"
tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
[[package]]
+name = "sympy"
+version = "1.12"
description = "Computer algebra system (CAS) in Python"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"},
{file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"},
]
-name = "sympy"
-optional = false
-python-versions = ">=3.8"
-version = "1.12"
[package.dependencies]
mpmath = ">=0.19"
[[package]]
+name = "tenacity"
+version = "8.2.3"
description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
{file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
]
-name = "tenacity"
-optional = false
-python-versions = ">=3.7"
-version = "8.2.3"
[package.extras]
doc = ["reno", "sphinx", "tornado (>=4.5)"]
[[package]]
+name = "terminado"
+version = "0.18.0"
description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
{file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
]
-name = "terminado"
-optional = false
-python-versions = ">=3.8"
-version = "0.18.0"
[package.dependencies]
-ptyprocess = {markers = "os_name != \"nt\"", version = "*"}
-pywinpty = {markers = "os_name == \"nt\"", version = ">=1.1.0"}
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
tornado = ">=6.1.0"
[package.extras]
@@ -3930,7 +3933,11 @@ test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
[[package]]
+name = "tiktoken"
+version = "0.5.2"
description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "tiktoken-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c4e654282ef05ec1bd06ead22141a9a1687991cef2c6a81bdd1284301abc71d"},
{file = "tiktoken-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b3134aa24319f42c27718c6967f3c1916a38a715a0fa73d33717ba121231307"},
@@ -3969,10 +3976,6 @@ files = [
{file = "tiktoken-0.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:84ddb36faedb448a50b246e13d1b6ee3437f60b7169b723a4b2abad75e914f3e"},
{file = "tiktoken-0.5.2.tar.gz", hash = "sha256:f54c581f134a8ea96ce2023ab221d4d4d81ab614efa0b2fbce926387deb56c80"},
]
-name = "tiktoken"
-optional = false
-python-versions = ">=3.8"
-version = "0.5.2"
[package.dependencies]
regex = ">=2022.1.18"
@@ -3982,15 +3985,15 @@ requests = ">=2.26.0"
blobfile = ["blobfile (>=2)"]
[[package]]
+name = "tinycss2"
+version = "1.2.1"
description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
{file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
]
-name = "tinycss2"
-optional = false
-python-versions = ">=3.7"
-version = "1.2.1"
[package.dependencies]
webencodings = ">=0.4"
@@ -4000,93 +4003,145 @@ doc = ["sphinx", "sphinx_rtd_theme"]
test = ["flake8", "isort", "pytest"]
[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
{file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
]
-name = "tokenize-rt"
-optional = false
-python-versions = ">=3.8"
-version = "5.2.0"
[[package]]
+name = "tomli"
+version = "2.0.1"
description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
-name = "tomli"
-optional = false
-python-versions = ">=3.7"
-version = "2.0.1"
[[package]]
+name = "tomlkit"
+version = "0.12.3"
description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
{file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
]
-name = "tomlkit"
-optional = false
-python-versions = ">=3.7"
-version = "0.12.3"
[[package]]
-description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
-files = [
- {file = "torch-2.1.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:3a871edd6c02dae77ad810335c0833391c1a4ce49af21ea8cf0f6a5d2096eea8"},
- {file = "torch-2.1.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:bef6996c27d8f6e92ea4e13a772d89611da0e103b48790de78131e308cf73076"},
- {file = "torch-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:0e13034fd5fb323cbbc29e56d0637a3791e50dd589616f40c79adfa36a5a35a1"},
- {file = "torch-2.1.2-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:d9b535cad0df3d13997dbe8bd68ac33e0e3ae5377639c9881948e40794a61403"},
- {file = "torch-2.1.2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f9a55d55af02826ebfbadf4e9b682f0f27766bc33df8236b48d28d705587868f"},
- {file = "torch-2.1.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:a6ebbe517097ef289cc7952783588c72de071d4b15ce0f8b285093f0916b1162"},
- {file = "torch-2.1.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:8f32ce591616a30304f37a7d5ea80b69ca9e1b94bba7f308184bf616fdaea155"},
- {file = "torch-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e0ee6cf90c8970e05760f898d58f9ac65821c37ffe8b04269ec787aa70962b69"},
- {file = "torch-2.1.2-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:76d37967c31c99548ad2c4d3f2cf191db48476f2e69b35a0937137116da356a1"},
- {file = "torch-2.1.2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:e2d83f07b4aac983453ea5bf8f9aa9dacf2278a8d31247f5d9037f37befc60e4"},
- {file = "torch-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:f41fe0c7ecbf903a568c73486139a75cfab287a0f6c17ed0698fdea7a1e8641d"},
- {file = "torch-2.1.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e3225f47d50bb66f756fe9196a768055d1c26b02154eb1f770ce47a2578d3aa7"},
- {file = "torch-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33d59cd03cb60106857f6c26b36457793637512998666ee3ce17311f217afe2b"},
- {file = "torch-2.1.2-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:8e221deccd0def6c2badff6be403e0c53491805ed9915e2c029adbcdb87ab6b5"},
- {file = "torch-2.1.2-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:05b18594f60a911a0c4f023f38a8bda77131fba5fd741bda626e97dcf5a3dd0a"},
- {file = "torch-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:9ca96253b761e9aaf8e06fb30a66ee301aecbf15bb5a303097de1969077620b6"},
- {file = "torch-2.1.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d93ba70f67b08c2ae5598ee711cbc546a1bc8102cef938904b8c85c2089a51a0"},
- {file = "torch-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:255b50bc0608db177e6a3cc118961d77de7e5105f07816585fa6f191f33a9ff3"},
- {file = "torch-2.1.2-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:6984cd5057c0c977b3c9757254e989d3f1124f4ce9d07caa6cb637783c71d42a"},
- {file = "torch-2.1.2-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:bc195d7927feabc0eb7c110e457c955ed2ab616f3c7c28439dd4188cf589699f"},
-]
name = "torch"
+version = "2.2.0"
+description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
-version = "2.1.2"
+files = [
+ {file = "torch-2.2.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:d366158d6503a3447e67f8c0ad1328d54e6c181d88572d688a625fac61b13a97"},
+ {file = "torch-2.2.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:707f2f80402981e9f90d0038d7d481678586251e6642a7a6ef67fc93511cb446"},
+ {file = "torch-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:15c8f0a105c66b28496092fca1520346082e734095f8eaf47b5786bac24b8a31"},
+ {file = "torch-2.2.0-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:0ca4df4b728515ad009b79f5107b00bcb2c63dc202d991412b9eb3b6a4f24349"},
+ {file = "torch-2.2.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:3d3eea2d5969b9a1c9401429ca79efc668120314d443d3463edc3289d7f003c7"},
+ {file = "torch-2.2.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:0d1c580e379c0d48f0f0a08ea28d8e373295aa254de4f9ad0631f9ed8bc04c24"},
+ {file = "torch-2.2.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9328e3c1ce628a281d2707526b4d1080eae7c4afab4f81cea75bde1f9441dc78"},
+ {file = "torch-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:03c8e660907ac1b8ee07f6d929c4e15cd95be2fb764368799cca02c725a212b8"},
+ {file = "torch-2.2.0-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:da0cefe7f84ece3e3b56c11c773b59d1cb2c0fd83ddf6b5f7f1fd1a987b15c3e"},
+ {file = "torch-2.2.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:f81d23227034221a4a4ff8ef24cc6cec7901edd98d9e64e32822778ff01be85e"},
+ {file = "torch-2.2.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:dcbfb2192ac41ca93c756ebe9e2af29df0a4c14ee0e7a0dd78f82c67a63d91d4"},
+ {file = "torch-2.2.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:9eeb42971619e24392c9088b5b6d387d896e267889d41d267b1fec334f5227c5"},
+ {file = "torch-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:c718b2ca69a6cac28baa36d86d8c0ec708b102cebd1ceb1b6488e404cd9be1d1"},
+ {file = "torch-2.2.0-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:f11d18fceb4f9ecb1ac680dde7c463c120ed29056225d75469c19637e9f98d12"},
+ {file = "torch-2.2.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:ee1da852bfd4a7e674135a446d6074c2da7194c1b08549e31eae0b3138c6b4d2"},
+ {file = "torch-2.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0d819399819d0862268ac531cf12a501c253007df4f9e6709ede8a0148f1a7b8"},
+ {file = "torch-2.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:08f53ccc38c49d839bc703ea1b20769cc8a429e0c4b20b56921a9f64949bf325"},
+ {file = "torch-2.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:93bffe3779965a71dab25fc29787538c37c5d54298fd2f2369e372b6fb137d41"},
+ {file = "torch-2.2.0-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:c17ec323da778efe8dad49d8fb534381479ca37af1bfc58efdbb8607a9d263a3"},
+ {file = "torch-2.2.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c02685118008834e878f676f81eab3a952b7936fa31f474ef8a5ff4b5c78b36d"},
+ {file = "torch-2.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d9f39d6f53cec240a0e3baa82cb697593340f9d4554cee6d3d6ca07925c2fac0"},
+ {file = "torch-2.2.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:51770c065206250dc1222ea7c0eff3f88ab317d3e931cca2aee461b85fbc2472"},
+ {file = "torch-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:008e4c6ad703de55af760c73bf937ecdd61a109f9b08f2bbb9c17e7c7017f194"},
+ {file = "torch-2.2.0-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:de8680472dd14e316f42ceef2a18a301461a9058cd6e99a1f1b20f78f11412f1"},
+ {file = "torch-2.2.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:99e1dcecb488e3fd25bcaac56e48cdb3539842904bdc8588b0b255fde03a254c"},
+]
[package.dependencies]
filelock = "*"
fsspec = "*"
jinja2 = "*"
networkx = "*"
-nvidia-cublas-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "12.1.3.1"}
-nvidia-cuda-cupti-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "12.1.105"}
-nvidia-cuda-nvrtc-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "12.1.105"}
-nvidia-cuda-runtime-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "12.1.105"}
-nvidia-cudnn-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "8.9.2.26"}
-nvidia-cufft-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "11.0.2.54"}
-nvidia-curand-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "10.3.2.106"}
-nvidia-cusolver-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "11.4.5.107"}
-nvidia-cusparse-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "12.1.0.106"}
-nvidia-nccl-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "2.18.1"}
-nvidia-nvtx-cu12 = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "12.1.105"}
+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-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.19.3", 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\""}
sympy = "*"
-triton = {markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\"", version = "2.1.0"}
-typing-extensions = "*"
+triton = {version = "2.2.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+typing-extensions = ">=4.8.0"
[package.extras]
-dynamo = ["jinja2"]
opt-einsum = ["opt-einsum (>=3.3)"]
+optree = ["optree (>=0.9.1)"]
+
+[[package]]
+name = "torchvision"
+version = "0.17.0"
+description = "image and video datasets and models for torch deep learning"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "torchvision-0.17.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:153882cd8ff8e3dbef5c5054fdd15df64e85420546805a90c0b2221f2f119c4a"},
+ {file = "torchvision-0.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c55c2f86e3f3a21ddd92739a972366244e9b17916e836ec47167b0a0c083c65f"},
+ {file = "torchvision-0.17.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:605950cdcefe6c5aef85709ade17b1525bcf171e122cce1df09e666d96525b90"},
+ {file = "torchvision-0.17.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:3d86c212fc6379e9bec3ac647d062e34c2cf36c26b98840b66573eb9fbe1f1d9"},
+ {file = "torchvision-0.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:71b314813faf13cecb09a4a635b5e4b274e8df0b1921681038d491c529555bb6"},
+ {file = "torchvision-0.17.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:10d276821f115fb369e6cf1f1b77b2cca60cda12cbb39a41513a9d3d0f2a93ae"},
+ {file = "torchvision-0.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3eef2daddadb5c21e802e0550dd7e3ee3d98c430f4aed212ae3ba0358558be1"},
+ {file = "torchvision-0.17.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:acc0d098ab8c295a750f0218bf5bf7bfc2f2c21f9c2fe3fc30b695cd94f4c759"},
+ {file = "torchvision-0.17.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:3d2e9552d72e4037f2db6f7d97989a2e2f95763aa1861963a3faf521bb1610c4"},
+ {file = "torchvision-0.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:f8e542cf71e1294fcb5635038eae6702df543dc90706f0836ec80e75efc511fc"},
+ {file = "torchvision-0.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:816ae1a4506b1cb0f638e1827cae7ab768c731369ab23e86839f177926197143"},
+ {file = "torchvision-0.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be39874c239215a39b3c431c7016501f1a45bfbbebf2fe8e11d8339b5ea23bca"},
+ {file = "torchvision-0.17.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:8fe14d580557aef2c45dd462c069ff936b6507b215c4b496f30973ae8cff917d"},
+ {file = "torchvision-0.17.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:4608ba3246c45c968ede40e7640e4eed64556210faa154cf1ffccb1cadabe445"},
+ {file = "torchvision-0.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:b755d6d3e021239d2408bf3794d0d3dcffbc629f1fd808c43d8b346045a098c4"},
+ {file = "torchvision-0.17.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:870d7cda57420e44d20eb07bfe37bf5344a06434a7a6195b4c7f3dd55838587d"},
+ {file = "torchvision-0.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:477f6e64a9d798c0f5adefc300acc220da6f17ef5c1e110d20108f66554fee4d"},
+ {file = "torchvision-0.17.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a54a15bd6f3dbb04ebd36c5a87530b2e090ee4b9b15eb89eda558ab3e50396a0"},
+ {file = "torchvision-0.17.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e041ce3336364413bab051a3966d884bab25c200f98ca8a065f0abe758c3005e"},
+ {file = "torchvision-0.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:7887f767670c72aa20f5237042d0ca1462da18f66a3ea8c36b6ba67ce26b82fc"},
+ {file = "torchvision-0.17.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b1ced438b81ef662a71c8c81debaf0c80455b35b811ca55a4c3c593d721b560a"},
+ {file = "torchvision-0.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b53569c52bd4bd1176a1e49d8ea55883bcf57e1614cb97e2e8ce372768299b70"},
+ {file = "torchvision-0.17.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7f373507afcd9022ebd9f50b31da8dbac1ea6783ffb77d1f1ab8806425c0a83b"},
+ {file = "torchvision-0.17.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:085251ab36340206dc7e1be59a15fa5e307d45ccd66889f5d7bf1ba5e7ecdc57"},
+ {file = "torchvision-0.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4c0d4c0af58af2752aad235150bd794d0f324e6eeac5cd13c440bda5dce622d3"},
+]
+
+[package.dependencies]
+numpy = "*"
+pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0"
+requests = "*"
+torch = "2.2.0"
+
+[package.extras]
+scipy = ["scipy"]
[[package]]
+name = "tornado"
+version = "6.4"
description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
files = [
{file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
{file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
@@ -4100,24 +4155,20 @@ files = [
{file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
{file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
]
-name = "tornado"
-optional = false
-python-versions = ">= 3.8"
-version = "6.4"
[[package]]
+name = "tqdm"
+version = "4.66.1"
description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"},
{file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"},
]
-name = "tqdm"
-optional = false
-python-versions = ">=3.7"
-version = "4.66.1"
[package.dependencies]
-colorama = {markers = "platform_system == \"Windows\"", version = "*"}
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
[package.extras]
dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
@@ -4126,22 +4177,26 @@ slack = ["slack-sdk"]
telegram = ["requests"]
[[package]]
+name = "traitlets"
+version = "5.14.1"
description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
{file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
]
-name = "traitlets"
-optional = false
-python-versions = ">=3.8"
-version = "5.14.1"
[package.extras]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
[[package]]
+name = "tree-sitter"
+version = "0.20.4"
description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
files = [
{file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
{file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
@@ -4220,13 +4275,13 @@ files = [
{file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
{file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
]
-name = "tree-sitter"
-optional = false
-python-versions = ">=3.3"
-version = "0.20.4"
[[package]]
+name = "tree-sitter-languages"
+version = "1.9.1"
description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
files = [
{file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5dee458cf1bd1e725470949124e24db842dc789039ea7ff5ba46b338e5f0dc60"},
{file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81921135fa15469586b1528088f78553e60a900d3045f4f37021ad3836219216"},
@@ -4297,223 +4352,217 @@ files = [
{file = "tree_sitter_languages-1.9.1-cp39-cp39-win32.whl", hash = "sha256:155483058dc11de302f47922d31feec5e1bb9888e661aed7be0dad6f70bfe691"},
{file = "tree_sitter_languages-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:5335405a937f788a2608d1b25c654461dddddbc6a1341672c833d2c8943397a8"},
]
-name = "tree-sitter-languages"
-optional = false
-python-versions = "*"
-version = "1.9.1"
[package.dependencies]
tree-sitter = "*"
[[package]]
-description = "A language and compiler for custom Deep Learning operations"
-files = [
- {file = "triton-2.1.0-0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:66439923a30d5d48399b08a9eae10370f6c261a5ec864a64983bae63152d39d7"},
- {file = "triton-2.1.0-0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:919b06453f0033ea52c13eaf7833de0e57db3178d23d4e04f9fc71c4f2c32bf8"},
- {file = "triton-2.1.0-0-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae4bb8a91de790e1866405211c4d618379781188f40d5c4c399766914e84cd94"},
- {file = "triton-2.1.0-0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39f6fb6bdccb3e98f3152e3fbea724f1aeae7d749412bbb1fa9c441d474eba26"},
- {file = "triton-2.1.0-0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21544e522c02005a626c8ad63d39bdff2f31d41069592919ef281e964ed26446"},
- {file = "triton-2.1.0-0-pp37-pypy37_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:143582ca31dd89cd982bd3bf53666bab1c7527d41e185f9e3d8a3051ce1b663b"},
- {file = "triton-2.1.0-0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82fc5aeeedf6e36be4e4530cbdcba81a09d65c18e02f52dc298696d45721f3bd"},
- {file = "triton-2.1.0-0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:81a96d110a738ff63339fc892ded095b31bd0d205e3aace262af8400d40b6fa8"},
-]
name = "triton"
+version = "2.2.0"
+description = "A language and compiler for custom Deep Learning operations"
optional = false
python-versions = "*"
-version = "2.1.0"
+files = [
+ {file = "triton-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2294514340cfe4e8f4f9e5c66c702744c4a117d25e618bd08469d0bfed1e2e5"},
+ {file = "triton-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da58a152bddb62cafa9a857dd2bc1f886dbf9f9c90a2b5da82157cd2b34392b0"},
+ {file = "triton-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af58716e721460a61886668b205963dc4d1e4ac20508cc3f623aef0d70283d5"},
+ {file = "triton-2.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8fe46d3ab94a8103e291bd44c741cc294b91d1d81c1a2888254cbf7ff846dab"},
+ {file = "triton-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ce26093e539d727e7cf6f6f0d932b1ab0574dc02567e684377630d86723ace"},
+ {file = "triton-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:227cc6f357c5efcb357f3867ac2a8e7ecea2298cd4606a8ba1e931d1d5a947df"},
+]
[package.dependencies]
filelock = "*"
[package.extras]
-build = ["cmake (>=3.18)", "lit"]
-tests = ["autopep8", "flake8", "isort", "numpy", "pytest", "scipy (>=1.7.1)"]
-tutorials = ["matplotlib", "pandas", "tabulate"]
+build = ["cmake (>=3.20)", "lit"]
+tests = ["autopep8", "flake8", "isort", "numpy", "pytest", "scipy (>=1.7.1)", "torch"]
+tutorials = ["matplotlib", "pandas", "tabulate", "torch"]
[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
{file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
]
-name = "types-deprecated"
-optional = false
-python-versions = ">=3.8"
-version = "1.2.9.20240106"
[[package]]
+name = "types-docutils"
+version = "0.20.0.20240106"
description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-docutils-0.20.0.20240106.tar.gz", hash = "sha256:03992ec976fbe080db588e1e56a83c5e4aba5c733022b25bb26cb84397b96049"},
{file = "types_docutils-0.20.0.20240106-py3-none-any.whl", hash = "sha256:d408f9305761905b157ea3cb80f53d4026bce7d4cc47312939118715467d0278"},
]
-name = "types-docutils"
-optional = false
-python-versions = ">=3.8"
-version = "0.20.0.20240106"
[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240106"
description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-protobuf-4.24.0.20240106.tar.gz", hash = "sha256:024f034f3b5e2bb2bbff55ebc4d591ed0d2280d90faceedcb148b9e714a3f3ee"},
{file = "types_protobuf-4.24.0.20240106-py3-none-any.whl", hash = "sha256:0612ef3156bd80567460a15ac7c109b313f6022f1fee04b4d922ab2789baab79"},
]
-name = "types-protobuf"
-optional = false
-python-versions = ">=3.8"
-version = "4.24.0.20240106"
[[package]]
+name = "types-pyopenssl"
+version = "23.3.0.20240106"
description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-pyOpenSSL-23.3.0.20240106.tar.gz", hash = "sha256:3d6f3462bec0c260caadf93fbb377225c126661b779c7d9ab99b6dad5ca10db9"},
{file = "types_pyOpenSSL-23.3.0.20240106-py3-none-any.whl", hash = "sha256:47a7eedbd18b7bcad17efebf1c53416148f5a173918a6d75027e75e32fe039ae"},
]
-name = "types-pyopenssl"
-optional = false
-python-versions = ">=3.8"
-version = "23.3.0.20240106"
[package.dependencies]
cryptography = ">=35.0.0"
[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
{file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
]
-name = "types-python-dateutil"
-optional = false
-python-versions = ">=3.8"
-version = "2.8.19.20240106"
[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
files = [
{file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
{file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
]
-name = "types-pyyaml"
-optional = false
-python-versions = "*"
-version = "6.0.12.12"
[[package]]
+name = "types-redis"
+version = "4.5.5.0"
description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
files = [
{file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
{file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
]
-name = "types-redis"
-optional = false
-python-versions = "*"
-version = "4.5.5.0"
[package.dependencies]
cryptography = ">=35.0.0"
types-pyOpenSSL = "*"
[[package]]
+name = "types-requests"
+version = "2.28.11.8"
description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
files = [
{file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
{file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
]
-name = "types-requests"
-optional = false
-python-versions = "*"
-version = "2.28.11.8"
[package.dependencies]
types-urllib3 = "<1.27"
[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
files = [
{file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
{file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
]
-name = "types-setuptools"
-optional = false
-python-versions = "*"
-version = "67.1.0.0"
[package.dependencies]
types-docutils = "*"
[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
files = [
{file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
{file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
]
-name = "types-urllib3"
-optional = false
-python-versions = "*"
-version = "1.26.25.14"
[[package]]
+name = "typing-extensions"
+version = "4.9.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
{file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
]
-name = "typing-extensions"
-optional = false
-python-versions = ">=3.8"
-version = "4.9.0"
[[package]]
+name = "typing-inspect"
+version = "0.9.0"
description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
files = [
{file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
{file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
]
-name = "typing-inspect"
-optional = false
-python-versions = "*"
-version = "0.9.0"
[package.dependencies]
mypy-extensions = ">=0.3.0"
typing-extensions = ">=3.7.4"
[[package]]
+name = "tzdata"
+version = "2023.4"
description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
files = [
{file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"},
{file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"},
]
-name = "tzdata"
-optional = false
-python-versions = ">=2"
-version = "2023.4"
[[package]]
+name = "uri-template"
+version = "1.3.0"
description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
{file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
]
-name = "uri-template"
-optional = false
-python-versions = ">=3.7"
-version = "1.3.0"
[package.extras]
dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
[[package]]
+name = "urllib3"
+version = "2.1.0"
description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
files = [
{file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"},
{file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"},
]
-name = "urllib3"
-optional = false
-python-versions = ">=3.8"
-version = "2.1.0"
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
@@ -4521,15 +4570,15 @@ socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
[[package]]
+name = "virtualenv"
+version = "20.25.0"
description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
{file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
]
-name = "virtualenv"
-optional = false
-python-versions = ">=3.7"
-version = "20.25.0"
[package.dependencies]
distlib = ">=0.3.7,<1"
@@ -4541,52 +4590,52 @@ docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-
test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
[[package]]
+name = "wcwidth"
+version = "0.2.13"
description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
files = [
{file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
{file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
]
-name = "wcwidth"
-optional = false
-python-versions = "*"
-version = "0.2.13"
[[package]]
+name = "webcolors"
+version = "1.13"
description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
files = [
{file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
{file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
]
-name = "webcolors"
-optional = false
-python-versions = ">=3.7"
-version = "1.13"
[package.extras]
docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
tests = ["pytest", "pytest-cov"]
[[package]]
+name = "webencodings"
+version = "0.5.1"
description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
files = [
{file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
{file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
]
-name = "webencodings"
-optional = false
-python-versions = "*"
-version = "0.5.1"
[[package]]
+name = "websocket-client"
+version = "1.7.0"
description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
{file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
]
-name = "websocket-client"
-optional = false
-python-versions = ">=3.8"
-version = "1.7.0"
[package.extras]
docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
@@ -4594,18 +4643,22 @@ optional = ["python-socks", "wsaccel"]
test = ["websockets"]
[[package]]
+name = "widgetsnbextension"
+version = "4.0.9"
description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
files = [
{file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"},
{file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"},
]
-name = "widgetsnbextension"
-optional = false
-python-versions = ">=3.7"
-version = "4.0.9"
[[package]]
+name = "wrapt"
+version = "1.16.0"
description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
files = [
{file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
{file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
@@ -4678,13 +4731,13 @@ files = [
{file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
{file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
]
-name = "wrapt"
-optional = false
-python-versions = ">=3.6"
-version = "1.16.0"
[[package]]
+name = "yarl"
+version = "1.9.4"
description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
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"},
@@ -4777,26 +4830,27 @@ files = [
{file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"},
{file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"},
]
-name = "yarl"
-optional = false
-python-versions = ">=3.7"
-version = "1.9.4"
[package.dependencies]
idna = ">=2.0"
multidict = ">=4.0"
[[package]]
+name = "zipp"
+version = "3.17.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
files = [
{file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
{file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
]
-name = "zipp"
-optional = false
-python-versions = ">=3.8"
-version = "3.17.0"
[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "e2bd79c371ca89fac9c2d487015226085d5b67eef7e86941360f8f7b809dec2c"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml
index 76bc6a1227dcb..9a1359112fd90 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml
@@ -24,14 +24,15 @@ description = "llama-index embeddings clip integration"
license = "MIT"
name = "llama-index-embeddings-clip"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
llama-index-core = "^0.10.1"
-clip = "^0.2.0"
torch = "^2.1.2"
pillow = "^10.2.0"
+torchvision = "^0.17.0"
+ftfy = "^6.1.3"
[tool.poetry.group.dev.dependencies]
ipython = "8.10.0"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/.gitignore b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/.gitignore
new file mode 100644
index 0000000000000..990c18de22908
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/.gitignore
@@ -0,0 +1,153 @@
+llama_index/_static
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+bin/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+etc/
+include/
+lib/
+lib64/
+parts/
+sdist/
+share/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+.ruff_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+notebooks/
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pyvenv.cfg
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# Jetbrains
+.idea
+modules/
+*.swp
+
+# VsCode
+.vscode
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# pyright
+pyrightconfig.json
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/BUILD b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/BUILD
new file mode 100644
index 0000000000000..0896ca890d8bf
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/BUILD
@@ -0,0 +1,3 @@
+poetry_requirements(
+ name="poetry",
+)
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/Makefile b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/README.md b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/README.md
new file mode 100644
index 0000000000000..31b97d6460804
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/README.md
@@ -0,0 +1 @@
+# LlamaIndex Embeddings Integration: Huggingface Optimum Intel
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/BUILD b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/__init__.py b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/__init__.py
new file mode 100644
index 0000000000000..0be24545adf9f
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/__init__.py
@@ -0,0 +1,3 @@
+from llama_index.embeddings.huggingface_optimum_intel.base import IntelEmbedding
+
+__all__ = ["IntelEmbedding"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/base.py
new file mode 100644
index 0000000000000..719a559e5a870
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/llama_index/embeddings/huggingface_optimum_intel/base.py
@@ -0,0 +1,156 @@
+from typing import Any, List, Optional
+
+from llama_index.core.base.embeddings.base import (
+ DEFAULT_EMBED_BATCH_SIZE,
+ BaseEmbedding,
+)
+from llama_index.core.bridge.pydantic import Field, PrivateAttr
+from llama_index.core.callbacks import CallbackManager
+from llama_index.core.utils import infer_torch_device
+from llama_index.embeddings.huggingface.utils import format_query, format_text
+from transformers import AutoTokenizer
+
+
+class IntelEmbedding(BaseEmbedding):
+ folder_name: str = Field(description="Folder name to load from.")
+ max_length: int = Field(description="Maximum length of input.")
+ pooling: str = Field(description="Pooling strategy. One of ['cls', 'mean'].")
+ normalize: str = Field(default=True, description="Normalize embeddings or not.")
+ query_instruction: Optional[str] = Field(
+ description="Instruction to prepend to query text."
+ )
+ text_instruction: Optional[str] = Field(
+ description="Instruction to prepend to text."
+ )
+ cache_folder: Optional[str] = Field(
+ description="Cache folder for huggingface files."
+ )
+
+ _model: Any = PrivateAttr()
+ _tokenizer: Any = PrivateAttr()
+ _device: Any = PrivateAttr()
+
+ def __init__(
+ self,
+ folder_name: str,
+ pooling: str = "cls",
+ max_length: Optional[int] = None,
+ normalize: bool = True,
+ query_instruction: Optional[str] = None,
+ text_instruction: Optional[str] = None,
+ model: Optional[Any] = None,
+ tokenizer: Optional[Any] = None,
+ embed_batch_size: int = DEFAULT_EMBED_BATCH_SIZE,
+ callback_manager: Optional[CallbackManager] = None,
+ device: Optional[str] = None,
+ ):
+ try:
+ from optimum.intel import INCModel
+ except ImportError:
+ raise ImportError(
+ "Optimum-Intel requires the following dependencies; please install with "
+ "`pip install optimum[exporters] optimum-intel neural-compressor`."
+ )
+
+ self._model = model or INCModel.from_pretrained(folder_name)
+ self._tokenizer = tokenizer or AutoTokenizer.from_pretrained(folder_name)
+ self._device = device or infer_torch_device()
+
+ if max_length is None:
+ try:
+ max_length = int(self._model.config.max_position_embeddings)
+ except Exception:
+ raise ValueError(
+ "Unable to find max_length from model config. "
+ "Please provide max_length."
+ )
+
+ if pooling not in ["cls", "mean"]:
+ raise ValueError(f"Pooling {pooling} not supported.")
+
+ super().__init__(
+ embed_batch_size=embed_batch_size,
+ callback_manager=callback_manager,
+ folder_name=folder_name,
+ max_length=max_length,
+ pooling=pooling,
+ normalize=normalize,
+ query_instruction=query_instruction,
+ text_instruction=text_instruction,
+ )
+
+ @classmethod
+ def class_name(cls) -> str:
+ return "IntelEmbedding"
+
+ def _mean_pooling(self, model_output: Any, attention_mask: Any) -> Any:
+ """Mean Pooling - Take attention mask into account for correct averaging."""
+ import torch
+
+ # First element of model_output contains all token embeddings
+ token_embeddings = model_output[0]
+ input_mask_expanded = (
+ attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
+ )
+ return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(
+ input_mask_expanded.sum(1), min=1e-9
+ )
+
+ def _cls_pooling(self, model_output: list) -> Any:
+ """Use the CLS token as the pooling token."""
+ if isinstance(model_output, dict):
+ token_embeddings = model_output["last_hidden_state"]
+ else:
+ token_embeddings = model_output[0]
+ return token_embeddings[:, 0]
+
+ def _embed(self, sentences: List[str]) -> List[List[float]]:
+ """Embed sentences."""
+ encoded_input = self._tokenizer(
+ sentences,
+ padding=True,
+ max_length=self.max_length,
+ truncation=True,
+ return_tensors="pt",
+ )
+ import torch
+
+ with torch.inference_mode(), torch.cpu.amp.autocast():
+ model_output = self._model(**encoded_input)
+
+ if self.pooling == "cls":
+ embeddings = self._cls_pooling(model_output)
+ else:
+ embeddings = self._mean_pooling(
+ model_output, encoded_input["attention_mask"].to(self._device)
+ )
+
+ if self.normalize:
+ embeddings = torch.nn.functional.normalize(embeddings, p=2, dim=1)
+
+ return embeddings.tolist()
+
+ def _get_query_embedding(self, query: str) -> List[float]:
+ """Get query embedding."""
+ query = format_query(query, self.model_name, self.query_instruction)
+ return self._embed([query])[0]
+
+ async def _aget_query_embedding(self, query: str) -> List[float]:
+ """Get query embedding async."""
+ return self._get_query_embedding(query)
+
+ async def _aget_text_embedding(self, text: str) -> List[float]:
+ """Get text embedding async."""
+ return self._get_text_embedding(text)
+
+ def _get_text_embedding(self, text: str) -> List[float]:
+ """Get text embedding."""
+ text = format_text(text, self.model_name, self.text_instruction)
+ return self._embed([text])[0]
+
+ def _get_text_embeddings(self, texts: List[str]) -> List[List[float]]:
+ """Get text embeddings."""
+ texts = [
+ format_text(text, self.model_name, self.text_instruction) for text in texts
+ ]
+ return self._embed(texts)
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/poetry.lock b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/poetry.lock
new file mode 100644
index 0000000000000..05ebe38edbc5a
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/poetry.lock
@@ -0,0 +1,6514 @@
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+
+[[package]]
+name = "accelerate"
+version = "0.27.2"
+description = "Accelerate"
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "accelerate-0.27.2-py3-none-any.whl", hash = "sha256:a818dd27b9ba24e9eb5030d1b285cf4cdd1b41bbfa675fb4eb2477ddfc097074"},
+ {file = "accelerate-0.27.2.tar.gz", hash = "sha256:cc715fe9a8bc7a286259bfb6d65fb78363badd3371e7cbda4e4a4ef34a0010aa"},
+]
+
+[package.dependencies]
+huggingface-hub = "*"
+numpy = ">=1.17"
+packaging = ">=20.0"
+psutil = "*"
+pyyaml = "*"
+safetensors = ">=0.3.1"
+torch = ">=1.10.0"
+
+[package.extras]
+dev = ["bitsandbytes", "black (>=23.1,<24.0)", "datasets", "deepspeed (<0.13.0)", "evaluate", "hf-doc-builder (>=0.3.0)", "parameterized", "pytest", "pytest-subtests", "pytest-xdist", "rich", "ruff (>=0.1.15,<0.2.0)", "scikit-learn", "scipy", "timm", "torchpippy (>=0.2.0)", "tqdm", "transformers"]
+quality = ["black (>=23.1,<24.0)", "hf-doc-builder (>=0.3.0)", "ruff (>=0.1.15,<0.2.0)"]
+rich = ["rich"]
+sagemaker = ["sagemaker"]
+test-dev = ["bitsandbytes", "datasets", "deepspeed (<0.13.0)", "evaluate", "scikit-learn", "scipy", "timm", "torchpippy (>=0.2.0)", "tqdm", "transformers"]
+test-prod = ["parameterized", "pytest", "pytest-subtests", "pytest-xdist"]
+test-trackers = ["comet-ml", "dvclive", "tensorboard", "wandb"]
+testing = ["bitsandbytes", "datasets", "deepspeed (<0.13.0)", "evaluate", "parameterized", "pytest", "pytest-subtests", "pytest-xdist", "scikit-learn", "scipy", "timm", "torchpippy (>=0.2.0)", "tqdm", "transformers"]
+
+[[package]]
+name = "aiohttp"
+version = "3.9.1"
+description = "Async http client/server framework (asyncio)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590"},
+ {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0"},
+ {file = "aiohttp-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83"},
+ {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5"},
+ {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4"},
+ {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f"},
+ {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f"},
+ {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6"},
+ {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f"},
+ {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26"},
+ {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4"},
+ {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d"},
+ {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501"},
+ {file = "aiohttp-3.9.1-cp310-cp310-win32.whl", hash = "sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489"},
+ {file = "aiohttp-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23"},
+ {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d"},
+ {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e"},
+ {file = "aiohttp-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0"},
+ {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35"},
+ {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff"},
+ {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87"},
+ {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d"},
+ {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01"},
+ {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3"},
+ {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449"},
+ {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2"},
+ {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd"},
+ {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a"},
+ {file = "aiohttp-3.9.1-cp311-cp311-win32.whl", hash = "sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544"},
+ {file = "aiohttp-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587"},
+ {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065"},
+ {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821"},
+ {file = "aiohttp-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af"},
+ {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57"},
+ {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5"},
+ {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb"},
+ {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c"},
+ {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66"},
+ {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe"},
+ {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183"},
+ {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b"},
+ {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f"},
+ {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f"},
+ {file = "aiohttp-3.9.1-cp312-cp312-win32.whl", hash = "sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed"},
+ {file = "aiohttp-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213"},
+ {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70"},
+ {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672"},
+ {file = "aiohttp-3.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1"},
+ {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd"},
+ {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690"},
+ {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca"},
+ {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361"},
+ {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28"},
+ {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014"},
+ {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431"},
+ {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd"},
+ {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a"},
+ {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8"},
+ {file = "aiohttp-3.9.1-cp38-cp38-win32.whl", hash = "sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4"},
+ {file = "aiohttp-3.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7"},
+ {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766"},
+ {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0"},
+ {file = "aiohttp-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558"},
+ {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636"},
+ {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499"},
+ {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4"},
+ {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f"},
+ {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a"},
+ {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e"},
+ {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5"},
+ {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0"},
+ {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f"},
+ {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c"},
+ {file = "aiohttp-3.9.1-cp39-cp39-win32.whl", hash = "sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7"},
+ {file = "aiohttp-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf"},
+ {file = "aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "annotated-types"
+version = "0.6.0"
+description = "Reusable constraint types to use with typing.Annotated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
+ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+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)"]
+
+[[package]]
+name = "appnope"
+version = "0.1.3"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = "*"
+files = [
+ {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
+ {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
+
+[[package]]
+name = "astroid"
+version = "2.13.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
+ {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+wrapt = [
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "attrs"
+version = "23.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"},
+]
+
+[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]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.dependencies]
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "black"
+version = "23.9.1"
+description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+]
+
+[package.dependencies]
+click = ">=8.0.0"
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
+mypy-extensions = ">=0.4.3"
+packaging = ">=22.0"
+pathspec = ">=0.9.0"
+platformdirs = ">=2"
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "certifi"
+version = "2023.11.17"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"},
+ {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+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"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "codespell"
+version = "2.2.6"
+description = "Codespell"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+ {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+]
+
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
+
+[package.extras]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
+hard-encoding-detection = ["chardet"]
+toml = ["tomli"]
+types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "coloredlogs"
+version = "15.0.1"
+description = "Colored terminal output for Python's logging module"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"},
+ {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"},
+]
+
+[package.dependencies]
+humanfriendly = ">=9.1"
+
+[package.extras]
+cron = ["capturer (>=2.4)"]
+
+[[package]]
+name = "comm"
+version = "0.2.1"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
+ {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "contextlib2"
+version = "21.6.0"
+description = "Backports and enhancements for the contextlib module"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "contextlib2-21.6.0-py2.py3-none-any.whl", hash = "sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f"},
+ {file = "contextlib2-21.6.0.tar.gz", hash = "sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"},
+]
+
+[[package]]
+name = "contourpy"
+version = "1.1.1"
+description = "Python library for calculating contours of 2D quadrilateral grids"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "contourpy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b"},
+ {file = "contourpy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d"},
+ {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae"},
+ {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916"},
+ {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0"},
+ {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1"},
+ {file = "contourpy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d"},
+ {file = "contourpy-1.1.1-cp310-cp310-win32.whl", hash = "sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431"},
+ {file = "contourpy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb"},
+ {file = "contourpy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2"},
+ {file = "contourpy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b"},
+ {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b"},
+ {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532"},
+ {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e"},
+ {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5"},
+ {file = "contourpy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62"},
+ {file = "contourpy-1.1.1-cp311-cp311-win32.whl", hash = "sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33"},
+ {file = "contourpy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45"},
+ {file = "contourpy-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a"},
+ {file = "contourpy-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e"},
+ {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442"},
+ {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8"},
+ {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7"},
+ {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf"},
+ {file = "contourpy-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d"},
+ {file = "contourpy-1.1.1-cp312-cp312-win32.whl", hash = "sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6"},
+ {file = "contourpy-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970"},
+ {file = "contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d"},
+ {file = "contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9"},
+ {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217"},
+ {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684"},
+ {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce"},
+ {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8"},
+ {file = "contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251"},
+ {file = "contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7"},
+ {file = "contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9"},
+ {file = "contourpy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba"},
+ {file = "contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34"},
+ {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887"},
+ {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718"},
+ {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f"},
+ {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85"},
+ {file = "contourpy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e"},
+ {file = "contourpy-1.1.1-cp39-cp39-win32.whl", hash = "sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0"},
+ {file = "contourpy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887"},
+ {file = "contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e"},
+ {file = "contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3"},
+ {file = "contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23"},
+ {file = "contourpy-1.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb"},
+ {file = "contourpy-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163"},
+ {file = "contourpy-1.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c"},
+ {file = "contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab"},
+]
+
+[package.dependencies]
+numpy = {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""}
+
+[package.extras]
+bokeh = ["bokeh", "selenium"]
+docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"]
+mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.4.1)", "types-Pillow"]
+test = ["Pillow", "contourpy[test-no-images]", "matplotlib"]
+test-no-images = ["pytest", "pytest-cov", "wurlitzer"]
+
+[[package]]
+name = "cryptography"
+version = "42.0.0"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:c640b0ef54138fde761ec99a6c7dc4ce05e80420262c20fa239e694ca371d434"},
+ {file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:678cfa0d1e72ef41d48993a7be75a76b0725d29b820ff3cfd606a5b2b33fda01"},
+ {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:146e971e92a6dd042214b537a726c9750496128453146ab0ee8971a0299dc9bd"},
+ {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87086eae86a700307b544625e3ba11cc600c3c0ef8ab97b0fda0705d6db3d4e3"},
+ {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0a68bfcf57a6887818307600c3c0ebc3f62fbb6ccad2240aa21887cda1f8df1b"},
+ {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5a217bca51f3b91971400890905a9323ad805838ca3fa1e202a01844f485ee87"},
+ {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ca20550bb590db16223eb9ccc5852335b48b8f597e2f6f0878bbfd9e7314eb17"},
+ {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:33588310b5c886dfb87dba5f013b8d27df7ffd31dc753775342a1e5ab139e59d"},
+ {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9515ea7f596c8092fdc9902627e51b23a75daa2c7815ed5aa8cf4f07469212ec"},
+ {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:35cf6ed4c38f054478a9df14f03c1169bb14bd98f0b1705751079b25e1cb58bc"},
+ {file = "cryptography-42.0.0-cp37-abi3-win32.whl", hash = "sha256:8814722cffcfd1fbd91edd9f3451b88a8f26a5fd41b28c1c9193949d1c689dc4"},
+ {file = "cryptography-42.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:a2a8d873667e4fd2f34aedab02ba500b824692c6542e017075a2efc38f60a4c0"},
+ {file = "cryptography-42.0.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:8fedec73d590fd30c4e3f0d0f4bc961aeca8390c72f3eaa1a0874d180e868ddf"},
+ {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be41b0c7366e5549265adf2145135dca107718fa44b6e418dc7499cfff6b4689"},
+ {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca482ea80626048975360c8e62be3ceb0f11803180b73163acd24bf014133a0"},
+ {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c58115384bdcfe9c7f644c72f10f6f42bed7cf59f7b52fe1bf7ae0a622b3a139"},
+ {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:56ce0c106d5c3fec1038c3cca3d55ac320a5be1b44bf15116732d0bc716979a2"},
+ {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:324721d93b998cb7367f1e6897370644751e5580ff9b370c0a50dc60a2003513"},
+ {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:d97aae66b7de41cdf5b12087b5509e4e9805ed6f562406dfcf60e8481a9a28f8"},
+ {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:85f759ed59ffd1d0baad296e72780aa62ff8a71f94dc1ab340386a1207d0ea81"},
+ {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:206aaf42e031b93f86ad60f9f5d9da1b09164f25488238ac1dc488334eb5e221"},
+ {file = "cryptography-42.0.0-cp39-abi3-win32.whl", hash = "sha256:74f18a4c8ca04134d2052a140322002fef535c99cdbc2a6afc18a8024d5c9d5b"},
+ {file = "cryptography-42.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:14e4b909373bc5bf1095311fa0f7fcabf2d1a160ca13f1e9e467be1ac4cbdf94"},
+ {file = "cryptography-42.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3005166a39b70c8b94455fdbe78d87a444da31ff70de3331cdec2c568cf25b7e"},
+ {file = "cryptography-42.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:be14b31eb3a293fc6e6aa2807c8a3224c71426f7c4e3639ccf1a2f3ffd6df8c3"},
+ {file = "cryptography-42.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bd7cf7a8d9f34cc67220f1195884151426ce616fdc8285df9054bfa10135925f"},
+ {file = "cryptography-42.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c310767268d88803b653fffe6d6f2f17bb9d49ffceb8d70aed50ad45ea49ab08"},
+ {file = "cryptography-42.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bdce70e562c69bb089523e75ef1d9625b7417c6297a76ac27b1b8b1eb51b7d0f"},
+ {file = "cryptography-42.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e9326ca78111e4c645f7e49cbce4ed2f3f85e17b61a563328c85a5208cf34440"},
+ {file = "cryptography-42.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:69fd009a325cad6fbfd5b04c711a4da563c6c4854fc4c9544bff3088387c77c0"},
+ {file = "cryptography-42.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:988b738f56c665366b1e4bfd9045c3efae89ee366ca3839cd5af53eaa1401bce"},
+ {file = "cryptography-42.0.0.tar.gz", hash = "sha256:6cf9b76d6e93c62114bd19485e5cb003115c134cf9ce91f8ac924c44f8c8c3f4"},
+]
+
+[package.dependencies]
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
+nox = ["nox"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "cycler"
+version = "0.12.1"
+description = "Composable style cycles"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"},
+ {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"},
+]
+
+[package.extras]
+docs = ["ipython", "matplotlib", "numpydoc", "sphinx"]
+tests = ["pytest", "pytest-cov", "pytest-xdist"]
+
+[[package]]
+name = "cython"
+version = "3.0.8"
+description = "The Cython compiler for writing C extensions in the Python language."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Cython-3.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a846e0a38e2b24e9a5c5dc74b0e54c6e29420d88d1dafabc99e0fc0f3e338636"},
+ {file = "Cython-3.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45523fdc2b78d79b32834cc1cc12dc2ca8967af87e22a3ee1bff20e77c7f5520"},
+ {file = "Cython-3.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa0b7f3f841fe087410cab66778e2d3fb20ae2d2078a2be3dffe66c6574be39"},
+ {file = "Cython-3.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e87294e33e40c289c77a135f491cd721bd089f193f956f7b8ed5aa2d0b8c558f"},
+ {file = "Cython-3.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a1df7a129344b1215c20096d33c00193437df1a8fcca25b71f17c23b1a44f782"},
+ {file = "Cython-3.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:13c2a5e57a0358da467d97667297bf820b62a1a87ae47c5f87938b9bb593acbd"},
+ {file = "Cython-3.0.8-cp310-cp310-win32.whl", hash = "sha256:96b028f044f5880e3cb18ecdcfc6c8d3ce9d0af28418d5ab464509f26d8adf12"},
+ {file = "Cython-3.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:8140597a8b5cc4f119a1190f5a2228a84f5ca6d8d9ec386cfce24663f48b2539"},
+ {file = "Cython-3.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aae26f9663e50caf9657148403d9874eea41770ecdd6caf381d177c2b1bb82ba"},
+ {file = "Cython-3.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:547eb3cdb2f8c6f48e6865d5a741d9dd051c25b3ce076fbca571727977b28ac3"},
+ {file = "Cython-3.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a567d4b9ba70b26db89d75b243529de9e649a2f56384287533cf91512705bee"},
+ {file = "Cython-3.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51d1426263b0e82fb22bda8ea60dc77a428581cc19e97741011b938445d383f1"},
+ {file = "Cython-3.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c26daaeccda072459b48d211415fd1e5507c06bcd976fa0d5b8b9f1063467d7b"},
+ {file = "Cython-3.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:289ce7838208211cd166e975865fd73b0649bf118170b6cebaedfbdaf4a37795"},
+ {file = "Cython-3.0.8-cp311-cp311-win32.whl", hash = "sha256:c8aa05f5e17f8042a3be052c24f2edc013fb8af874b0bf76907d16c51b4e7871"},
+ {file = "Cython-3.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:000dc9e135d0eec6ecb2b40a5b02d0868a2f8d2e027a41b0fe16a908a9e6de02"},
+ {file = "Cython-3.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90d3fe31db55685d8cb97d43b0ec39ef614fcf660f83c77ed06aa670cb0e164f"},
+ {file = "Cython-3.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e24791ddae2324e88e3c902a765595c738f19ae34ee66bfb1a6dac54b1833419"},
+ {file = "Cython-3.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f020fa1c0552052e0660790b8153b79e3fc9a15dbd8f1d0b841fe5d204a6ae6"},
+ {file = "Cython-3.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18bfa387d7a7f77d7b2526af69a65dbd0b731b8d941aaff5becff8e21f6d7717"},
+ {file = "Cython-3.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fe81b339cffd87c0069c6049b4d33e28bdd1874625ee515785bf42c9fdff3658"},
+ {file = "Cython-3.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80fd94c076e1e1b1ee40a309be03080b75f413e8997cddcf401a118879863388"},
+ {file = "Cython-3.0.8-cp312-cp312-win32.whl", hash = "sha256:85077915a93e359a9b920280d214dc0cf8a62773e1f3d7d30fab8ea4daed670c"},
+ {file = "Cython-3.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:0cb2dcc565c7851f75d496f724a384a790fab12d1b82461b663e66605bec429a"},
+ {file = "Cython-3.0.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:870d2a0a7e3cbd5efa65aecdb38d715ea337a904ea7bb22324036e78fb7068e7"},
+ {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e8f2454128974905258d86534f4fd4f91d2f1343605657ecab779d80c9d6d5e"},
+ {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1949d6aa7bc792554bee2b67a9fe41008acbfe22f4f8df7b6ec7b799613a4b3"},
+ {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9f2c6e1b8f3bcd6cb230bac1843f85114780bb8be8614855b1628b36bb510e0"},
+ {file = "Cython-3.0.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:05d7eddc668ae7993643f32c7661f25544e791edb745758672ea5b1a82ecffa6"},
+ {file = "Cython-3.0.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bfabe115deef4ada5d23c87bddb11289123336dcc14347011832c07db616dd93"},
+ {file = "Cython-3.0.8-cp36-cp36m-win32.whl", hash = "sha256:0c38c9f0bcce2df0c3347285863621be904ac6b64c5792d871130569d893efd7"},
+ {file = "Cython-3.0.8-cp36-cp36m-win_amd64.whl", hash = "sha256:6c46939c3983217d140999de7c238c3141f56b1ea349e47ca49cae899969aa2c"},
+ {file = "Cython-3.0.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:115f0a50f752da6c99941b103b5cb090da63eb206abbc7c2ad33856ffc73f064"},
+ {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c0f29246734561c90f36e70ed0506b61aa3d044e4cc4cba559065a2a741fae"},
+ {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ab75242869ff71e5665fe5c96f3378e79e792fa3c11762641b6c5afbbbbe026"},
+ {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6717c06e9cfc6c1df18543cd31a21f5d8e378a40f70c851fa2d34f0597037abc"},
+ {file = "Cython-3.0.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9d3f74388db378a3c6fd06e79a809ed98df3f56484d317b81ee762dbf3c263e0"},
+ {file = "Cython-3.0.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae7ac561fd8253a9ae96311e91d12af5f701383564edc11d6338a7b60b285a6f"},
+ {file = "Cython-3.0.8-cp37-cp37m-win32.whl", hash = "sha256:97b2a45845b993304f1799664fa88da676ee19442b15fdcaa31f9da7e1acc434"},
+ {file = "Cython-3.0.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9e2be2b340fea46fb849d378f9b80d3c08ff2e81e2bfbcdb656e2e3cd8c6b2dc"},
+ {file = "Cython-3.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2cde23c555470db3f149ede78b518e8274853745289c956a0e06ad8d982e4db9"},
+ {file = "Cython-3.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7990ca127e1f1beedaf8fc8bf66541d066ef4723ad7d8d47a7cbf842e0f47580"},
+ {file = "Cython-3.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b983c8e6803f016146c26854d9150ddad5662960c804ea7f0c752c9266752f0"},
+ {file = "Cython-3.0.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a973268d7ca1a2bdf78575e459a94a78e1a0a9bb62a7db0c50041949a73b02ff"},
+ {file = "Cython-3.0.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:61a237bc9dd23c7faef0fcfce88c11c65d0c9bb73c74ccfa408b3a012073c20e"},
+ {file = "Cython-3.0.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3a3d67f079598af49e90ff9655bf85bd358f093d727eb21ca2708f467c489cae"},
+ {file = "Cython-3.0.8-cp38-cp38-win32.whl", hash = "sha256:17a642bb01a693e34c914106566f59844b4461665066613913463a719e0dd15d"},
+ {file = "Cython-3.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:2cdfc32252f3b6dc7c94032ab744dcedb45286733443c294d8f909a4854e7f83"},
+ {file = "Cython-3.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa97893d99385386925d00074654aeae3a98867f298d1e12ceaf38a9054a9bae"},
+ {file = "Cython-3.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05c0bf9d085c031df8f583f0d506aa3be1692023de18c45d0aaf78685bbb944"},
+ {file = "Cython-3.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de892422582f5758bd8de187e98ac829330ec1007bc42c661f687792999988a7"},
+ {file = "Cython-3.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:314f2355a1f1d06e3c431eaad4708cf10037b5e91e4b231d89c913989d0bdafd"},
+ {file = "Cython-3.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:78825a3774211e7d5089730f00cdf7f473042acc9ceb8b9eeebe13ed3a5541de"},
+ {file = "Cython-3.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df8093deabc55f37028190cf5e575c26aad23fc673f34b85d5f45076bc37ce39"},
+ {file = "Cython-3.0.8-cp39-cp39-win32.whl", hash = "sha256:1aca1b97e0095b3a9a6c33eada3f661a4ed0d499067d121239b193e5ba3bb4f0"},
+ {file = "Cython-3.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:16873d78be63bd38ffb759da7ab82814b36f56c769ee02b1d5859560e4c3ac3c"},
+ {file = "Cython-3.0.8-py2.py3-none-any.whl", hash = "sha256:171b27051253d3f9108e9759e504ba59ff06e7f7ba944457f94deaf9c21bf0b6"},
+ {file = "Cython-3.0.8.tar.gz", hash = "sha256:8333423d8fd5765e7cceea3a9985dd1e0a5dfeb2734629e1a2ed2d6233d39de6"},
+]
+
+[[package]]
+name = "dataclasses-json"
+version = "0.6.3"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "dataclasses_json-0.6.3-py3-none-any.whl", hash = "sha256:4aeb343357997396f6bca1acae64e486c3a723d8f5c76301888abeccf0c45176"},
+ {file = "dataclasses_json-0.6.3.tar.gz", hash = "sha256:35cb40aae824736fdf959801356641836365219cfe14caeb115c39136f775d2a"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "datasets"
+version = "2.14.4"
+description = "HuggingFace community-driven open-source library of datasets"
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "datasets-2.14.4-py3-none-any.whl", hash = "sha256:29336bd316a7d827ccd4da2236596279b20ca2ac78f64c04c9483da7cbc2459b"},
+ {file = "datasets-2.14.4.tar.gz", hash = "sha256:ef29c2b5841de488cd343cfc26ab979bff77efa4d2285af51f1ad7db5c46a83b"},
+]
+
+[package.dependencies]
+aiohttp = "*"
+dill = ">=0.3.0,<0.3.8"
+fsspec = {version = ">=2021.11.1", extras = ["http"]}
+huggingface-hub = ">=0.14.0,<1.0.0"
+multiprocess = "*"
+numpy = ">=1.17"
+packaging = "*"
+pandas = "*"
+pyarrow = ">=8.0.0"
+pyyaml = ">=5.1"
+requests = ">=2.19.0"
+tqdm = ">=4.62.1"
+xxhash = "*"
+
+[package.extras]
+apache-beam = ["apache-beam (>=2.26.0,<2.44.0)"]
+audio = ["librosa", "soundfile (>=0.12.1)"]
+benchmarks = ["tensorflow (==2.12.0)", "torch (==2.0.1)", "transformers (==4.30.1)"]
+dev = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0,<2.44.0)", "black (>=23.1,<24.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "pyyaml (>=5.3.1)", "rarfile (>=4.0)", "ruff (>=0.0.241)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy (<2.0.0)", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "tensorflow-macos", "tiktoken", "torch", "transformers", "zstandard"]
+docs = ["s3fs", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow-macos", "torch", "transformers"]
+jax = ["jax (>=0.2.8,!=0.3.2,<=0.3.25)", "jaxlib (>=0.1.65,<=0.3.25)"]
+metrics-tests = ["Werkzeug (>=1.0.1)", "accelerate", "bert-score (>=0.3.6)", "jiwer", "langdetect", "mauve-text", "nltk", "requests-file (>=1.5.1)", "rouge-score", "sacrebleu", "sacremoses", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "spacy (>=3.0.0)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "typer (<0.5.0)"]
+quality = ["black (>=23.1,<24.0)", "pyyaml (>=5.3.1)", "ruff (>=0.0.241)"]
+s3 = ["s3fs"]
+tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow-macos"]
+tensorflow-gpu = ["tensorflow-gpu (>=2.2.0,!=2.6.0,!=2.6.1)"]
+tests = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0,<2.44.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy (<2.0.0)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "tensorflow-macos", "tiktoken", "torch", "transformers", "zstandard"]
+torch = ["torch"]
+vision = ["Pillow (>=6.2.1)"]
+
+[[package]]
+name = "debugpy"
+version = "1.8.0"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"},
+ {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"},
+ {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"},
+ {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"},
+ {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"},
+ {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"},
+ {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"},
+ {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"},
+ {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"},
+ {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"},
+ {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"},
+ {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"},
+ {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"},
+ {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"},
+ {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"},
+ {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"},
+ {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"},
+ {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "deprecated"
+version = "1.2.14"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
+ {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
+]
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+
+[[package]]
+name = "dill"
+version = "0.3.7"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"},
+ {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+
+[[package]]
+name = "dirtyjson"
+version = "1.0.8"
+description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
+ {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
+]
+
+[[package]]
+name = "distlib"
+version = "0.3.8"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
+]
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "flatbuffers"
+version = "23.5.26"
+description = "The FlatBuffers serialization format for Python"
+optional = false
+python-versions = "*"
+files = [
+ {file = "flatbuffers-23.5.26-py2.py3-none-any.whl", hash = "sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1"},
+ {file = "flatbuffers-23.5.26.tar.gz", hash = "sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89"},
+]
+
+[[package]]
+name = "fonttools"
+version = "4.48.1"
+description = "Tools to manipulate font files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f"},
+ {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e"},
+ {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738"},
+ {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124"},
+ {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee"},
+ {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2"},
+ {file = "fonttools-4.48.1-cp310-cp310-win32.whl", hash = "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec"},
+ {file = "fonttools-4.48.1-cp310-cp310-win_amd64.whl", hash = "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703"},
+ {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61"},
+ {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f"},
+ {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7"},
+ {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7"},
+ {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01"},
+ {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48"},
+ {file = "fonttools-4.48.1-cp311-cp311-win32.whl", hash = "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e"},
+ {file = "fonttools-4.48.1-cp311-cp311-win_amd64.whl", hash = "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a"},
+ {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea"},
+ {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0"},
+ {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252"},
+ {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81"},
+ {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68"},
+ {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092"},
+ {file = "fonttools-4.48.1-cp312-cp312-win32.whl", hash = "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d"},
+ {file = "fonttools-4.48.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5"},
+ {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348"},
+ {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a"},
+ {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1"},
+ {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31"},
+ {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac"},
+ {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5"},
+ {file = "fonttools-4.48.1-cp38-cp38-win32.whl", hash = "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2"},
+ {file = "fonttools-4.48.1-cp38-cp38-win_amd64.whl", hash = "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784"},
+ {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4"},
+ {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95"},
+ {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d"},
+ {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a"},
+ {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814"},
+ {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e"},
+ {file = "fonttools-4.48.1-cp39-cp39-win32.whl", hash = "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199"},
+ {file = "fonttools-4.48.1-cp39-cp39-win_amd64.whl", hash = "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070"},
+ {file = "fonttools-4.48.1-py3-none-any.whl", hash = "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e"},
+ {file = "fonttools-4.48.1.tar.gz", hash = "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a"},
+]
+
+[package.extras]
+all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"]
+graphite = ["lz4 (>=1.7.4.2)"]
+interpolatable = ["munkres", "pycairo", "scipy"]
+lxml = ["lxml (>=4.0)"]
+pathops = ["skia-pathops (>=0.5.0)"]
+plot = ["matplotlib"]
+repacker = ["uharfbuzz (>=0.23.0)"]
+symfont = ["sympy"]
+type1 = ["xattr"]
+ufo = ["fs (>=2.2.0,<3)"]
+unicode = ["unicodedata2 (>=15.1.0)"]
+woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2023.12.2"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"},
+ {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"},
+]
+
+[package.dependencies]
+aiohttp = {version = "<4.0.0a0 || >4.0.0a0,<4.0.0a1 || >4.0.0a1", optional = true, markers = "extra == \"http\""}
+requests = {version = "*", optional = true, markers = "extra == \"http\""}
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.2"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
+ {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
+]
+
+[package.dependencies]
+certifi = "*"
+h11 = ">=0.13,<0.15"
+
+[package.extras]
+asyncio = ["anyio (>=4.0,<5.0)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+trio = ["trio (>=0.22.0,<0.23.0)"]
+
+[[package]]
+name = "httpx"
+version = "0.26.0"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
+ {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
+]
+
+[package.dependencies]
+anyio = "*"
+certifi = "*"
+httpcore = "==1.*"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "huggingface-hub"
+version = "0.20.3"
+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.20.3-py3-none-any.whl", hash = "sha256:d988ae4f00d3e307b0c80c6a05ca6dbb7edba8bba3079f74cda7d9c2e562a7b6"},
+ {file = "huggingface_hub-0.20.3.tar.gz", hash = "sha256:94e7f8e074475fbc67d6a71957b678e1b4a74ff1b64a644fd6cbb83da962d05d"},
+]
+
+[package.dependencies]
+aiohttp = {version = "*", optional = true, markers = "extra == \"inference\""}
+filelock = "*"
+fsspec = ">=2023.5.0"
+packaging = ">=20.9"
+pydantic = [
+ {version = ">1.1,<2.0", optional = true, markers = "python_version == \"3.8\" and extra == \"inference\""},
+ {version = ">1.1,<3.0", optional = true, markers = "python_version > \"3.8\" and extra == \"inference\""},
+]
+pyyaml = ">=5.1"
+requests = "*"
+tqdm = ">=4.42.1"
+typing-extensions = ">=3.7.4.3"
+
+[package.extras]
+all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "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", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "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"]
+inference = ["aiohttp", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)"]
+quality = ["mypy (==1.5.1)", "ruff (>=0.1.3)"]
+tensorflow = ["graphviz", "pydot", "tensorflow"]
+testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
+torch = ["torch"]
+typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"]
+
+[[package]]
+name = "humanfriendly"
+version = "10.0"
+description = "Human friendly output for text interfaces using Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"},
+ {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"},
+]
+
+[package.dependencies]
+pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""}
+
+[[package]]
+name = "identify"
+version = "2.5.33"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "identify-2.5.33-py2.py3-none-any.whl", hash = "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"},
+ {file = "identify-2.5.33.tar.gz", hash = "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "importlib-metadata"
+version = "7.0.1"
+description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"},
+ {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"},
+]
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[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"]
+perf = ["ipython"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+
+[[package]]
+name = "importlib-resources"
+version = "6.1.1"
+description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
+ {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "ipykernel"
+version = "6.29.0"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"},
+ {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.10.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
+ {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
+backcall = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+pickleshare = "*"
+prompt-toolkit = ">=3.0.30,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.1"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"},
+ {file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.9,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.9,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.7.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
+ {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
+ {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.5"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
+ {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.0.11"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.0.11-py3-none-any.whl", hash = "sha256:536bf0e78723153a5016ca7efb88ed0ecd7070d3f1555d5b0e2770658f900a3c"},
+ {file = "jupyterlab-4.0.11.tar.gz", hash = "sha256:d1aec24712566bc25a36229788242778e498ca4088028e2f9aa156b8b7fdc8fc"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.6)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.9"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"},
+ {file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"},
+]
+
+[[package]]
+name = "kiwisolver"
+version = "1.4.5"
+description = "A fast implementation of the Cassowary constraint solver"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"},
+ {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"},
+]
+
+[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
+description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+]
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.3"
+description = "Interface between LLMs and your data"
+optional = false
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.3-py3-none-any.whl", hash = "sha256:711e2766cb1690a394a209dc6155d1b7a05b44fd6b7e08084d6b96c00bef5dd0"},
+ {file = "llama_index_core-0.10.3.tar.gz", hash = "sha256:5cced2c56bd640311835094fe6946ce6498e6d31dffcdb3df7583ff1aa3861b8"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
+
+[[package]]
+name = "llama-index-embeddings-huggingface"
+version = "0.1.1"
+description = "llama-index embeddings huggingface integration"
+optional = false
+python-versions = ">=3.8.1,<3.12"
+files = [
+ {file = "llama_index_embeddings_huggingface-0.1.1-py3-none-any.whl", hash = "sha256:b483132f7124a0edc4e2906af6308367757c27be96fa3f68b33b6d0ca12d47dd"},
+ {file = "llama_index_embeddings_huggingface-0.1.1.tar.gz", hash = "sha256:85278b3e013ed620d75691154db89c6329df214dfcf6dca2194f04d1c397d69d"},
+]
+
+[package.dependencies]
+huggingface-hub = {version = ">=0.19.0", extras = ["inference"]}
+llama-index-core = ">=0.10.1,<0.11.0"
+torch = ">=2.1.2,<3.0.0"
+transformers = ">=4.37.0,<5.0.0"
+
+[[package]]
+name = "markupsafe"
+version = "2.1.4"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"},
+ {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"},
+ {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"},
+ {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"},
+ {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"},
+ {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"},
+ {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"},
+ {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.20.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
+ {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"]
+docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"]
+lint = ["pre-commit (>=2.4,<4.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "matplotlib"
+version = "3.7.4"
+description = "Python plotting package"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:b71079239bd866bf56df023e5146de159cb0c7294e508830901f4d79e2d89385"},
+ {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bf91a42f6274a64cb41189120b620c02e574535ff6671fa836cade7701b06fbd"},
+ {file = "matplotlib-3.7.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f757e8b42841d6add0cb69b42497667f0d25a404dcd50bd923ec9904e38414c4"},
+ {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dfee00aa4bd291e08bb9461831c26ce0da85ca9781bb8794f2025c6e925281"},
+ {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3640f33632beb3993b698b1be9d1c262b742761d6101f3c27b87b2185d25c875"},
+ {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff539c4a17ecdf076ed808ee271ffae4a30dcb7e157b99ccae2c837262c07db6"},
+ {file = "matplotlib-3.7.4-cp310-cp310-win32.whl", hash = "sha256:24b8f28af3e766195c09b780b15aa9f6710192b415ae7866b9c03dee7ec86370"},
+ {file = "matplotlib-3.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fa193286712c3b6c3cfa5fe8a6bb563f8c52cc750006c782296e0807ce5e799"},
+ {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:b167f54cb4654b210c9624ec7b54e2b3b8de68c93a14668937e7e53df60770ec"},
+ {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7dfe6821f1944cb35603ff22e21510941bbcce7ccf96095beffaac890d39ce77"},
+ {file = "matplotlib-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3c557d9165320dff3c5f2bb99bfa0b6813d3e626423ff71c40d6bc23b83c3339"},
+ {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08372696b3bb45c563472a552a705bfa0942f0a8ffe084db8a4e8f9153fbdf9d"},
+ {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81e1a7ac818000e8ac3ca696c3fdc501bc2d3adc89005e7b4e22ee5e9d51de98"},
+ {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:390920a3949906bc4b0216198d378f2a640c36c622e3584dd0c79a7c59ae9f50"},
+ {file = "matplotlib-3.7.4-cp311-cp311-win32.whl", hash = "sha256:62e094d8da26294634da9e7f1856beee3978752b1b530c8e1763d2faed60cc10"},
+ {file = "matplotlib-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:f8fc2df756105784e650605e024d36dc2d048d68e5c1b26df97ee25d1bd41f9f"},
+ {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_universal2.whl", hash = "sha256:568574756127791903604e315c11aef9f255151e4cfe20ec603a70f9dda8e259"},
+ {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7d479aac338195e2199a8cfc03c4f2f55914e6a120177edae79e0340a6406457"},
+ {file = "matplotlib-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32183d4be84189a4c52b4b8861434d427d9118db2cec32986f98ed6c02dcfbb6"},
+ {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0037d066cca1f4bda626c507cddeb6f7da8283bc6a214da2db13ff2162933c52"},
+ {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44856632ebce88abd8efdc0a0dceec600418dcac06b72ae77af0019d260aa243"},
+ {file = "matplotlib-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:632fc938c22117d4241411191cfb88ac264a4c0a9ac702244641ddf30f0d739c"},
+ {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:ce163be048613b9d1962273708cc97e09ca05d37312e670d166cf332b80bbaff"},
+ {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e680f49bb8052ba3b2698e370155d2b4afb49f9af1cc611a26579d5981e2852a"},
+ {file = "matplotlib-3.7.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0604880e4327114054199108b7390f987f4f40ee5ce728985836889e11a780ba"},
+ {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1e6abcde6fc52475f9d6a12b9f1792aee171ce7818ef6df5d61cb0b82816e6e8"},
+ {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f59a70e2ec3212033ef6633ed07682da03f5249379722512a3a2a26a7d9a738e"},
+ {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a9981b2a2dd9da06eca4ab5855d09b54b8ce7377c3e0e3957767b83219d652d"},
+ {file = "matplotlib-3.7.4-cp38-cp38-win32.whl", hash = "sha256:83859ac26839660ecd164ee8311272074250b915ac300f9b2eccc84410f8953b"},
+ {file = "matplotlib-3.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:7a7709796ac59fe8debde68272388be6ed449c8971362eb5b60d280eac8dadde"},
+ {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b1d70bc1ea1bf110bec64f4578de3e14947909a8887df4c1fd44492eca487955"},
+ {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c83f49e795a5de6c168876eea723f5b88355202f9603c55977f5356213aa8280"},
+ {file = "matplotlib-3.7.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5c9133f230945fe10652eb33e43642e933896194ef6a4f8d5e79bb722bdb2000"},
+ {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798ff59022eeb276380ce9a73ba35d13c3d1499ab9b73d194fd07f1b0a41c304"},
+ {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1707b20b25e90538c2ce8d4409e30f0ef1df4017cc65ad0439633492a973635b"},
+ {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e6227ca8492baeef873cdd8e169a318efb5c3a25ce94e69727e7f964995b0b1"},
+ {file = "matplotlib-3.7.4-cp39-cp39-win32.whl", hash = "sha256:5661c8639aded7d1bbf781373a359011cb1dd09199dee49043e9e68dd16f07ba"},
+ {file = "matplotlib-3.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:55eec941a4743f0bd3e5b8ee180e36b7ea8e62f867bf2613937c9f01b9ac06a2"},
+ {file = "matplotlib-3.7.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ab16868714e5cc90ec8f7ff5d83d23bcd6559224d8e9cb5227c9f58748889fe8"},
+ {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c698b33f9a3f0b127a8e614c8fb4087563bb3caa9c9d95298722fa2400cdd3f"},
+ {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be3493bbcb4d255cb71de1f9050ac71682fce21a56089eadbcc8e21784cb12ee"},
+ {file = "matplotlib-3.7.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f8c725d1dd2901b2e7ec6cd64165e00da2978cc23d4143cb9ef745bec88e6b04"},
+ {file = "matplotlib-3.7.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:286332f8f45f8ffde2d2119b9fdd42153dccd5025fa9f451b4a3b5c086e26da5"},
+ {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:116ef0b43aa00ff69260b4cce39c571e4b8c6f893795b708303fa27d9b9d7548"},
+ {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c90590d4b46458677d80bc3218f3f1ac11fc122baa9134e0cb5b3e8fc3714052"},
+ {file = "matplotlib-3.7.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de7c07069687be64fd9d119da3122ba13a8d399eccd3f844815f0dc78a870b2c"},
+ {file = "matplotlib-3.7.4.tar.gz", hash = "sha256:7cd4fef8187d1dd0d9dcfdbaa06ac326d396fb8c71c647129f0bf56835d77026"},
+]
+
+[package.dependencies]
+contourpy = ">=1.0.1"
+cycler = ">=0.10"
+fonttools = ">=4.22.0"
+importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""}
+kiwisolver = ">=1.0.1"
+numpy = ">=1.20,<2"
+packaging = ">=20.0"
+pillow = ">=6.2.0"
+pyparsing = ">=2.3.1"
+python-dateutil = ">=2.7"
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+description = "Python library for arbitrary-precision floating-point arithmetic"
+optional = false
+python-versions = "*"
+files = [
+ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"},
+ {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
+]
+
+[package.extras]
+develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"]
+docs = ["sphinx"]
+gmpy = ["gmpy2 (>=2.1.0a4)"]
+tests = ["pytest (>=4.6)"]
+
+[[package]]
+name = "multidict"
+version = "6.0.4"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"},
+ {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"},
+ {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"},
+ {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"},
+ {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"},
+ {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"},
+ {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"},
+ {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"},
+ {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"},
+ {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"},
+ {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"},
+ {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
+ {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
+]
+
+[[package]]
+name = "multiprocess"
+version = "0.70.15"
+description = "better multiprocessing and multithreading in Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "multiprocess-0.70.15-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:aa36c7ed16f508091438687fe9baa393a7a8e206731d321e443745e743a0d4e5"},
+ {file = "multiprocess-0.70.15-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:20e024018c46d0d1602024c613007ac948f9754659e3853b0aa705e83f6931d8"},
+ {file = "multiprocess-0.70.15-pp37-pypy37_pp73-manylinux_2_24_i686.whl", hash = "sha256:e576062981c91f0fe8a463c3d52506e598dfc51320a8dd8d78b987dfca91c5db"},
+ {file = "multiprocess-0.70.15-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:e73f497e6696a0f5433ada2b3d599ae733b87a6e8b008e387c62ac9127add177"},
+ {file = "multiprocess-0.70.15-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:73db2e7b32dcc7f9b0f075c2ffa45c90b6729d3f1805f27e88534c8d321a1be5"},
+ {file = "multiprocess-0.70.15-pp38-pypy38_pp73-manylinux_2_24_i686.whl", hash = "sha256:4271647bd8a49c28ecd6eb56a7fdbd3c212c45529ad5303b40b3c65fc6928e5f"},
+ {file = "multiprocess-0.70.15-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:cf981fb998d6ec3208cb14f0cf2e9e80216e834f5d51fd09ebc937c32b960902"},
+ {file = "multiprocess-0.70.15-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:18f9f2c7063346d1617bd1684fdcae8d33380ae96b99427260f562e1a1228b67"},
+ {file = "multiprocess-0.70.15-pp39-pypy39_pp73-manylinux_2_24_i686.whl", hash = "sha256:0eac53214d664c49a34695e5824872db4006b1a465edd7459a251809c3773370"},
+ {file = "multiprocess-0.70.15-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1a51dd34096db47fb21fa2b839e615b051d51b97af9a67afbcdaa67186b44883"},
+ {file = "multiprocess-0.70.15-py310-none-any.whl", hash = "sha256:7dd58e33235e83cf09d625e55cffd7b0f0eede7ee9223cdd666a87624f60c21a"},
+ {file = "multiprocess-0.70.15-py311-none-any.whl", hash = "sha256:134f89053d82c9ed3b73edd3a2531eb791e602d4f4156fc92a79259590bd9670"},
+ {file = "multiprocess-0.70.15-py37-none-any.whl", hash = "sha256:f7d4a1629bccb433114c3b4885f69eccc200994323c80f6feee73b0edc9199c5"},
+ {file = "multiprocess-0.70.15-py38-none-any.whl", hash = "sha256:bee9afba476c91f9ebee7beeee0601face9eff67d822e893f9a893725fbd6316"},
+ {file = "multiprocess-0.70.15-py39-none-any.whl", hash = "sha256:3e0953f5d52b4c76f1c973eaf8214554d146f2be5decb48e928e55c7a2d19338"},
+ {file = "multiprocess-0.70.15.tar.gz", hash = "sha256:f20eed3036c0ef477b07a4177cf7c1ba520d9a2677870a4f47fe026f0cd6787e"},
+]
+
+[package.dependencies]
+dill = ">=0.3.7"
+
+[[package]]
+name = "mypy"
+version = "0.991"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
+ {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"},
+ {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"},
+ {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"},
+ {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"},
+ {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"},
+ {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"},
+ {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"},
+ {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"},
+ {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"},
+ {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"},
+ {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"},
+ {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"},
+ {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"},
+ {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"},
+ {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"},
+ {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"},
+ {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"},
+ {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"},
+ {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"},
+ {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"},
+ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
+ {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.4.3"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = ">=3.10"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+python2 = ["typed-ast (>=1.4.0,<2)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.14.2"
+description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.14.2-py3-none-any.whl", hash = "sha256:db28590cef90f7faf2ebbc71acd402cbecf13d29176df728c0a9025a49345ea1"},
+ {file = "nbconvert-7.14.2.tar.gz", hash = "sha256:a7f8808fd4e082431673ac538400218dd45efd076fbeb07cc6e5aa5a3a4e949e"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "neural-compressor"
+version = "2.4.1"
+description = "Repository of Intel® Neural Compressor"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "neural_compressor-2.4.1-py3-none-any.whl", hash = "sha256:24a9c74aa2049810c26dac092945a6dfcf1837a5956299fcaf5b038947685788"},
+ {file = "neural_compressor-2.4.1.tar.gz", hash = "sha256:2d6e98755644b33a8c623bcfa368cc2aacf733b12387db9e9e4a2684c8c11618"},
+]
+
+[package.dependencies]
+deprecated = ">=1.2.13"
+numpy = "*"
+opencv-python-headless = "*"
+pandas = "*"
+Pillow = "*"
+prettytable = "*"
+psutil = "*"
+py-cpuinfo = "*"
+pycocotools = {version = "*", markers = "sys_platform != \"win32\" or python_version > \"3.8\""}
+pycocotools-windows = {version = "*", markers = "sys_platform == \"win32\" and python_version <= \"3.8\""}
+pyyaml = "*"
+requests = "*"
+schema = "*"
+scikit-learn = "*"
+
+[package.extras]
+ort = ["neural-compressor-3x-ort (==2.4.1)"]
+pt = ["neural-compressor-3x-pt (==2.4.1)"]
+tf = ["neural-compressor-3x-tf (==2.4.1)"]
+
+[[package]]
+name = "nltk"
+version = "3.8.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
+ {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "nodeenv"
+version = "1.8.0"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+files = [
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+]
+
+[package.dependencies]
+setuptools = "*"
+
+[[package]]
+name = "notebook"
+version = "7.0.7"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"},
+ {file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.0.2,<5"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.24.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
+ {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
+ {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
+ {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
+ {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
+ {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
+ {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
+ {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
+ {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
+ {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
+ {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
+]
+
+[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.1.3.1"
+description = "CUBLAS native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"},
+ {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"},
+]
+
+[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.1.105"
+description = "CUDA profiling tools runtime libs."
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"},
+ {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"},
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.1.105"
+description = "NVRTC native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"},
+ {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"},
+]
+
+[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.1.105"
+description = "CUDA Runtime native Libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"},
+ {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"},
+]
+
+[[package]]
+name = "nvidia-cudnn-cu12"
+version = "8.9.2.26"
+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"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+
+[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.0.2.54"
+description = "CUFFT native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"},
+ {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"},
+]
+
+[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.2.106"
+description = "CURAND native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"},
+ {file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"},
+]
+
+[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.4.5.107"
+description = "CUDA solver native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"},
+ {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+nvidia-cusparse-cu12 = "*"
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.1.0.106"
+description = "CUSPARSE native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"},
+ {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"},
+]
+
+[package.dependencies]
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-nccl-cu12"
+version = "2.18.1"
+description = "NVIDIA Collective Communication Library (NCCL) Runtime"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nccl_cu12-2.18.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:1a6c4acefcbebfa6de320f412bf7866de856e786e0462326ba1bac40de0b5e71"},
+]
+
+[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.3.101"
+description = "Nvidia JIT LTO Library"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nvjitlink_cu12-12.3.101-py3-none-manylinux1_x86_64.whl", hash = "sha256:64335a8088e2b9d196ae8665430bc6a2b7e6ef2eb877a9c735c804bd4ff6467c"},
+ {file = "nvidia_nvjitlink_cu12-12.3.101-py3-none-win_amd64.whl", hash = "sha256:1b2e317e437433753530792f13eece58f0aec21a2b05903be7bffe58a606cbd1"},
+]
+
+[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.1.105"
+description = "NVIDIA Tools Extension"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"},
+ {file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"},
+]
+
+[[package]]
+name = "onnx"
+version = "1.15.0"
+description = "Open Neural Network Exchange"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:51cacb6aafba308aaf462252ced562111f6991cdc7bc57a6c554c3519453a8ff"},
+ {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0aee26b6f7f7da7e840de75ad9195a77a147d0662c94eaa6483be13ba468ffc1"},
+ {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baf6ef6c93b3b843edb97a8d5b3d229a1301984f3f8dee859c29634d2083e6f9"},
+ {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ed899fe6000edc05bb2828863d3841cfddd5a7cf04c1a771f112e94de75d9f"},
+ {file = "onnx-1.15.0-cp310-cp310-win32.whl", hash = "sha256:f1ad3d77fc2f4b4296f0ac2c8cadd8c1dcf765fc586b737462d3a0fe8f7c696a"},
+ {file = "onnx-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:ca4ebc4f47109bfb12c8c9e83dd99ec5c9f07d2e5f05976356c6ccdce3552010"},
+ {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:233ffdb5ca8cc2d960b10965a763910c0830b64b450376da59207f454701f343"},
+ {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:51fa79c9ea9af033638ec51f9177b8e76c55fad65bb83ea96ee88fafade18ee7"},
+ {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f277d4861729f5253a51fa41ce91bfec1c4574ee41b5637056b43500917295ce"},
+ {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8a7c94d2ebead8f739fdb70d1ce5a71726f4e17b3e5b8ad64455ea1b2801a85"},
+ {file = "onnx-1.15.0-cp311-cp311-win32.whl", hash = "sha256:17dcfb86a8c6bdc3971443c29b023dd9c90ff1d15d8baecee0747a6b7f74e650"},
+ {file = "onnx-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:60a3e28747e305cd2e766e6a53a0a6d952cf9e72005ec6023ce5e07666676a4e"},
+ {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6b5c798d9e0907eaf319e3d3e7c89a2ed9a854bcb83da5fefb6d4c12d5e90721"},
+ {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a4f774ff50092fe19bd8f46b2c9b27b1d30fbd700c22abde48a478142d464322"},
+ {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2b0e7f3938f2d994c34616bfb8b4b1cebbc4a0398483344fe5e9f2fe95175e6"},
+ {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49cebebd0020a4b12c1dd0909d426631212ef28606d7e4d49463d36abe7639ad"},
+ {file = "onnx-1.15.0-cp38-cp38-win32.whl", hash = "sha256:1fdf8a3ff75abc2b32c83bf27fb7c18d6b976c9c537263fadd82b9560fe186fa"},
+ {file = "onnx-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:763e55c26e8de3a2dce008d55ae81b27fa8fb4acbb01a29b9f3c01f200c4d676"},
+ {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b2d5e802837629fc9c86f19448d19dd04d206578328bce202aeb3d4bedab43c4"},
+ {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9a9cfbb5e5d5d88f89d0dfc9df5fb858899db874e1d5ed21e76c481f3cafc90d"},
+ {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f472bbe5cb670a0a4a4db08f41fde69b187a009d0cb628f964840d3f83524e9"},
+ {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf2de9bef64792e5b8080c678023ac7d2b9e05d79a3e17e92cf6a4a624831d2"},
+ {file = "onnx-1.15.0-cp39-cp39-win32.whl", hash = "sha256:ef4d9eb44b111e69e4534f3233fc2c13d1e26920d24ae4359d513bd54694bc6d"},
+ {file = "onnx-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d7a3e2d79d371e272e39ae3f7547e0b116d0c7f774a4004e97febe6c93507f"},
+ {file = "onnx-1.15.0.tar.gz", hash = "sha256:b18461a7d38f286618ca2a6e78062a2a9c634ce498e631e708a8041b00094825"},
+]
+
+[package.dependencies]
+numpy = "*"
+protobuf = ">=3.20.2"
+
+[package.extras]
+reference = ["Pillow", "google-re2"]
+
+[[package]]
+name = "onnxruntime"
+version = "1.16.3"
+description = "ONNX Runtime is a runtime accelerator for Machine Learning models"
+optional = false
+python-versions = "*"
+files = [
+ {file = "onnxruntime-1.16.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3bc41f323ac77acfed190be8ffdc47a6a75e4beeb3473fbf55eeb075ccca8df2"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:212741b519ee61a4822c79c47147d63a8b0ffde25cd33988d3d7be9fbd51005d"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f91f5497fe3df4ceee2f9e66c6148d9bfeb320cd6a71df361c66c5b8bac985a"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b1fc269cabd27f129fb9058917d6fdc89b188c49ed8700f300b945c81f889"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-win32.whl", hash = "sha256:f36b56a593b49a3c430be008c2aea6658d91a3030115729609ec1d5ffbaab1b6"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-win_amd64.whl", hash = "sha256:3c467eaa3d2429c026b10c3d17b78b7f311f718ef9d2a0d6938e5c3c2611b0cf"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:a225bb683991001d111f75323d355b3590e75e16b5e0f07a0401e741a0143ea1"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9aded21fe3d898edd86be8aa2eb995aa375e800ad3dfe4be9f618a20b8ee3630"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00cccc37a5195c8fca5011b9690b349db435986bd508eb44c9fce432da9228a4"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e253e572021563226a86f1c024f8f70cdae28f2fb1cc8c3a9221e8b1ce37db5"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-win32.whl", hash = "sha256:a82a8f0b4c978d08f9f5c7a6019ae51151bced9fd91e5aaa0c20a9e4ac7a60b6"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-win_amd64.whl", hash = "sha256:78d81d9af457a1dc90db9a7da0d09f3ccb1288ea1236c6ab19f0ca61f3eee2d3"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:04ebcd29c20473596a1412e471524b2fb88d55e6301c40b98dd2407b5911595f"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9996bab0f202a6435ab867bc55598f15210d0b72794d5de83712b53d564084ae"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b8f5083f903408238883821dd8c775f8120cb4a604166dbdabe97f4715256d5"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c2dcf1b70f8434abb1116fe0975c00e740722aaf321997195ea3618cc00558e"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-win32.whl", hash = "sha256:d4a0151e1accd04da6711f6fd89024509602f82c65a754498e960b032359b02d"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-win_amd64.whl", hash = "sha256:e8aa5bba78afbd4d8a2654b14ec7462ff3ce4a6aad312a3c2d2c2b65009f2541"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:6829dc2a79d48c911fedaf4c0f01e03c86297d32718a3fdee7a282766dfd282a"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:76f876c53bfa912c6c242fc38213a6f13f47612d4360bc9d599bd23753e53161"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4137e5d443e2dccebe5e156a47f1d6d66f8077b03587c35f11ee0c7eda98b533"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56695c1a343c7c008b647fff3df44da63741fbe7b6003ef576758640719be7b"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-win32.whl", hash = "sha256:985a029798744ce4743fcf8442240fed35c8e4d4d30ec7d0c2cdf1388cd44408"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-win_amd64.whl", hash = "sha256:28ff758b17ce3ca6bcad3d936ec53bd7f5482e7630a13f6dcae518eba8f71d85"},
+]
+
+[package.dependencies]
+coloredlogs = "*"
+flatbuffers = "*"
+numpy = ">=1.21.6"
+packaging = "*"
+protobuf = "*"
+sympy = "*"
+
+[[package]]
+name = "openai"
+version = "1.9.0"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.9.0-py3-none-any.whl", hash = "sha256:5774a0582ed82f6de92200ed5024e03e272b93e04e9d31caeda5fb80f63df50d"},
+ {file = "openai-1.9.0.tar.gz", hash = "sha256:3e9947a544556c051fa138a4def5bd8b468364ec52803c6628532ab949ddce55"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.7,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "opencv-python-headless"
+version = "4.9.0.80"
+description = "Wrapper package for OpenCV python bindings."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "opencv-python-headless-4.9.0.80.tar.gz", hash = "sha256:71a4cd8cf7c37122901d8e81295db7fb188730e33a0e40039a4e59c1030b0958"},
+ {file = "opencv_python_headless-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:2ea8a2edc4db87841991b2fbab55fc07b97ecb602e0f47d5d485bd75cee17c1a"},
+ {file = "opencv_python_headless-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:e0ee54e27be493e8f7850847edae3128e18b540dac1d7b2e4001b8944e11e1c6"},
+ {file = "opencv_python_headless-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57ce2865e8fec431c6f97a81e9faaf23fa5be61011d0a75ccf47a3c0d65fa73d"},
+ {file = "opencv_python_headless-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:976656362d68d9f40a5c66f83901430538002465f7db59142784f3893918f3df"},
+ {file = "opencv_python_headless-4.9.0.80-cp37-abi3-win32.whl", hash = "sha256:11e3849d83e6651d4e7699aadda9ec7ed7c38957cbbcb99db074f2a2d2de9670"},
+ {file = "opencv_python_headless-4.9.0.80-cp37-abi3-win_amd64.whl", hash = "sha256:a8056c2cb37cd65dfcdf4153ca16f7362afcf3a50d600d6bb69c660fc61ee29c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""},
+ {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""},
+ {version = ">=1.17.3", markers = "(platform_system != \"Darwin\" and platform_system != \"Linux\") and python_version >= \"3.8\" and python_version < \"3.9\" or platform_system != \"Darwin\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_machine != \"aarch64\" or platform_machine != \"arm64\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_system != \"Linux\" or (platform_machine != \"arm64\" and platform_machine != \"aarch64\") and python_version >= \"3.8\" and python_version < \"3.9\""},
+ {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""},
+ {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.5", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "optimum"
+version = "1.16.2"
+description = "Optimum Library is an extension of the Hugging Face Transformers library, providing a framework to integrate third-party libraries from Hardware Partners and interface with their specific functionality."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "optimum-1.16.2-py3-none-any.whl", hash = "sha256:29ad8fe53b565646bb06d8779c398e0149d220570654acdf5e3790eb1aef790d"},
+ {file = "optimum-1.16.2.tar.gz", hash = "sha256:0ac278c94b94888ea3b68f6a426c836900621d29db1d176587a584fd43600ba9"},
+]
+
+[package.dependencies]
+coloredlogs = "*"
+datasets = "*"
+huggingface-hub = ">=0.8.0"
+numpy = "*"
+onnx = {version = "*", optional = true, markers = "extra == \"exporters\""}
+onnxruntime = {version = "*", optional = true, markers = "extra == \"exporters\""}
+packaging = "*"
+sympy = "*"
+timm = {version = "*", optional = true, markers = "extra == \"exporters\""}
+torch = ">=1.11"
+transformers = {version = ">=4.26.0", extras = ["sentencepiece"]}
+
+[package.extras]
+amd = ["optimum-amd"]
+benchmark = ["evaluate (>=0.2.0)", "optuna", "scikit-learn", "seqeval", "torchvision", "tqdm"]
+dev = ["Pillow", "accelerate", "black (>=23.1,<24.0)", "diffusers (>=0.17.0)", "einops", "invisible-watermark", "parameterized", "pytest", "pytest-xdist", "requests", "ruff (==0.1.5)", "sacremoses", "torchaudio", "torchvision"]
+diffusers = ["diffusers"]
+doc-build = ["accelerate"]
+exporters = ["onnx", "onnxruntime", "timm"]
+exporters-gpu = ["onnx", "onnxruntime-gpu", "timm"]
+exporters-tf = ["h5py", "numpy (<1.24.0)", "onnx", "onnxruntime", "tensorflow (>=2.4,<=2.12.1)", "tf2onnx", "timm"]
+furiosa = ["optimum-furiosa"]
+graphcore = ["optimum-graphcore"]
+habana = ["optimum-habana", "transformers (>=4.33.0,<4.35.0)"]
+intel = ["optimum-intel (>=1.12.0)"]
+neural-compressor = ["optimum-intel[neural-compressor] (>=1.12.0)"]
+neuron = ["optimum-neuron[neuron]"]
+neuronx = ["optimum-neuron[neuronx]"]
+nncf = ["optimum-intel[nncf] (>=1.12.0)"]
+onnxruntime = ["datasets (>=1.2.1)", "evaluate", "onnx", "onnxruntime (>=1.11.0)", "protobuf (>=3.20.1)"]
+onnxruntime-gpu = ["accelerate", "datasets (>=1.2.1)", "evaluate", "onnx", "onnxruntime-gpu (>=1.11.0)", "protobuf (>=3.20.1)"]
+openvino = ["optimum-intel[openvino] (>=1.12.0)"]
+quality = ["black (>=23.1,<24.0)", "ruff (==0.1.5)"]
+tests = ["Pillow", "accelerate", "diffusers (>=0.17.0)", "einops", "invisible-watermark", "parameterized", "pytest", "pytest-xdist", "requests", "sacremoses", "torchaudio", "torchvision"]
+
+[[package]]
+name = "optimum-intel"
+version = "1.14.0"
+description = "Optimum Library is an extension of the Hugging Face Transformers library, providing a framework to integrate third-party libraries from Hardware Partners and interface with their specific functionality."
+optional = false
+python-versions = "*"
+files = [
+ {file = "optimum-intel-1.14.0.tar.gz", hash = "sha256:77e0fbd0bfb804e112755523bba13ab09cff039caa22ccaac493285ad0be3387"},
+ {file = "optimum_intel-1.14.0-py3-none-any.whl", hash = "sha256:050ba8a17ec86329a4dd0c1263421e11f65e792c43d00ab172e58652e3bd3875"},
+]
+
+[package.dependencies]
+accelerate = "*"
+datasets = ">=1.4.0"
+optimum = ">=1.14.0"
+scipy = "*"
+sentencepiece = "*"
+torch = ">=1.11"
+transformers = ">=4.20.0"
+
+[package.extras]
+diffusers = ["diffusers"]
+ipex = ["intel-extension-for-pytorch", "onnx"]
+neural-compressor = ["neural-compressor (>=2.2.0)", "onnx", "onnxruntime (<1.15.0)", "transformers (>=4.34.0)"]
+nncf = ["nncf (>=2.7.0)"]
+openvino = ["onnx", "onnxruntime", "openvino (>=2023.2)", "optimum (>=1.16.1)", "transformers (>=4.36.0)"]
+quality = ["black (>=23.1,<24.0)", "ruff (>=0.0.241)"]
+tests = ["Pillow", "diffusers", "evaluate", "invisible-watermark (>=0.2.0)", "parameterized", "py-cpuinfo", "pytest", "rjieba", "sacremoses", "timm", "torchaudio"]
+
+[[package]]
+name = "overrides"
+version = "7.6.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.6.0-py3-none-any.whl", hash = "sha256:c36e6635519ea9c5b043b65c36d4b886aee8bd45b7d4681d2a6df0898df4b654"},
+ {file = "overrides-7.6.0.tar.gz", hash = "sha256:01e15bbbf15b766f0675c275baa1878bd1c7dc9bc7b9ee13e677cdba93dc1bd9"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.0.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.1"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
+aws = ["s3fs (>=2021.08.0)"]
+clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
+compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
+computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2021.07.0)"]
+gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"]
+hdf5 = ["tables (>=3.6.1)"]
+html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"]
+mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
+spss = ["pyreadstat (>=1.1.2)"]
+sql-other = ["SQLAlchemy (>=1.4.16)"]
+test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.6.3)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pathspec"
+version = "0.12.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
+]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+
+[[package]]
+name = "platformdirs"
+version = "4.1.0"
+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.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"},
+ {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
+
+[[package]]
+name = "pluggy"
+version = "1.3.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
+ {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "pre-commit"
+version = "3.2.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
+ {file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
+[[package]]
+name = "prettytable"
+version = "3.9.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.9.0-py3-none-any.whl", hash = "sha256:a71292ab7769a5de274b146b276ce938786f56c31cf7cea88b6f3775d82fe8c8"},
+ {file = "prettytable-3.9.0.tar.gz", hash = "sha256:f4ed94803c23073a90620b201965e5dc0bccf1760b7a7eaf3158cab8aaffdf34"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[package.extras]
+tests = ["pytest", "pytest-cov", "pytest-lazy-fixture"]
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
+ {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "protobuf"
+version = "4.25.2"
+description = ""
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"},
+ {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"},
+ {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"},
+ {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"},
+ {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"},
+ {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"},
+ {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"},
+ {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"},
+ {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"},
+ {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"},
+ {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"},
+]
+
+[[package]]
+name = "psutil"
+version = "5.9.8"
+description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"},
+ {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"},
+ {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"},
+ {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"},
+ {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"},
+ {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"},
+ {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"},
+ {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"},
+ {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
+ {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "py-cpuinfo"
+version = "9.0.0"
+description = "Get CPU info with pure Python"
+optional = false
+python-versions = "*"
+files = [
+ {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"},
+ {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"},
+]
+
+[[package]]
+name = "pyarrow"
+version = "15.0.0"
+description = "Python library for Apache Arrow"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pyarrow-15.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:0a524532fd6dd482edaa563b686d754c70417c2f72742a8c990b322d4c03a15d"},
+ {file = "pyarrow-15.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a6bdb314affa9c2e0d5dddf3d9cbb9ef4a8dddaa68669975287d47ece67642"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66958fd1771a4d4b754cd385835e66a3ef6b12611e001d4e5edfcef5f30391e2"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f500956a49aadd907eaa21d4fff75f73954605eaa41f61cb94fb008cf2e00c6"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6f87d9c4f09e049c2cade559643424da84c43a35068f2a1c4653dc5b1408a929"},
+ {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85239b9f93278e130d86c0e6bb455dcb66fc3fd891398b9d45ace8799a871a1e"},
+ {file = "pyarrow-15.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b8d43e31ca16aa6e12402fcb1e14352d0d809de70edd185c7650fe80e0769e3"},
+ {file = "pyarrow-15.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:fa7cd198280dbd0c988df525e50e35b5d16873e2cdae2aaaa6363cdb64e3eec5"},
+ {file = "pyarrow-15.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8780b1a29d3c8b21ba6b191305a2a607de2e30dab399776ff0aa09131e266340"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0ec198ccc680f6c92723fadcb97b74f07c45ff3fdec9dd765deb04955ccf19"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036a7209c235588c2f07477fe75c07e6caced9b7b61bb897c8d4e52c4b5f9555"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2bd8a0e5296797faf9a3294e9fa2dc67aa7f10ae2207920dbebb785c77e9dbe5"},
+ {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e8ebed6053dbe76883a822d4e8da36860f479d55a762bd9e70d8494aed87113e"},
+ {file = "pyarrow-15.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:17d53a9d1b2b5bd7d5e4cd84d018e2a45bc9baaa68f7e6e3ebed45649900ba99"},
+ {file = "pyarrow-15.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9950a9c9df24090d3d558b43b97753b8f5867fb8e521f29876aa021c52fda351"},
+ {file = "pyarrow-15.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:003d680b5e422d0204e7287bb3fa775b332b3fce2996aa69e9adea23f5c8f970"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f75fce89dad10c95f4bf590b765e3ae98bcc5ba9f6ce75adb828a334e26a3d40"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca9cb0039923bec49b4fe23803807e4ef39576a2bec59c32b11296464623dc2"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ed5a78ed29d171d0acc26a305a4b7f83c122d54ff5270810ac23c75813585e4"},
+ {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6eda9e117f0402dfcd3cd6ec9bfee89ac5071c48fc83a84f3075b60efa96747f"},
+ {file = "pyarrow-15.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a3a6180c0e8f2727e6f1b1c87c72d3254cac909e609f35f22532e4115461177"},
+ {file = "pyarrow-15.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:19a8918045993349b207de72d4576af0191beef03ea655d8bdb13762f0cd6eac"},
+ {file = "pyarrow-15.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0ec076b32bacb6666e8813a22e6e5a7ef1314c8069d4ff345efa6246bc38593"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5db1769e5d0a77eb92344c7382d6543bea1164cca3704f84aa44e26c67e320fb"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2617e3bf9df2a00020dd1c1c6dce5cc343d979efe10bc401c0632b0eef6ef5b"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:d31c1d45060180131caf10f0f698e3a782db333a422038bf7fe01dace18b3a31"},
+ {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:c8c287d1d479de8269398b34282e206844abb3208224dbdd7166d580804674b7"},
+ {file = "pyarrow-15.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:07eb7f07dc9ecbb8dace0f58f009d3a29ee58682fcdc91337dfeb51ea618a75b"},
+ {file = "pyarrow-15.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:47af7036f64fce990bb8a5948c04722e4e3ea3e13b1007ef52dfe0aa8f23cf7f"},
+ {file = "pyarrow-15.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93768ccfff85cf044c418bfeeafce9a8bb0cee091bd8fd19011aff91e58de540"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6ee87fd6892700960d90abb7b17a72a5abb3b64ee0fe8db6c782bcc2d0dc0b4"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:001fca027738c5f6be0b7a3159cc7ba16a5c52486db18160909a0831b063c4e4"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:d1c48648f64aec09accf44140dccb92f4f94394b8d79976c426a5b79b11d4fa7"},
+ {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:972a0141be402bb18e3201448c8ae62958c9c7923dfaa3b3d4530c835ac81aed"},
+ {file = "pyarrow-15.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f01fc5cf49081426429127aa2d427d9d98e1cb94a32cb961d583a70b7c4504e6"},
+ {file = "pyarrow-15.0.0.tar.gz", hash = "sha256:876858f549d540898f927eba4ef77cd549ad8d24baa3207cf1b72e5788b50e83"},
+]
+
+[package.dependencies]
+numpy = ">=1.16.6,<2"
+
+[[package]]
+name = "pycocotools"
+version = "2.0.7"
+description = "Official APIs for the MS-COCO dataset"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "pycocotools-2.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a6683a002fcb4500edbcec94bdf48be69f578a9aa5c638db38614df1f45cc935"},
+ {file = "pycocotools-2.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d517ec315e53ef8df9f6b0899ebc4c79bd61fd715383861949bb1c3fca2c6d5"},
+ {file = "pycocotools-2.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eb5d46900375adaba88eedb5cbc29d8cbcf43e82505d67378df1c3b720a8c5f"},
+ {file = "pycocotools-2.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:363a6be808125306ace1a163c0b9ba479ee08eceec1fbd3889a88bd8245f73dc"},
+ {file = "pycocotools-2.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:623b941bbafecbfee574aedbf3cb257f7a879f4fdb79394e6d3fb9c76e7ad6cf"},
+ {file = "pycocotools-2.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ac4f30bac1503c780072053e6922971392fa3628b2e6967192bfca1f14736e2"},
+ {file = "pycocotools-2.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:121017ca87e2eec4e9081636d1a79519b50f473959defc5671c2d1ce0eec482e"},
+ {file = "pycocotools-2.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:4a8ec6f439638120e11f49120e1ddb6c66e0b1f293d7884207d02703a73d25a1"},
+ {file = "pycocotools-2.0.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1a675728e459d72be6e3bb3546672bb37c7daffdc2e5335aa7b834aece2b560"},
+ {file = "pycocotools-2.0.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6541340f26bae32e044eedc5d8ccdac5bd0cb64eb2b0a342dac859b696edd0aa"},
+ {file = "pycocotools-2.0.7-cp37-cp37m-win_amd64.whl", hash = "sha256:8def3c46349e919999d6d5a1d6b7e587e6891524cc28f8b4a11e463bf0914621"},
+ {file = "pycocotools-2.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6469089b9b36a1f645dc9ee830f29d261e99b4b3be73cb260688fd8b6d02760c"},
+ {file = "pycocotools-2.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dbc429018149dc34e206ea32ee6297ff30b55a8615a3f7f4c6e3842f9df73db"},
+ {file = "pycocotools-2.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66864bec8b30d47faa946bb55c8e8d6b7acb9fba0c17ff6aaa37abd78cda962a"},
+ {file = "pycocotools-2.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:625388f52e543f6f798f75f1ec125fe519580f22e72ccbd75eee0355ce336e18"},
+ {file = "pycocotools-2.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:73dc251ae4a06b7c10747ca7e2d29faabb4f13e5fc43760945966845581e79ae"},
+ {file = "pycocotools-2.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e6f7bfa1c5fb206a614bf2382c923d56092219a12dfd0fec3b5f83c13e29e00"},
+ {file = "pycocotools-2.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b29086b6ce7b73e4ddaf3045006f5c059f344a2720605cd4474814017ff2af53"},
+ {file = "pycocotools-2.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:254506c0eecabb3abbde17640f82103c0c04d53148ae920657664cab9cd649fc"},
+ {file = "pycocotools-2.0.7.tar.gz", hash = "sha256:da8b7815196eebf0adabf67fcc459126cbc6498bbc6ab1fd144c371465d86879"},
+]
+
+[package.dependencies]
+matplotlib = ">=2.1.0"
+numpy = "*"
+
+[[package]]
+name = "pycocotools-windows"
+version = "2.0.0.2"
+description = "cocotools for Windows"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pycocotools_windows-2.0.0.2-cp36-cp36m-win32.whl", hash = "sha256:f129f7fef53d6ff0f4992d6df7568d72d8dc18ea83e32e0b17a9b08062992db2"},
+ {file = "pycocotools_windows-2.0.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:fbafce7a9abbdc6003cf8e29ca28ce970c5f8ec202fd63233459ff9c51f502e8"},
+ {file = "pycocotools_windows-2.0.0.2-cp37-cp37m-win32.whl", hash = "sha256:d2b211942843a8639f955f66bc05cac9a63b65c3db3b55cc3d2c4165425c7210"},
+ {file = "pycocotools_windows-2.0.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a40bfab317c444ec6a95dc55c45615505129c2b36800ddf74a30050733c405a4"},
+ {file = "pycocotools_windows-2.0.0.2-cp38-cp38-win32.whl", hash = "sha256:ca327be6b965139f038cfbc73a20a3f3da2fa33c54e789c825e1fb27b0b42dcb"},
+ {file = "pycocotools_windows-2.0.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:099cc467ab572809847368ef05fbbc167783a560fa1c0167a80b5c95c485d97e"},
+]
+
+[package.dependencies]
+cython = ">=0.27.3"
+matplotlib = ">=2.1.0"
+setuptools = ">=18.0"
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pydantic"
+version = "1.10.14"
+description = "Data validation and settings management using python type hints"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-1.10.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f4fcec873f90537c382840f330b90f4715eebc2bc9925f04cb92de593eae054"},
+ {file = "pydantic-1.10.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e3a76f571970fcd3c43ad982daf936ae39b3e90b8a2e96c04113a369869dc87"},
+ {file = "pydantic-1.10.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d886bd3c3fbeaa963692ef6b643159ccb4b4cefaf7ff1617720cbead04fd1d"},
+ {file = "pydantic-1.10.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:798a3d05ee3b71967844a1164fd5bdb8c22c6d674f26274e78b9f29d81770c4e"},
+ {file = "pydantic-1.10.14-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:23d47a4b57a38e8652bcab15a658fdb13c785b9ce217cc3a729504ab4e1d6bc9"},
+ {file = "pydantic-1.10.14-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9f674b5c3bebc2eba401de64f29948ae1e646ba2735f884d1594c5f675d6f2a"},
+ {file = "pydantic-1.10.14-cp310-cp310-win_amd64.whl", hash = "sha256:24a7679fab2e0eeedb5a8924fc4a694b3bcaac7d305aeeac72dd7d4e05ecbebf"},
+ {file = "pydantic-1.10.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d578ac4bf7fdf10ce14caba6f734c178379bd35c486c6deb6f49006e1ba78a7"},
+ {file = "pydantic-1.10.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa7790e94c60f809c95602a26d906eba01a0abee9cc24150e4ce2189352deb1b"},
+ {file = "pydantic-1.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad4e10efa5474ed1a611b6d7f0d130f4aafadceb73c11d9e72823e8f508e663"},
+ {file = "pydantic-1.10.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1245f4f61f467cb3dfeced2b119afef3db386aec3d24a22a1de08c65038b255f"},
+ {file = "pydantic-1.10.14-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:21efacc678a11114c765eb52ec0db62edffa89e9a562a94cbf8fa10b5db5c046"},
+ {file = "pydantic-1.10.14-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:412ab4a3f6dbd2bf18aefa9f79c7cca23744846b31f1d6555c2ee2b05a2e14ca"},
+ {file = "pydantic-1.10.14-cp311-cp311-win_amd64.whl", hash = "sha256:e897c9f35281f7889873a3e6d6b69aa1447ceb024e8495a5f0d02ecd17742a7f"},
+ {file = "pydantic-1.10.14-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d604be0f0b44d473e54fdcb12302495fe0467c56509a2f80483476f3ba92b33c"},
+ {file = "pydantic-1.10.14-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42c7d17706911199798d4c464b352e640cab4351efe69c2267823d619a937e5"},
+ {file = "pydantic-1.10.14-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:596f12a1085e38dbda5cbb874d0973303e34227b400b6414782bf205cc14940c"},
+ {file = "pydantic-1.10.14-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bfb113860e9288d0886e3b9e49d9cf4a9d48b441f52ded7d96db7819028514cc"},
+ {file = "pydantic-1.10.14-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bc3ed06ab13660b565eed80887fcfbc0070f0aa0691fbb351657041d3e874efe"},
+ {file = "pydantic-1.10.14-cp37-cp37m-win_amd64.whl", hash = "sha256:ad8c2bc677ae5f6dbd3cf92f2c7dc613507eafe8f71719727cbc0a7dec9a8c01"},
+ {file = "pydantic-1.10.14-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c37c28449752bb1f47975d22ef2882d70513c546f8f37201e0fec3a97b816eee"},
+ {file = "pydantic-1.10.14-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:49a46a0994dd551ec051986806122767cf144b9702e31d47f6d493c336462597"},
+ {file = "pydantic-1.10.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53e3819bd20a42470d6dd0fe7fc1c121c92247bca104ce608e609b59bc7a77ee"},
+ {file = "pydantic-1.10.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbb503bbbbab0c588ed3cd21975a1d0d4163b87e360fec17a792f7d8c4ff29f"},
+ {file = "pydantic-1.10.14-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:336709883c15c050b9c55a63d6c7ff09be883dbc17805d2b063395dd9d9d0022"},
+ {file = "pydantic-1.10.14-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4ae57b4d8e3312d486e2498d42aed3ece7b51848336964e43abbf9671584e67f"},
+ {file = "pydantic-1.10.14-cp38-cp38-win_amd64.whl", hash = "sha256:dba49d52500c35cfec0b28aa8b3ea5c37c9df183ffc7210b10ff2a415c125c4a"},
+ {file = "pydantic-1.10.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c66609e138c31cba607d8e2a7b6a5dc38979a06c900815495b2d90ce6ded35b4"},
+ {file = "pydantic-1.10.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d986e115e0b39604b9eee3507987368ff8148222da213cd38c359f6f57b3b347"},
+ {file = "pydantic-1.10.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:646b2b12df4295b4c3148850c85bff29ef6d0d9621a8d091e98094871a62e5c7"},
+ {file = "pydantic-1.10.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282613a5969c47c83a8710cc8bfd1e70c9223feb76566f74683af889faadc0ea"},
+ {file = "pydantic-1.10.14-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:466669501d08ad8eb3c4fecd991c5e793c4e0bbd62299d05111d4f827cded64f"},
+ {file = "pydantic-1.10.14-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:13e86a19dca96373dcf3190fcb8797d40a6f12f154a244a8d1e8e03b8f280593"},
+ {file = "pydantic-1.10.14-cp39-cp39-win_amd64.whl", hash = "sha256:08b6ec0917c30861e3fe71a93be1648a2aa4f62f866142ba21670b24444d7fd8"},
+ {file = "pydantic-1.10.14-py3-none-any.whl", hash = "sha256:8ee853cd12ac2ddbf0ecbac1c289f95882b2d4482258048079d13be700aa114c"},
+ {file = "pydantic-1.10.14.tar.gz", hash = "sha256:46f17b832fe27de7850896f3afee50ea682220dd218f7e9c88d436788419dca6"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.2.0"
+
+[package.extras]
+dotenv = ["python-dotenv (>=0.10.4)"]
+email = ["email-validator (>=1.0.3)"]
+
+[[package]]
+name = "pydantic"
+version = "2.5.3"
+description = "Data validation using Python type hints"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"},
+ {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"},
+]
+
+[package.dependencies]
+annotated-types = ">=0.4.0"
+pydantic-core = "2.14.6"
+typing-extensions = ">=4.6.1"
+
+[package.extras]
+email = ["email-validator (>=2.0.0)"]
+
+[[package]]
+name = "pydantic-core"
+version = "2.14.6"
+description = ""
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"},
+ {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"},
+ {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"},
+ {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"},
+ {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"},
+ {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"},
+ {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"},
+ {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"},
+ {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"},
+ {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"},
+ {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"},
+ {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"},
+ {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"},
+ {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"},
+ {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"},
+ {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"},
+ {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"},
+ {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"},
+ {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"},
+ {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"},
+ {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"},
+ {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"},
+ {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"},
+ {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"},
+ {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"},
+ {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"},
+ {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"},
+ {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"},
+ {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"},
+ {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"},
+ {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pylint"
+version = "2.15.10"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
+ {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+]
+
+[package.dependencies]
+astroid = ">=2.12.13,<=2.14.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = [
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+]
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+tomlkit = ">=0.10.1"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pyparsing"
+version = "3.1.1"
+description = "pyparsing module - Classes and methods to define and execute parsing grammars"
+optional = false
+python-versions = ">=3.6.8"
+files = [
+ {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"},
+ {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"},
+]
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
+
+[[package]]
+name = "pyreadline3"
+version = "3.4.1"
+description = "A python implementation of GNU readline."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"},
+ {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"},
+]
+
+[[package]]
+name = "pytest"
+version = "7.2.1"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
+ {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
+]
+
+[package.dependencies]
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-mock"
+version = "3.11.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
+ {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+]
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[package.extras]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2023.3.post1"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"},
+ {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
+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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {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"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "referencing"
+version = "0.32.1"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.32.1-py3-none-any.whl", hash = "sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"},
+ {file = "referencing-0.32.1.tar.gz", hash = "sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "regex"
+version = "2023.12.25"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
+ {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
+ {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
+ {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
+ {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
+ {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
+ {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
+ {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
+ {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
+ {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
+ {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
+ {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
+ {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
+ {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
+ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
+]
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.17.1"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"},
+ {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"},
+ {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"},
+ {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"},
+ {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"},
+ {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"},
+ {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"},
+ {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"},
+ {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"},
+ {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"},
+ {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"},
+ {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"},
+ {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"},
+ {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"},
+ {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"},
+ {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"},
+ {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"},
+ {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"},
+ {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"},
+ {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"},
+ {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"},
+ {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"},
+ {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"},
+ {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"},
+ {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"},
+ {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"},
+ {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"},
+ {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"},
+ {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"},
+ {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"},
+ {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"},
+ {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"},
+ {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"},
+ {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"},
+ {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"},
+ {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"},
+]
+
+[[package]]
+name = "ruff"
+version = "0.0.292"
+description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
+ {file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_i686.whl", hash = "sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016"},
+ {file = "ruff-0.0.292-py3-none-win32.whl", hash = "sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003"},
+ {file = "ruff-0.0.292-py3-none-win_amd64.whl", hash = "sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c"},
+ {file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
+ {file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
+]
+
+[[package]]
+name = "safetensors"
+version = "0.4.2"
+description = ""
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "safetensors-0.4.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:69d8bb8384dc2cb5b72c36c4d6980771b293d1a1377b378763f5e37b6bb8d133"},
+ {file = "safetensors-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3d420e19fcef96d0067f4de4699682b4bbd85fc8fea0bd45fcd961fdf3e8c82c"},
+ {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ca54742122fa3c4821754adb67318e1cd25c3a22bbf0c5520d5176e77a099ac"},
+ {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b47aa643afdfd66cf7ce4c184092ae734e15d10aba2c2948f24270211801c3c"},
+ {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d88a16bbc330f27e7f2d4caaf6fb061ad0b8a756ecc4033260b0378e128ce8a2"},
+ {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9223b8ac21085db614a510eb3445e7083cae915a9202357555fa939695d4f57"},
+ {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6cb86133dc8930a7ab5e7438545a7f205f7a1cdd5aaf108c1d0da6bdcfbc2b"},
+ {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8a628e0ae2bbc334b62952c384aa5f41621d01850f8d67b04a96b9c39dd7326"},
+ {file = "safetensors-0.4.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:88d6beb7f811a081e0e5f1d9669fdac816c45340c04b1eaf7ebfda0ce93ea403"},
+ {file = "safetensors-0.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b57fc5b1b54cb12d8690a58a4cf4b7144730d4bde9d98aa0e1dab6295a1cd579"},
+ {file = "safetensors-0.4.2-cp310-none-win32.whl", hash = "sha256:9d87a1c98803c16cf113b9ba03f07b2dce5e8eabfd1811a7f7323fcaa2a1bf47"},
+ {file = "safetensors-0.4.2-cp310-none-win_amd64.whl", hash = "sha256:18930ec1d1ecb526d3d9835abc2489b8f1530877518f0c541e77ef0b7abcbd99"},
+ {file = "safetensors-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c5dd2ed788730ed56b415d1a11c62026b8cc8c573f55a2092afb3ab383e94fff"},
+ {file = "safetensors-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc41791b33efb9c83a59b731619f3d15f543dfe71f3a793cb8fbf9bd5d0d5d71"},
+ {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c888bf71d5ca12a720f1ed87d407c4918afa022fb247a6546d8fac15b1f112b"},
+ {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e6b2feb4b47226a16a792e6fac3f49442714884a3d4c1008569d5068a3941be9"},
+ {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f41cc0ee4b838ae8f4d8364a1b162067693d11a3893f0863be8c228d40e4d0ee"},
+ {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51b7228e46c0a483c40ba4b9470dea00fb1ff8685026bb4766799000f6328ac2"},
+ {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02697f8f2be8ca3c37a4958702dbdb1864447ef765e18b5328a1617022dcf164"},
+ {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:27fd8f65cf7c80e4280cae1ee6bcd85c483882f6580821abe71ee1a0d3dcfca7"},
+ {file = "safetensors-0.4.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c487b5f113b0924c9534a07dc034830fb4ef05ce9bb6d78cfe016a7dedfe281f"},
+ {file = "safetensors-0.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:da7f6483f3fe67ff39b3a55552552c67930ea10a36e9f2539d36fc205273d767"},
+ {file = "safetensors-0.4.2-cp311-none-win32.whl", hash = "sha256:52a7012f6cb9cb4a132760b6308daede18a9f5f8952ce08adc7c67a7d865c2d8"},
+ {file = "safetensors-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:4d1361a097ac430b310ce9eed8ed4746edee33ddafdfbb965debc8966fc34dc2"},
+ {file = "safetensors-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:77af8aa0edcc2863760fd6febbfdb82e88fd75d0e60c1ce4ba57208ba5e4a89b"},
+ {file = "safetensors-0.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846666c1c5a8c8888d2dfda8d3921cb9cb8e2c5f78365be756c11021e75a0a2a"},
+ {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f4bfc7ea19b446bfad41510d4b4c76101698c00caaa8a332c8edd8090a412ef"},
+ {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:233436fd30f27ffeb3c3780d0b84f496518868445c7a8db003639a649cc98453"},
+ {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a09237a795d11cd11f9dae505d170a29b5616151db1e10c14f892b11caadc7d"},
+ {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de01c9a3a3b7b69627d624ff69d9f11d28ce9908eea2fb6245adafa4b1d43df6"},
+ {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c1f25c5069ee42a5bcffdc66c300a407941edd73f3239e9fdefd26216407391"},
+ {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7a73b3649456d09ca8506140d44484b63154a7378434cc1e8719f8056550b224"},
+ {file = "safetensors-0.4.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e1625a8d07d046e968bd5c4961810aba1225984e4fb9243626f9d04a06ed3fee"},
+ {file = "safetensors-0.4.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f74c86b25615cb24ad4cff765a2eefc09d71bf0fed97588cf585aad9c38fbb4"},
+ {file = "safetensors-0.4.2-cp312-none-win32.whl", hash = "sha256:8523b9c5777d771bcde5c2389c03f1cdf7ebe8797432a1bd5e345efe25c55987"},
+ {file = "safetensors-0.4.2-cp312-none-win_amd64.whl", hash = "sha256:dcff0243e1737a21f83d664c63fed89d1f532c23fc6830d0427279fabd789ccb"},
+ {file = "safetensors-0.4.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:96ad3d7d472612e26cbe413922b4fb13933310f0511d346ea5cc9a1e856e52eb"},
+ {file = "safetensors-0.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:88250922401b5ae4e37de929178caf46be47ed16c817b2237b81679bec07c120"},
+ {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d40443554142fc0ab30652d5cc8554c4b7a613513bde00373e18afd5de8cbe4b"},
+ {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27f53f70106224d32d874aacecbeb4a6e4c5b16a1d2006d0e876d97229086d71"},
+ {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc068afe23734dfb26ce19db0a7877499ddf73b1d55ceb762417e8da4a1b05fb"},
+ {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9be1918eb8d43a11a6f8806759fccfa0eeb0542b12924caba66af8a7800ad01a"},
+ {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41911087d20a7bbd78cb4ad4f98aab0c431533107584df6635d8b54b99945573"},
+ {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50771c662aab909f31e94d048e76861fd027d66076ea773eef2e66c717766e24"},
+ {file = "safetensors-0.4.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13f2e57be007b7ea9329133d2399e6bdfcf1910f655440a4da17df3a45afcd30"},
+ {file = "safetensors-0.4.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c772147e6395bc829842e0a98e1b30c67fe25d816299c28196488511d5a5e951"},
+ {file = "safetensors-0.4.2-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:36239a0060b537a3e8c473df78cffee14c3ec4f51d5f1a853af99371a2fb2a35"},
+ {file = "safetensors-0.4.2-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:d0cbb7664fad2c307f95195f951b7059e95dc23e0e1822e5978c8b500098543c"},
+ {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b3e55adb6bd9dc1c2a341e72f48f075953fa35d173dd8e29a95b3b02d0d1462"},
+ {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42f743b3cca863fba53ca57a193f510e5ec359b97f38c282437716b6768e4a25"},
+ {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04e6af4a6dbeb06c4e6e7d46cf9c716cbc4cc5ef62584fd8a7c0fe558562df45"},
+ {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a492ba21b5c8f14ee5ec9b20f42ba969e53ca1f909a4d04aad736b66a341dcc2"},
+ {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b25b8233a1a85dc67e39838951cfb01595d792f3b7b644add63edb652992e030"},
+ {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd27e063fbdafe776f7b1714da59110e88f270e86db00788a8fd65f4eacfeba7"},
+ {file = "safetensors-0.4.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1b6fa399f251bbeb52029bf5a0ac2878d7705dd3612a2f8895b48e9c11f0367d"},
+ {file = "safetensors-0.4.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:de642d46b459e4afd5c2020b26c0d6d869a171ea00411897d5776c127cac74f0"},
+ {file = "safetensors-0.4.2-cp37-none-win32.whl", hash = "sha256:77b72d17754c93bb68f3598182f14d78776e0b9b31682ca5bb2c7c5bd9a75267"},
+ {file = "safetensors-0.4.2-cp37-none-win_amd64.whl", hash = "sha256:d36ee3244d461cd655aeef493792c3bccf4875282f8407fd9af99e9a41cf2530"},
+ {file = "safetensors-0.4.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:16b6b3884f7876c6b3b23a742428223a7170a5a9dac819d8c12a1569422c4b5a"},
+ {file = "safetensors-0.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ee25d311493fbbe0be9d395faee46e9d79e8948f461e388ff39e59875ed9a350"},
+ {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eed8097968585cd752a1171f86fce9aa1d89a29033e5cd8bec5a502e29f6b7af"},
+ {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:880e6865cf72cb67f9ab8d04a3c4b49dd95ae92fb1583929ce65aed94e1f685f"},
+ {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91290f83daf80ce6d1a7f629b244443c200060a80f908b29d879021409e5ea94"},
+ {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3517d568486ab3508a7acc360b82d7a4a3e26b86efdf210a9ecd9d233c40708a"},
+ {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f43a77eb38540f782999e5dc5645164fe9027d3f0194f6c9a5126168017efa"},
+ {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b684d9818aa5d63fddc65f7d0151968037d255d91adf74eba82125b41c680aaa"},
+ {file = "safetensors-0.4.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ab1f5d84185f9fefaf21413efb764e4908057b8a9a0b987ede890c353490fd70"},
+ {file = "safetensors-0.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bd979642e6c3a517ef4b84ff36c2fee4015664fea05a61154fc565978347553"},
+ {file = "safetensors-0.4.2-cp38-none-win32.whl", hash = "sha256:11be6e7afed29e5a5628f0aa6214e34bc194da73f558dc69fc7d56e07037422a"},
+ {file = "safetensors-0.4.2-cp38-none-win_amd64.whl", hash = "sha256:2f7a6e5d29bd2cc340cffaa391fa437b1be9d21a2bd8b8724d2875d13a6ef2a9"},
+ {file = "safetensors-0.4.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a5a921b4fe6925f9942adff3ebae8c16e0487908c54586a5a42f35b59fd69794"},
+ {file = "safetensors-0.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b691727228c28f2d82d8a92b2bc26e7a1f129ee40b2f2a3185b5974e038ed47c"},
+ {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91ca1056decc4e981248786e87b2a202d4841ee5f99d433f1adf3d44d4bcfa0e"},
+ {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:55969fd2e6fdb38dc221b0ab380668c21b0efa12a7562db9924759faa3c51757"},
+ {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ae429bfaecc10ab5fe78c93009b3d1656c1581da560041e700eadb497dbe7a4"},
+ {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff88f194fe4ac50b463a4a6f0c03af9ad72eb5d24ec6d6730af59522e37fedb"},
+ {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80cb48d0a447f8dd18e61813efa7d3f8f8d52edf0f05806abc0c59b83431f57"},
+ {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b286fb7adfee70a4189898ac2342b8a67d5f493e6b21b0af89ca8eac1b967cbf"},
+ {file = "safetensors-0.4.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ceeff9ddbab4f78738489eb6682867ae946178776f33699737b2129b5394dc1"},
+ {file = "safetensors-0.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a26fae748a7488cb3aac381eddfa818c42052c87b5e689fb4c6e82ed58cec209"},
+ {file = "safetensors-0.4.2-cp39-none-win32.whl", hash = "sha256:039a42ab33c9d68b39706fd38f1922ace26866eff246bf20271edb619f5f848b"},
+ {file = "safetensors-0.4.2-cp39-none-win_amd64.whl", hash = "sha256:b3a3e1f5b85859e398773f064943b62a4059f225008a2a8ee6add1edcf77cacf"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4e70d442ad17e8b153ef9095bf48ea64f15a66bf26dc2b6ca94660c154edbc24"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b90f1d9809caf4ff395951b4703295a68d12907f6945bbc3129e934ff8ae46f6"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c7ac9ad3728838006598e296b3ae9f27d80b489effd4685b92d97b3fc4c98f6"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5730d77e6ff7f4c7039e20913661ad0ea2f86c09e71c039e73dfdd1f394f08"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44feb8cb156d6803dcd19fc6b81b27235f29b877660605a6ac35e1da7d64f0e4"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:523a241c33e7c827ab9a3a23760d75c7d062f43dfe55b6b019409f89b0fb52d1"},
+ {file = "safetensors-0.4.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fb18300e8eb74291225214f26c9a8ae2110fd61a6c9b5a2ff4c4e0eb1bb9a998"},
+ {file = "safetensors-0.4.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fe5437ff9fb116e44f2ab558981249ae63f978392b4576e62fcfe167d353edbc"},
+ {file = "safetensors-0.4.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9304a0934ced5a5d272f39de36291dc141dfc152d277f03fb4d65f2fb2ffa7c"},
+ {file = "safetensors-0.4.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:160ba1b1e11cf874602c233ab80a14f588571d09556cbc3586900121d622b5ed"},
+ {file = "safetensors-0.4.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04fcd6fcf7d9c13c7e5dc7e08de5e492ee4daa8f4ad74b4d8299d3eb0224292f"},
+ {file = "safetensors-0.4.2-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:906d14c4a677d35834fb0f3a5455ef8305e1bba10a5e0f2e0f357b3d1ad989f2"},
+ {file = "safetensors-0.4.2-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:df3fcdec0cd543084610d1f09c65cdb10fb3079f79bceddc092b0d187c6a265b"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5ca76f13fb1cef242ea3ad2cb37388e7d005994f42af8b44bee56ba48b2d45ce"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:278a1a3414c020785decdcd741c578725721274d2f9f787fcc930882e83b89cc"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b5a461cc68ecd42d9d546e5e1268a39d8ede7934a68d1ce17c3c659cb829d6"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2341411412a41671d25e26bed59ec121e46bf4fadb8132895e610411c4b9681"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3497ac3895acf17c5f98197f1fa4769f09c5e7ede07fcb102f1c201e663e052c"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:01b5e71d3754d2201294f1eb7a6d59cce3a5702ff96d83d226571b2ca2183837"},
+ {file = "safetensors-0.4.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3627dbd1ea488dd8046a0491de5087f3c0d641e7acc80c0189a33c69398f1cd1"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9d56f0ef53afad26ec54ceede78a43e9a23a076dadbbda7b44d304c591abf4c1"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b259ca73d42daf658a1bda463f1f83885ae4d93a60869be80d7f7dfcc9d8bbb5"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebc3cd401e4eb54e7c0a70346be565e81942d9a41fafd5f4bf7ab3a55d10378"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bc384a0309b706aa0425c93abb0390508a61bf029ce99c7d9df4220f25871a5"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:af2d8f7235d8a08fbccfb8394387890e7fa38942b349a94e6eff13c52ac98087"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0911315bbcc5289087d063c2c2c7ccd711ea97a7e557a7bce005ac2cf80146aa"},
+ {file = "safetensors-0.4.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1efe31673be91832d73439a2af426743e1395fc9ef7b081914e9e1d567bd7b5f"},
+ {file = "safetensors-0.4.2.tar.gz", hash = "sha256:acc85dcb09ec5e8aa787f588d7ad4d55c103f31e4ff060e17d92cc0e8b8cac73"},
+]
+
+[package.extras]
+all = ["safetensors[jax]", "safetensors[numpy]", "safetensors[paddlepaddle]", "safetensors[pinned-tf]", "safetensors[quality]", "safetensors[testing]", "safetensors[torch]"]
+dev = ["safetensors[all]"]
+jax = ["flax (>=0.6.3)", "jax (>=0.3.25)", "jaxlib (>=0.3.25)", "safetensors[numpy]"]
+mlx = ["mlx (>=0.0.9)"]
+numpy = ["numpy (>=1.21.6)"]
+paddlepaddle = ["paddlepaddle (>=2.4.1)", "safetensors[numpy]"]
+pinned-tf = ["safetensors[numpy]", "tensorflow (==2.11.0)"]
+quality = ["black (==22.3)", "click (==8.0.4)", "flake8 (>=3.8.3)", "isort (>=5.5.4)"]
+tensorflow = ["safetensors[numpy]", "tensorflow (>=2.11.0)"]
+testing = ["h5py (>=3.7.0)", "huggingface_hub (>=0.12.1)", "hypothesis (>=6.70.2)", "pytest (>=7.2.0)", "pytest-benchmark (>=4.0.0)", "safetensors[numpy]", "setuptools_rust (>=1.5.2)"]
+torch = ["safetensors[numpy]", "torch (>=1.10)"]
+
+[[package]]
+name = "schema"
+version = "0.7.5"
+description = "Simple data validation library"
+optional = false
+python-versions = "*"
+files = [
+ {file = "schema-0.7.5-py2.py3-none-any.whl", hash = "sha256:f3ffdeeada09ec34bf40d7d79996d9f7175db93b7a5065de0faa7f41083c1e6c"},
+ {file = "schema-0.7.5.tar.gz", hash = "sha256:f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197"},
+]
+
+[package.dependencies]
+contextlib2 = ">=0.5.5"
+
+[[package]]
+name = "scikit-learn"
+version = "1.3.2"
+description = "A set of python modules for machine learning and data mining"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "scikit-learn-1.3.2.tar.gz", hash = "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0"},
+]
+
+[package.dependencies]
+joblib = ">=1.1.1"
+numpy = ">=1.17.3,<2.0"
+scipy = ">=1.5.0"
+threadpoolctl = ">=2.0.0"
+
+[package.extras]
+benchmark = ["matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"]
+docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.10.1)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"]
+examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"]
+tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.16.2)"]
+
+[[package]]
+name = "scipy"
+version = "1.10.1"
+description = "Fundamental algorithms for scientific computing in Python"
+optional = false
+python-versions = "<3.12,>=3.8"
+files = [
+ {file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"},
+ {file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"},
+ {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1553b5dcddd64ba9a0d95355e63fe6c3fc303a8fd77c7bc91e77d61363f7433f"},
+ {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c0ff64b06b10e35215abce517252b375e580a6125fd5fdf6421b98efbefb2d2"},
+ {file = "scipy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:fae8a7b898c42dffe3f7361c40d5952b6bf32d10c4569098d276b4c547905ee1"},
+ {file = "scipy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f1564ea217e82c1bbe75ddf7285ba0709ecd503f048cb1236ae9995f64217bd"},
+ {file = "scipy-1.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d925fa1c81b772882aa55bcc10bf88324dadb66ff85d548c71515f6689c6dac5"},
+ {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaea0a6be54462ec027de54fca511540980d1e9eea68b2d5c1dbfe084797be35"},
+ {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a35c4242ec5f292c3dd364a7c71a61be87a3d4ddcc693372813c0b73c9af1d"},
+ {file = "scipy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:43b8e0bcb877faf0abfb613d51026cd5cc78918e9530e375727bf0625c82788f"},
+ {file = "scipy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5678f88c68ea866ed9ebe3a989091088553ba12c6090244fdae3e467b1139c35"},
+ {file = "scipy-1.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:39becb03541f9e58243f4197584286e339029e8908c46f7221abeea4b749fa88"},
+ {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce5869c8d68cf383ce240e44c1d9ae7c06078a9396df68ce88a1230f93a30c1"},
+ {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c3457ce0b3ad5124f98a86533106b643dd811dd61b548e78cf4c8786652f6f"},
+ {file = "scipy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:049a8bbf0ad95277ffba9b3b7d23e5369cc39e66406d60422c8cfef40ccc8415"},
+ {file = "scipy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cd9f1027ff30d90618914a64ca9b1a77a431159df0e2a195d8a9e8a04c78abf9"},
+ {file = "scipy-1.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:79c8e5a6c6ffaf3a2262ef1be1e108a035cf4f05c14df56057b64acc5bebffb6"},
+ {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51af417a000d2dbe1ec6c372dfe688e041a7084da4fdd350aeb139bd3fb55353"},
+ {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4735d6c28aad3cdcf52117e0e91d6b39acd4272f3f5cd9907c24ee931ad601"},
+ {file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"},
+ {file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"},
+]
+
+[package.dependencies]
+numpy = ">=1.19.5,<1.27.0"
+
+[package.extras]
+dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"]
+doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"]
+test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "sentencepiece"
+version = "0.1.99"
+description = "SentencePiece python wrapper"
+optional = false
+python-versions = "*"
+files = [
+ {file = "sentencepiece-0.1.99-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0eb528e70571b7c02723e5804322469b82fe7ea418c96051d0286c0fa028db73"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:77d7fafb2c4e4659cbdf303929503f37a26eabc4ff31d3a79bf1c5a1b338caa7"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be9cf5b9e404c245aeb3d3723c737ba7a8f5d4ba262ef233a431fa6c45f732a0"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baed1a26464998f9710d20e52607c29ffd4293e7c71c6a1f83f51ad0911ec12c"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9832f08bb372d4c8b567612f8eab9e36e268dff645f1c28f9f8e851be705f6d1"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:019e7535108e309dae2b253a75834fc3128240aa87c00eb80732078cdc182588"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-win32.whl", hash = "sha256:fa16a830416bb823fa2a52cbdd474d1f7f3bba527fd2304fb4b140dad31bb9bc"},
+ {file = "sentencepiece-0.1.99-cp310-cp310-win_amd64.whl", hash = "sha256:14b0eccb7b641d4591c3e12ae44cab537d68352e4d3b6424944f0c447d2348d5"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6d3c56f24183a1e8bd61043ff2c58dfecdc68a5dd8955dc13bab83afd5f76b81"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed6ea1819fd612c989999e44a51bf556d0ef6abfb553080b9be3d347e18bcfb7"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2a0260cd1fb7bd8b4d4f39dc2444a8d5fd4e0a0c4d5c899810ef1abf99b2d45"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a1abff4d1ff81c77cac3cc6fefa34fa4b8b371e5ee51cb7e8d1ebc996d05983"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:004e6a621d4bc88978eecb6ea7959264239a17b70f2cbc348033d8195c9808ec"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db361e03342c41680afae5807590bc88aa0e17cfd1a42696a160e4005fcda03b"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-win32.whl", hash = "sha256:2d95e19168875b70df62916eb55428a0cbcb834ac51d5a7e664eda74def9e1e0"},
+ {file = "sentencepiece-0.1.99-cp311-cp311-win_amd64.whl", hash = "sha256:f90d73a6f81248a909f55d8e6ef56fec32d559e1e9af045f0b0322637cb8e5c7"},
+ {file = "sentencepiece-0.1.99-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:62e24c81e74bd87a6e0d63c51beb6527e4c0add67e1a17bac18bcd2076afcfeb"},
+ {file = "sentencepiece-0.1.99-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57efcc2d51caff20d9573567d9fd3f854d9efe613ed58a439c78c9f93101384a"},
+ {file = "sentencepiece-0.1.99-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a904c46197993bd1e95b93a6e373dca2f170379d64441041e2e628ad4afb16f"},
+ {file = "sentencepiece-0.1.99-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d89adf59854741c0d465f0e1525b388c0d174f611cc04af54153c5c4f36088c4"},
+ {file = "sentencepiece-0.1.99-cp36-cp36m-win32.whl", hash = "sha256:47c378146928690d1bc106fdf0da768cebd03b65dd8405aa3dd88f9c81e35dba"},
+ {file = "sentencepiece-0.1.99-cp36-cp36m-win_amd64.whl", hash = "sha256:9ba142e7a90dd6d823c44f9870abdad45e6c63958eb60fe44cca6828d3b69da2"},
+ {file = "sentencepiece-0.1.99-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b7b1a9ae4d7c6f1f867e63370cca25cc17b6f4886729595b885ee07a58d3cec3"},
+ {file = "sentencepiece-0.1.99-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0f644c9d4d35c096a538507b2163e6191512460035bf51358794a78515b74f7"},
+ {file = "sentencepiece-0.1.99-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8843d23a0f686d85e569bd6dcd0dd0e0cbc03731e63497ca6d5bacd18df8b85"},
+ {file = "sentencepiece-0.1.99-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33e6f690a1caebb4867a2e367afa1918ad35be257ecdb3455d2bbd787936f155"},
+ {file = "sentencepiece-0.1.99-cp37-cp37m-win32.whl", hash = "sha256:8a321866c2f85da7beac74a824b4ad6ddc2a4c9bccd9382529506d48f744a12c"},
+ {file = "sentencepiece-0.1.99-cp37-cp37m-win_amd64.whl", hash = "sha256:c42f753bcfb7661c122a15b20be7f684b61fc8592c89c870adf52382ea72262d"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:85b476406da69c70586f0bb682fcca4c9b40e5059814f2db92303ea4585c650c"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cfbcfe13c69d3f87b7fcd5da168df7290a6d006329be71f90ba4f56bc77f8561"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:445b0ec381af1cd4eef95243e7180c63d9c384443c16c4c47a28196bd1cda937"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6890ea0f2b4703f62d0bf27932e35808b1f679bdb05c7eeb3812b935ba02001"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb71af492b0eefbf9f2501bec97bcd043b6812ab000d119eaf4bd33f9e283d03"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27b866b5bd3ddd54166bbcbf5c8d7dd2e0b397fac8537991c7f544220b1f67bc"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-win32.whl", hash = "sha256:b133e8a499eac49c581c3c76e9bdd08c338cc1939e441fee6f92c0ccb5f1f8be"},
+ {file = "sentencepiece-0.1.99-cp38-cp38-win_amd64.whl", hash = "sha256:0eaf3591dd0690a87f44f4df129cf8d05d8a4029b5b6709b489b8e27f9a9bcff"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38efeda9bbfb55052d482a009c6a37e52f42ebffcea9d3a98a61de7aee356a28"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6c030b081dc1e1bcc9fadc314b19b740715d3d566ad73a482da20d7d46fd444c"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84dbe53e02e4f8a2e45d2ac3e430d5c83182142658e25edd76539b7648928727"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b0f55d0a0ee1719b4b04221fe0c9f0c3461dc3dabd77a035fa2f4788eb3ef9a"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e800f206cd235dc27dc749299e05853a4e4332e8d3dfd81bf13d0e5b9007d9"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae1c40cda8f9d5b0423cfa98542735c0235e7597d79caf318855cdf971b2280"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-win32.whl", hash = "sha256:c84ce33af12ca222d14a1cdd37bd76a69401e32bc68fe61c67ef6b59402f4ab8"},
+ {file = "sentencepiece-0.1.99-cp39-cp39-win_amd64.whl", hash = "sha256:350e5c74d739973f1c9643edb80f7cc904dc948578bcb1d43c6f2b173e5d18dd"},
+ {file = "sentencepiece-0.1.99.tar.gz", hash = "sha256:189c48f5cb2949288f97ccdb97f0473098d9c3dcf5a3d99d4eabe719ec27297f"},
+]
+
+[[package]]
+name = "setuptools"
+version = "69.0.3"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"},
+ {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+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"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.25"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4344d059265cc8b1b1be351bfb88749294b87a8b2bbe21dfbe066c4199541ebd"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9e2e59cbcc6ba1488404aad43de005d05ca56e069477b33ff74e91b6319735"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84daa0a2055df9ca0f148a64fdde12ac635e30edbca80e87df9b3aaf419e144a"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc8b7dabe8e67c4832891a5d322cec6d44ef02f432b4588390017f5cec186a84"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db854730a25db7c956423bb9fb4bdd1216c839a689bf9cc15fada0a7fb2f4570"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-win32.whl", hash = "sha256:14a6f68e8fc96e5e8f5647ef6cda6250c780612a573d99e4d881581432ef1669"},
+ {file = "SQLAlchemy-2.0.25-cp310-cp310-win_amd64.whl", hash = "sha256:87f6e732bccd7dcf1741c00f1ecf33797383128bd1c90144ac8adc02cbb98643"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:342d365988ba88ada8af320d43df4e0b13a694dbd75951f537b2d5e4cb5cd002"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa9373708763ef46782d10e950b49d0235bfe58facebd76917d3f5cbf5971aed"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d24f571990c05f6b36a396218f251f3e0dda916e0c687ef6fdca5072743208f5"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75432b5b14dc2fff43c50435e248b45c7cdadef73388e5610852b95280ffd0e9"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:884272dcd3ad97f47702965a0e902b540541890f468d24bd1d98bcfe41c3f018"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-win32.whl", hash = "sha256:e607cdd99cbf9bb80391f54446b86e16eea6ad309361942bf88318bcd452363c"},
+ {file = "SQLAlchemy-2.0.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d505815ac340568fd03f719446a589162d55c52f08abd77ba8964fbb7eb5b5f"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b801154027107461ee992ff4b5c09aa7cc6ec91ddfe50d02bca344918c3265c6"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59a21853f5daeb50412d459cfb13cb82c089ad4c04ec208cd14dddd99fc23b39"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29049e2c299b5ace92cbed0c1610a7a236f3baf4c6b66eb9547c01179f638ec5"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b64b183d610b424a160b0d4d880995e935208fc043d0302dd29fee32d1ee3f95"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4f7a7d7fcc675d3d85fbf3b3828ecd5990b8d61bd6de3f1b260080b3beccf215"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-win32.whl", hash = "sha256:cf18ff7fc9941b8fc23437cc3e68ed4ebeff3599eec6ef5eebf305f3d2e9a7c2"},
+ {file = "SQLAlchemy-2.0.25-cp312-cp312-win_amd64.whl", hash = "sha256:91f7d9d1c4dd1f4f6e092874c128c11165eafcf7c963128f79e28f8445de82d5"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bb209a73b8307f8fe4fe46f6ad5979649be01607f11af1eb94aa9e8a3aaf77f0"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798f717ae7c806d67145f6ae94dc7c342d3222d3b9a311a784f371a4333212c7"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd402169aa00df3142149940b3bf9ce7dde075928c1886d9a1df63d4b8de62"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:74b080c897563f81062b74e44f5a72fa44c2b373741a9ade701d5f789a10ba23"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-win32.whl", hash = "sha256:87d91043ea0dc65ee583026cb18e1b458d8ec5fc0a93637126b5fc0bc3ea68c4"},
+ {file = "SQLAlchemy-2.0.25-cp37-cp37m-win_amd64.whl", hash = "sha256:75f99202324383d613ddd1f7455ac908dca9c2dd729ec8584c9541dd41822a2c"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:420362338681eec03f53467804541a854617faed7272fe71a1bfdb07336a381e"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c88f0c7dcc5f99bdb34b4fd9b69b93c89f893f454f40219fe923a3a2fd11625"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3be4987e3ee9d9a380b66393b77a4cd6d742480c951a1c56a23c335caca4ce3"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8b8cb63d3ea63b29074dcd29da4dc6a97ad1349151f2d2949495418fd6e48db9"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:736ea78cd06de6c21ecba7416499e7236a22374561493b456a1f7ffbe3f6cdb4"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-win32.whl", hash = "sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e"},
+ {file = "SQLAlchemy-2.0.25-cp38-cp38-win_amd64.whl", hash = "sha256:c55731c116806836a5d678a70c84cb13f2cedba920212ba7dcad53260997666d"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:605b6b059f4b57b277f75ace81cc5bc6335efcbcc4ccb9066695e515dbdb3900"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:665f0a3954635b5b777a55111ababf44b4fc12b1f3ba0a435b602b6387ffd7cf"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecf6d4cda1f9f6cb0b45803a01ea7f034e2f1aed9475e883410812d9f9e3cfcf"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c51db269513917394faec5e5c00d6f83829742ba62e2ac4fa5c98d58be91662f"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:790f533fa5c8901a62b6fef5811d48980adeb2f51f1290ade8b5e7ba990ba3de"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1b1180cda6df7af84fe72e4530f192231b1f29a7496951db4ff38dac1687202d"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-win32.whl", hash = "sha256:555651adbb503ac7f4cb35834c5e4ae0819aab2cd24857a123370764dc7d7e24"},
+ {file = "SQLAlchemy-2.0.25-cp39-cp39-win_amd64.whl", hash = "sha256:dc55990143cbd853a5d038c05e79284baedf3e299661389654551bd02a6a68d7"},
+ {file = "SQLAlchemy-2.0.25-py3-none-any.whl", hash = "sha256:a86b4240e67d4753dc3092d9511886795b3c2852abe599cffe108952f7af7ac3"},
+ {file = "SQLAlchemy-2.0.25.tar.gz", hash = "sha256:a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "sympy"
+version = "1.12"
+description = "Computer algebra system (CAS) in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"},
+ {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"},
+]
+
+[package.dependencies]
+mpmath = ">=0.19"
+
+[[package]]
+name = "tenacity"
+version = "8.2.3"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
+ {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx", "tornado (>=4.5)"]
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "threadpoolctl"
+version = "3.2.0"
+description = "threadpoolctl"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"},
+ {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"},
+]
+
+[[package]]
+name = "tiktoken"
+version = "0.5.2"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tiktoken-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c4e654282ef05ec1bd06ead22141a9a1687991cef2c6a81bdd1284301abc71d"},
+ {file = "tiktoken-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b3134aa24319f42c27718c6967f3c1916a38a715a0fa73d33717ba121231307"},
+ {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6092e6e77730929c8c6a51bb0d7cfdf1b72b63c4d033d6258d1f2ee81052e9e5"},
+ {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ad8ae2a747622efae75837abba59be6c15a8f31b4ac3c6156bc56ec7a8e631"},
+ {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51cba7c8711afa0b885445f0637f0fcc366740798c40b981f08c5f984e02c9d1"},
+ {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3d8c7d2c9313f8e92e987d585ee2ba0f7c40a0de84f4805b093b634f792124f5"},
+ {file = "tiktoken-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:692eca18c5fd8d1e0dde767f895c17686faaa102f37640e884eecb6854e7cca7"},
+ {file = "tiktoken-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:138d173abbf1ec75863ad68ca289d4da30caa3245f3c8d4bfb274c4d629a2f77"},
+ {file = "tiktoken-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7388fdd684690973fdc450b47dfd24d7f0cbe658f58a576169baef5ae4658607"},
+ {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a114391790113bcff670c70c24e166a841f7ea8f47ee2fe0e71e08b49d0bf2d4"},
+ {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca96f001e69f6859dd52926d950cfcc610480e920e576183497ab954e645e6ac"},
+ {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:15fed1dd88e30dfadcdd8e53a8927f04e1f6f81ad08a5ca824858a593ab476c7"},
+ {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f8e692db5756f7ea8cb0cfca34638316dcf0841fb8469de8ed7f6a015ba0b0"},
+ {file = "tiktoken-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:bcae1c4c92df2ffc4fe9f475bf8148dbb0ee2404743168bbeb9dcc4b79dc1fdd"},
+ {file = "tiktoken-0.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b76a1e17d4eb4357d00f0622d9a48ffbb23401dcf36f9716d9bd9c8e79d421aa"},
+ {file = "tiktoken-0.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01d8b171bb5df4035580bc26d4f5339a6fd58d06f069091899d4a798ea279d3e"},
+ {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42adf7d4fb1ed8de6e0ff2e794a6a15005f056a0d83d22d1d6755a39bffd9e7f"},
+ {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3f894dbe0adb44609f3d532b8ea10820d61fdcb288b325a458dfc60fefb7db"},
+ {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:58ccfddb4e62f0df974e8f7e34a667981d9bb553a811256e617731bf1d007d19"},
+ {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58902a8bad2de4268c2a701f1c844d22bfa3cbcc485b10e8e3e28a050179330b"},
+ {file = "tiktoken-0.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e39257826d0647fcac403d8fa0a474b30d02ec8ffc012cfaf13083e9b5e82c5"},
+ {file = "tiktoken-0.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bde3b0fbf09a23072d39c1ede0e0821f759b4fa254a5f00078909158e90ae1f"},
+ {file = "tiktoken-0.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2ddee082dcf1231ccf3a591d234935e6acf3e82ee28521fe99af9630bc8d2a60"},
+ {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35c057a6a4e777b5966a7540481a75a31429fc1cb4c9da87b71c8b75b5143037"},
+ {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c4a049b87e28f1dc60509f8eb7790bc8d11f9a70d99b9dd18dfdd81a084ffe6"},
+ {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5bf5ce759089f4f6521ea6ed89d8f988f7b396e9f4afb503b945f5c949c6bec2"},
+ {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0c964f554af1a96884e01188f480dad3fc224c4bbcf7af75d4b74c4b74ae0125"},
+ {file = "tiktoken-0.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:368dd5726d2e8788e47ea04f32e20f72a2012a8a67af5b0b003d1e059f1d30a3"},
+ {file = "tiktoken-0.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a2deef9115b8cd55536c0a02c0203512f8deb2447f41585e6d929a0b878a0dd2"},
+ {file = "tiktoken-0.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ed7d380195affbf886e2f8b92b14edfe13f4768ff5fc8de315adba5b773815e"},
+ {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76fce01309c8140ffe15eb34ded2bb94789614b7d1d09e206838fc173776a18"},
+ {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60a5654d6a2e2d152637dd9a880b4482267dfc8a86ccf3ab1cec31a8c76bfae8"},
+ {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41d4d3228e051b779245a8ddd21d4336f8975563e92375662f42d05a19bdff41"},
+ {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c1cdec2c92fcde8c17a50814b525ae6a88e8e5b02030dc120b76e11db93f13"},
+ {file = "tiktoken-0.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:84ddb36faedb448a50b246e13d1b6ee3437f60b7169b723a4b2abad75e914f3e"},
+ {file = "tiktoken-0.5.2.tar.gz", hash = "sha256:f54c581f134a8ea96ce2023ab221d4d4d81ab614efa0b2fbce926387deb56c80"},
+]
+
+[package.dependencies]
+regex = ">=2022.1.18"
+requests = ">=2.26.0"
+
+[package.extras]
+blobfile = ["blobfile (>=2)"]
+
+[[package]]
+name = "timm"
+version = "0.9.12"
+description = "PyTorch Image Models"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "timm-0.9.12-py3-none-any.whl", hash = "sha256:2a828afac5b710a80ec66d0f85807e171e342faf5c0703b33102d8aa206f19dc"},
+ {file = "timm-0.9.12.tar.gz", hash = "sha256:9121d1cf320f7f32490d893340fd33117bda0a0270eb8282dfd52ae5fd3e1af6"},
+]
+
+[package.dependencies]
+huggingface-hub = "*"
+pyyaml = "*"
+safetensors = "*"
+torch = ">=1.7"
+torchvision = "*"
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
+description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
+ {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.15.1"
+description = ""
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tokenizers-0.15.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:32c9491dd1bcb33172c26b454dbd607276af959b9e78fa766e2694cafab3103c"},
+ {file = "tokenizers-0.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29a1b784b870a097e7768f8c20c2dd851e2c75dad3efdae69a79d3e7f1d614d5"},
+ {file = "tokenizers-0.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0049fbe648af04148b08cb211994ce8365ee628ce49724b56aaefd09a3007a78"},
+ {file = "tokenizers-0.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e84b3c235219e75e24de6b71e6073cd2c8d740b14d88e4c6d131b90134e3a338"},
+ {file = "tokenizers-0.15.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8cc575769ea11d074308c6d71cb10b036cdaec941562c07fc7431d956c502f0e"},
+ {file = "tokenizers-0.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bf28f299c4158e6d0b5eaebddfd500c4973d947ffeaca8bcbe2e8c137dff0b"},
+ {file = "tokenizers-0.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:506555f98361db9c74e1323a862d77dcd7d64c2058829a368bf4159d986e339f"},
+ {file = "tokenizers-0.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7061b0a28ade15906f5b2ec8c48d3bdd6e24eca6b427979af34954fbe31d5cef"},
+ {file = "tokenizers-0.15.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ed5e35507b7a0e2aac3285c4f5e37d4ec5cfc0e5825b862b68a0aaf2757af52"},
+ {file = "tokenizers-0.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1c9df9247df0de6509dd751b1c086e5f124b220133b5c883bb691cb6fb3d786f"},
+ {file = "tokenizers-0.15.1-cp310-none-win32.whl", hash = "sha256:dd999af1b4848bef1b11d289f04edaf189c269d5e6afa7a95fa1058644c3f021"},
+ {file = "tokenizers-0.15.1-cp310-none-win_amd64.whl", hash = "sha256:39d06a57f7c06940d602fad98702cf7024c4eee7f6b9fe76b9f2197d5a4cc7e2"},
+ {file = "tokenizers-0.15.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8ad034eb48bf728af06915e9294871f72fcc5254911eddec81d6df8dba1ce055"},
+ {file = "tokenizers-0.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea9ede7c42f8fa90f31bfc40376fd91a7d83a4aa6ad38e6076de961d48585b26"},
+ {file = "tokenizers-0.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b85d6fe1a20d903877aa0ef32ef6b96e81e0e48b71c206d6046ce16094de6970"},
+ {file = "tokenizers-0.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a7d44f656320137c7d643b9c7dcc1814763385de737fb98fd2643880910f597"},
+ {file = "tokenizers-0.15.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd244bd0793cdacf27ee65ec3db88c21f5815460e8872bbeb32b040469d6774e"},
+ {file = "tokenizers-0.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3f4a36e371b3cb1123adac8aeeeeab207ad32f15ed686d9d71686a093bb140"},
+ {file = "tokenizers-0.15.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2921a53966afb29444da98d56a6ccbef23feb3b0c0f294b4e502370a0a64f25"},
+ {file = "tokenizers-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f49068cf51f49c231067f1a8c9fc075ff960573f6b2a956e8e1b0154fb638ea5"},
+ {file = "tokenizers-0.15.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0ab1a22f20eaaab832ab3b00a0709ca44a0eb04721e580277579411b622c741c"},
+ {file = "tokenizers-0.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:671268f24b607c4adc6fa2b5b580fd4211b9f84b16bd7f46d62f8e5be0aa7ba4"},
+ {file = "tokenizers-0.15.1-cp311-none-win32.whl", hash = "sha256:a4f03e33d2bf7df39c8894032aba599bf90f6f6378e683a19d28871f09bb07fc"},
+ {file = "tokenizers-0.15.1-cp311-none-win_amd64.whl", hash = "sha256:30f689537bcc7576d8bd4daeeaa2cb8f36446ba2f13f421b173e88f2d8289c4e"},
+ {file = "tokenizers-0.15.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f3a379dd0898a82ea3125e8f9c481373f73bffce6430d4315f0b6cd5547e409"},
+ {file = "tokenizers-0.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d870ae58bba347d38ac3fc8b1f662f51e9c95272d776dd89f30035c83ee0a4f"},
+ {file = "tokenizers-0.15.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d6d28e0143ec2e253a8a39e94bf1d24776dbe73804fa748675dbffff4a5cd6d8"},
+ {file = "tokenizers-0.15.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61ae9ac9f44e2da128ee35db69489883b522f7abe033733fa54eb2de30dac23d"},
+ {file = "tokenizers-0.15.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d8e322a47e29128300b3f7749a03c0ec2bce0a3dc8539ebff738d3f59e233542"},
+ {file = "tokenizers-0.15.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:760334f475443bc13907b1a8e1cb0aeaf88aae489062546f9704dce6c498bfe2"},
+ {file = "tokenizers-0.15.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b173753d4aca1e7d0d4cb52b5e3ffecfb0ca014e070e40391b6bb4c1d6af3f2"},
+ {file = "tokenizers-0.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c1f13d457c8f0ab17e32e787d03470067fe8a3b4d012e7cc57cb3264529f4a"},
+ {file = "tokenizers-0.15.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:425b46ceff4505f20191df54b50ac818055d9d55023d58ae32a5d895b6f15bb0"},
+ {file = "tokenizers-0.15.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:681ac6ba3b4fdaf868ead8971221a061f580961c386e9732ea54d46c7b72f286"},
+ {file = "tokenizers-0.15.1-cp312-none-win32.whl", hash = "sha256:f2272656063ccfba2044df2115095223960d80525d208e7a32f6c01c351a6f4a"},
+ {file = "tokenizers-0.15.1-cp312-none-win_amd64.whl", hash = "sha256:9abe103203b1c6a2435d248d5ff4cceebcf46771bfbc4957a98a74da6ed37674"},
+ {file = "tokenizers-0.15.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:2ce9ed5c8ef26b026a66110e3c7b73d93ec2d26a0b1d0ea55ddce61c0e5f446f"},
+ {file = "tokenizers-0.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89b24d366137986c3647baac29ef902d2d5445003d11c30df52f1bd304689aeb"},
+ {file = "tokenizers-0.15.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0faebedd01b413ab777ca0ee85914ed8b031ea5762ab0ea60b707ce8b9be6842"},
+ {file = "tokenizers-0.15.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdbd9dfcdad4f3b95d801f768e143165165055c18e44ca79a8a26de889cd8e85"},
+ {file = "tokenizers-0.15.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:97194324c12565b07e9993ca9aa813b939541185682e859fb45bb8d7d99b3193"},
+ {file = "tokenizers-0.15.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:485e43e2cc159580e0d83fc919ec3a45ae279097f634b1ffe371869ffda5802c"},
+ {file = "tokenizers-0.15.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:191d084d60e3589d6420caeb3f9966168269315f8ec7fbc3883122dc9d99759d"},
+ {file = "tokenizers-0.15.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01c28cc8d7220634a75b14c53f4fc9d1b485f99a5a29306a999c115921de2897"},
+ {file = "tokenizers-0.15.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:325212027745d3f8d5d5006bb9e5409d674eb80a184f19873f4f83494e1fdd26"},
+ {file = "tokenizers-0.15.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3c5573603c36ce12dbe318bcfb490a94cad2d250f34deb2f06cb6937957bbb71"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:1441161adb6d71a15a630d5c1d8659d5ebe41b6b209586fbeea64738e58fcbb2"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:382a8d0c31afcfb86571afbfefa37186df90865ce3f5b731842dab4460e53a38"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e76959783e3f4ec73b3f3d24d4eec5aa9225f0bee565c48e77f806ed1e048f12"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:401df223e5eb927c5961a0fc6b171818a2bba01fb36ef18c3e1b69b8cd80e591"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52606c233c759561a16e81b2290a7738c3affac7a0b1f0a16fe58dc22e04c7d"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b72c658bbe5a05ed8bc2ac5ad782385bfd743ffa4bc87d9b5026341e709c6f44"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:25f5643a2f005c42f0737a326c6c6bdfedfdc9a994b10a1923d9c3e792e4d6a6"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5b6f633999d6b42466bbfe21be2e26ad1760b6f106967a591a41d8cbca980e"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ceb5c9ad11a015150b545c1a11210966a45b8c3d68a942e57cf8938c578a77ca"},
+ {file = "tokenizers-0.15.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bedd4ce0c4872db193444c395b11c7697260ce86a635ab6d48102d76be07d324"},
+ {file = "tokenizers-0.15.1-cp37-none-win32.whl", hash = "sha256:cd6caef6c14f5ed6d35f0ddb78eab8ca6306d0cd9870330bccff72ad014a6f42"},
+ {file = "tokenizers-0.15.1-cp37-none-win_amd64.whl", hash = "sha256:d2bd7af78f58d75a55e5df61efae164ab9200c04b76025f9cc6eeb7aff3219c2"},
+ {file = "tokenizers-0.15.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:59b3ca6c02e0bd5704caee274978bd055de2dff2e2f39dadf536c21032dfd432"},
+ {file = "tokenizers-0.15.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:48fe21b67c22583bed71933a025fd66b1f5cfae1baefa423c3d40379b5a6e74e"},
+ {file = "tokenizers-0.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3d190254c66a20fb1efbdf035e6333c5e1f1c73b1f7bfad88f9c31908ac2c2c4"},
+ {file = "tokenizers-0.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fef90c8f5abf17d48d6635f5fd92ad258acd1d0c2d920935c8bf261782cfe7c8"},
+ {file = "tokenizers-0.15.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fac011ef7da3357aa7eb19efeecf3d201ede9618f37ddedddc5eb809ea0963ca"},
+ {file = "tokenizers-0.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:574ec5b3e71d1feda6b0ecac0e0445875729b4899806efbe2b329909ec75cb50"},
+ {file = "tokenizers-0.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aca16c3c0637c051a59ea99c4253f16fbb43034fac849076a7e7913b2b9afd2d"},
+ {file = "tokenizers-0.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a6f238fc2bbfd3e12e8529980ec1624c7e5b69d4e959edb3d902f36974f725a"},
+ {file = "tokenizers-0.15.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:587e11a26835b73c31867a728f32ca8a93c9ded4a6cd746516e68b9d51418431"},
+ {file = "tokenizers-0.15.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6456e7ad397352775e2efdf68a9ec5d6524bbc4543e926eef428d36de627aed4"},
+ {file = "tokenizers-0.15.1-cp38-none-win32.whl", hash = "sha256:614f0da7dd73293214bd143e6221cafd3f7790d06b799f33a987e29d057ca658"},
+ {file = "tokenizers-0.15.1-cp38-none-win_amd64.whl", hash = "sha256:a4fa0a20d9f69cc2bf1cfce41aa40588598e77ec1d6f56bf0eb99769969d1ede"},
+ {file = "tokenizers-0.15.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8d3f18a45e0cf03ce193d5900460dc2430eec4e14c786e5d79bddba7ea19034f"},
+ {file = "tokenizers-0.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:38dbd6c38f88ad7d5dc5d70c764415d38fe3bcd99dc81638b572d093abc54170"},
+ {file = "tokenizers-0.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:777286b1f7e52de92aa4af49fe31046cfd32885d1bbaae918fab3bba52794c33"},
+ {file = "tokenizers-0.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58d4d550a3862a47dd249892d03a025e32286eb73cbd6bc887fb8fb64bc97165"},
+ {file = "tokenizers-0.15.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eda68ce0344f35042ae89220b40a0007f721776b727806b5c95497b35714bb7"},
+ {file = "tokenizers-0.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cd33d15f7a3a784c3b665cfe807b8de3c6779e060349bd5005bb4ae5bdcb437"},
+ {file = "tokenizers-0.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a1aa370f978ac0bfb50374c3a40daa93fd56d47c0c70f0c79607fdac2ccbb42"},
+ {file = "tokenizers-0.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:241482b940340fff26a2708cb9ba383a5bb8a2996d67a0ff2c4367bf4b86cc3a"},
+ {file = "tokenizers-0.15.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:68f30b05f46a4d9aba88489eadd021904afe90e10a7950e28370d6e71b9db021"},
+ {file = "tokenizers-0.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5a3c5d8025529670462b881b7b2527aacb6257398c9ec8e170070432c3ae3a82"},
+ {file = "tokenizers-0.15.1-cp39-none-win32.whl", hash = "sha256:74d1827830f60a9d78da8f6d49a1fbea5422ce0eea42e2617877d23380a7efbc"},
+ {file = "tokenizers-0.15.1-cp39-none-win_amd64.whl", hash = "sha256:9ff499923e4d6876d6b6a63ea84a56805eb35e91dd89b933a7aee0c56a3838c6"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b3aa007a0f4408f62a8471bdaa3faccad644cbf2622639f2906b4f9b5339e8b8"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f3d4176fa93d8b2070db8f3c70dc21106ae6624fcaaa334be6bdd3a0251e729e"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d0e463655ef8b2064df07bd4a445ed7f76f6da3b286b4590812587d42f80e89"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:089138fd0351b62215c462a501bd68b8df0e213edcf99ab9efd5dba7b4cb733e"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e563ac628f5175ed08e950430e2580e544b3e4b606a0995bb6b52b3a3165728"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:244dcc28c5fde221cb4373961b20da30097669005b122384d7f9f22752487a46"},
+ {file = "tokenizers-0.15.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d82951d46052dddae1369e68ff799a0e6e29befa9a0b46e387ae710fd4daefb0"},
+ {file = "tokenizers-0.15.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7b14296bc9059849246ceb256ffbe97f8806a9b5d707e0095c22db312f4fc014"},
+ {file = "tokenizers-0.15.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0309357bb9b6c8d86cdf456053479d7112074b470651a997a058cd7ad1c4ea57"},
+ {file = "tokenizers-0.15.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:083f06e9d8d01b70b67bcbcb7751b38b6005512cce95808be6bf34803534a7e7"},
+ {file = "tokenizers-0.15.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85288aea86ada579789447f0dcec108ebef8da4b450037eb4813d83e4da9371e"},
+ {file = "tokenizers-0.15.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:385e6fcb01e8de90c1d157ae2a5338b23368d0b1c4cc25088cdca90147e35d17"},
+ {file = "tokenizers-0.15.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:60067edfcbf7d6cd448ac47af41ec6e84377efbef7be0c06f15a7c1dd069e044"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f7e37f89acfe237d4eaf93c3b69b0f01f407a7a5d0b5a8f06ba91943ea3cf10"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:6a63a15b523d42ebc1f4028e5a568013388c2aefa4053a263e511cb10aaa02f1"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2417d9e4958a6c2fbecc34c27269e74561c55d8823bf914b422e261a11fdd5fd"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8550974bace6210e41ab04231e06408cf99ea4279e0862c02b8d47e7c2b2828"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:194ba82129b171bcd29235a969e5859a93e491e9b0f8b2581f500f200c85cfdd"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1bfd95eef8b01e6c0805dbccc8eaf41d8c5a84f0cce72c0ab149fe76aae0bce6"},
+ {file = "tokenizers-0.15.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b87a15dd72f8216b03c151e3dace00c75c3fe7b0ee9643c25943f31e582f1a34"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6ac22f358a0c2a6c685be49136ce7ea7054108986ad444f567712cf274b34cd8"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e9d1f046a9b9d9a95faa103f07db5921d2c1c50f0329ebba4359350ee02b18b"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a0fd30a4b74485f6a7af89fffb5fb84d6d5f649b3e74f8d37f624cc9e9e97cf"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80e45dc206b9447fa48795a1247c69a1732d890b53e2cc51ba42bc2fefa22407"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eaff56ef3e218017fa1d72007184401f04cb3a289990d2b6a0a76ce71c95f96"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b41dc107e4a4e9c95934e79b025228bbdda37d9b153d8b084160e88d5e48ad6f"},
+ {file = "tokenizers-0.15.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1922b8582d0c33488764bcf32e80ef6054f515369e70092729c928aae2284bc2"},
+ {file = "tokenizers-0.15.1.tar.gz", hash = "sha256:c0a331d6d5a3d6e97b7f99f562cee8d56797180797bc55f12070e495e717c980"},
+]
+
+[package.dependencies]
+huggingface_hub = ">=0.16.4,<1.0"
+
+[package.extras]
+dev = ["tokenizers[testing]"]
+docs = ["setuptools_rust", "sphinx", "sphinx_rtd_theme"]
+testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.12.3"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
+ {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
+]
+
+[[package]]
+name = "torch"
+version = "2.1.2"
+description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "torch-2.1.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:3a871edd6c02dae77ad810335c0833391c1a4ce49af21ea8cf0f6a5d2096eea8"},
+ {file = "torch-2.1.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:bef6996c27d8f6e92ea4e13a772d89611da0e103b48790de78131e308cf73076"},
+ {file = "torch-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:0e13034fd5fb323cbbc29e56d0637a3791e50dd589616f40c79adfa36a5a35a1"},
+ {file = "torch-2.1.2-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:d9b535cad0df3d13997dbe8bd68ac33e0e3ae5377639c9881948e40794a61403"},
+ {file = "torch-2.1.2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f9a55d55af02826ebfbadf4e9b682f0f27766bc33df8236b48d28d705587868f"},
+ {file = "torch-2.1.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:a6ebbe517097ef289cc7952783588c72de071d4b15ce0f8b285093f0916b1162"},
+ {file = "torch-2.1.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:8f32ce591616a30304f37a7d5ea80b69ca9e1b94bba7f308184bf616fdaea155"},
+ {file = "torch-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e0ee6cf90c8970e05760f898d58f9ac65821c37ffe8b04269ec787aa70962b69"},
+ {file = "torch-2.1.2-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:76d37967c31c99548ad2c4d3f2cf191db48476f2e69b35a0937137116da356a1"},
+ {file = "torch-2.1.2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:e2d83f07b4aac983453ea5bf8f9aa9dacf2278a8d31247f5d9037f37befc60e4"},
+ {file = "torch-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:f41fe0c7ecbf903a568c73486139a75cfab287a0f6c17ed0698fdea7a1e8641d"},
+ {file = "torch-2.1.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e3225f47d50bb66f756fe9196a768055d1c26b02154eb1f770ce47a2578d3aa7"},
+ {file = "torch-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33d59cd03cb60106857f6c26b36457793637512998666ee3ce17311f217afe2b"},
+ {file = "torch-2.1.2-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:8e221deccd0def6c2badff6be403e0c53491805ed9915e2c029adbcdb87ab6b5"},
+ {file = "torch-2.1.2-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:05b18594f60a911a0c4f023f38a8bda77131fba5fd741bda626e97dcf5a3dd0a"},
+ {file = "torch-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:9ca96253b761e9aaf8e06fb30a66ee301aecbf15bb5a303097de1969077620b6"},
+ {file = "torch-2.1.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d93ba70f67b08c2ae5598ee711cbc546a1bc8102cef938904b8c85c2089a51a0"},
+ {file = "torch-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:255b50bc0608db177e6a3cc118961d77de7e5105f07816585fa6f191f33a9ff3"},
+ {file = "torch-2.1.2-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:6984cd5057c0c977b3c9757254e989d3f1124f4ce9d07caa6cb637783c71d42a"},
+ {file = "torch-2.1.2-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:bc195d7927feabc0eb7c110e457c955ed2ab616f3c7c28439dd4188cf589699f"},
+]
+
+[package.dependencies]
+filelock = "*"
+fsspec = "*"
+jinja2 = "*"
+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-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.18.1", 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\""}
+sympy = "*"
+triton = {version = "2.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+typing-extensions = "*"
+
+[package.extras]
+dynamo = ["jinja2"]
+opt-einsum = ["opt-einsum (>=3.3)"]
+
+[[package]]
+name = "torchvision"
+version = "0.16.2"
+description = "image and video datasets and models for torch deep learning"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "torchvision-0.16.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:bc86f2800cb2c0c1a09c581409cdd6bff66e62f103dc83fc63f73346264c3756"},
+ {file = "torchvision-0.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b024bd412df6d3a007dcebf311a894eb3c5c21e1af80d12be382bbcb097a7c3a"},
+ {file = "torchvision-0.16.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:e89f10f3c8351972b6e3fda95bc3e479ea8dbfc9dfcfd2c32902dbad4ba5cfc5"},
+ {file = "torchvision-0.16.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:96c7583700112a410bdc4e1e4f118c429dab49c29c9a31a2cc3579bc9b08b19d"},
+ {file = "torchvision-0.16.2-cp310-cp310-win_amd64.whl", hash = "sha256:9f4032ebb3277fb07ff6a9b818d50a547fb8fcd89d958cfd9e773322454bb688"},
+ {file = "torchvision-0.16.2-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:67b1aaf8b8cb02ce75dd445f291a27c8036a502f8c0aa76e28c37a0faac2e153"},
+ {file = "torchvision-0.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bef30d03e1d1c629761f4dca51d3b7d8a0dc0acce6f4068ab2a1634e8e7b64e0"},
+ {file = "torchvision-0.16.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:e59cc7b2bd1ab5c0ce4ae382e4e37be8f1c174e8b5de2f6a23c170de9ae28495"},
+ {file = "torchvision-0.16.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e130b08cc9b3cc73a6c59d6edf032394a322f9579bfd21d14bc2e1d0999aa758"},
+ {file = "torchvision-0.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:8692ab1e48807e9604046a6f4beeb67b523294cee1b00828654bb0df2cfce2b2"},
+ {file = "torchvision-0.16.2-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:b82732dcf876a37c852772342aa6ee3480c03bb3e2a802ae109fc5f7e28d26e9"},
+ {file = "torchvision-0.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4b065143d1a720fe8a9077fd4be35d491f98819ec80b3dbbc3ec64d0b707a906"},
+ {file = "torchvision-0.16.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bc5f274e4ecd1b86062063cdf4fd385a1d39d147a3a2685fbbde9ff08bb720b8"},
+ {file = "torchvision-0.16.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:335959c43b371c0474af34c1ef2a52efdc7603c45700d29e4475eeb02984170c"},
+ {file = "torchvision-0.16.2-cp38-cp38-win_amd64.whl", hash = "sha256:7fd22d86e08eba321af70cad291020c2cdeac069b00ce88b923ca52e06174769"},
+ {file = "torchvision-0.16.2-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:56115268b37f0b75364e3654e47ad9abc66ac34c1f9e5e3dfa89a22d6a40017a"},
+ {file = "torchvision-0.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:82805f8445b094f9d1e770390ee6cc86855e89955e08ce34af2e2274fc0e5c45"},
+ {file = "torchvision-0.16.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3f4bd5fcbc361476e2e78016636ac7d5509e59d9962521f06eb98e6803898182"},
+ {file = "torchvision-0.16.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8199acdf8ab066a28b84a5b6f4d97b58976d9e164b1acc3a9d14fccfaf74bb3a"},
+ {file = "torchvision-0.16.2-cp39-cp39-win_amd64.whl", hash = "sha256:41dd4fa9f176d563fe9f1b9adef3b7e582cdfb60ce8c9bc51b094a025be687c9"},
+]
+
+[package.dependencies]
+numpy = "*"
+pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0"
+requests = "*"
+torch = "2.1.2"
+
+[package.extras]
+scipy = ["scipy"]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.1"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"},
+ {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.1"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
+ {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "transformers"
+version = "4.37.0"
+description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow"
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "transformers-4.37.0-py3-none-any.whl", hash = "sha256:669d4e2c12661e71c464eb18d6a9b9a2c74d4cba0f4648bb9323896bdd046826"},
+ {file = "transformers-4.37.0.tar.gz", hash = "sha256:5a0fdee36168f751770f7036ce7a8787be14f8b0d8f29806c493b6cb819c6c83"},
+]
+
+[package.dependencies]
+filelock = "*"
+huggingface-hub = ">=0.19.3,<1.0"
+numpy = ">=1.17"
+packaging = ">=20.0"
+protobuf = {version = "*", optional = true, markers = "extra == \"sentencepiece\""}
+pyyaml = ">=5.1"
+regex = "!=2019.12.17"
+requests = "*"
+safetensors = ">=0.3.1"
+sentencepiece = {version = ">=0.1.91,<0.1.92 || >0.1.92", optional = true, markers = "extra == \"sentencepiece\""}
+tokenizers = ">=0.14,<0.19"
+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 (>=1.11,!=1.12.0)"]
+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)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch (>=1.11,!=1.12.0)", "torchaudio", "torchvision"]
+audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.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", "hf-doc-builder (>=0.3.0)", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic (<2)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "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)", "hf-doc-builder", "hf-doc-builder (>=0.3.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 (<2)", "pytest (>=7.2.0)", "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.1.5)", "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", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch (>=1.11,!=1.12.0)", "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", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "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 (<2)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.14,<0.19)", "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)", "hf-doc-builder", "hf-doc-builder (>=0.3.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 (<2)", "pytest (>=7.2.0)", "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.1.5)", "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", "tokenizers (>=0.14,<0.19)", "torch (>=1.11,!=1.12.0)", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"]
+docs = ["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)", "hf-doc-builder", "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)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch (>=1.11,!=1.12.0)", "torchaudio", "torchvision"]
+docs-specific = ["hf-doc-builder"]
+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)"]
+flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"]
+ftfy = ["ftfy"]
+integrations = ["optuna", "ray[tune] (>=2.7.0)", "sigopt"]
+ja = ["fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "rhoknp (>=1.1.0,<1.3.1)", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)"]
+modelcreation = ["cookiecutter (==1.7.3)"]
+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)", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "ruff (==0.1.5)", "urllib3 (<2.0.0)"]
+ray = ["ray[tune] (>=2.7.0)"]
+retrieval = ["datasets (!=2.5.0)", "faiss-cpu"]
+sagemaker = ["sagemaker (>=2.31.0)"]
+sentencepiece = ["protobuf", "sentencepiece (>=0.1.91,!=0.1.92)"]
+serving = ["fastapi", "pydantic (<2)", "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", "hf-doc-builder (>=0.3.0)", "nltk", "parameterized", "protobuf", "psutil", "pydantic (<2)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "tensorboard", "timeout-decorator"]
+tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"]
+tf-cpu = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"]
+tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"]
+timm = ["timm"]
+tokenizers = ["tokenizers (>=0.14,<0.19)"]
+torch = ["accelerate (>=0.21.0)", "torch (>=1.11,!=1.12.0)"]
+torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"]
+torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"]
+torchhub = ["filelock", "huggingface-hub (>=0.19.3,<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.14,<0.19)", "torch (>=1.11,!=1.12.0)", "tqdm (>=4.27)"]
+video = ["av (==9.2.0)", "decord (==0.6.0)"]
+vision = ["Pillow (>=10.0.1,<=15.0)"]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.4"
+description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
+files = [
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9d33a55598dd18a4d8b869a3417de82a4812c3a7dc7e61cb025ece3e9c3e4e96"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cee6955c2c97fc5927a41c7a8b06647c4b4d9b99b8a1581bf1183435c8cec3e"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5022bea67e479ad212be7c05b983a72e297a013efb4e8ea5b5b4d7da79a9fdef"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:640f60a5b966f0990338f1bf559455c3dcb822bc4329d82b3d42f32a48374dfe"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0e83f641fe6f27d91bd4d259fff5d35de1567d3f581b9efe9bbd5be50fe4ddc7"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win32.whl", hash = "sha256:ce6a85027c66fa3f09d482cc6d41927ea40955f7f33b86aedd26dd932709a2c9"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win_amd64.whl", hash = "sha256:fe10779347a6c067af29cb37fd4b75fa96c5cb68f587cc9530b70fe3f2a51a55"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28d5f84e34e276887e3a240b60906ca7e2b51e975f3145c3149ceed977a69508"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c913b65cbe10996116988ac436748f24883b5097e58274223e89bb2c5d1bb1a"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecaed46241e071752195a628bb97d2b740f2fde9e34f8a74456a4ea8bb26df88"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b641e88a97eab002a1736d93ef5a4beac90ea4fd6e25affd1831319b99f456c9"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:327c40f439c6155e4eee54c4657e4701a04f5f4816d9defdcb836bf65bf83d21"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win32.whl", hash = "sha256:1b7c1d95f006b3de42fbf4045bd00c273d113e372fcb6a5378e74ed120c12032"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6140d037239a41046f5d34fba5e0374ee697adb4b48b90579c618b5402781c11"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7eec3b55135fe851a38fa248c9fd75fc3d58ceb6e1865b795e416e4d598c2a1"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc76225529ee14a53e84413480ce81ec3c44eaa0455c140e961c90ac3118ead"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf0396e47efffc0b528959a8f2e2346a98297579f867e9e1834c2aad4be829c"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a15fbabd3bc8e29c48289c156d743e69f5ec72bb125cf44f7adbdaa1937c3da6"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
+ {file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
+]
+
+[[package]]
+name = "tree-sitter-languages"
+version = "1.9.1"
+description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
+files = [
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5dee458cf1bd1e725470949124e24db842dc789039ea7ff5ba46b338e5f0dc60"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81921135fa15469586b1528088f78553e60a900d3045f4f37021ad3836219216"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edd60780d14c727179acb7bb48fbe4f79da9b830abdeb0d12c06a9f2c37928c7"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a28da3f60a6bc23195d6850836e477c149d4aaf58cdb0eb662741dca4f6401e2"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9778c00a58ee77006abc5af905b591551b158ce106c8cc6c3b4148d624ccabf"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6f68cfec0d74d6344db9c83414f401dcfc753916e71fac7d37f3a5e35b79e5ec"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:02142d81b2cd759b5fe246d403e4fba80b70268d108bd2b108301e64a84437a6"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ca4e0041c2ead2a8b354b9c229faee152bfd4617480c85cf2b352acf459db3cc"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-win32.whl", hash = "sha256:506ff5c3646e7b3a533f9e925221d4fe63b88dad0b7ffc1fb96db4c271994606"},
+ {file = "tree_sitter_languages-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ac3899e05f2bf0a7c8da70ef5a077ab3dbd442f99eb7452aabbe67bc7b29ddf"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:823426c3768eea88b6a4fd70dc668b72de90cc9f44d041a579c76d024d7d0697"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51f64b11f30cef3c5c9741e06221a46948f7c82d53ea2468139028eaf4858cca"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e1c384bcd2695ebf873bc63eccfa0b9e1c3c944cd6a6ebdd1139a2528d2d6f"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fecf8553645fc1ad84921e97b03615d84aca22c35d020f629bb44cb6a28a302e"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1a499004189bf9f338f3412d4c1c05a643e86d4619a60ba4b3ae56bc4bf5db9"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:634ef22744b4af2ed9a43fea8309ec1171b062e37c609c3463364c790a08dae3"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9394eb34208abcfa9c26ece39778037a8d97da3ef59501185303fef0ab850290"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:221c367be0129da540fbb84170e18c5b8c56c09fd2f6143e116eebbef72c780e"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-win32.whl", hash = "sha256:15d03f54f913f47ac36277d8a521cd425415a25b020e0845d7b8843f5f5e1209"},
+ {file = "tree_sitter_languages-1.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:7c565c18cebc72417ebc8f0f4cd5cb91dda51874164045cc274f47c913b194aa"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cde380cdc37594e7fcbade6a4b396dbeab52a1cecfe884cd814e1a1541ca6b93"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9c4f2409e5460bdec5921ee445f748ea7c319469e347a13373e3c7086dbf0315"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a17bbe91a78a29a9c14ab8bb07ed3761bb2708b58815bafc02d0965b15cb99e5"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:369402e2b395de2655d769e515401fe7c7df247a83aa28a6362e808b8a017fae"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a382d1e463e6ae60bbbd0c1f3db48e83b3c1a3af98d652af11de4c0e6171fc"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc60fb35f377143b30f4319fbaac0503b12cfb49de34082a479c7f0cc28927f1"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e953fb43767e327bf5c1d0585ee39236eaff47683cbda2811cbe0227fd41ad7"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c5a6df25eae23a5e2d448218b130207476cb8a613ac40570d49008243b0915bb"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-win32.whl", hash = "sha256:2720f9a639f5d5c17692135f3f2d60506c240699d0c1becdb895546e553f2339"},
+ {file = "tree_sitter_languages-1.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:f19157c33ddc1e75ae7843b813e65575ed2040e1638643251bd603bb0f52046b"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:40880b5e774c3d5759b726273c36f83042d39c600c3aeefaf39248c3adec92d0"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad71366ee2458bda6df5a7476fc0e465a1e1579f53335ce901935efc5c67fdeb"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8000c6bf889e35e8b75407ea2d56153534b3f80c3b768378f4ca5a6fe286c0f"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7e20ead363d70b3f0f0b04cf6da30257d22a166700fa39e06c9f263b527688"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:444d2662912bc439c54c1b0ffe38354ae648f1f1ac8d1254b14fa768aa1a8587"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cceac9018359310fee46204b452860bfdcb3da00f4518d430790f909cbbf6b4c"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:332c182afbd9f7601e268426470e8c453740769a6227e7d1a9636d905cd7d707"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-win32.whl", hash = "sha256:25e993a41ad11fc433cb18ce0cc1d51eb7a285560c5cdddf781139312dac1881"},
+ {file = "tree_sitter_languages-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:57419c215092ba9ba1964e07620dd386fc88ebb075b981fbb80f68f58004d4b4"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06747cac4789c436affa7c6b3483f68cc234e6a75b508a0f8369c77eb1faa04b"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b40bc82005543309c9cd4059f362c9d0d51277c942c71a5fdbed118389e5543a"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44920c9654ae03e94baa45c6e8c4b36a5f7bdd0c93877c72931bd77e862adaf1"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82e44f63a5449a41c5de3e9350967dc1c9183d9375881af5efb970c58c3fcfd8"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df177fa87b655f6234e4dae540ba3917cf8e87c3646423b809415711e926765e"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:abdc8793328aa13fbd1cef3a0dff1c2e057a430fe2a64251628bbc97c4774eba"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b3f319f95f4464c35381755422f6dc0a518ad7d295d3cfe57bbaa564d225f3f"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-win32.whl", hash = "sha256:9f3a59bb4e8ec0a598566e02b7900eb8142236bda6c8b1069c4f3cdaf641950d"},
+ {file = "tree_sitter_languages-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:517bdfe34bf24a05a496d441bee836fa77a6864f256508b82457ac28a9ac36bc"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9383331026f736bcbdf6b67f9b45417fe8fbb47225fe2517a1e4f974c319d9a8"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bba45ff3715e20e6e9a9b402f1ec2f2fc5ce11ce7b223584d0b5be5a4f8c60bb"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03558927c6e731d81706e3a8b26276eaa4fadba17e2fd83a5e0bc2a32b261975"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f0231140e2d29fcf987216277483c93bc7ce4c2f88b8af77756d796e17a2957"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ead59b416f03da262df26e282cd40eb487f15384c90290f5105451e9a8ecfea"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fd27b7bdb95a2b35b730069d7dea60d0f6cc37e5ab2e900d2940a82d1db608bd"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d8b65a5fafd774a6c6dcacd9ac8b4c258c9f1efe2bfdca0a63818c83e591b949"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f32f7a7b8fd9952f82e2b881c1c8701a467b27db209590e0effb2fb4d71fe3d3"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-win32.whl", hash = "sha256:b52321e2a3a7cd1660cd7dadea16d7c7b9c981e177e0f77f9735e04cd89de015"},
+ {file = "tree_sitter_languages-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8752bec9372937094a2557d9bfff357f30f5aa398e41e76e656baf53b4939d3"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:119f32cfc7c561e252e8958259ef997f2adfd4587ae43e82819b56f2810b8b42"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:582b04e11c67706b0a5ea64fd53ce4910fe11ad29d74ec7680c4014a02d09d4a"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a816f76c52f6c9fb3316c5d44195f8de48e09f2214b7fdb5f9232395033c789c"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a099b2f69cf22ab77de811b148de7d2d8ba8c51176a64bc56304cf42a627dd4"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:447b6c62c59255c89341ec0968e467e8c59c60fc5c2c3dc1f7dfe159a820dd3c"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41f4fee9b7de9646ef9711b6dbcdd5a4e7079e3d175089c8ef3f2c68b5adb5f4"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ee3b70594b79ff1155d5d9fea64e3af240d9327a52526d446e6bd792ac5b43cf"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:087b82cc3943fc5ffac30dc1b4192936a27c3c06fbd8718935a269e30dedc83b"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-win32.whl", hash = "sha256:155483058dc11de302f47922d31feec5e1bb9888e661aed7be0dad6f70bfe691"},
+ {file = "tree_sitter_languages-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:5335405a937f788a2608d1b25c654461dddddbc6a1341672c833d2c8943397a8"},
+]
+
+[package.dependencies]
+tree-sitter = "*"
+
+[[package]]
+name = "triton"
+version = "2.1.0"
+description = "A language and compiler for custom Deep Learning operations"
+optional = false
+python-versions = "*"
+files = [
+ {file = "triton-2.1.0-0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:66439923a30d5d48399b08a9eae10370f6c261a5ec864a64983bae63152d39d7"},
+ {file = "triton-2.1.0-0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:919b06453f0033ea52c13eaf7833de0e57db3178d23d4e04f9fc71c4f2c32bf8"},
+ {file = "triton-2.1.0-0-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae4bb8a91de790e1866405211c4d618379781188f40d5c4c399766914e84cd94"},
+ {file = "triton-2.1.0-0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39f6fb6bdccb3e98f3152e3fbea724f1aeae7d749412bbb1fa9c441d474eba26"},
+ {file = "triton-2.1.0-0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21544e522c02005a626c8ad63d39bdff2f31d41069592919ef281e964ed26446"},
+ {file = "triton-2.1.0-0-pp37-pypy37_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:143582ca31dd89cd982bd3bf53666bab1c7527d41e185f9e3d8a3051ce1b663b"},
+ {file = "triton-2.1.0-0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82fc5aeeedf6e36be4e4530cbdcba81a09d65c18e02f52dc298696d45721f3bd"},
+ {file = "triton-2.1.0-0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:81a96d110a738ff63339fc892ded095b31bd0d205e3aace262af8400d40b6fa8"},
+]
+
+[package.dependencies]
+filelock = "*"
+
+[package.extras]
+build = ["cmake (>=3.18)", "lit"]
+tests = ["autopep8", "flake8", "isort", "numpy", "pytest", "scipy (>=1.7.1)"]
+tutorials = ["matplotlib", "pandas", "tabulate"]
+
+[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
+description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
+ {file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
+]
+
+[[package]]
+name = "types-docutils"
+version = "0.20.0.20240106"
+description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-docutils-0.20.0.20240106.tar.gz", hash = "sha256:03992ec976fbe080db588e1e56a83c5e4aba5c733022b25bb26cb84397b96049"},
+ {file = "types_docutils-0.20.0.20240106-py3-none-any.whl", hash = "sha256:d408f9305761905b157ea3cb80f53d4026bce7d4cc47312939118715467d0278"},
+]
+
+[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240106"
+description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-protobuf-4.24.0.20240106.tar.gz", hash = "sha256:024f034f3b5e2bb2bbff55ebc4d591ed0d2280d90faceedcb148b9e714a3f3ee"},
+ {file = "types_protobuf-4.24.0.20240106-py3-none-any.whl", hash = "sha256:0612ef3156bd80567460a15ac7c109b313f6022f1fee04b4d922ab2789baab79"},
+]
+
+[[package]]
+name = "types-pyopenssl"
+version = "23.3.0.20240106"
+description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-pyOpenSSL-23.3.0.20240106.tar.gz", hash = "sha256:3d6f3462bec0c260caadf93fbb377225c126661b779c7d9ab99b6dad5ca10db9"},
+ {file = "types_pyOpenSSL-23.3.0.20240106-py3-none-any.whl", hash = "sha256:47a7eedbd18b7bcad17efebf1c53416148f5a173918a6d75027e75e32fe039ae"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
+description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
+ {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
+]
+
+[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
+description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+ {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+]
+
+[[package]]
+name = "types-redis"
+version = "4.5.5.0"
+description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
+ {file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+types-pyOpenSSL = "*"
+
+[[package]]
+name = "types-requests"
+version = "2.28.11.8"
+description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
+ {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
+]
+
+[package.dependencies]
+types-urllib3 = "<1.27"
+
+[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
+description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
+ {file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
+]
+
+[package.dependencies]
+types-docutils = "*"
+
+[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
+description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
+ {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "tzdata"
+version = "2023.4"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"},
+ {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"},
+]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.1.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"},
+ {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "virtualenv"
+version = "20.25.0"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
+ {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.13"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
+ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+]
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.9"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"},
+ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"},
+]
+
+[[package]]
+name = "wrapt"
+version = "1.16.0"
+description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
+]
+
+[[package]]
+name = "xxhash"
+version = "3.4.1"
+description = "Python binding for xxHash"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "xxhash-3.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91dbfa55346ad3e18e738742236554531a621042e419b70ad8f3c1d9c7a16e7f"},
+ {file = "xxhash-3.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:665a65c2a48a72068fcc4d21721510df5f51f1142541c890491afc80451636d2"},
+ {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb11628470a6004dc71a09fe90c2f459ff03d611376c1debeec2d648f44cb693"},
+ {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bef2a7dc7b4f4beb45a1edbba9b9194c60a43a89598a87f1a0226d183764189"},
+ {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c0f7b2d547d72c7eda7aa817acf8791f0146b12b9eba1d4432c531fb0352228"},
+ {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00f2fdef6b41c9db3d2fc0e7f94cb3db86693e5c45d6de09625caad9a469635b"},
+ {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23cfd9ca09acaf07a43e5a695143d9a21bf00f5b49b15c07d5388cadf1f9ce11"},
+ {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6a9ff50a3cf88355ca4731682c168049af1ca222d1d2925ef7119c1a78e95b3b"},
+ {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1d7c69a1e9ca5faa75546fdd267f214f63f52f12692f9b3a2f6467c9e67d5e7"},
+ {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:672b273040d5d5a6864a36287f3514efcd1d4b1b6a7480f294c4b1d1ee1b8de0"},
+ {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4178f78d70e88f1c4a89ff1ffe9f43147185930bb962ee3979dba15f2b1cc799"},
+ {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9804b9eb254d4b8cc83ab5a2002128f7d631dd427aa873c8727dba7f1f0d1c2b"},
+ {file = "xxhash-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c09c49473212d9c87261d22c74370457cfff5db2ddfc7fd1e35c80c31a8c14ce"},
+ {file = "xxhash-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ebbb1616435b4a194ce3466d7247df23499475c7ed4eb2681a1fa42ff766aff6"},
+ {file = "xxhash-3.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:25dc66be3db54f8a2d136f695b00cfe88018e59ccff0f3b8f545869f376a8a46"},
+ {file = "xxhash-3.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58c49083801885273e262c0f5bbeac23e520564b8357fbb18fb94ff09d3d3ea5"},
+ {file = "xxhash-3.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b526015a973bfbe81e804a586b703f163861da36d186627e27524f5427b0d520"},
+ {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36ad4457644c91a966f6fe137d7467636bdc51a6ce10a1d04f365c70d6a16d7e"},
+ {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:248d3e83d119770f96003271fe41e049dd4ae52da2feb8f832b7a20e791d2920"},
+ {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2070b6d5bbef5ee031666cf21d4953c16e92c2f8a24a94b5c240f8995ba3b1d0"},
+ {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2746035f518f0410915e247877f7df43ef3372bf36cfa52cc4bc33e85242641"},
+ {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a8ba6181514681c2591840d5632fcf7356ab287d4aff1c8dea20f3c78097088"},
+ {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aac5010869240e95f740de43cd6a05eae180c59edd182ad93bf12ee289484fa"},
+ {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4cb11d8debab1626181633d184b2372aaa09825bde709bf927704ed72765bed1"},
+ {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b29728cff2c12f3d9f1d940528ee83918d803c0567866e062683f300d1d2eff3"},
+ {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:a15cbf3a9c40672523bdb6ea97ff74b443406ba0ab9bca10ceccd9546414bd84"},
+ {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e66df260fed01ed8ea790c2913271641c58481e807790d9fca8bfd5a3c13844"},
+ {file = "xxhash-3.4.1-cp311-cp311-win32.whl", hash = "sha256:e867f68a8f381ea12858e6d67378c05359d3a53a888913b5f7d35fbf68939d5f"},
+ {file = "xxhash-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:200a5a3ad9c7c0c02ed1484a1d838b63edcf92ff538770ea07456a3732c577f4"},
+ {file = "xxhash-3.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:1d03f1c0d16d24ea032e99f61c552cb2b77d502e545187338bea461fde253583"},
+ {file = "xxhash-3.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c4bbba9b182697a52bc0c9f8ec0ba1acb914b4937cd4a877ad78a3b3eeabefb3"},
+ {file = "xxhash-3.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9fd28a9da300e64e434cfc96567a8387d9a96e824a9be1452a1e7248b7763b78"},
+ {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6066d88c9329ab230e18998daec53d819daeee99d003955c8db6fc4971b45ca3"},
+ {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93805bc3233ad89abf51772f2ed3355097a5dc74e6080de19706fc447da99cd3"},
+ {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64da57d5ed586ebb2ecdde1e997fa37c27fe32fe61a656b77fabbc58e6fbff6e"},
+ {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97322e9a7440bf3c9805cbaac090358b43f650516486746f7fa482672593df"},
+ {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbe750d512982ee7d831838a5dee9e9848f3fb440e4734cca3f298228cc957a6"},
+ {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fd79d4087727daf4d5b8afe594b37d611ab95dc8e29fe1a7517320794837eb7d"},
+ {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:743612da4071ff9aa4d055f3f111ae5247342931dedb955268954ef7201a71ff"},
+ {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b41edaf05734092f24f48c0958b3c6cbaaa5b7e024880692078c6b1f8247e2fc"},
+ {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:a90356ead70d715fe64c30cd0969072de1860e56b78adf7c69d954b43e29d9fa"},
+ {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac56eebb364e44c85e1d9e9cc5f6031d78a34f0092fea7fc80478139369a8b4a"},
+ {file = "xxhash-3.4.1-cp312-cp312-win32.whl", hash = "sha256:911035345932a153c427107397c1518f8ce456f93c618dd1c5b54ebb22e73747"},
+ {file = "xxhash-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:f31ce76489f8601cc7b8713201ce94b4bd7b7ce90ba3353dccce7e9e1fee71fa"},
+ {file = "xxhash-3.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:b5beb1c6a72fdc7584102f42c4d9df232ee018ddf806e8c90906547dfb43b2da"},
+ {file = "xxhash-3.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6d42b24d1496deb05dee5a24ed510b16de1d6c866c626c2beb11aebf3be278b9"},
+ {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b685fab18876b14a8f94813fa2ca80cfb5ab6a85d31d5539b7cd749ce9e3624"},
+ {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:419ffe34c17ae2df019a4685e8d3934d46b2e0bbe46221ab40b7e04ed9f11137"},
+ {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e041ce5714f95251a88670c114b748bca3bf80cc72400e9f23e6d0d59cf2681"},
+ {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc860d887c5cb2f524899fb8338e1bb3d5789f75fac179101920d9afddef284b"},
+ {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:312eba88ffe0a05e332e3a6f9788b73883752be63f8588a6dc1261a3eaaaf2b2"},
+ {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e01226b6b6a1ffe4e6bd6d08cfcb3ca708b16f02eb06dd44f3c6e53285f03e4f"},
+ {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9f3025a0d5d8cf406a9313cd0d5789c77433ba2004b1c75439b67678e5136537"},
+ {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:6d3472fd4afef2a567d5f14411d94060099901cd8ce9788b22b8c6f13c606a93"},
+ {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:43984c0a92f06cac434ad181f329a1445017c33807b7ae4f033878d860a4b0f2"},
+ {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a55e0506fdb09640a82ec4f44171273eeabf6f371a4ec605633adb2837b5d9d5"},
+ {file = "xxhash-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:faec30437919555b039a8bdbaba49c013043e8f76c999670aef146d33e05b3a0"},
+ {file = "xxhash-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:c9e1b646af61f1fc7083bb7b40536be944f1ac67ef5e360bca2d73430186971a"},
+ {file = "xxhash-3.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:961d948b7b1c1b6c08484bbce3d489cdf153e4122c3dfb07c2039621243d8795"},
+ {file = "xxhash-3.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:719a378930504ab159f7b8e20fa2aa1896cde050011af838af7e7e3518dd82de"},
+ {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74fb5cb9406ccd7c4dd917f16630d2e5e8cbbb02fc2fca4e559b2a47a64f4940"},
+ {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5dab508ac39e0ab988039bc7f962c6ad021acd81fd29145962b068df4148c476"},
+ {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c59f3e46e7daf4c589e8e853d700ef6607afa037bfad32c390175da28127e8c"},
+ {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cc07256eff0795e0f642df74ad096f8c5d23fe66bc138b83970b50fc7f7f6c5"},
+ {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9f749999ed80f3955a4af0eb18bb43993f04939350b07b8dd2f44edc98ffee9"},
+ {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7688d7c02149a90a3d46d55b341ab7ad1b4a3f767be2357e211b4e893efbaaf6"},
+ {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a8b4977963926f60b0d4f830941c864bed16aa151206c01ad5c531636da5708e"},
+ {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:8106d88da330f6535a58a8195aa463ef5281a9aa23b04af1848ff715c4398fb4"},
+ {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4c76a77dbd169450b61c06fd2d5d436189fc8ab7c1571d39265d4822da16df22"},
+ {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:11f11357c86d83e53719c592021fd524efa9cf024dc7cb1dfb57bbbd0d8713f2"},
+ {file = "xxhash-3.4.1-cp38-cp38-win32.whl", hash = "sha256:0c786a6cd74e8765c6809892a0d45886e7c3dc54de4985b4a5eb8b630f3b8e3b"},
+ {file = "xxhash-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:aabf37fb8fa27430d50507deeab2ee7b1bcce89910dd10657c38e71fee835594"},
+ {file = "xxhash-3.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6127813abc1477f3a83529b6bbcfeddc23162cece76fa69aee8f6a8a97720562"},
+ {file = "xxhash-3.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef2e194262f5db16075caea7b3f7f49392242c688412f386d3c7b07c7733a70a"},
+ {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71be94265b6c6590f0018bbf73759d21a41c6bda20409782d8117e76cd0dfa8b"},
+ {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10e0a619cdd1c0980e25eb04e30fe96cf8f4324758fa497080af9c21a6de573f"},
+ {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa122124d2e3bd36581dd78c0efa5f429f5220313479fb1072858188bc2d5ff1"},
+ {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17032f5a4fea0a074717fe33477cb5ee723a5f428de7563e75af64bfc1b1e10"},
+ {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca7783b20e3e4f3f52f093538895863f21d18598f9a48211ad757680c3bd006f"},
+ {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d77d09a1113899fad5f354a1eb4f0a9afcf58cefff51082c8ad643ff890e30cf"},
+ {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:21287bcdd299fdc3328cc0fbbdeaa46838a1c05391264e51ddb38a3f5b09611f"},
+ {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:dfd7a6cc483e20b4ad90224aeb589e64ec0f31e5610ab9957ff4314270b2bf31"},
+ {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:543c7fcbc02bbb4840ea9915134e14dc3dc15cbd5a30873a7a5bf66039db97ec"},
+ {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fe0a98d990e433013f41827b62be9ab43e3cf18e08b1483fcc343bda0d691182"},
+ {file = "xxhash-3.4.1-cp39-cp39-win32.whl", hash = "sha256:b9097af00ebf429cc7c0e7d2fdf28384e4e2e91008130ccda8d5ae653db71e54"},
+ {file = "xxhash-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:d699b921af0dcde50ab18be76c0d832f803034d80470703700cb7df0fbec2832"},
+ {file = "xxhash-3.4.1-cp39-cp39-win_arm64.whl", hash = "sha256:2be491723405e15cc099ade1280133ccfbf6322d2ef568494fb7d07d280e7eee"},
+ {file = "xxhash-3.4.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:431625fad7ab5649368c4849d2b49a83dc711b1f20e1f7f04955aab86cd307bc"},
+ {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc6dbd5fc3c9886a9e041848508b7fb65fd82f94cc793253990f81617b61fe49"},
+ {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ff8dbd0ec97aec842476cb8ccc3e17dd288cd6ce3c8ef38bff83d6eb927817"},
+ {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef73a53fe90558a4096e3256752268a8bdc0322f4692ed928b6cd7ce06ad4fe3"},
+ {file = "xxhash-3.4.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:450401f42bbd274b519d3d8dcf3c57166913381a3d2664d6609004685039f9d3"},
+ {file = "xxhash-3.4.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a162840cf4de8a7cd8720ff3b4417fbc10001eefdd2d21541a8226bb5556e3bb"},
+ {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b736a2a2728ba45017cb67785e03125a79d246462dfa892d023b827007412c52"},
+ {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0ae4c2e7698adef58710d6e7a32ff518b66b98854b1c68e70eee504ad061d8"},
+ {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6322c4291c3ff174dcd104fae41500e75dad12be6f3085d119c2c8a80956c51"},
+ {file = "xxhash-3.4.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:dd59ed668801c3fae282f8f4edadf6dc7784db6d18139b584b6d9677ddde1b6b"},
+ {file = "xxhash-3.4.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:92693c487e39523a80474b0394645b393f0ae781d8db3474ccdcead0559ccf45"},
+ {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4603a0f642a1e8d7f3ba5c4c25509aca6a9c1cc16f85091004a7028607ead663"},
+ {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fa45e8cbfbadb40a920fe9ca40c34b393e0b067082d94006f7f64e70c7490a6"},
+ {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595b252943b3552de491ff51e5bb79660f84f033977f88f6ca1605846637b7c6"},
+ {file = "xxhash-3.4.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:562d8b8f783c6af969806aaacf95b6c7b776929ae26c0cd941d54644ea7ef51e"},
+ {file = "xxhash-3.4.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:41ddeae47cf2828335d8d991f2d2b03b0bdc89289dc64349d712ff8ce59d0647"},
+ {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c44d584afdf3c4dbb3277e32321d1a7b01d6071c1992524b6543025fb8f4206f"},
+ {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd7bddb3a5b86213cc3f2c61500c16945a1b80ecd572f3078ddbbe68f9dabdfb"},
+ {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ecb6c987b62437c2f99c01e97caf8d25660bf541fe79a481d05732e5236719c"},
+ {file = "xxhash-3.4.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:696b4e18b7023527d5c50ed0626ac0520edac45a50ec7cf3fc265cd08b1f4c03"},
+ {file = "xxhash-3.4.1.tar.gz", hash = "sha256:0379d6cf1ff987cd421609a264ce025e74f346e3e145dd106c0cc2e3ec3f99a9"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.4"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[[package]]
+name = "zipp"
+version = "3.17.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
+]
+
+[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "8c0c752ef88d7c324a94b52d4f6d58190c8df8a1ad45582a6face8855ed05c59"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml
new file mode 100644
index 0000000000000..18a5b560ff4cc
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml
@@ -0,0 +1,66 @@
+[build-system]
+build-backend = "poetry.core.masonry.api"
+requires = ["poetry-core"]
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.llamahub]
+classes = ["IntelEmbedding"]
+contains_example = false
+import_path = "llama_index.embeddings.huggingface_optimum_intel"
+
+[tool.mypy]
+disallow_untyped_defs = true
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+authors = ["Your Name "]
+description = "llama-index embeddings Optimum Intel integration"
+license = "MIT"
+name = "llama-index-embeddings-huggingface-optimum-intel"
+readme = "README.md"
+version = "0.1.1"
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<3.12"
+llama-index-core = "^0.10.1"
+llama-index-embeddings-huggingface = "^0.1.1"
+optimum-intel = "^1.14.0"
+neural-compressor = "^2.4.1"
+
+[tool.poetry.dependencies.optimum]
+extras = ["exporters"]
+version = "^1.16.2"
+
+[tool.poetry.group.dev.dependencies]
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "^1.8.0"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8"
+types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/BUILD b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/BUILD
new file mode 100644
index 0000000000000..dabf212d7e716
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/BUILD
@@ -0,0 +1 @@
+python_tests()
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/__init__.py b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/test_embeddings_huggingface_optimum.py b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/test_embeddings_huggingface_optimum.py
new file mode 100644
index 0000000000000..636665470e2cf
--- /dev/null
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/tests/test_embeddings_huggingface_optimum.py
@@ -0,0 +1,7 @@
+from llama_index.core.base.embeddings.base import BaseEmbedding
+from llama_index.embeddings.huggingface_optimum_intel import IntelEmbedding
+
+
+def test_optimum_intel_embedding_class():
+ names_of_base_classes = [b.__name__ for b in IntelEmbedding.__mro__]
+ assert BaseEmbedding.__name__ in names_of_base_classes
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/llama_index/embeddings/huggingface/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/llama_index/embeddings/huggingface/base.py
index 3c401fce3cffe..6fd28ae8f4e95 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/llama_index/embeddings/huggingface/base.py
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/llama_index/embeddings/huggingface/base.py
@@ -212,37 +212,19 @@ class HuggingFaceInferenceAPIEmbedding(BaseEmbedding): # type: ignore[misc]
pooling: Optional[Pooling] = Field(
default=Pooling.CLS,
- description=(
- "Optional pooling technique to use with embeddings capability, if"
- " the model's raw output needs pooling."
- ),
+ description="Pooling strategy. If None, the model's default pooling is used.",
)
query_instruction: Optional[str] = Field(
- default=None,
- description=(
- "Instruction to prepend during query embedding."
- " Use of None means infer the instruction based on the model."
- " Use of empty string will defeat instruction prepending entirely."
- ),
+ default=None, description="Instruction to prepend during query embedding."
)
text_instruction: Optional[str] = Field(
- default=None,
- description=(
- "Instruction to prepend during text embedding."
- " Use of None means infer the instruction based on the model."
- " Use of empty string will defeat instruction prepending entirely."
- ),
+ default=None, description="Instruction to prepend during text embedding."
)
# Corresponds with huggingface_hub.InferenceClient
model_name: Optional[str] = Field(
default=None,
- description=(
- "The model to run inference with. Can be a model id hosted on the Hugging"
- " Face Hub, e.g. bigcode/starcoder or a URL to a deployed Inference"
- " Endpoint. Defaults to None, in which case a recommended model is"
- " automatically selected for the task (see Field below)."
- ),
+ description="Hugging Face model name. If None, the task will be used.",
)
token: Union[str, bool, None] = Field(
default=None,
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml
index d1bfd014a981e..8c007e8729df6 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index embeddings huggingface integration"
license = "MIT"
name = "llama-index-embeddings-huggingface"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-nomic/llama_index/embeddings/nomic/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-nomic/llama_index/embeddings/nomic/base.py
index 1a38b9f1a8bd1..1a2fb5c38653d 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-nomic/llama_index/embeddings/nomic/base.py
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-nomic/llama_index/embeddings/nomic/base.py
@@ -1,10 +1,23 @@
from enum import Enum
-from typing import Any, List, Optional
+from typing import Any, List, Optional, Union
-from llama_index.core.base.embeddings.base import BaseEmbedding
+from llama_index.core.base.embeddings.base import (
+ BaseEmbedding,
+ DEFAULT_EMBED_BATCH_SIZE,
+)
from llama_index.core.bridge.pydantic import Field, PrivateAttr
from llama_index.core.callbacks import CallbackManager
+from llama_index.embeddings.huggingface import HuggingFaceEmbedding
+
+from llama_index.core.bridge.pydantic import Field, PrivateAttr
+from llama_index.embeddings.huggingface.pooling import Pooling
+import torch
+import logging
+
+DEFAULT_HUGGINGFACE_LENGTH = 512
+logger = logging.getLogger(__name__)
+
class NomicAITaskType(str, Enum):
SEARCH_QUERY = "search_query"
@@ -27,6 +40,7 @@ class NomicEmbedding(BaseEmbedding):
# Instance variables initialized via Pydantic's mechanism
query_task_type: Optional[str] = Field(description="Query Embedding prefix")
document_task_type: Optional[str] = Field(description="Document Embedding prefix")
+ dimensionality: Optional[int] = Field(description="Dimension of the Embedding")
model_name: str = Field(description="Embedding model name")
_model: Any = PrivateAttr()
@@ -38,6 +52,7 @@ def __init__(
callback_manager: Optional[CallbackManager] = None,
query_task_type: Optional[str] = "search_query",
document_task_type: Optional[str] = "search_document",
+ dimensionality: Optional[int] = 768,
**kwargs: Any,
) -> None:
if query_task_type not in TASK_TYPES or document_task_type not in TASK_TYPES:
@@ -63,12 +78,14 @@ def __init__(
_model=embed,
query_task_type=query_task_type,
document_task_type=document_task_type,
+ dimensionality=dimensionality,
**kwargs,
)
self._model = embed
self.model_name = model_name
self.query_task_type = query_task_type
self.document_task_type = document_task_type
+ self.dimensionality = dimensionality
@classmethod
def class_name(cls) -> str:
@@ -78,7 +95,12 @@ def _embed(
self, texts: List[str], task_type: Optional[str] = None
) -> List[List[float]]:
"""Embed sentences using NomicAI."""
- result = self._model.text(texts, model=self.model_name, task_type=task_type)
+ result = self._model.text(
+ texts,
+ model=self.model_name,
+ task_type=task_type,
+ dimensionality=self.dimensionality,
+ )
return result["embeddings"]
def _get_query_embedding(self, query: str) -> List[float]:
@@ -100,3 +122,106 @@ async def _aget_text_embedding(self, text: str) -> List[float]:
def _get_text_embeddings(self, texts: List[str]) -> List[List[float]]:
"""Get text embeddings."""
return self._embed(texts, task_type=self.document_task_type)
+
+
+class NomicHFEmbedding(HuggingFaceEmbedding):
+ tokenizer_name: str = Field(description="Tokenizer name from HuggingFace.")
+ max_length: int = Field(
+ default=DEFAULT_HUGGINGFACE_LENGTH, description="Maximum length of input.", gt=0
+ )
+ pooling: Pooling = Field(default=Pooling.MEAN, description="Pooling strategy.")
+ normalize: bool = Field(default=True, description="Normalize embeddings or not.")
+ query_instruction: Optional[str] = Field(
+ description="Instruction to prepend to query text."
+ )
+ text_instruction: Optional[str] = Field(
+ description="Instruction to prepend to text."
+ )
+ cache_folder: Optional[str] = Field(
+ description="Cache folder for huggingface files."
+ )
+ dimensionality: Optional[int] = Field(description="Dimensionality of embedding")
+
+ _model: Any = PrivateAttr()
+ _tokenizer: Any = PrivateAttr()
+ _device: str = PrivateAttr()
+
+ def __init__(
+ self,
+ model_name: Optional[str] = None,
+ tokenizer_name: Optional[str] = None,
+ pooling: Union[str, Pooling] = "cls",
+ max_length: Optional[int] = None,
+ query_instruction: Optional[str] = None,
+ text_instruction: Optional[str] = None,
+ normalize: bool = True,
+ model: Optional[Any] = None,
+ tokenizer: Optional[Any] = None,
+ embed_batch_size: int = DEFAULT_EMBED_BATCH_SIZE,
+ cache_folder: Optional[str] = None,
+ trust_remote_code: bool = False,
+ device: Optional[str] = None,
+ callback_manager: Optional[CallbackManager] = None,
+ dimensionality: int = 768,
+ ):
+ super().__init__(
+ model_name=model_name,
+ tokenizer_name=tokenizer_name,
+ pooling=pooling,
+ max_length=max_length,
+ query_instruction=query_instruction,
+ text_instruction=text_instruction,
+ normalize=normalize,
+ model=model,
+ tokenizer=tokenizer,
+ embed_batch_size=embed_batch_size,
+ cache_folder=cache_folder,
+ trust_remote_code=trust_remote_code,
+ device=device,
+ callback_manager=callback_manager,
+ )
+ self.dimensionality = dimensionality
+ self._model.eval()
+
+ def _embed(self, sentences: List[str]) -> List[List[float]]:
+ """Embed sentences."""
+ encoded_input = self._tokenizer(
+ sentences,
+ padding=True,
+ max_length=self.max_length,
+ truncation=True,
+ return_tensors="pt",
+ )
+
+ # pop token_type_ids
+ encoded_input.pop("token_type_ids", None)
+
+ # move tokenizer inputs to device
+ encoded_input = {
+ key: val.to(self._device) for key, val in encoded_input.items()
+ }
+
+ with torch.no_grad():
+ model_output = self._model(**encoded_input)
+
+ if self.pooling == Pooling.CLS:
+ context_layer: "torch.Tensor" = model_output[0]
+ embeddings = self.pooling.cls_pooling(context_layer)
+ else:
+ embeddings = self._mean_pooling(
+ token_embeddings=model_output[0],
+ attention_mask=encoded_input["attention_mask"],
+ )
+
+ if self.normalize:
+ import torch.nn.functional as F
+
+ if self.model_name == "nomic-ai/nomic-embed-text-v1.5":
+ emb_ln = F.layer_norm(
+ embeddings, normalized_shape=(embeddings.shape[1],)
+ )
+ embeddings = emb_ln[:, : self.dimensionality]
+
+ embeddings = F.normalize(embeddings, p=2, dim=1)
+
+ return embeddings.tolist()
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml
index 470a87befd2b3..e6e3b0c19139a 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml
@@ -8,7 +8,7 @@ check-hidden = true
skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
[tool.llamahub]
-classes = ["NomicEmbedding"]
+classes = ["NomicEmbedding", "NomicHFEmbedding"]
contains_example = false
import_path = "llama_index.embeddings.nomic"
@@ -24,11 +24,14 @@ description = "llama-index embeddings nomic integration"
license = "MIT"
name = "llama-index-embeddings-nomic"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.3"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
llama-index-core = "^0.10.1"
+llama-index-embeddings-huggingface = "^0.1.0"
+einops = "^0.7.0"
+nomic = "^3.0.12"
[tool.poetry.group.dev.dependencies]
ipython = "8.10.0"
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-openai/llama_index/embeddings/openai/base.py b/llama-index-integrations/embeddings/llama-index-embeddings-openai/llama_index/embeddings/openai/base.py
index 8dee0c003e084..e83fe3f7bb385 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-openai/llama_index/embeddings/openai/base.py
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-openai/llama_index/embeddings/openai/base.py
@@ -8,6 +8,8 @@
from llama_index.core.bridge.pydantic import Field, PrivateAttr
from llama_index.core.callbacks.base import CallbackManager
from llama_index.embeddings.openai.utils import (
+ DEFAULT_OPENAI_API_BASE,
+ DEFAULT_OPENAI_API_VERSION,
create_retry_decorator,
resolve_openai_credentials,
)
@@ -244,8 +246,12 @@ class OpenAIEmbedding(BaseEmbedding):
)
api_key: str = Field(description="The OpenAI API key.")
- api_base: str = Field(description="The base URL for OpenAI API.")
- api_version: str = Field(description="The version for OpenAI API.")
+ api_base: str = Field(
+ default=DEFAULT_OPENAI_API_BASE, description="The base URL for OpenAI API."
+ )
+ api_version: str = Field(
+ default=DEFAULT_OPENAI_API_VERSION, description="The version for OpenAI API."
+ )
max_retries: int = Field(
default=10, description="Maximum number of retries.", gte=0
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml
index a3d6626d28e14..d67c45c670430 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index embeddings openai integration"
license = "MIT"
name = "llama-index-embeddings-openai"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/.gitignore b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/.gitignore
new file mode 100644
index 0000000000000..990c18de22908
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/.gitignore
@@ -0,0 +1,153 @@
+llama_index/_static
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+bin/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+etc/
+include/
+lib/
+lib64/
+parts/
+sdist/
+share/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+.ruff_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+notebooks/
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pyvenv.cfg
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# Jetbrains
+.idea
+modules/
+*.swp
+
+# VsCode
+.vscode
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# pyright
+pyrightconfig.json
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/BUILD b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/BUILD
new file mode 100644
index 0000000000000..94c4d19852dde
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/BUILD
@@ -0,0 +1,6 @@
+python_sources()
+
+poetry_requirements(
+ name="poetry",
+ module_mapping={"llamaindex-py-client": ["llama_index_client"]},
+)
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/Makefile b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/README.md b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/README.md
new file mode 100644
index 0000000000000..f979055e18cb9
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/README.md
@@ -0,0 +1 @@
+# LlamaIndex Indices Integration: Llama-Cloud
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/BUILD b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__init__.py b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__init__.py
new file mode 100644
index 0000000000000..2b754e097c1e9
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__init__.py
@@ -0,0 +1,7 @@
+from llama_index.indices.managed.llama_cloud.base import LlamaCloudIndex
+from llama_index.indices.managed.llama_cloud.retriever import LlamaCloudRetriever
+
+__all__ = [
+ "LlamaCloudIndex",
+ "LlamaCloudRetriever",
+]
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/__init__.cpython-311.pyc b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000..cc9463641386f
Binary files /dev/null and b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/__init__.cpython-311.pyc differ
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/base.cpython-311.pyc b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/base.cpython-311.pyc
new file mode 100644
index 0000000000000..6f4558c12f4f5
Binary files /dev/null and b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/base.cpython-311.pyc differ
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/retriever.cpython-311.pyc b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/retriever.cpython-311.pyc
new file mode 100644
index 0000000000000..e694d11789e60
Binary files /dev/null and b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/__pycache__/retriever.cpython-311.pyc differ
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/base.py b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/base.py
new file mode 100644
index 0000000000000..25ecd1f31893c
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/base.py
@@ -0,0 +1,224 @@
+"""Managed index.
+
+A managed Index - where the index is accessible via some API that
+interfaces a managed service.
+
+"""
+import os
+import time
+from typing import Any, List, Optional, Sequence, Type
+
+from llama_index_client import PipelineType, ProjectCreate, StatusEnum
+
+from llama_index.core.base.base_query_engine import BaseQueryEngine
+from llama_index.core.base.base_retriever import BaseRetriever
+from llama_index.core.constants import DEFAULT_APP_URL, DEFAULT_PROJECT_NAME
+from llama_index.core.indices.managed.base import BaseManagedIndex
+from llama_index.core.ingestion.api_utils import (
+ default_transformations,
+ get_aclient,
+ get_client,
+ get_pipeline_create,
+)
+from llama_index.core.schema import BaseNode, Document, TransformComponent
+
+
+class LlamaCloudIndex(BaseManagedIndex):
+ """LlamaIndex Platform Index."""
+
+ def __init__(
+ self,
+ name: str,
+ nodes: Optional[List[BaseNode]] = None,
+ transformations: Optional[List[TransformComponent]] = None,
+ timeout: int = 60,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ api_key: Optional[str] = None,
+ base_url: Optional[str] = None,
+ app_url: Optional[str] = None,
+ show_progress: bool = False,
+ **kwargs: Any,
+ ) -> None:
+ """Initialize the Platform Index."""
+ self.name = name
+ self.project_name = project_name
+ self.transformations = transformations or []
+
+ if nodes is not None:
+ # TODO: How to handle uploading nodes without running transforms on them?
+ raise ValueError("LlamaCloudIndex does not support nodes on initialization")
+
+ self._client = get_client(api_key, base_url, app_url, timeout)
+ self._aclient = get_aclient(api_key, base_url, app_url, timeout)
+
+ self._api_key = api_key
+ self._base_url = base_url
+ self._app_url = app_url
+ self._timeout = timeout
+ self._show_progress = show_progress
+
+ @classmethod
+ def from_documents( # type: ignore
+ cls: Type["LlamaCloudIndex"],
+ documents: List[Document],
+ name: str,
+ transformations: Optional[List[TransformComponent]] = None,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ api_key: Optional[str] = None,
+ base_url: Optional[str] = None,
+ app_url: Optional[str] = None,
+ timeout: int = 60,
+ verbose: bool = False,
+ **kwargs: Any,
+ ) -> "LlamaCloudIndex":
+ """Build a Vectara index from a sequence of documents."""
+ app_url = app_url or os.environ.get("LLAMA_CLOUD_APP_URL", DEFAULT_APP_URL)
+ client = get_client(api_key, base_url, app_url, timeout)
+
+ pipeline_create = get_pipeline_create(
+ name,
+ client,
+ PipelineType.MANAGED,
+ project_name=project_name,
+ transformations=transformations or default_transformations(),
+ input_nodes=documents,
+ )
+
+ project = client.project.upsert_project(
+ request=ProjectCreate(name=project_name)
+ )
+ if project.id is None:
+ raise ValueError(f"Failed to create/get project {project_name}")
+
+ if verbose:
+ print(f"Created project {project.id} with name {project.name}")
+
+ pipeline = client.project.upsert_pipeline_for_project(
+ project_id=project.id, request=pipeline_create
+ )
+ if pipeline.id is None:
+ raise ValueError(f"Failed to create/get pipeline {name}")
+
+ if verbose:
+ print(f"Created pipeline {pipeline.id} with name {pipeline.name}")
+
+ # TODO: remove when sourabh's PR is merged
+ # kick off data source execution
+ execution_ids = []
+ data_source_ids = [data_source.id for data_source in pipeline.data_sources]
+ for data_source in pipeline.data_sources:
+ execution = client.data_source.create_data_source_execution(
+ data_source_id=data_source.id
+ )
+ execution_ids.append(execution.id)
+
+ if verbose:
+ print("Loading data: ", end="")
+
+ is_done = False
+ while not is_done:
+ statuses = []
+ for data_source_id, execution_id in zip(data_source_ids, execution_ids):
+ execution = client.data_source.get_data_source_execution(
+ data_source_id=data_source_id,
+ data_source_load_execution_id=execution_id,
+ )
+ statuses.append(execution.status)
+
+ if all(status == StatusEnum.SUCCESS for status in statuses):
+ is_done = True
+ if verbose:
+ print("Done!")
+ elif any(
+ status in [StatusEnum.ERROR, StatusEnum.CANCELED] for status in statuses
+ ):
+ raise ValueError(
+ f"Data source execution failed with statuses {statuses}!"
+ )
+ else:
+ if verbose:
+ print(".", end="")
+ time.sleep(0.5)
+
+ # kick off ingestion
+ execution = client.pipeline.run_managed_pipeline_ingestion(
+ pipeline_id=pipeline.id
+ )
+ ingestion_id = execution.id
+
+ if verbose:
+ print("Running ingestion: ", end="")
+
+ is_done = False
+ while not is_done:
+ ingestion = client.pipeline.get_managed_ingestion_execution(
+ pipeline_id=pipeline.id, managed_pipeline_ingestion_id=ingestion_id
+ )
+
+ if ingestion.status == StatusEnum.SUCCESS:
+ is_done = True
+ if verbose:
+ print("Done!")
+ elif ingestion.status in [StatusEnum.ERROR, StatusEnum.CANCELED]:
+ raise ValueError(f"Ingestion failed with status {ingestion.status}")
+ else:
+ if verbose:
+ print(".", end="")
+ time.sleep(0.5)
+
+ print(f"Find your index at {app_url}/project/{project.id}/deploy/{pipeline.id}")
+
+ return cls(
+ name,
+ transformations=transformations,
+ project_name=project_name,
+ api_key=api_key,
+ base_url=base_url,
+ app_url=app_url,
+ timeout=timeout,
+ **kwargs,
+ )
+
+ def as_retriever(self, **kwargs: Any) -> BaseRetriever:
+ """Return a Retriever for this managed index."""
+ from llama_index.indices.managed.llama_cloud.retriever import (
+ LlamaCloudRetriever,
+ )
+
+ similarity_top_k = kwargs.pop("similarity_top_k", None)
+ dense_similarity_top_k = kwargs.pop("dense_similarity_top_k", None)
+ if similarity_top_k is not None:
+ dense_similarity_top_k = similarity_top_k
+
+ return LlamaCloudRetriever(
+ self.name,
+ project_name=self.project_name,
+ api_key=self._api_key,
+ base_url=self._base_url,
+ app_url=self._app_url,
+ timeout=self._timeout,
+ dense_similarity_top_k=dense_similarity_top_k,
+ **kwargs,
+ )
+
+ def as_query_engine(self, **kwargs: Any) -> BaseQueryEngine:
+ from llama_index.core.query_engine.retriever_query_engine import (
+ RetrieverQueryEngine,
+ )
+
+ kwargs["retriever"] = self.as_retriever(**kwargs)
+ return RetrieverQueryEngine.from_args(**kwargs)
+
+ def _insert(self, nodes: Sequence[BaseNode], **insert_kwargs: Any) -> None:
+ """Insert a set of documents (each a node)."""
+ raise NotImplementedError("_insert not implemented for LlamaCloudIndex.")
+
+ def delete_ref_doc(
+ self, ref_doc_id: str, delete_from_docstore: bool = False, **delete_kwargs: Any
+ ) -> None:
+ """Delete a document and it's nodes by using ref_doc_id."""
+ raise NotImplementedError("delete_ref_doc not implemented for LlamaCloudIndex.")
+
+ def update_ref_doc(self, document: Document, **update_kwargs: Any) -> None:
+ """Update a document and it's corresponding nodes."""
+ raise NotImplementedError("update_ref_doc not implemented for LlamaCloudIndex.")
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/retriever.py b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/retriever.py
new file mode 100644
index 0000000000000..28fa4f1fcbb99
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/llama_index/indices/managed/llama_cloud/retriever.py
@@ -0,0 +1,116 @@
+from typing import Any, Dict, List, Optional
+
+from llama_index_client import TextNodeWithScore
+from llama_index_client.resources.pipeline.client import OMIT
+
+from llama_index.core.base.base_retriever import BaseRetriever
+from llama_index.core.constants import DEFAULT_PROJECT_NAME
+from llama_index.core.ingestion.api_utils import get_aclient, get_client
+from llama_index.core.schema import NodeWithScore, QueryBundle, TextNode
+
+
+class LlamaCloudRetriever(BaseRetriever):
+ def __init__(
+ self,
+ name: str,
+ project_name: str = DEFAULT_PROJECT_NAME,
+ dense_similarity_top_k: Optional[int] = None,
+ sparse_similarity_top_k: Optional[int] = None,
+ enable_reranking: Optional[bool] = None,
+ rerank_top_n: Optional[int] = None,
+ alpha: Optional[float] = None,
+ search_filters: Optional[Dict[str, List[Any]]] = None,
+ api_key: Optional[str] = None,
+ base_url: Optional[str] = None,
+ app_url: Optional[str] = None,
+ timeout: int = 60,
+ **kwargs: Any,
+ ) -> None:
+ """Initialize the Platform Retriever."""
+ self.name = name
+ self.project_name = project_name
+ self._client = get_client(api_key, base_url, app_url, timeout)
+ self._aclient = get_aclient(api_key, base_url, app_url, timeout)
+
+ projects = self._client.project.list_projects(project_name=project_name)
+ if len(projects) == 0:
+ raise ValueError(f"No project found with name {project_name}")
+
+ self._dense_similarity_top_k = dense_similarity_top_k or OMIT
+ self._sparse_similarity_top_k = sparse_similarity_top_k or OMIT
+ self._enable_reranking = enable_reranking or OMIT
+ self._rerank_top_n = rerank_top_n or OMIT
+ self._alpha = alpha or OMIT
+ self._search_filters = search_filters or OMIT
+
+ super().__init__(**kwargs)
+
+ def _result_nodes_to_node_with_score(
+ self, result_nodes: List[TextNodeWithScore]
+ ) -> List[NodeWithScore]:
+ nodes = []
+ for res in result_nodes:
+ text_node = TextNode.parse_obj(res.node.dict())
+ nodes.append(NodeWithScore(node=text_node, score=res.score))
+
+ return nodes
+
+ def _retrieve(self, query_bundle: QueryBundle) -> List[NodeWithScore]:
+ """Retrieve from the platform."""
+ pipelines = self._client.pipeline.search_pipelines(
+ project_name=self.project_name, pipeline_name=self.name
+ )
+ if len(pipelines) != 1:
+ raise ValueError(
+ f"Unknown index name {self.name}. Please confirm a "
+ "managed index with this name exists."
+ )
+ pipeline = pipelines[0]
+
+ if pipeline.id is None:
+ raise ValueError(
+ f"No pipeline found with name {self.name} in project {self.project_name}"
+ )
+
+ results = self._client.pipeline.run_search(
+ query=query_bundle.query_str,
+ pipeline_id=pipeline.id,
+ dense_similarity_top_k=self._dense_similarity_top_k,
+ sparse_similarity_top_k=self._sparse_similarity_top_k,
+ enable_reranking=self._enable_reranking,
+ rerank_top_n=self._rerank_top_n,
+ alpha=self._alpha,
+ search_filters=self._search_filters,
+ )
+
+ result_nodes = results.retrieval_nodes
+
+ return self._result_nodes_to_node_with_score(result_nodes)
+
+ async def _aretrieve(self, query_bundle: QueryBundle) -> List[NodeWithScore]:
+ """Asynchronously retrieve from the platform."""
+ pipelines = await self._aclient.pipeline.search_pipelines(
+ project_name=self.project_name, pipeline_name=self.name
+ )
+ assert len(pipelines) == 1
+ pipeline = pipelines[0]
+
+ if pipeline.id is None:
+ raise ValueError(
+ f"No pipeline found with name {self.name} in project {self.project_name}"
+ )
+
+ results = await self._aclient.pipeline.run_search(
+ query=query_bundle.query_str,
+ pipeline_id=pipeline.id,
+ dense_similarity_top_k=self._dense_similarity_top_k,
+ sparse_similarity_top_k=self._sparse_similarity_top_k,
+ enable_reranking=self._enable_reranking,
+ rerank_top_n=self._rerank_top_n,
+ alpha=self._alpha,
+ search_filters=self._search_filters,
+ )
+
+ result_nodes = results.retrieval_nodes
+
+ return self._result_nodes_to_node_with_score(result_nodes)
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/poetry.lock b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/poetry.lock
new file mode 100644
index 0000000000000..2ffa4d4436172
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/poetry.lock
@@ -0,0 +1,4474 @@
+# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+
+[[package]]
+name = "aiohttp"
+version = "3.9.3"
+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"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+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)"]
+
+[[package]]
+name = "appnope"
+version = "0.1.4"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
+
+[[package]]
+name = "astroid"
+version = "2.13.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
+ {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+wrapt = [
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "attrs"
+version = "23.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"},
+]
+
+[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]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.dependencies]
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "black"
+version = "23.9.1"
+description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+]
+
+[package.dependencies]
+click = ">=8.0.0"
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
+mypy-extensions = ">=0.4.3"
+packaging = ">=22.0"
+pathspec = ">=0.9.0"
+platformdirs = ">=2"
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "certifi"
+version = "2024.2.2"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+ {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+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"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "codespell"
+version = "2.2.6"
+description = "Codespell"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+ {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+]
+
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
+
+[package.extras]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
+hard-encoding-detection = ["chardet"]
+toml = ["tomli"]
+types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "comm"
+version = "0.2.1"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
+ {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "cryptography"
+version = "42.0.2"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"},
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"},
+ {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"},
+ {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"},
+ {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"},
+ {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"},
+ {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"},
+ {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"},
+]
+
+[package.dependencies]
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
+nox = ["nox"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "dataclasses-json"
+version = "0.6.4"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"},
+ {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "debugpy"
+version = "1.8.1"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
+ {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
+ {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
+ {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
+ {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
+ {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
+ {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
+ {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
+ {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
+ {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
+ {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
+ {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
+ {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
+ {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
+ {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
+ {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
+ {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
+ {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
+ {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
+ {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
+ {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
+ {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "deprecated"
+version = "1.2.14"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
+ {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
+]
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+
+[[package]]
+name = "dill"
+version = "0.3.8"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dirtyjson"
+version = "1.0.8"
+description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
+ {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
+]
+
+[[package]]
+name = "distlib"
+version = "0.3.8"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
+]
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2024.2.0"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"},
+ {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "0.17.3"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"},
+ {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"},
+]
+
+[package.dependencies]
+anyio = ">=3.0,<5.0"
+certifi = "*"
+h11 = ">=0.13,<0.15"
+sniffio = "==1.*"
+
+[package.extras]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "httpx"
+version = "0.24.1"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"},
+ {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"},
+]
+
+[package.dependencies]
+certifi = "*"
+httpcore = ">=0.15.0,<0.18.0"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "identify"
+version = "2.5.34"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "identify-2.5.34-py2.py3-none-any.whl", hash = "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed"},
+ {file = "identify-2.5.34.tar.gz", hash = "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "importlib-metadata"
+version = "7.0.1"
+description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"},
+ {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"},
+]
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[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"]
+perf = ["ipython"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+
+[[package]]
+name = "importlib-resources"
+version = "6.1.1"
+description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
+ {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "ipykernel"
+version = "6.29.2"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"},
+ {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.10.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
+ {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
+backcall = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+pickleshare = "*"
+prompt-toolkit = ">=3.0.30,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.2"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"},
+ {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.10,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.10,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.7.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
+ {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
+ {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.5"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
+ {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.0.12"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.0.12-py3-none-any.whl", hash = "sha256:53f132480e5f6564f4e20d1b5ed4e8b7945952a2decd5bdfa43760b1b536c99d"},
+ {file = "jupyterlab-4.0.12.tar.gz", hash = "sha256:965d92efa82a538ed70ccb3968d9aabba788840da882e13d7b061780cdedc3b7"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.6)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.10"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"},
+ {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"},
+]
+
+[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
+description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+]
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.3"
+description = "Interface between LLMs and your data"
+optional = false
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.3-py3-none-any.whl", hash = "sha256:711e2766cb1690a394a209dc6155d1b7a05b44fd6b7e08084d6b96c00bef5dd0"},
+ {file = "llama_index_core-0.10.3.tar.gz", hash = "sha256:5cced2c56bd640311835094fe6946ce6498e6d31dffcdb3df7583ff1aa3861b8"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
+
+[[package]]
+name = "llamaindex-py-client"
+version = "0.1.9"
+description = ""
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "llamaindex_py_client-0.1.9-py3-none-any.whl", hash = "sha256:b710999b4045cd7888c75c4fb0b0f583dbd3db106796a80d6403a53261e54096"},
+ {file = "llamaindex_py_client-0.1.9.tar.gz", hash = "sha256:60e1a0b61f7679836d2027d973f62956525bf3374cb4a0eafd5e94e839fa25d5"},
+]
+
+[package.dependencies]
+httpx = ">=0.20.0,<0.25.0"
+pydantic = "1.10.12"
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.20.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
+ {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"]
+docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"]
+lint = ["pre-commit (>=2.4,<4.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "multidict"
+version = "6.0.5"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[[package]]
+name = "mypy"
+version = "0.991"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
+ {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"},
+ {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"},
+ {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"},
+ {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"},
+ {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"},
+ {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"},
+ {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"},
+ {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"},
+ {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"},
+ {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"},
+ {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"},
+ {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"},
+ {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"},
+ {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"},
+ {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"},
+ {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"},
+ {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"},
+ {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"},
+ {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"},
+ {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"},
+ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
+ {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.4.3"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = ">=3.10"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+python2 = ["typed-ast (>=1.4.0,<2)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.16.0"
+description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"},
+ {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "nltk"
+version = "3.8.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
+ {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "nodeenv"
+version = "1.8.0"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+files = [
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+]
+
+[package.dependencies]
+setuptools = "*"
+
+[[package]]
+name = "notebook"
+version = "7.0.8"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.0.8-py3-none-any.whl", hash = "sha256:7f421b3fd46a17d91830e724b94e8e9ae922af152ebfd48b1e13ae4a07d8193c"},
+ {file = "notebook-7.0.8.tar.gz", hash = "sha256:3957ecd956056b0014677afc76d3bb44c2d2f29649f87b24d13606ff1d18938f"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.0.2,<4.1"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.24.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
+ {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
+ {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
+ {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
+ {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
+ {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
+ {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
+ {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
+ {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
+ {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
+ {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
+]
+
+[[package]]
+name = "openai"
+version = "1.12.0"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.12.0-py3-none-any.whl", hash = "sha256:a54002c814e05222e413664f651b5916714e4700d041d5cf5724d3ae1a3e3481"},
+ {file = "openai-1.12.0.tar.gz", hash = "sha256:99c5d257d09ea6533d689d1cc77caa0ac679fa21efef8893d8b0832a86877f1b"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.7,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.0.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.1"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
+aws = ["s3fs (>=2021.08.0)"]
+clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
+compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
+computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2021.07.0)"]
+gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"]
+hdf5 = ["tables (>=3.6.1)"]
+html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"]
+mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
+spss = ["pyreadstat (>=1.1.2)"]
+sql-other = ["SQLAlchemy (>=1.4.16)"]
+test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.6.3)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pathspec"
+version = "0.12.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
+]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+
+[[package]]
+name = "platformdirs"
+version = "4.2.0"
+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.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+ {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+]
+
+[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)"]
+
+[[package]]
+name = "pluggy"
+version = "1.4.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+ {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "pre-commit"
+version = "3.2.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
+ {file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
+ {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "psutil"
+version = "5.9.8"
+description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"},
+ {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"},
+ {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"},
+ {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"},
+ {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"},
+ {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"},
+ {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"},
+ {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"},
+ {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
+ {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pydantic"
+version = "1.10.12"
+description = "Data validation and settings management using python type hints"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-1.10.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718"},
+ {file = "pydantic-1.10.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe"},
+ {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b"},
+ {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d"},
+ {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09"},
+ {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed"},
+ {file = "pydantic-1.10.12-cp310-cp310-win_amd64.whl", hash = "sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a"},
+ {file = "pydantic-1.10.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc"},
+ {file = "pydantic-1.10.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405"},
+ {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62"},
+ {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494"},
+ {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246"},
+ {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33"},
+ {file = "pydantic-1.10.12-cp311-cp311-win_amd64.whl", hash = "sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f"},
+ {file = "pydantic-1.10.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a"},
+ {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565"},
+ {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350"},
+ {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303"},
+ {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5"},
+ {file = "pydantic-1.10.12-cp37-cp37m-win_amd64.whl", hash = "sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8"},
+ {file = "pydantic-1.10.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62"},
+ {file = "pydantic-1.10.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb"},
+ {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0"},
+ {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c"},
+ {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d"},
+ {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33"},
+ {file = "pydantic-1.10.12-cp38-cp38-win_amd64.whl", hash = "sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47"},
+ {file = "pydantic-1.10.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6"},
+ {file = "pydantic-1.10.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523"},
+ {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86"},
+ {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1"},
+ {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe"},
+ {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb"},
+ {file = "pydantic-1.10.12-cp39-cp39-win_amd64.whl", hash = "sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d"},
+ {file = "pydantic-1.10.12-py3-none-any.whl", hash = "sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942"},
+ {file = "pydantic-1.10.12.tar.gz", hash = "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.2.0"
+
+[package.extras]
+dotenv = ["python-dotenv (>=0.10.4)"]
+email = ["email-validator (>=1.0.3)"]
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pylint"
+version = "2.15.10"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
+ {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+]
+
+[package.dependencies]
+astroid = ">=2.12.13,<=2.14.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = [
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+]
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+tomlkit = ">=0.10.1"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pytest"
+version = "7.2.1"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
+ {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
+]
+
+[package.dependencies]
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-mock"
+version = "3.11.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
+ {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+]
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[package.extras]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2024.1"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
+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"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "referencing"
+version = "0.33.0"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"},
+ {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "regex"
+version = "2023.12.25"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
+ {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
+ {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
+ {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
+ {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
+ {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
+ {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
+ {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
+ {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
+ {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
+ {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
+ {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
+ {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
+ {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
+ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
+]
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.18.0"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
+ {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
+ {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
+ {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
+ {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
+ {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
+ {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
+ {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
+ {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
+ {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
+ {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
+ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
+]
+
+[[package]]
+name = "ruff"
+version = "0.0.292"
+description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
+ {file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_i686.whl", hash = "sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016"},
+ {file = "ruff-0.0.292-py3-none-win32.whl", hash = "sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003"},
+ {file = "ruff-0.0.292-py3-none-win_amd64.whl", hash = "sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c"},
+ {file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
+ {file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
+]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "setuptools"
+version = "69.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
+ {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+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"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.27"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"},
+ {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"},
+ {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "tenacity"
+version = "8.2.3"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
+ {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx", "tornado (>=4.5)"]
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "tiktoken"
+version = "0.6.0"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"},
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"},
+ {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"},
+ {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"},
+ {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"},
+ {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"},
+ {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"},
+]
+
+[package.dependencies]
+regex = ">=2022.1.18"
+requests = ">=2.26.0"
+
+[package.extras]
+blobfile = ["blobfile (>=2)"]
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
+description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
+ {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
+]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.12.3"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
+ {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
+]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.2"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
+ {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.1"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
+ {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.4"
+description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
+files = [
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9d33a55598dd18a4d8b869a3417de82a4812c3a7dc7e61cb025ece3e9c3e4e96"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cee6955c2c97fc5927a41c7a8b06647c4b4d9b99b8a1581bf1183435c8cec3e"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5022bea67e479ad212be7c05b983a72e297a013efb4e8ea5b5b4d7da79a9fdef"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:640f60a5b966f0990338f1bf559455c3dcb822bc4329d82b3d42f32a48374dfe"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0e83f641fe6f27d91bd4d259fff5d35de1567d3f581b9efe9bbd5be50fe4ddc7"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win32.whl", hash = "sha256:ce6a85027c66fa3f09d482cc6d41927ea40955f7f33b86aedd26dd932709a2c9"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win_amd64.whl", hash = "sha256:fe10779347a6c067af29cb37fd4b75fa96c5cb68f587cc9530b70fe3f2a51a55"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28d5f84e34e276887e3a240b60906ca7e2b51e975f3145c3149ceed977a69508"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c913b65cbe10996116988ac436748f24883b5097e58274223e89bb2c5d1bb1a"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecaed46241e071752195a628bb97d2b740f2fde9e34f8a74456a4ea8bb26df88"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b641e88a97eab002a1736d93ef5a4beac90ea4fd6e25affd1831319b99f456c9"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:327c40f439c6155e4eee54c4657e4701a04f5f4816d9defdcb836bf65bf83d21"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win32.whl", hash = "sha256:1b7c1d95f006b3de42fbf4045bd00c273d113e372fcb6a5378e74ed120c12032"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6140d037239a41046f5d34fba5e0374ee697adb4b48b90579c618b5402781c11"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7eec3b55135fe851a38fa248c9fd75fc3d58ceb6e1865b795e416e4d598c2a1"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc76225529ee14a53e84413480ce81ec3c44eaa0455c140e961c90ac3118ead"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf0396e47efffc0b528959a8f2e2346a98297579f867e9e1834c2aad4be829c"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a15fbabd3bc8e29c48289c156d743e69f5ec72bb125cf44f7adbdaa1937c3da6"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
+ {file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
+]
+
+[[package]]
+name = "tree-sitter-languages"
+version = "1.10.2"
+description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
+files = [
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5580348f0b20233b1d5431fa178ccd3d07423ca4a3275df02a44608fd72344b9"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:103c7466644486b1e9e03850df46fc6aa12f13ca636c74f173270276220ac80b"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d13db84511c6f1a7dc40383b66deafa74dabd8b877e3d65ab253f3719eccafd6"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57adfa32be7e465b54aa72f915f6c78a2b66b227df4f656b5d4fbd1ca7a92b3f"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6385e033e460ceb8f33f3f940335f422ef2b763700a04f0089391a68b56153"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dfa3f38cc5381c5aba01dd7494f59b8a9050e82ff6e06e1233e3a0cbae297e3c"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9f195155acf47f8bc5de7cee46ecd07b2f5697f007ba89435b51ef4c0b953ea5"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2de330e2ac6d7426ca025a3ec0f10d5640c3682c1d0c7702e812dcfb44b58120"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win32.whl", hash = "sha256:c9731cf745f135d9770eeba9bb4e2ff4dabc107b5ae9b8211e919f6b9100ea6d"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:6dd75851c41d0c3c4987a9b7692d90fa8848706c23115669d8224ffd6571e357"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7eb7d7542b2091c875fe52719209631fca36f8c10fa66970d2c576ae6a1b8289"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b41bcb00974b1c8a1800c7f1bb476a1d15a0463e760ee24872f2d53b08ee424"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f370cd7845c6c81df05680d5bd96db8a99d32b56f4728c5d05978911130a853"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1dc195c88ef4c72607e112a809a69190e096a2e5ebc6201548b3e05fdd169ad"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae34ac314a7170be24998a0f994c1ac80761d8d4bd126af27ee53a023d3b849"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01b5742d5f5bd675489486b582bd482215880b26dde042c067f8265a6e925d9c"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab1cbc46244d34fd16f21edaa20231b2a57f09f092a06ee3d469f3117e6eb954"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b1149e7467a4e92b8a70e6005fe762f880f493cf811fc003554b29f04f5e7c8"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win32.whl", hash = "sha256:049276343962f4696390ee555acc2c1a65873270c66a6cbe5cb0bca83bcdf3c6"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:7f3fdd468a577f04db3b63454d939e26e360229b53c80361920aa1ebf2cd7491"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c0f4c8b2734c45859edc7fcaaeaab97a074114111b5ba51ab4ec7ed52104763c"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eecd3c1244ac3425b7a82ba9125b4ddb45d953bbe61de114c0334fd89b7fe782"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15db3c8510bc39a80147ee7421bf4782c15c09581c1dc2237ea89cefbd95b846"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92c6487a6feea683154d3e06e6db68c30e0ae749a7ce4ce90b9e4e46b78c85c7"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2f1cd1d1bdd65332f9c2b67d49dcf148cf1ded752851d159ac3e5ee4f4d260"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:976c8039165b8e12f17a01ddee9f4e23ec6e352b165ad29b44d2bf04e2fbe77e"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dafbbdf16bf668a580902e1620f4baa1913e79438abcce721a50647564c687b9"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1aeabd3d60d6d276b73cd8f3739d595b1299d123cc079a317f1a5b3c5461e2ca"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win32.whl", hash = "sha256:fab8ee641914098e8933b87ea3d657bea4dd00723c1ee7038b847b12eeeef4f5"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e606430d736367e5787fa5a7a0c5a1ec9b85eded0b3596bbc0d83532a40810b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:838d5b48a7ed7a17658721952c77fda4570d2a069f933502653b17e15a9c39c9"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b3c71b1d278c2889e018ee77b8ee05c384e2e3334dec798f8b611c4ab2d1e"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa00abcb2c819027df58472da055d22fa7dfcb77c77413d8500c32ebe24d38b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e102fbbf02322d9201a86a814e79a9734ac80679fdb9682144479044f401a73"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0b87cf1a7b03174ba18dfd81582be82bfed26803aebfe222bd20e444aba003"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0f1b9af9cb67f0b942b020da9fdd000aad5e92f2383ae0ba7a330b318d31912"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a4076c921f7a4d31e643843de7dfe040b65b63a238a5aa8d31d93aabe6572aa"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win32.whl", hash = "sha256:fa6391a3a5d83d32db80815161237b67d70576f090ce5f38339206e917a6f8bd"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:55649d3f254585a064121513627cf9788c1cfdadbc5f097f33d5ba750685a4c0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f85d1edaa2d22d80d4ea5b6d12b95cf3644017b6c227d0d42854439e02e8893"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d78feed4a764ef3141cb54bf00fe94d514d8b6e26e09423e23b4c616fcb7938c"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1aca27531f9dd5308637d76643372856f0f65d0d28677d1bcf4211e8ed1ad0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1031ea440dafb72237437d754eff8940153a3b051e3d18932ac25e75ce060a15"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99d3249beaef2c9fe558ecc9a97853c260433a849dcc68266d9770d196c2e102"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:59a4450f262a55148fb7e68681522f0c2a2f6b7d89666312a2b32708d8f416e1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ce74eab0e430370d5e15a96b6c6205f93405c177a8b2e71e1526643b2fb9bab1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9b4dd2b6b3d24c85dffe33d6c343448869eaf4f41c19ddba662eb5d65d8808f4"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win32.whl", hash = "sha256:92d734fb968fe3927a7596d9f0459f81a8fa7b07e16569476b28e27d0d753348"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:46a13f7d38f2eeb75f7cf127d1201346093748c270d686131f0cbc50e42870a1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f8c6a936ae99fdd8857e91f86c11c2f5e507ff30631d141d98132bb7ab2c8638"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c283a61423f49cdfa7b5a5dfbb39221e3bd126fca33479cd80749d4d7a6b7349"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e60be6bdcff923386a54a5edcb6ff33fc38ab0118636a762024fa2bc98de55"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c00069f9575bd831eabcce2cdfab158dde1ed151e7e5614c2d985ff7d78a7de1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ff53203d8a43ccb19bb322fa2fb200d764001cc037793f1fadd714bb343da"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26fe7c9c412e4141dea87ea4b3592fd12e385465b5bdab106b0d5125754d4f60"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8fed27319957458340f24fe14daad467cd45021da034eef583519f83113a8c5e"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3657a491a7f96cc75a3568ddd062d25f3be82b6a942c68801a7b226ff7130181"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win32.whl", hash = "sha256:33f7d584d01a7a3c893072f34cfc64ec031f3cfe57eebc32da2f8ac046e101a7"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:1b944af3ee729fa70fc8ae82224a9ff597cdb63addea084e0ea2fa2b0ec39bb7"},
+]
+
+[package.dependencies]
+tree-sitter = "*"
+
+[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
+description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
+ {file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
+]
+
+[[package]]
+name = "types-docutils"
+version = "0.20.0.20240201"
+description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-docutils-0.20.0.20240201.tar.gz", hash = "sha256:ba4bfd4ff6dd19640ba7ab5d93900393a65897880f3650997964a943f4e79a6b"},
+ {file = "types_docutils-0.20.0.20240201-py3-none-any.whl", hash = "sha256:79d3bcef235f7c81a63f4f3dcf1d0b138985079bb32d02f5a7d266e1f9f361ba"},
+]
+
+[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240129"
+description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"},
+ {file = "types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"},
+]
+
+[[package]]
+name = "types-pyopenssl"
+version = "24.0.0.20240130"
+description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-pyOpenSSL-24.0.0.20240130.tar.gz", hash = "sha256:c812e5c1c35249f75ef5935708b2a997d62abf9745be222e5f94b9595472ab25"},
+ {file = "types_pyOpenSSL-24.0.0.20240130-py3-none-any.whl", hash = "sha256:24a255458b5b8a7fca8139cf56f2a8ad5a4f1a5f711b73a5bb9cb50dc688fab5"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
+description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
+ {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
+]
+
+[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
+description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+ {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+]
+
+[[package]]
+name = "types-redis"
+version = "4.5.5.0"
+description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
+ {file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+types-pyOpenSSL = "*"
+
+[[package]]
+name = "types-requests"
+version = "2.28.11.8"
+description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
+ {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
+]
+
+[package.dependencies]
+types-urllib3 = "<1.27"
+
+[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
+description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
+ {file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
+]
+
+[package.dependencies]
+types-docutils = "*"
+
+[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
+description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
+ {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "tzdata"
+version = "2024.1"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
+ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.2.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
+ {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+h2 = ["h2 (>=4,<5)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "virtualenv"
+version = "20.25.0"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
+ {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.13"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
+ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+]
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.10"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"},
+ {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"},
+]
+
+[[package]]
+name = "wrapt"
+version = "1.16.0"
+description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.4"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[[package]]
+name = "zipp"
+version = "3.17.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
+]
+
+[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "7ab69eb4dda231058ab17bf5c4462218f11b773266c08490f1c81341ad344314"
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml
new file mode 100644
index 0000000000000..ee2ab768920a3
--- /dev/null
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml
@@ -0,0 +1,50 @@
+[build-system]
+build-backend = "poetry.core.masonry.api"
+requires = ["poetry-core"]
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+# Feel free to un-skip examples, and experimental, you will just need to
+# work through many typos (--write-changes and --interactive will help)
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.mypy]
+disallow_untyped_defs = true
+# Remove venv skip when integrated with pre-commit
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+authors = ["Logan Markewich "]
+description = "llama-index indices llama-cloud integration"
+license = "MIT"
+name = "llama-index-indices-llama-cloud"
+packages = [{include = "llama_index/"}]
+readme = "README.md"
+version = "0.1.0"
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<3.12"
+llama-index-core = "^0.10.0"
+llamaindex-py-client = "^0.1.9"
+
+[tool.poetry.group.dev.dependencies]
+black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
+codespell = {extras = ["toml"], version = ">=v2.2.6"}
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "^1.8.0"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8" # TODO: unpin when mypy>0.991
+types-setuptools = "67.1.0.0"
diff --git a/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml
index a76c0adfc1576..8620cd2ef1fee 100644
--- a/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index llms nvidia tensorrt integration"
license = "MIT"
name = "llama-index-llms-nvidia-tensorrt"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/llms/llama-index-llms-openai-like/tests/test_openai_like.py b/llama-index-integrations/llms/llama-index-llms-openai-like/tests/test_openai_like.py
index 7face5bc26418..ed76fec77c1fa 100644
--- a/llama-index-integrations/llms/llama-index-llms-openai-like/tests/test_openai_like.py
+++ b/llama-index-integrations/llms/llama-index-llms-openai-like/tests/test_openai_like.py
@@ -140,7 +140,6 @@ def test_serialization() -> None:
serialized = llm.to_dict()
# Check OpenAI base class specifics
- assert "api_key" not in serialized
assert serialized["max_tokens"] == 42
# Check OpenAILike subclass specifics
assert serialized["context_window"] == 43
diff --git a/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/base.py b/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/base.py
index 6ac3fc7232aa8..1a8da01a3312e 100644
--- a/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/base.py
+++ b/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/base.py
@@ -111,7 +111,7 @@ class OpenAI(LLM):
),
)
- api_key: str = Field(default=None, description="The OpenAI API key.", exclude=True)
+ api_key: str = Field(default=None, description="The OpenAI API key.")
api_base: str = Field(description="The base URL for OpenAI API.")
api_version: str = Field(description="The API version for OpenAI API.")
diff --git a/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml
index 7360eec55d510..a73ec5a7109c9 100644
--- a/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml
@@ -8,7 +8,7 @@ check-hidden = true
skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
[tool.llamahub]
-classes = ["AsyncOpenAI", "OpenAI", "SyncOpenAI", "Tokenizer"]
+classes = ["OpenAI"]
contains_example = false
import_path = "llama_index.llms.openai"
@@ -24,7 +24,7 @@ description = "llama-index llms openai integration"
license = "MIT"
name = "llama-index-llms-openai"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/__init__.py b/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/__init__.py
index 102b56c6fdf77..0e07870cd04eb 100644
--- a/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/__init__.py
+++ b/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/__init__.py
@@ -1,3 +1,3 @@
-from llama_index.llms.vllm.base import Vllm
+from llama_index.llms.vllm.base import Vllm, VllmServer
-__all__ = ["Vllm"]
+__all__ = ["Vllm", "VllmServer"]
diff --git a/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/base.py b/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/base.py
index 5fdd577c7dedb..93c795871b23f 100644
--- a/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/base.py
+++ b/llama-index-integrations/llms/llama-index-llms-vllm/llama_index/llms/vllm/base.py
@@ -212,6 +212,17 @@ def _model_kwargs(self) -> Dict[str, Any]:
}
return {**base_kwargs}
+ def __del__(self) -> None:
+ import torch
+ from vllm.model_executor.parallel_utils.parallel_state import (
+ destroy_model_parallel,
+ )
+
+ destroy_model_parallel()
+ del self._client
+ if torch.cuda.is_available():
+ torch.cuda.synchronize()
+
def _get_all_kwargs(self, **kwargs: Any) -> Dict[str, Any]:
return {
**self._model_kwargs,
@@ -262,7 +273,8 @@ async def achat(
async def acomplete(
self, prompt: str, formatted: bool = False, **kwargs: Any
) -> CompletionResponse:
- raise (ValueError("Not Implemented"))
+ kwargs = kwargs if kwargs else {}
+ return self.complete(prompt, **kwargs)
@llm_chat_callback()
async def astream_chat(
diff --git a/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml
index bd5499519609c..3e08676380b09 100644
--- a/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index llms vllm integration"
license = "MIT"
name = "llama-index-llms-vllm"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/.gitignore b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/.gitignore
new file mode 100644
index 0000000000000..990c18de22908
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/.gitignore
@@ -0,0 +1,153 @@
+llama_index/_static
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+bin/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+etc/
+include/
+lib/
+lib64/
+parts/
+sdist/
+share/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+.ruff_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+notebooks/
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pyvenv.cfg
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# Jetbrains
+.idea
+modules/
+*.swp
+
+# VsCode
+.vscode
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# pyright
+pyrightconfig.json
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/BUILD b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/BUILD
new file mode 100644
index 0000000000000..0896ca890d8bf
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/BUILD
@@ -0,0 +1,3 @@
+poetry_requirements(
+ name="poetry",
+)
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/Makefile b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/README.md b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/README.md
new file mode 100644
index 0000000000000..42199e8503e77
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/README.md
@@ -0,0 +1 @@
+# LlamaIndex Postprocessor Integration: Presidio
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/BUILD b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/__init__.py b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/__init__.py
new file mode 100644
index 0000000000000..371d26cc63f2f
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/__init__.py
@@ -0,0 +1,4 @@
+from llama_index.postprocessor.presidio.base import PresidioPIINodePostprocessor
+
+
+__all__ = ["PresidioPIINodePostprocessor"]
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/base.py b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/base.py
new file mode 100644
index 0000000000000..ed0beae404593
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/llama_index/postprocessor/presidio/base.py
@@ -0,0 +1,110 @@
+from typing import Any, Dict, List, Optional, Tuple
+from copy import deepcopy
+
+from presidio_anonymizer.operators import Operator, OperatorType
+from llama_index.core.postprocessor.types import BaseNodePostprocessor
+from llama_index.core.schema import MetadataMode, NodeWithScore, QueryBundle
+
+from presidio_analyzer import AnalyzerEngine
+from presidio_anonymizer import AnonymizerEngine
+from presidio_anonymizer.entities import OperatorConfig
+
+
+class EntityTypeCountAnonymizer(Operator):
+ """
+ Anonymizer which replaces the entity value
+ with an type counter per entity.
+ """
+
+ REPLACING_FORMAT = "<{entity_type}_{index}>"
+
+ def operate(self, text: str, params: Dict[str, Any]) -> str:
+ """Anonymize the input text."""
+ entity_type: str = params["entity_type"]
+ entity_mapping: Dict[str, Dict] = params["entity_mapping"]
+ deanonymize_mapping: Dict[str, str] = params["deanonymize_mapping"]
+
+ entity_mapping_for_type = entity_mapping.get(entity_type)
+ if not entity_mapping_for_type:
+ entity_mapping_for_type = entity_mapping[entity_type] = {}
+
+ if text in entity_mapping_for_type:
+ return entity_mapping_for_type[text]
+
+ new_text = self.REPLACING_FORMAT.format(
+ entity_type=entity_type, index=len(entity_mapping_for_type) + 1
+ )
+ entity_mapping[entity_type][text] = new_text
+ deanonymize_mapping[new_text] = text
+ return new_text
+
+ def validate(self, params: Dict[str, Any]) -> None:
+ """Validate operator parameters."""
+ if "entity_mapping" not in params:
+ raise ValueError("An input Dict called `entity_mapping` is required.")
+ if "entity_type" not in params:
+ raise ValueError("An entity_type param is required.")
+ if "deanonymize_mapping" not in params:
+ raise ValueError("A deanonymize_mapping param is required.")
+
+ def operator_name(self) -> str:
+ return self.__class__.__name__
+
+ def operator_type(self) -> OperatorType:
+ return OperatorType.Anonymize
+
+
+class PresidioPIINodePostprocessor(BaseNodePostprocessor):
+ """presidio PII Node processor.
+ Uses a presidio to analyse PIIs.
+ """
+
+ pii_node_info_key: str = "__pii_node_info__"
+ entity_mapping: Dict[str, Dict] = {}
+ mapping: Dict[str, str] = {}
+
+ @classmethod
+ def class_name(cls) -> str:
+ return "PresidioPIINodePostprocessor"
+
+ def mask_pii(self, text: str) -> Tuple[str, Dict]:
+ analyzer = AnalyzerEngine()
+ results = analyzer.analyze(text=text, language="en")
+ engine = AnonymizerEngine()
+ engine.add_anonymizer(EntityTypeCountAnonymizer)
+
+ new_text = engine.anonymize(
+ text=text,
+ analyzer_results=results,
+ operators={
+ "DEFAULT": OperatorConfig(
+ "EntityTypeCountAnonymizer",
+ {
+ "entity_mapping": self.entity_mapping,
+ "deanonymize_mapping": self.mapping,
+ },
+ )
+ },
+ )
+
+ return new_text.text
+
+ def _postprocess_nodes(
+ self,
+ nodes: List[NodeWithScore],
+ query_bundle: Optional[QueryBundle] = None,
+ ) -> List[NodeWithScore]:
+ """Postprocess nodes."""
+ # swap out text from nodes, with the original node mappings
+ new_nodes = []
+ for node_with_score in nodes:
+ node = node_with_score.node
+ new_text = self.mask_pii(node.get_content(metadata_mode=MetadataMode.LLM))
+ new_node = deepcopy(node)
+ new_node.excluded_embed_metadata_keys.append(self.pii_node_info_key)
+ new_node.excluded_llm_metadata_keys.append(self.pii_node_info_key)
+ new_node.metadata[self.pii_node_info_key] = self.mapping
+ new_node.set_content(new_text)
+ new_nodes.append(NodeWithScore(node=new_node, score=node_with_score.score))
+
+ return new_nodes
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/poetry.lock b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/poetry.lock
new file mode 100644
index 0000000000000..61d8ceb49a37b
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/poetry.lock
@@ -0,0 +1,5215 @@
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+
+[[package]]
+name = "aiohttp"
+version = "3.9.3"
+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"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "annotated-types"
+version = "0.6.0"
+description = "Reusable constraint types to use with typing.Annotated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
+ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+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)"]
+
+[[package]]
+name = "appnope"
+version = "0.1.4"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
+
+[[package]]
+name = "astroid"
+version = "2.13.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
+ {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+wrapt = [
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "attrs"
+version = "23.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"},
+]
+
+[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]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.dependencies]
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "black"
+version = "23.9.1"
+description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+]
+
+[package.dependencies]
+click = ">=8.0.0"
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
+mypy-extensions = ">=0.4.3"
+packaging = ">=22.0"
+pathspec = ">=0.9.0"
+platformdirs = ">=2"
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "blis"
+version = "0.7.11"
+description = "The Blis BLAS-like linear algebra library, as a self-contained C-extension."
+optional = false
+python-versions = "*"
+files = [
+ {file = "blis-0.7.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd5fba34c5775e4c440d80e4dea8acb40e2d3855b546e07c4e21fad8f972404c"},
+ {file = "blis-0.7.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:31273d9086cab9c56986d478e3ed6da6752fa4cdd0f7b5e8e5db30827912d90d"},
+ {file = "blis-0.7.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d06883f83d4c8de8264154f7c4a420b4af323050ed07398c1ff201c34c25c0d2"},
+ {file = "blis-0.7.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee493683e3043650d4413d531e79e580d28a3c7bdd184f1b9cfa565497bda1e7"},
+ {file = "blis-0.7.11-cp310-cp310-win_amd64.whl", hash = "sha256:a73945a9d635eea528bccfdfcaa59dd35bd5f82a4a40d5ca31f08f507f3a6f81"},
+ {file = "blis-0.7.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1b68df4d01d62f9adaef3dad6f96418787265a6878891fc4e0fabafd6d02afba"},
+ {file = "blis-0.7.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:162e60d941a8151418d558a94ee5547cb1bbeed9f26b3b6f89ec9243f111a201"},
+ {file = "blis-0.7.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:686a7d0111d5ba727cd62f374748952fd6eb74701b18177f525b16209a253c01"},
+ {file = "blis-0.7.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0421d6e44cda202b113a34761f9a062b53f8c2ae8e4ec8325a76e709fca93b6e"},
+ {file = "blis-0.7.11-cp311-cp311-win_amd64.whl", hash = "sha256:0dc9dcb3843045b6b8b00432409fd5ee96b8344a324e031bfec7303838c41a1a"},
+ {file = "blis-0.7.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dadf8713ea51d91444d14ad4104a5493fa7ecc401bbb5f4a203ff6448fadb113"},
+ {file = "blis-0.7.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5bcdaf370f03adaf4171d6405a89fa66cb3c09399d75fc02e1230a78cd2759e4"},
+ {file = "blis-0.7.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7de19264b1d49a178bf8035406d0ae77831f3bfaa3ce02942964a81a202abb03"},
+ {file = "blis-0.7.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea55c6a4a60fcbf6a0fdce40df6e254451ce636988323a34b9c94b583fc11e5"},
+ {file = "blis-0.7.11-cp312-cp312-win_amd64.whl", hash = "sha256:5a305dbfc96d202a20d0edd6edf74a406b7e1404f4fa4397d24c68454e60b1b4"},
+ {file = "blis-0.7.11-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:68544a1cbc3564db7ba54d2bf8988356b8c7acd025966e8e9313561b19f0fe2e"},
+ {file = "blis-0.7.11-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:075431b13b9dd7b411894d4afbd4212acf4d0f56c5a20628f4b34902e90225f1"},
+ {file = "blis-0.7.11-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:324fdf62af9075831aa62b51481960e8465674b7723f977684e32af708bb7448"},
+ {file = "blis-0.7.11-cp36-cp36m-win_amd64.whl", hash = "sha256:afebdb02d2dcf9059f23ce1244585d3ce7e95c02a77fd45a500e4a55b7b23583"},
+ {file = "blis-0.7.11-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2e62cd14b20e960f21547fee01f3a0b2ac201034d819842865a667c969c355d1"},
+ {file = "blis-0.7.11-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b01c05a5754edc0b9a3b69be52cbee03f645b2ec69651d12216ea83b8122f0"},
+ {file = "blis-0.7.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfee5ec52ba1e9002311d9191f7129d7b0ecdff211e88536fb24c865d102b50d"},
+ {file = "blis-0.7.11-cp37-cp37m-win_amd64.whl", hash = "sha256:844b6377e3e7f3a2e92e7333cc644095386548ad5a027fdc150122703c009956"},
+ {file = "blis-0.7.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6df00c24128e323174cde5d80ebe3657df39615322098ce06613845433057614"},
+ {file = "blis-0.7.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:809d1da1331108935bf06e22f3cf07ef73a41a572ecd81575bdedb67defe3465"},
+ {file = "blis-0.7.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bfabd5272bbbe504702b8dfe30093653d278057656126716ff500d9c184b35a6"},
+ {file = "blis-0.7.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca684f5c2f05269f17aefe7812360286e9a1cee3afb96d416485efd825dbcf19"},
+ {file = "blis-0.7.11-cp38-cp38-win_amd64.whl", hash = "sha256:688a8b21d2521c2124ee8dfcbaf2c385981ccc27e313e052113d5db113e27d3b"},
+ {file = "blis-0.7.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2ff7abd784033836b284ff9f4d0d7cb0737b7684daebb01a4c9fe145ffa5a31e"},
+ {file = "blis-0.7.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f9caffcd14795bfe52add95a0dd8426d44e737b55fcb69e2b797816f4da0b1d2"},
+ {file = "blis-0.7.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fb36989ed61233cfd48915896802ee6d3d87882190000f8cfe0cf4a3819f9a8"},
+ {file = "blis-0.7.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ea09f961871f880d5dc622dce6c370e4859559f0ead897ae9b20ddafd6b07a2"},
+ {file = "blis-0.7.11-cp39-cp39-win_amd64.whl", hash = "sha256:5bb38adabbb22f69f22c74bad025a010ae3b14de711bf5c715353980869d491d"},
+ {file = "blis-0.7.11.tar.gz", hash = "sha256:cec6d48f75f7ac328ae1b6fbb372dde8c8a57c89559172277f66e01ff08d4d42"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.15.0", markers = "python_version < \"3.9\""},
+ {version = ">=1.19.0", markers = "python_version >= \"3.9\""},
+]
+
+[[package]]
+name = "catalogue"
+version = "2.0.10"
+description = "Super lightweight function registries for your library"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "catalogue-2.0.10-py3-none-any.whl", hash = "sha256:58c2de0020aa90f4a2da7dfad161bf7b3b054c86a5f09fcedc0b2b740c109a9f"},
+ {file = "catalogue-2.0.10.tar.gz", hash = "sha256:4f56daa940913d3f09d589c191c74e5a6d51762b3a9e37dd53b7437afd6cda15"},
+]
+
+[[package]]
+name = "certifi"
+version = "2024.2.2"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+ {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+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"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "cloudpathlib"
+version = "0.16.0"
+description = "pathlib-style classes for cloud storage services."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cloudpathlib-0.16.0-py3-none-any.whl", hash = "sha256:f46267556bf91f03db52b5df7a152548596a15aabca1c8731ef32b0b25a1a6a3"},
+ {file = "cloudpathlib-0.16.0.tar.gz", hash = "sha256:cdfcd35d46d529587d744154a0bdf962aca953b725c8784cd2ec478354ea63a3"},
+]
+
+[package.dependencies]
+typing_extensions = {version = ">4", markers = "python_version < \"3.11\""}
+
+[package.extras]
+all = ["cloudpathlib[azure]", "cloudpathlib[gs]", "cloudpathlib[s3]"]
+azure = ["azure-storage-blob (>=12)"]
+gs = ["google-cloud-storage"]
+s3 = ["boto3"]
+
+[[package]]
+name = "codespell"
+version = "2.2.6"
+description = "Codespell"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+ {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+]
+
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
+
+[package.extras]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
+hard-encoding-detection = ["chardet"]
+toml = ["tomli"]
+types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "comm"
+version = "0.2.1"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
+ {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "confection"
+version = "0.1.4"
+description = "The sweetest config system for Python"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "confection-0.1.4-py3-none-any.whl", hash = "sha256:a658818d004939069c3e2b3db74a2cb9d956a5e61a1c9ad61788e0ee09a7090f"},
+ {file = "confection-0.1.4.tar.gz", hash = "sha256:e80f22fd008b5231a2e8852fac6de9e28f2276a04031d0536cff74fe4a990c8f"},
+]
+
+[package.dependencies]
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<3.0.0"
+srsly = ">=2.4.0,<3.0.0"
+
+[[package]]
+name = "cryptography"
+version = "42.0.2"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"},
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"},
+ {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"},
+ {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"},
+ {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"},
+ {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"},
+ {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"},
+ {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"},
+]
+
+[package.dependencies]
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
+nox = ["nox"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "cymem"
+version = "2.0.8"
+description = "Manage calls to calloc/free through Cython"
+optional = false
+python-versions = "*"
+files = [
+ {file = "cymem-2.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:77b5d3a73c41a394efd5913ab7e48512054cd2dabb9582d489535456641c7666"},
+ {file = "cymem-2.0.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bd33da892fb560ba85ea14b1528c381ff474048e861accc3366c8b491035a378"},
+ {file = "cymem-2.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29a551eda23eebd6d076b855f77a5ed14a1d1cae5946f7b3cb5de502e21b39b0"},
+ {file = "cymem-2.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8260445652ae5ab19fff6851f32969a7b774f309162e83367dd0f69aac5dbf7"},
+ {file = "cymem-2.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:a63a2bef4c7e0aec7c9908bca0a503bf91ac7ec18d41dd50dc7dff5d994e4387"},
+ {file = "cymem-2.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6b84b780d52cb2db53d4494fe0083c4c5ee1f7b5380ceaea5b824569009ee5bd"},
+ {file = "cymem-2.0.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d5f83dc3cb5a39f0e32653cceb7c8ce0183d82f1162ca418356f4a8ed9e203e"},
+ {file = "cymem-2.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ac218cf8a43a761dc6b2f14ae8d183aca2bbb85b60fe316fd6613693b2a7914"},
+ {file = "cymem-2.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42c993589d1811ec665d37437d5677b8757f53afadd927bf8516ac8ce2d3a50c"},
+ {file = "cymem-2.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:ab3cf20e0eabee9b6025ceb0245dadd534a96710d43fb7a91a35e0b9e672ee44"},
+ {file = "cymem-2.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cb51fddf1b920abb1f2742d1d385469bc7b4b8083e1cfa60255e19bc0900ccb5"},
+ {file = "cymem-2.0.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9235957f8c6bc2574a6a506a1687164ad629d0b4451ded89d49ebfc61b52660c"},
+ {file = "cymem-2.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2cc38930ff5409f8d61f69a01e39ecb185c175785a1c9bec13bcd3ac8a614ba"},
+ {file = "cymem-2.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bf49e3ea2c441f7b7848d5c61b50803e8cbd49541a70bb41ad22fce76d87603"},
+ {file = "cymem-2.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:ecd12e3bacf3eed5486e4cd8ede3c12da66ee0e0a9d0ae046962bc2bb503acef"},
+ {file = "cymem-2.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:167d8019db3b40308aabf8183fd3fbbc256323b645e0cbf2035301058c439cd0"},
+ {file = "cymem-2.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17cd2c2791c8f6b52f269a756ba7463f75bf7265785388a2592623b84bb02bf8"},
+ {file = "cymem-2.0.8-cp36-cp36m-win_amd64.whl", hash = "sha256:6204f0a3307bf45d109bf698ba37997ce765f21e359284328e4306c7500fcde8"},
+ {file = "cymem-2.0.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9c05db55ea338648f8e5f51dd596568c7f62c5ae32bf3fa5b1460117910ebae"},
+ {file = "cymem-2.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ce641f7ba0489bd1b42a4335a36f38c8507daffc29a512681afaba94a0257d2"},
+ {file = "cymem-2.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6b83a5972a64f62796118da79dfeed71f4e1e770b2b7455e889c909504c2358"},
+ {file = "cymem-2.0.8-cp37-cp37m-win_amd64.whl", hash = "sha256:ada6eb022e4a0f4f11e6356a5d804ceaa917174e6cf33c0b3e371dbea4dd2601"},
+ {file = "cymem-2.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e593cd57e2e19eb50c7ddaf7e230b73c890227834425b9dadcd4a86834ef2ab"},
+ {file = "cymem-2.0.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d513f0d5c6d76facdc605e42aa42c8d50bb7dedca3144ec2b47526381764deb0"},
+ {file = "cymem-2.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e370dd54359101b125bfb191aca0542718077b4edb90ccccba1a28116640fed"},
+ {file = "cymem-2.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84f8c58cde71b8fc7024883031a4eec66c0a9a4d36b7850c3065493652695156"},
+ {file = "cymem-2.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a6edddb30dd000a27987fcbc6f3c23b7fe1d74f539656952cb086288c0e4e29"},
+ {file = "cymem-2.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b896c83c08dadafe8102a521f83b7369a9c5cc3e7768eca35875764f56703f4c"},
+ {file = "cymem-2.0.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a4f8f2bfee34f6f38b206997727d29976666c89843c071a968add7d61a1e8024"},
+ {file = "cymem-2.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7372e2820fa66fd47d3b135f3eb574ab015f90780c3a21cfd4809b54f23a4723"},
+ {file = "cymem-2.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4e57bee56d35b90fc2cba93e75b2ce76feaca05251936e28a96cf812a1f5dda"},
+ {file = "cymem-2.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:ceeab3ce2a92c7f3b2d90854efb32cb203e78cb24c836a5a9a2cac221930303b"},
+ {file = "cymem-2.0.8.tar.gz", hash = "sha256:8fb09d222e21dcf1c7e907dc85cf74501d4cea6c4ed4ac6c9e016f98fb59cbbf"},
+]
+
+[[package]]
+name = "dataclasses-json"
+version = "0.6.4"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"},
+ {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "debugpy"
+version = "1.8.1"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
+ {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
+ {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
+ {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
+ {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
+ {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
+ {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
+ {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
+ {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
+ {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
+ {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
+ {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
+ {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
+ {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
+ {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
+ {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
+ {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
+ {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
+ {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
+ {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
+ {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
+ {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "deprecated"
+version = "1.2.14"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
+ {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
+]
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+
+[[package]]
+name = "dill"
+version = "0.3.8"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dirtyjson"
+version = "1.0.8"
+description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
+ {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
+]
+
+[[package]]
+name = "distlib"
+version = "0.3.8"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
+]
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2024.2.0"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"},
+ {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.2"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
+ {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
+]
+
+[package.dependencies]
+certifi = "*"
+h11 = ">=0.13,<0.15"
+
+[package.extras]
+asyncio = ["anyio (>=4.0,<5.0)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+trio = ["trio (>=0.22.0,<0.23.0)"]
+
+[[package]]
+name = "httpx"
+version = "0.26.0"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
+ {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
+]
+
+[package.dependencies]
+anyio = "*"
+certifi = "*"
+httpcore = "==1.*"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "identify"
+version = "2.5.34"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "identify-2.5.34-py2.py3-none-any.whl", hash = "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed"},
+ {file = "identify-2.5.34.tar.gz", hash = "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "importlib-metadata"
+version = "7.0.1"
+description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"},
+ {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"},
+]
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[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"]
+perf = ["ipython"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+
+[[package]]
+name = "importlib-resources"
+version = "6.1.1"
+description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
+ {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "ipykernel"
+version = "6.29.2"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"},
+ {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.10.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
+ {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
+backcall = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+pickleshare = "*"
+prompt-toolkit = ">=3.0.30,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.2"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"},
+ {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.10,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.10,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.7.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
+ {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
+ {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.5"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
+ {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.0.12"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.0.12-py3-none-any.whl", hash = "sha256:53f132480e5f6564f4e20d1b5ed4e8b7945952a2decd5bdfa43760b1b536c99d"},
+ {file = "jupyterlab-4.0.12.tar.gz", hash = "sha256:965d92efa82a538ed70ccb3968d9aabba788840da882e13d7b061780cdedc3b7"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.6)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.10"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"},
+ {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"},
+]
+
+[[package]]
+name = "langcodes"
+version = "3.3.0"
+description = "Tools for labeling human languages with IETF language tags"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "langcodes-3.3.0-py3-none-any.whl", hash = "sha256:4d89fc9acb6e9c8fdef70bcdf376113a3db09b67285d9e1d534de6d8818e7e69"},
+ {file = "langcodes-3.3.0.tar.gz", hash = "sha256:794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6"},
+]
+
+[package.extras]
+data = ["language-data (>=1.1,<2.0)"]
+
+[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
+description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+]
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.1"
+description = "Interface between LLMs and your data"
+optional = false
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.1-py3-none-any.whl", hash = "sha256:81be7e8fd37775af3eade41ec15795460dbcfeae6159258640761a5845ac14ab"},
+ {file = "llama_index_core-0.10.1.tar.gz", hash = "sha256:4872f863bf301d0e69b17af4b12985085b7d832ac7c3747670793ec3e759a826"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.20.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
+ {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"]
+docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"]
+lint = ["pre-commit (>=2.4,<4.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "multidict"
+version = "6.0.5"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[[package]]
+name = "murmurhash"
+version = "1.0.10"
+description = "Cython bindings for MurmurHash"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "murmurhash-1.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e90eef568adca5e17a91f96975e9a782ace3a617bbb3f8c8c2d917096e9bfeb"},
+ {file = "murmurhash-1.0.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f8ecb00cc1ab57e4b065f9fb3ea923b55160c402d959c69a0b6dbbe8bc73efc3"},
+ {file = "murmurhash-1.0.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3310101004d9e2e0530c2fed30174448d998ffd1b50dcbfb7677e95db101aa4b"},
+ {file = "murmurhash-1.0.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65401a6f1778676253cbf89c1f45a8a7feb7d73038e483925df7d5943c08ed9"},
+ {file = "murmurhash-1.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:f23f2dfc7174de2cdc5007c0771ab8376a2a3f48247f32cac4a5563e40c6adcc"},
+ {file = "murmurhash-1.0.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90ed37ee2cace9381b83d56068334f77e3e30bc521169a1f886a2a2800e965d6"},
+ {file = "murmurhash-1.0.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22e9926fdbec9d24ced9b0a42f0fee68c730438be3cfb00c2499fd495caec226"},
+ {file = "murmurhash-1.0.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54bfbfd68baa99717239b8844600db627f336a08b1caf4df89762999f681cdd1"},
+ {file = "murmurhash-1.0.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b9d200a09d48ef67f6840b77c14f151f2b6c48fd69661eb75c7276ebdb146c"},
+ {file = "murmurhash-1.0.10-cp311-cp311-win_amd64.whl", hash = "sha256:e5d7cfe392c0a28129226271008e61e77bf307afc24abf34f386771daa7b28b0"},
+ {file = "murmurhash-1.0.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:96f0a070344d4802ea76a160e0d4c88b7dc10454d2426f48814482ba60b38b9e"},
+ {file = "murmurhash-1.0.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9f61862060d677c84556610ac0300a0776cb13cb3155f5075ed97e80f86e55d9"},
+ {file = "murmurhash-1.0.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3b6d2d877d8881a08be66d906856d05944be0faf22b9a0390338bcf45299989"},
+ {file = "murmurhash-1.0.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f54b0031d8696fed17ed6e9628f339cdea0ba2367ca051e18ff59193f52687"},
+ {file = "murmurhash-1.0.10-cp312-cp312-win_amd64.whl", hash = "sha256:97e09d675de2359e586f09de1d0de1ab39f9911edffc65c9255fb5e04f7c1f85"},
+ {file = "murmurhash-1.0.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b64e5332932993fef598e78d633b1ba664789ab73032ed511f3dc615a631a1a"},
+ {file = "murmurhash-1.0.10-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e2a38437a8497e082408aa015c6d90554b9e00c2c221fdfa79728a2d99a739e"},
+ {file = "murmurhash-1.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:55f4e4f9291a53c36070330950b472d72ba7d331e4ce3ce1ab349a4f458f7bc4"},
+ {file = "murmurhash-1.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:16ef9f0855952493fe08929d23865425906a8c0c40607ac8a949a378652ba6a9"},
+ {file = "murmurhash-1.0.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cc3351ae92b89c2fcdc6e41ac6f17176dbd9b3554c96109fd0713695d8663e7"},
+ {file = "murmurhash-1.0.10-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6559fef7c2e7349a42a63549067709b656d6d1580752bd76be1541d8b2d65718"},
+ {file = "murmurhash-1.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:8bf49e3bb33febb7057ae3a5d284ef81243a1e55eaa62bdcd79007cddbdc0461"},
+ {file = "murmurhash-1.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f1605fde07030516eb63d77a598dd164fb9bf217fd937dbac588fe7e47a28c40"},
+ {file = "murmurhash-1.0.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4904f7e68674a64eb2b08823c72015a5e14653e0b4b109ea00c652a005a59bad"},
+ {file = "murmurhash-1.0.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0438f0cb44cf1cd26251f72c1428213c4197d40a4e3f48b1efc3aea12ce18517"},
+ {file = "murmurhash-1.0.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db1171a3f9a10571931764cdbfaa5371f4cf5c23c680639762125cb075b833a5"},
+ {file = "murmurhash-1.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:1c9fbcd7646ad8ba67b895f71d361d232c6765754370ecea473dd97d77afe99f"},
+ {file = "murmurhash-1.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7024ab3498434f22f8e642ae31448322ad8228c65c8d9e5dc2d563d57c14c9b8"},
+ {file = "murmurhash-1.0.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a99dedfb7f0cc5a4cd76eb409ee98d3d50eba024f934e705914f6f4d765aef2c"},
+ {file = "murmurhash-1.0.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b580b8503647de5dd7972746b7613ea586270f17ac92a44872a9b1b52c36d68"},
+ {file = "murmurhash-1.0.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75840212bf75eb1352c946c3cf1622dacddd6d6bdda34368237d1eb3568f23a"},
+ {file = "murmurhash-1.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:a4209962b9f85de397c3203ea4b3a554da01ae9fd220fdab38757d4e9eba8d1a"},
+ {file = "murmurhash-1.0.10.tar.gz", hash = "sha256:5282aab1317804c6ebd6dd7f69f15ba9075aee671c44a34be2bde0f1b11ef88a"},
+]
+
+[[package]]
+name = "mypy"
+version = "0.991"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
+ {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"},
+ {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"},
+ {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"},
+ {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"},
+ {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"},
+ {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"},
+ {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"},
+ {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"},
+ {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"},
+ {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"},
+ {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"},
+ {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"},
+ {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"},
+ {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"},
+ {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"},
+ {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"},
+ {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"},
+ {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"},
+ {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"},
+ {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"},
+ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
+ {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.4.3"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = ">=3.10"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+python2 = ["typed-ast (>=1.4.0,<2)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.16.0"
+description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"},
+ {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "nltk"
+version = "3.8.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
+ {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "nodeenv"
+version = "1.8.0"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+files = [
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+]
+
+[package.dependencies]
+setuptools = "*"
+
+[[package]]
+name = "notebook"
+version = "7.0.8"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.0.8-py3-none-any.whl", hash = "sha256:7f421b3fd46a17d91830e724b94e8e9ae922af152ebfd48b1e13ae4a07d8193c"},
+ {file = "notebook-7.0.8.tar.gz", hash = "sha256:3957ecd956056b0014677afc76d3bb44c2d2f29649f87b24d13606ff1d18938f"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.0.2,<4.1"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.24.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
+ {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
+ {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
+ {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
+ {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
+ {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
+ {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
+ {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
+ {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
+ {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
+ {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
+]
+
+[[package]]
+name = "openai"
+version = "1.12.0"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.12.0-py3-none-any.whl", hash = "sha256:a54002c814e05222e413664f651b5916714e4700d041d5cf5724d3ae1a3e3481"},
+ {file = "openai-1.12.0.tar.gz", hash = "sha256:99c5d257d09ea6533d689d1cc77caa0ac679fa21efef8893d8b0832a86877f1b"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.7,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.0.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.1"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
+aws = ["s3fs (>=2021.08.0)"]
+clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
+compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
+computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2021.07.0)"]
+gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"]
+hdf5 = ["tables (>=3.6.1)"]
+html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"]
+mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
+spss = ["pyreadstat (>=1.1.2)"]
+sql-other = ["SQLAlchemy (>=1.4.16)"]
+test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.6.3)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pathspec"
+version = "0.12.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
+]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "phonenumbers"
+version = "8.13.30"
+description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers."
+optional = false
+python-versions = "*"
+files = [
+ {file = "phonenumbers-8.13.30-py2.py3-none-any.whl", hash = "sha256:273a969a863e9e38d4944b26fc277f408dc9aa84faa04996266efa4021adea00"},
+ {file = "phonenumbers-8.13.30.tar.gz", hash = "sha256:175fcaa89780c9cb6e089fe61de960396c9fc0c01845aea26400975fb10a8ea8"},
+]
+
+[[package]]
+name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+
+[[package]]
+name = "platformdirs"
+version = "4.2.0"
+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.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+ {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+]
+
+[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)"]
+
+[[package]]
+name = "pluggy"
+version = "1.4.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+ {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "pre-commit"
+version = "3.2.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
+ {file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
+[[package]]
+name = "preshed"
+version = "3.0.9"
+description = "Cython hash table that trusts the keys are pre-hashed"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "preshed-3.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f96ef4caf9847b2bb9868574dcbe2496f974e41c2b83d6621c24fb4c3fc57e3"},
+ {file = "preshed-3.0.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a61302cf8bd30568631adcdaf9e6b21d40491bd89ba8ebf67324f98b6c2a2c05"},
+ {file = "preshed-3.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99499e8a58f58949d3f591295a97bca4e197066049c96f5d34944dd21a497193"},
+ {file = "preshed-3.0.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea6b6566997dc3acd8c6ee11a89539ac85c77275b4dcefb2dc746d11053a5af8"},
+ {file = "preshed-3.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:bfd523085a84b1338ff18f61538e1cfcdedc4b9e76002589a301c364d19a2e36"},
+ {file = "preshed-3.0.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7c2364da27f2875524ce1ca754dc071515a9ad26eb5def4c7e69129a13c9a59"},
+ {file = "preshed-3.0.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:182138033c0730c683a6d97e567ceb8a3e83f3bff5704f300d582238dbd384b3"},
+ {file = "preshed-3.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:345a10be3b86bcc6c0591d343a6dc2bfd86aa6838c30ced4256dfcfa836c3a64"},
+ {file = "preshed-3.0.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51d0192274aa061699b284f9fd08416065348edbafd64840c3889617ee1609de"},
+ {file = "preshed-3.0.9-cp311-cp311-win_amd64.whl", hash = "sha256:96b857d7a62cbccc3845ac8c41fd23addf052821be4eb987f2eb0da3d8745aa1"},
+ {file = "preshed-3.0.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4fe6720012c62e6d550d6a5c1c7ad88cacef8388d186dad4bafea4140d9d198"},
+ {file = "preshed-3.0.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e04f05758875be9751e483bd3c519c22b00d3b07f5a64441ec328bb9e3c03700"},
+ {file = "preshed-3.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a55091d0e395f1fdb62ab43401bb9f8b46c7d7794d5b071813c29dc1ab22fd0"},
+ {file = "preshed-3.0.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7de8f5138bcac7870424e09684dc3dd33c8e30e81b269f6c9ede3d8c7bb8e257"},
+ {file = "preshed-3.0.9-cp312-cp312-win_amd64.whl", hash = "sha256:24229c77364628743bc29c5620c5d6607ed104f0e02ae31f8a030f99a78a5ceb"},
+ {file = "preshed-3.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b73b0f7ecc58095ebbc6ca26ec806008ef780190fe685ce471b550e7eef58dc2"},
+ {file = "preshed-3.0.9-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cb90ecd5bec71c21d95962db1a7922364d6db2abe284a8c4b196df8bbcc871e"},
+ {file = "preshed-3.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:e304a0a8c9d625b70ba850c59d4e67082a6be9c16c4517b97850a17a282ebee6"},
+ {file = "preshed-3.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1fa6d3d5529b08296ff9b7b4da1485c080311fd8744bbf3a86019ff88007b382"},
+ {file = "preshed-3.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1e5173809d85edd420fc79563b286b88b4049746b797845ba672cf9435c0e7"},
+ {file = "preshed-3.0.9-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fe81eb21c7d99e8b9a802cc313b998c5f791bda592903c732b607f78a6b7dc4"},
+ {file = "preshed-3.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:78590a4a952747c3766e605ce8b747741005bdb1a5aa691a18aae67b09ece0e6"},
+ {file = "preshed-3.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3452b64d97ce630e200c415073040aa494ceec6b7038f7a2a3400cbd7858e952"},
+ {file = "preshed-3.0.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ac970d97b905e9e817ec13d31befd5b07c9cfec046de73b551d11a6375834b79"},
+ {file = "preshed-3.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eebaa96ece6641cd981491cba995b68c249e0b6877c84af74971eacf8990aa19"},
+ {file = "preshed-3.0.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d473c5f6856e07a88d41fe00bb6c206ecf7b34c381d30de0b818ba2ebaf9406"},
+ {file = "preshed-3.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:0de63a560f10107a3f0a9e252cc3183b8fdedcb5f81a86938fd9f1dcf8a64adf"},
+ {file = "preshed-3.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3a9ad9f738084e048a7c94c90f40f727217387115b2c9a95c77f0ce943879fcd"},
+ {file = "preshed-3.0.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a671dfa30b67baa09391faf90408b69c8a9a7f81cb9d83d16c39a182355fbfce"},
+ {file = "preshed-3.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23906d114fc97c17c5f8433342495d7562e96ecfd871289c2bb2ed9a9df57c3f"},
+ {file = "preshed-3.0.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:778cf71f82cedd2719b256f3980d556d6fb56ec552334ba79b49d16e26e854a0"},
+ {file = "preshed-3.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:a6e579439b329eb93f32219ff27cb358b55fbb52a4862c31a915a098c8a22ac2"},
+ {file = "preshed-3.0.9.tar.gz", hash = "sha256:721863c5244ffcd2651ad0928951a2c7c77b102f4e11a251ad85d37ee7621660"},
+]
+
+[package.dependencies]
+cymem = ">=2.0.2,<2.1.0"
+murmurhash = ">=0.28.0,<1.1.0"
+
+[[package]]
+name = "presidio-analyzer"
+version = "2.2.353"
+description = "Presidio analyzer package"
+optional = false
+python-versions = "*"
+files = [
+ {file = "presidio_analyzer-2.2.353-py3-none-any.whl", hash = "sha256:751e67e4a80b4806d4d13c5b9203276b29aba5687deed80c73455faae95da5f6"},
+]
+
+[package.dependencies]
+phonenumbers = ">=8.12,<9.0.0"
+pyyaml = "*"
+regex = "*"
+spacy = ">=3.4.4,<4.0.0"
+tldextract = "*"
+
+[package.extras]
+azure-ai-language = ["azure-ai-textanalytics", "azure-core"]
+stanza = ["spacy-stanza", "stanza"]
+transformers = ["spacy-huggingface-pipelines"]
+
+[[package]]
+name = "presidio-anonymizer"
+version = "2.2.353"
+description = "Persidio Anonymizer package - replaces analyzed text with desired values."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "presidio_anonymizer-2.2.353-py3-none-any.whl", hash = "sha256:5fc1a3ed00da0dfa468f80f6265a8550ff798d56daba32412ad1b39d67bd85cc"},
+]
+
+[package.dependencies]
+pycryptodome = ">=3.10.1"
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
+ {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "psutil"
+version = "5.9.8"
+description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"},
+ {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"},
+ {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"},
+ {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"},
+ {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"},
+ {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"},
+ {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"},
+ {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"},
+ {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
+ {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pycryptodome"
+version = "3.20.0"
+description = "Cryptographic library for Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "pycryptodome-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a"},
+ {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f"},
+ {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d"},
+ {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd"},
+ {file = "pycryptodome-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33"},
+ {file = "pycryptodome-3.20.0-cp27-cp27m-win32.whl", hash = "sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690"},
+ {file = "pycryptodome-3.20.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f"},
+ {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091"},
+ {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4"},
+ {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc"},
+ {file = "pycryptodome-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-win32.whl", hash = "sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72"},
+ {file = "pycryptodome-3.20.0-cp35-abi3-win_amd64.whl", hash = "sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9"},
+ {file = "pycryptodome-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a"},
+ {file = "pycryptodome-3.20.0-pp27-pypy_73-win32.whl", hash = "sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e"},
+ {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04"},
+ {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3"},
+ {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea"},
+ {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b"},
+ {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6"},
+ {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab"},
+ {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5"},
+ {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e"},
+ {file = "pycryptodome-3.20.0.tar.gz", hash = "sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7"},
+]
+
+[[package]]
+name = "pydantic"
+version = "2.6.1"
+description = "Data validation using Python type hints"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"},
+ {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"},
+]
+
+[package.dependencies]
+annotated-types = ">=0.4.0"
+pydantic-core = "2.16.2"
+typing-extensions = ">=4.6.1"
+
+[package.extras]
+email = ["email-validator (>=2.0.0)"]
+
+[[package]]
+name = "pydantic-core"
+version = "2.16.2"
+description = ""
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"},
+ {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"},
+ {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"},
+ {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"},
+ {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"},
+ {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"},
+ {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"},
+ {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"},
+ {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"},
+ {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pylint"
+version = "2.15.10"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
+ {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+]
+
+[package.dependencies]
+astroid = ">=2.12.13,<=2.14.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = [
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+]
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+tomlkit = ">=0.10.1"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pytest"
+version = "7.2.1"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
+ {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
+]
+
+[package.dependencies]
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-mock"
+version = "3.11.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
+ {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+]
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[package.extras]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2024.1"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
+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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {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"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "referencing"
+version = "0.33.0"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"},
+ {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "regex"
+version = "2023.12.25"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
+ {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
+ {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
+ {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
+ {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
+ {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
+ {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
+ {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
+ {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
+ {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
+ {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
+ {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
+ {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
+ {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
+ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
+]
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "requests-file"
+version = "2.0.0"
+description = "File transport adapter for Requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"},
+ {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"},
+]
+
+[package.dependencies]
+requests = ">=1.0.0"
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.17.1"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"},
+ {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"},
+ {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"},
+ {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"},
+ {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"},
+ {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"},
+ {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"},
+ {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"},
+ {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"},
+ {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"},
+ {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"},
+ {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"},
+ {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"},
+ {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"},
+ {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"},
+ {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"},
+ {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"},
+ {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"},
+ {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"},
+ {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"},
+ {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"},
+ {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"},
+ {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"},
+ {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"},
+ {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"},
+ {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"},
+ {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"},
+ {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"},
+ {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"},
+ {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"},
+ {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"},
+ {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"},
+ {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"},
+ {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"},
+ {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"},
+ {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"},
+ {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"},
+ {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"},
+ {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"},
+ {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"},
+ {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"},
+ {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"},
+ {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"},
+ {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"},
+]
+
+[[package]]
+name = "ruff"
+version = "0.0.292"
+description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
+ {file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_i686.whl", hash = "sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016"},
+ {file = "ruff-0.0.292-py3-none-win32.whl", hash = "sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003"},
+ {file = "ruff-0.0.292-py3-none-win_amd64.whl", hash = "sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c"},
+ {file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
+ {file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
+]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "setuptools"
+version = "69.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
+ {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "smart-open"
+version = "6.4.0"
+description = "Utils for streaming large files (S3, HDFS, GCS, Azure Blob Storage, gzip, bz2...)"
+optional = false
+python-versions = ">=3.6,<4.0"
+files = [
+ {file = "smart_open-6.4.0-py3-none-any.whl", hash = "sha256:8d3ef7e6997e8e42dd55c74166ed21e6ac70664caa32dd940b26d54a8f6b4142"},
+ {file = "smart_open-6.4.0.tar.gz", hash = "sha256:be3c92c246fbe80ebce8fbacb180494a481a77fcdcb7c1aadb2ea5b9c2bee8b9"},
+]
+
+[package.extras]
+all = ["azure-common", "azure-core", "azure-storage-blob", "boto3", "google-cloud-storage (>=2.6.0)", "paramiko", "requests"]
+azure = ["azure-common", "azure-core", "azure-storage-blob"]
+gcs = ["google-cloud-storage (>=2.6.0)"]
+http = ["requests"]
+s3 = ["boto3"]
+ssh = ["paramiko"]
+test = ["azure-common", "azure-core", "azure-storage-blob", "boto3", "google-cloud-storage (>=2.6.0)", "moto[server]", "paramiko", "pytest", "pytest-rerunfailures", "requests", "responses"]
+webhdfs = ["requests"]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+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"},
+]
+
+[[package]]
+name = "spacy"
+version = "3.7.2"
+description = "Industrial-strength Natural Language Processing (NLP) in Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "spacy-3.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b4e285366d36c85f784d606a2d966912a18f4d24d47330c1c6acbdd9f19ee373"},
+ {file = "spacy-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f132c05368781be5d3be3d706afce7e7a9a0c9edc0dbb7c616162c37bc386561"},
+ {file = "spacy-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3767b2cabbe337d62779ae4fdc4d57a39755c17dfc499de3ad2bae622caa43"},
+ {file = "spacy-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a748ade269bdbea9baaa49ec00882404e7e921163cdc14f5612320d0a957dfd"},
+ {file = "spacy-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:66467128e494bfa4dc9c3996e4cbb26bac4741bca4cdd8dd83a6e71182148945"},
+ {file = "spacy-3.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5af30aea578e7414fb0eb4dbad0ff0fa0a7d8e833c3e733eceb2617534714c7d"},
+ {file = "spacy-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7293de33b1e9ede151555070ad0fee3bac98aefcaac9e615eeeb4296846bd479"},
+ {file = "spacy-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26940681cf20c8831c558e2c3d345ff20b5bc3c5e6d41c66172d0c5136042f0b"},
+ {file = "spacy-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a334667625153f7aaf188c20af7e82c886e41a88483a056accba5a7d51095c6"},
+ {file = "spacy-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:43e6147d3583b62a2d3af0cd913ac025068196d587345751e198391ff0b8c1e9"},
+ {file = "spacy-3.7.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2558df8c11905a0f77a2a3639a12ef8a522d171bcd88eaec039bedf6c60d7e01"},
+ {file = "spacy-3.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:df1b9c4bbadc89bad10dba226d52c113e231ea6ad35c8a916ab138b31f69fa24"},
+ {file = "spacy-3.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbbe055d2170ac7505a9f580bbdcd2146d0701bdbd6cea2333e18b0db655b97a"},
+ {file = "spacy-3.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d35129b16ae2ca4212bf22a5c88b67b1e019e434fc48b69d3b95f80bc9e14e42"},
+ {file = "spacy-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:a7419682aba99624cc4df7df66764b6ec62ff415f32c3682c1af2a37bd11a913"},
+ {file = "spacy-3.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b12ab9c4923ffd38da84baf09464982da44e8275d680fb3c5da2051d7dd7bd2d"},
+ {file = "spacy-3.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c5c9db529dc1caa908813c58ba1643e929d2c811768596a2b64e2e01a882b1"},
+ {file = "spacy-3.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcaad95e3e7d0ea8f381f3e2d9e80b7f346ecb6566de9bd55361736fa563fc22"},
+ {file = "spacy-3.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5d9b12284871ca5daa7774604a964486957567a86f1af898da0260e94b815e0d"},
+ {file = "spacy-3.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2bd89770f61d5980e788ef382297322cceb7dcc4b848d68cb1da8af7d80d6eb6"},
+ {file = "spacy-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d42f9151a2f01b34227ed31c8db8b7c67889ebcc637eae390faec8093ea1fb12"},
+ {file = "spacy-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3d25d2f22ba1d2dd46d103e4a54826582de2b853b6f95dfb97b005563b38838"},
+ {file = "spacy-3.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:730f23340dd157817d2da6df21f69966791b0bdbd6ea108845a65f3e1c0e981c"},
+ {file = "spacy-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:9c2f3f04b4b894a6c42ee93cec2f2b158f246f344927e65d9d19b72c5a6493ea"},
+ {file = "spacy-3.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b22e0e8dac76740d55556fa13ebb9e1c829779ea0b7ec7a9e04f32efc66f74b9"},
+ {file = "spacy-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ad7f378350104ca1f9e81180485d8b094aad7acb9b4bce84f1387b905cf230a2"},
+ {file = "spacy-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ccbffb7825c08c0586ef7384d0aa23196f9ac106b5c7b3c551907316930f94f"},
+ {file = "spacy-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:111955d7f4786b952672e9c5cfd9f8b74d81e64b62d479f71efe9cfc2a027a1d"},
+ {file = "spacy-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:e8a7291e7e1cfcb6041b26f96d0a66b603725c1beff4e0391c3d9226fae16e04"},
+ {file = "spacy-3.7.2.tar.gz", hash = "sha256:cedf4927bf0d3fec773a6ce48d5d2c91bdb02fed3c7d5ec07bdb873f1126f1a0"},
+]
+
+[package.dependencies]
+catalogue = ">=2.0.6,<2.1.0"
+cymem = ">=2.0.2,<2.1.0"
+jinja2 = "*"
+langcodes = ">=3.2.0,<4.0.0"
+murmurhash = ">=0.28.0,<1.1.0"
+numpy = [
+ {version = ">=1.15.0", markers = "python_version < \"3.9\""},
+ {version = ">=1.19.0", markers = "python_version >= \"3.9\""},
+]
+packaging = ">=20.0"
+preshed = ">=3.0.2,<3.1.0"
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<3.0.0"
+requests = ">=2.13.0,<3.0.0"
+setuptools = "*"
+smart-open = ">=5.2.1,<7.0.0"
+spacy-legacy = ">=3.0.11,<3.1.0"
+spacy-loggers = ">=1.0.0,<2.0.0"
+srsly = ">=2.4.3,<3.0.0"
+thinc = ">=8.1.8,<8.3.0"
+tqdm = ">=4.38.0,<5.0.0"
+typer = ">=0.3.0,<0.10.0"
+wasabi = ">=0.9.1,<1.2.0"
+weasel = ">=0.1.0,<0.4.0"
+
+[package.extras]
+apple = ["thinc-apple-ops (>=0.1.0.dev0,<1.0.0)"]
+cuda = ["cupy (>=5.0.0b4,<13.0.0)"]
+cuda-autodetect = ["cupy-wheel (>=11.0.0,<13.0.0)"]
+cuda100 = ["cupy-cuda100 (>=5.0.0b4,<13.0.0)"]
+cuda101 = ["cupy-cuda101 (>=5.0.0b4,<13.0.0)"]
+cuda102 = ["cupy-cuda102 (>=5.0.0b4,<13.0.0)"]
+cuda110 = ["cupy-cuda110 (>=5.0.0b4,<13.0.0)"]
+cuda111 = ["cupy-cuda111 (>=5.0.0b4,<13.0.0)"]
+cuda112 = ["cupy-cuda112 (>=5.0.0b4,<13.0.0)"]
+cuda113 = ["cupy-cuda113 (>=5.0.0b4,<13.0.0)"]
+cuda114 = ["cupy-cuda114 (>=5.0.0b4,<13.0.0)"]
+cuda115 = ["cupy-cuda115 (>=5.0.0b4,<13.0.0)"]
+cuda116 = ["cupy-cuda116 (>=5.0.0b4,<13.0.0)"]
+cuda117 = ["cupy-cuda117 (>=5.0.0b4,<13.0.0)"]
+cuda11x = ["cupy-cuda11x (>=11.0.0,<13.0.0)"]
+cuda12x = ["cupy-cuda12x (>=11.5.0,<13.0.0)"]
+cuda80 = ["cupy-cuda80 (>=5.0.0b4,<13.0.0)"]
+cuda90 = ["cupy-cuda90 (>=5.0.0b4,<13.0.0)"]
+cuda91 = ["cupy-cuda91 (>=5.0.0b4,<13.0.0)"]
+cuda92 = ["cupy-cuda92 (>=5.0.0b4,<13.0.0)"]
+ja = ["sudachidict-core (>=20211220)", "sudachipy (>=0.5.2,!=0.6.1)"]
+ko = ["natto-py (>=0.9.0)"]
+lookups = ["spacy-lookups-data (>=1.0.3,<1.1.0)"]
+th = ["pythainlp (>=2.0)"]
+transformers = ["spacy-transformers (>=1.1.2,<1.4.0)"]
+
+[[package]]
+name = "spacy-legacy"
+version = "3.0.12"
+description = "Legacy registered functions for spaCy backwards compatibility"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "spacy-legacy-3.0.12.tar.gz", hash = "sha256:b37d6e0c9b6e1d7ca1cf5bc7152ab64a4c4671f59c85adaf7a3fcb870357a774"},
+ {file = "spacy_legacy-3.0.12-py2.py3-none-any.whl", hash = "sha256:476e3bd0d05f8c339ed60f40986c07387c0a71479245d6d0f4298dbd52cda55f"},
+]
+
+[[package]]
+name = "spacy-loggers"
+version = "1.0.5"
+description = "Logging utilities for SpaCy"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "spacy-loggers-1.0.5.tar.gz", hash = "sha256:d60b0bdbf915a60e516cc2e653baeff946f0cfc461b452d11a4d5458c6fe5f24"},
+ {file = "spacy_loggers-1.0.5-py3-none-any.whl", hash = "sha256:196284c9c446cc0cdb944005384270d775fdeaf4f494d8e269466cfa497ef645"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.26"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:56524d767713054f8758217b3a811f6a736e0ae34e7afc33b594926589aa9609"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c2d8a2c68b279617f13088bdc0fc0e9b5126f8017f8882ff08ee41909fab0713"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d377645913d47f0dc802b415bcfe7fb085d86646a12278d77c12eb75b5e1b4"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fc0628d2026926404dabc903dc5628f7d936a792aa3a1fc54a20182df8e2172"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:872f2907ade52601a1e729e85d16913c24dc1f6e7c57d11739f18dcfafde29db"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba46fa770578b3cf3b5b77dadb7e94fda7692dd4d1989268ef3dcb65f31c40a3"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-win32.whl", hash = "sha256:651d10fdba7984bf100222d6e4acc496fec46493262b6170be1981ef860c6184"},
+ {file = "SQLAlchemy-2.0.26-cp310-cp310-win_amd64.whl", hash = "sha256:8f95ede696ab0d7328862d69f29b643d35b668c4f3619cb2f0281adc16e64c1b"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fab1bb909bd24accf2024a69edd4f885ded182c079c4dbcd515b4842f86b07cb"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7ee16afd083bb6bb5ab3962ac7f0eafd1d196c6399388af35fef3d1c6d6d9bb"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379af901ceb524cbee5e15c1713bf9fd71dc28053286b7917525d01b938b9628"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94a78f56ea13f4d6e9efcd2a2d08cc13531918e0516563f6303c4ad98c81e21d"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a481cc2eec83776ff7b6bb12c8e85d0378af0e2ec4584ac3309365a2a380c64b"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8cbeb0e49b605cd75f825fb9239a554803ef2bef1a7b2a8b428926ed518b6b63"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-win32.whl", hash = "sha256:e70cce65239089390c193a7b0d171ce89d2e3dedf797f8010031b2aa2b1e9c80"},
+ {file = "SQLAlchemy-2.0.26-cp311-cp311-win_amd64.whl", hash = "sha256:750d1ef39d50520527c45c309c3cb10bbfa6131f93081b4e93858abb5ece2501"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b39503c3a56e1b2340a7d09e185ddb60b253ad0210877a9958ac64208eb23674"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1a870e6121a052f826f7ae1e4f0b54ca4c0ccd613278218ca036fa5e0f3be7df"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5901eed6d0e23ca4b04d66a561799d4f0fe55fcbfc7ca203bb8c3277f442085b"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25fe55aab9b20ae4a9523bb269074202be9d92a145fcc0b752fff409754b5f6"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5310958d08b4bafc311052be42a3b7d61a93a2bf126ddde07b85f712e7e4ac7b"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd133afb7e6c59fad365ffa97fb06b1001f88e29e1de351bef3d2b1224e2f132"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-win32.whl", hash = "sha256:dc32ecf643c4904dd413e6a95a3f2c8a89ccd6f15083e586dcf8f42eb4e317ae"},
+ {file = "SQLAlchemy-2.0.26-cp312-cp312-win_amd64.whl", hash = "sha256:6e25f029e8ad6d893538b5abe8537e7f09e21d8e96caee46a7e2199f3ddd77b0"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:99a9a8204b8937aa72421e31c493bfc12fd063a8310a0522e5a9b98e6323977c"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:691d68a4fca30c9a676623d094b600797699530e175b6524a9f57e3273f5fa8d"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79a74a4ca4310c812f97bf0f13ce00ed73c890954b5a20b32484a9ab60e567e9"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2efbbeb18c0e1c53b670a46a009fbde7b58e05b397a808c7e598532b17c6f4b"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3fc557f5402206c18ec3d288422f8e5fa764306d49f4efbc6090a7407bf54938"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-win32.whl", hash = "sha256:a9846ffee3283cff4ec476e7ee289314290fcb2384aab5045c6f481c5c4d011f"},
+ {file = "SQLAlchemy-2.0.26-cp37-cp37m-win_amd64.whl", hash = "sha256:ed4667d3d5d6e203a271d684d5b213ebcd618f7a8bc605752a8865eb9e67a79a"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:79e629df3f69f849a1482a2d063596b23e32036b83547397e68725e6e0d0a9ab"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4b4d848b095173e0a9e377127b814490499e55f5168f617ae2c07653c326b9d1"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f06afe8e96d7f221cc0b59334dc400151be22f432785e895e37030579d253c3"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f75ac12d302205e60f77f46bd162d40dc37438f1f8db160d2491a78b19a0bd61"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec3717c1efee8ad4b97f6211978351de3abe1e4b5f73e32f775c7becec021c5c"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06ed4d6bb2365222fb9b0a05478a2d23ad8c1dd874047a9ae1ca1d45f18a255e"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-win32.whl", hash = "sha256:caa79a6caeb4a3cc4ddb9aba9205c383f5d3bcb60d814e87e74570514754e073"},
+ {file = "SQLAlchemy-2.0.26-cp38-cp38-win_amd64.whl", hash = "sha256:996b41c38e34a980e9f810d6e2709a3196e29ee34e46e3c16f96c63da10a9da1"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4f57af0866f6629eae2d24d022ba1a4c1bac9b16d45027bbfcda4c9d5b0d8f26"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e1a532bc33163fb19c4759a36504a23e63032bc8d47cee1c66b0b70a04a0957b"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02a4f954ccb17bd8cff56662efc806c5301508233dc38d0253a5fdb2f33ca3ba"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a678f728fb075e74aaa7fdc27f8af8f03f82d02e7419362cc8c2a605c16a4114"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8b39462c9588d4780f041e1b84d2ba038ac01c441c961bbee622dd8f53dec69f"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98f4d0d2bda2921af5b0c2ca99207cdab00f2922da46a6336c62c8d6814303a7"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-win32.whl", hash = "sha256:6d68e6b507a3dd20c0add86ac0a0ca061d43c9a0162a122baa5fe952f14240f1"},
+ {file = "SQLAlchemy-2.0.26-cp39-cp39-win_amd64.whl", hash = "sha256:fb97a9b93b953084692a52a7877957b7a88dfcedc0c5652124f5aebf5999f7fe"},
+ {file = "SQLAlchemy-2.0.26-py3-none-any.whl", hash = "sha256:1128b2cdf49107659f6d1f452695f43a20694cc9305a86e97b70793a1c74eeb4"},
+ {file = "SQLAlchemy-2.0.26.tar.gz", hash = "sha256:e1bcd8fcb30305e27355d553608c2c229d3e589fb7ff406da7d7e5d50fa14d0d"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "srsly"
+version = "2.4.8"
+description = "Modern high-performance serialization utilities for Python"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "srsly-2.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:17f3bcb418bb4cf443ed3d4dcb210e491bd9c1b7b0185e6ab10b6af3271e63b2"},
+ {file = "srsly-2.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b070a58e21ab0e878fd949f932385abb4c53dd0acb6d3a7ee75d95d447bc609"},
+ {file = "srsly-2.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98286d20014ed2067ad02b0be1e17c7e522255b188346e79ff266af51a54eb33"},
+ {file = "srsly-2.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18685084e2e0cc47c25158cbbf3e44690e494ef77d6418c2aae0598c893f35b0"},
+ {file = "srsly-2.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:980a179cbf4eb5bc56f7507e53f76720d031bcf0cef52cd53c815720eb2fc30c"},
+ {file = "srsly-2.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5472ed9f581e10c32e79424c996cf54c46c42237759f4224806a0cd4bb770993"},
+ {file = "srsly-2.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:50f10afe9230072c5aad9f6636115ea99b32c102f4c61e8236d8642c73ec7a13"},
+ {file = "srsly-2.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c994a89ba247a4d4f63ef9fdefb93aa3e1f98740e4800d5351ebd56992ac75e3"},
+ {file = "srsly-2.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace7ed4a0c20fa54d90032be32f9c656b6d75445168da78d14fe9080a0c208ad"},
+ {file = "srsly-2.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:7a919236a090fb93081fbd1cec030f675910f3863825b34a9afbcae71f643127"},
+ {file = "srsly-2.4.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7583c03d114b4478b7a357a1915305163e9eac2dfe080da900555c975cca2a11"},
+ {file = "srsly-2.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ccdd2f6db824c31266aaf93e0f31c1c43b8bc531cd2b3a1d924e3c26a4f294"},
+ {file = "srsly-2.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db72d2974f91aee652d606c7def98744ca6b899bd7dd3009fd75ebe0b5a51034"},
+ {file = "srsly-2.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a60c905fd2c15e848ce1fc315fd34d8a9cc72c1dee022a0d8f4c62991131307"},
+ {file = "srsly-2.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:e0b8d5722057000694edf105b8f492e7eb2f3aa6247a5f0c9170d1e0d074151c"},
+ {file = "srsly-2.4.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:196b4261f9d6372d1d3d16d1216b90c7e370b4141471322777b7b3c39afd1210"},
+ {file = "srsly-2.4.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4750017e6d78590b02b12653e97edd25aefa4734281386cc27501d59b7481e4e"},
+ {file = "srsly-2.4.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa034cd582ba9e4a120c8f19efa263fcad0f10fc481e73fb8c0d603085f941c4"},
+ {file = "srsly-2.4.8-cp36-cp36m-win_amd64.whl", hash = "sha256:5a78ab9e9d177ee8731e950feb48c57380036d462b49e3fb61a67ce529ff5f60"},
+ {file = "srsly-2.4.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:087e36439af517e259843df93eb34bb9e2d2881c34fa0f541589bcfbc757be97"},
+ {file = "srsly-2.4.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad141d8a130cb085a0ed3a6638b643e2b591cb98a4591996780597a632acfe20"},
+ {file = "srsly-2.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24d05367b2571c0d08d00459636b951e3ca2a1e9216318c157331f09c33489d3"},
+ {file = "srsly-2.4.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3fd661a1c4848deea2849b78f432a70c75d10968e902ca83c07c89c9b7050ab8"},
+ {file = "srsly-2.4.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec37233fe39af97b00bf20dc2ceda04d39b9ea19ce0ee605e16ece9785e11f65"},
+ {file = "srsly-2.4.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d2fd4bc081f1d6a6063396b6d97b00d98e86d9d3a3ac2949dba574a84e148080"},
+ {file = "srsly-2.4.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7347cff1eb4ef3fc335d9d4acc89588051b2df43799e5d944696ef43da79c873"},
+ {file = "srsly-2.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9dc1da5cc94d77056b91ba38365c72ae08556b6345bef06257c7e9eccabafe"},
+ {file = "srsly-2.4.8-cp38-cp38-win_amd64.whl", hash = "sha256:dc0bf7b6f23c9ecb49ec0924dc645620276b41e160e9b283ed44ca004c060d79"},
+ {file = "srsly-2.4.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ff8df21d00d73c371bead542cefef365ee87ca3a5660de292444021ff84e3b8c"},
+ {file = "srsly-2.4.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ac3e340e65a9fe265105705586aa56054dc3902789fcb9a8f860a218d6c0a00"},
+ {file = "srsly-2.4.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06d1733f4275eff4448e96521cc7dcd8fdabd68ba9b54ca012dcfa2690db2644"},
+ {file = "srsly-2.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be5b751ad88fdb58fb73871d456248c88204f213aaa3c9aab49b6a1802b3fa8d"},
+ {file = "srsly-2.4.8-cp39-cp39-win_amd64.whl", hash = "sha256:822a38b8cf112348f3accbc73274a94b7bf82515cb14a85ba586d126a5a72851"},
+ {file = "srsly-2.4.8.tar.gz", hash = "sha256:b24d95a65009c2447e0b49cda043ac53fecf4f09e358d87a57446458f91b8a91"},
+]
+
+[package.dependencies]
+catalogue = ">=2.0.3,<2.1.0"
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "tenacity"
+version = "8.2.3"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
+ {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx", "tornado (>=4.5)"]
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "thinc"
+version = "8.2.3"
+description = "A refreshing functional take on deep learning, compatible with your favorite libraries"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "thinc-8.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:27950dc8a14e1ead09dec329ad98edf1b8f7cc71ec9d5ce5f301073de9d7dadf"},
+ {file = "thinc-8.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fce09571619f344983f915f5deb5b8346304b56d3a9ae1bc5ac8c5872eee0738"},
+ {file = "thinc-8.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0fb4e534c978ff4b429678ab28db2f81503549f97ed61b2b752c07c08b2083"},
+ {file = "thinc-8.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607223c178ae5fba36a3b35fa82d94a453694551bcfbe7f9ac04a01a9e87ebad"},
+ {file = "thinc-8.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:53b48a6ae43b0e4054816a378163237b1d2120a49c71994682037437d64b7f84"},
+ {file = "thinc-8.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9db67f460dae2e3aada1ff166394ce13c2dabb4db93d6bd79cd256f5beab9599"},
+ {file = "thinc-8.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d57bdf43e0acd1406d681bf988179f677cf1b385c86f744bf314d827383ce31"},
+ {file = "thinc-8.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78311a593b8bf3f03af52bf71d6b364463c598f3540ea8387c00017d2a0e0a5d"},
+ {file = "thinc-8.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9489ae7fec427064a50a0c3e7c661a95251756032e31316add2c8c13f98f93c"},
+ {file = "thinc-8.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:d0bf3840d434e3dbdf294643e6d54d2042d0e652abc68dee16673f28269fc456"},
+ {file = "thinc-8.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bb7c64d0cb8066c47af9441cd611e89a0e2b28b85f2fffbdec791724c81e1915"},
+ {file = "thinc-8.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c11ab3236e56311568f1e84099bfbeea3a4ee2434758a32982b224ddf8bad9c5"},
+ {file = "thinc-8.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0a7f29ad534b6e761ee24d0c9e7402447e8ed4e772922795f77c98d88d7f99c"},
+ {file = "thinc-8.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2817bde75c92f98fee747efdbebca68d16158b808401c5a922ba54a5f2619e9b"},
+ {file = "thinc-8.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:a336f8cae7374d1768a52e63a5084a1208e30b8761eede113d2703e43e7839f1"},
+ {file = "thinc-8.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:45c1a2880329eae53da1d77a4898b7fd30faad445b28fdf92c5557dbf6492ff0"},
+ {file = "thinc-8.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c899b25442ed915bc77fa4cf07e908dea1bccab7c4b8d854cc0b261026d6a06"},
+ {file = "thinc-8.2.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83a6b46d5f0accf0c2b2e5ff05b1bffd4d99721513b6d0374574009b0aab292c"},
+ {file = "thinc-8.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:9a29a9ca7a5060c923866f16ba7823a4540cfd708eafa7202ee89ac029e0b78b"},
+ {file = "thinc-8.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bd25b781faae71c52ba053157ab1865f4163be1a6485e70a007855a037ba060f"},
+ {file = "thinc-8.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01a7107c36c4fc60b60fdbda30d76a0ac9bc8f4f9c7f6872db62250e2f836a5"},
+ {file = "thinc-8.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa65182424efda03be9359c3540928bf2985792f89826a76ee475c7c6b2ec64f"},
+ {file = "thinc-8.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:4d448c8a870f594125cbfadc91024ce67683eae5698207101d2ea4793ab222a1"},
+ {file = "thinc-8.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97605421b898441733fda24c6dda74a85325fbeebc808176857b0a8e6e7a9d47"},
+ {file = "thinc-8.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8b0309d14bcfdad24b1e8bb87f8b245acfd7eb5305be466c284c788adf026ffa"},
+ {file = "thinc-8.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aead20abe233adade3c37daeb9d08e5429dfcada81856b1f2b1b7e4a67a671a0"},
+ {file = "thinc-8.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:324e5d2c98f787d82d239cf33cee425e1c11e34a3c96cb3f4e1ee5661abef50c"},
+ {file = "thinc-8.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:45e6416e56d5101d0557e31cd06235d80fc89e9ac455ef1b444c440cb3c1ce64"},
+ {file = "thinc-8.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5e6ebf63a185d7691b38655a184e30554fbe589805a802d97230eed07af8ea39"},
+ {file = "thinc-8.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4d29ee871cfd0d40f4a0436e154640c0965b163b91a088a85bcd5658c1cc3ed4"},
+ {file = "thinc-8.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8709d114131680bc7c02b0c97817bd7692eda50beb7849c7908666cf15a6cfd"},
+ {file = "thinc-8.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9b81e3c1e89c8ed6dff5a8440f584cda623ec77a3bd8c0ed059936405b8a7ca"},
+ {file = "thinc-8.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:1df983af74952d4818703e6bac8af64fad338eaaef8b017fa05d372e3c68e577"},
+ {file = "thinc-8.2.3.tar.gz", hash = "sha256:f5afc5222912a80bda8bdcec958362a2ba538d7027dc8db6154845d2859dca76"},
+]
+
+[package.dependencies]
+blis = ">=0.7.8,<0.8.0"
+catalogue = ">=2.0.4,<2.1.0"
+confection = ">=0.0.1,<1.0.0"
+cymem = ">=2.0.2,<2.1.0"
+murmurhash = ">=1.0.2,<1.1.0"
+numpy = [
+ {version = ">=1.15.0", markers = "python_version < \"3.9\""},
+ {version = ">=1.19.0", markers = "python_version >= \"3.9\""},
+]
+packaging = ">=20.0"
+preshed = ">=3.0.2,<3.1.0"
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<3.0.0"
+setuptools = "*"
+srsly = ">=2.4.0,<3.0.0"
+wasabi = ">=0.8.1,<1.2.0"
+
+[package.extras]
+cuda = ["cupy (>=5.0.0b4)"]
+cuda-autodetect = ["cupy-wheel (>=11.0.0)"]
+cuda100 = ["cupy-cuda100 (>=5.0.0b4)"]
+cuda101 = ["cupy-cuda101 (>=5.0.0b4)"]
+cuda102 = ["cupy-cuda102 (>=5.0.0b4)"]
+cuda110 = ["cupy-cuda110 (>=5.0.0b4)"]
+cuda111 = ["cupy-cuda111 (>=5.0.0b4)"]
+cuda112 = ["cupy-cuda112 (>=5.0.0b4)"]
+cuda113 = ["cupy-cuda113 (>=5.0.0b4)"]
+cuda114 = ["cupy-cuda114 (>=5.0.0b4)"]
+cuda115 = ["cupy-cuda115 (>=5.0.0b4)"]
+cuda116 = ["cupy-cuda116 (>=5.0.0b4)"]
+cuda117 = ["cupy-cuda117 (>=5.0.0b4)"]
+cuda11x = ["cupy-cuda11x (>=11.0.0)"]
+cuda12x = ["cupy-cuda12x (>=11.5.0)"]
+cuda80 = ["cupy-cuda80 (>=5.0.0b4)"]
+cuda90 = ["cupy-cuda90 (>=5.0.0b4)"]
+cuda91 = ["cupy-cuda91 (>=5.0.0b4)"]
+cuda92 = ["cupy-cuda92 (>=5.0.0b4)"]
+datasets = ["ml-datasets (>=0.2.0,<0.3.0)"]
+mxnet = ["mxnet (>=1.5.1,<1.6.0)"]
+tensorflow = ["tensorflow (>=2.0.0,<2.6.0)"]
+torch = ["torch (>=1.6.0)"]
+
+[[package]]
+name = "tiktoken"
+version = "0.6.0"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"},
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"},
+ {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"},
+ {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"},
+ {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"},
+ {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"},
+ {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"},
+]
+
+[package.dependencies]
+regex = ">=2022.1.18"
+requests = ">=2.26.0"
+
+[package.extras]
+blobfile = ["blobfile (>=2)"]
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tldextract"
+version = "5.1.1"
+description = "Accurately separates a URL's subdomain, domain, and public suffix, using the Public Suffix List (PSL). By default, this includes the public ICANN TLDs and their exceptions. You can optionally support the Public Suffix List's private domains as well."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tldextract-5.1.1-py3-none-any.whl", hash = "sha256:b9c4510a8766d377033b6bace7e9f1f17a891383ced3c5d50c150f181e9e1cc2"},
+ {file = "tldextract-5.1.1.tar.gz", hash = "sha256:9b6dbf803cb5636397f0203d48541c0da8ba53babaf0e8a6feda2d88746813d4"},
+]
+
+[package.dependencies]
+filelock = ">=3.0.8"
+idna = "*"
+requests = ">=2.1.0"
+requests-file = ">=1.4"
+
+[package.extras]
+testing = ["black", "mypy", "pytest", "pytest-gitignore", "pytest-mock", "responses", "ruff", "tox", "types-filelock", "types-requests"]
+
+[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
+description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
+ {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
+]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.12.3"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
+ {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
+]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.2"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
+ {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.1"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
+ {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.4"
+description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
+files = [
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9d33a55598dd18a4d8b869a3417de82a4812c3a7dc7e61cb025ece3e9c3e4e96"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cee6955c2c97fc5927a41c7a8b06647c4b4d9b99b8a1581bf1183435c8cec3e"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5022bea67e479ad212be7c05b983a72e297a013efb4e8ea5b5b4d7da79a9fdef"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:640f60a5b966f0990338f1bf559455c3dcb822bc4329d82b3d42f32a48374dfe"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0e83f641fe6f27d91bd4d259fff5d35de1567d3f581b9efe9bbd5be50fe4ddc7"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win32.whl", hash = "sha256:ce6a85027c66fa3f09d482cc6d41927ea40955f7f33b86aedd26dd932709a2c9"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win_amd64.whl", hash = "sha256:fe10779347a6c067af29cb37fd4b75fa96c5cb68f587cc9530b70fe3f2a51a55"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28d5f84e34e276887e3a240b60906ca7e2b51e975f3145c3149ceed977a69508"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c913b65cbe10996116988ac436748f24883b5097e58274223e89bb2c5d1bb1a"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecaed46241e071752195a628bb97d2b740f2fde9e34f8a74456a4ea8bb26df88"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b641e88a97eab002a1736d93ef5a4beac90ea4fd6e25affd1831319b99f456c9"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:327c40f439c6155e4eee54c4657e4701a04f5f4816d9defdcb836bf65bf83d21"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win32.whl", hash = "sha256:1b7c1d95f006b3de42fbf4045bd00c273d113e372fcb6a5378e74ed120c12032"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6140d037239a41046f5d34fba5e0374ee697adb4b48b90579c618b5402781c11"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7eec3b55135fe851a38fa248c9fd75fc3d58ceb6e1865b795e416e4d598c2a1"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc76225529ee14a53e84413480ce81ec3c44eaa0455c140e961c90ac3118ead"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf0396e47efffc0b528959a8f2e2346a98297579f867e9e1834c2aad4be829c"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a15fbabd3bc8e29c48289c156d743e69f5ec72bb125cf44f7adbdaa1937c3da6"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
+ {file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
+]
+
+[[package]]
+name = "tree-sitter-languages"
+version = "1.10.2"
+description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
+files = [
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5580348f0b20233b1d5431fa178ccd3d07423ca4a3275df02a44608fd72344b9"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:103c7466644486b1e9e03850df46fc6aa12f13ca636c74f173270276220ac80b"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d13db84511c6f1a7dc40383b66deafa74dabd8b877e3d65ab253f3719eccafd6"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57adfa32be7e465b54aa72f915f6c78a2b66b227df4f656b5d4fbd1ca7a92b3f"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6385e033e460ceb8f33f3f940335f422ef2b763700a04f0089391a68b56153"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dfa3f38cc5381c5aba01dd7494f59b8a9050e82ff6e06e1233e3a0cbae297e3c"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9f195155acf47f8bc5de7cee46ecd07b2f5697f007ba89435b51ef4c0b953ea5"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2de330e2ac6d7426ca025a3ec0f10d5640c3682c1d0c7702e812dcfb44b58120"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win32.whl", hash = "sha256:c9731cf745f135d9770eeba9bb4e2ff4dabc107b5ae9b8211e919f6b9100ea6d"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:6dd75851c41d0c3c4987a9b7692d90fa8848706c23115669d8224ffd6571e357"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7eb7d7542b2091c875fe52719209631fca36f8c10fa66970d2c576ae6a1b8289"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b41bcb00974b1c8a1800c7f1bb476a1d15a0463e760ee24872f2d53b08ee424"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f370cd7845c6c81df05680d5bd96db8a99d32b56f4728c5d05978911130a853"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1dc195c88ef4c72607e112a809a69190e096a2e5ebc6201548b3e05fdd169ad"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae34ac314a7170be24998a0f994c1ac80761d8d4bd126af27ee53a023d3b849"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01b5742d5f5bd675489486b582bd482215880b26dde042c067f8265a6e925d9c"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab1cbc46244d34fd16f21edaa20231b2a57f09f092a06ee3d469f3117e6eb954"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b1149e7467a4e92b8a70e6005fe762f880f493cf811fc003554b29f04f5e7c8"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win32.whl", hash = "sha256:049276343962f4696390ee555acc2c1a65873270c66a6cbe5cb0bca83bcdf3c6"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:7f3fdd468a577f04db3b63454d939e26e360229b53c80361920aa1ebf2cd7491"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c0f4c8b2734c45859edc7fcaaeaab97a074114111b5ba51ab4ec7ed52104763c"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eecd3c1244ac3425b7a82ba9125b4ddb45d953bbe61de114c0334fd89b7fe782"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15db3c8510bc39a80147ee7421bf4782c15c09581c1dc2237ea89cefbd95b846"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92c6487a6feea683154d3e06e6db68c30e0ae749a7ce4ce90b9e4e46b78c85c7"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2f1cd1d1bdd65332f9c2b67d49dcf148cf1ded752851d159ac3e5ee4f4d260"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:976c8039165b8e12f17a01ddee9f4e23ec6e352b165ad29b44d2bf04e2fbe77e"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dafbbdf16bf668a580902e1620f4baa1913e79438abcce721a50647564c687b9"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1aeabd3d60d6d276b73cd8f3739d595b1299d123cc079a317f1a5b3c5461e2ca"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win32.whl", hash = "sha256:fab8ee641914098e8933b87ea3d657bea4dd00723c1ee7038b847b12eeeef4f5"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e606430d736367e5787fa5a7a0c5a1ec9b85eded0b3596bbc0d83532a40810b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:838d5b48a7ed7a17658721952c77fda4570d2a069f933502653b17e15a9c39c9"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b3c71b1d278c2889e018ee77b8ee05c384e2e3334dec798f8b611c4ab2d1e"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa00abcb2c819027df58472da055d22fa7dfcb77c77413d8500c32ebe24d38b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e102fbbf02322d9201a86a814e79a9734ac80679fdb9682144479044f401a73"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0b87cf1a7b03174ba18dfd81582be82bfed26803aebfe222bd20e444aba003"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0f1b9af9cb67f0b942b020da9fdd000aad5e92f2383ae0ba7a330b318d31912"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a4076c921f7a4d31e643843de7dfe040b65b63a238a5aa8d31d93aabe6572aa"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win32.whl", hash = "sha256:fa6391a3a5d83d32db80815161237b67d70576f090ce5f38339206e917a6f8bd"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:55649d3f254585a064121513627cf9788c1cfdadbc5f097f33d5ba750685a4c0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f85d1edaa2d22d80d4ea5b6d12b95cf3644017b6c227d0d42854439e02e8893"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d78feed4a764ef3141cb54bf00fe94d514d8b6e26e09423e23b4c616fcb7938c"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1aca27531f9dd5308637d76643372856f0f65d0d28677d1bcf4211e8ed1ad0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1031ea440dafb72237437d754eff8940153a3b051e3d18932ac25e75ce060a15"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99d3249beaef2c9fe558ecc9a97853c260433a849dcc68266d9770d196c2e102"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:59a4450f262a55148fb7e68681522f0c2a2f6b7d89666312a2b32708d8f416e1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ce74eab0e430370d5e15a96b6c6205f93405c177a8b2e71e1526643b2fb9bab1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9b4dd2b6b3d24c85dffe33d6c343448869eaf4f41c19ddba662eb5d65d8808f4"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win32.whl", hash = "sha256:92d734fb968fe3927a7596d9f0459f81a8fa7b07e16569476b28e27d0d753348"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:46a13f7d38f2eeb75f7cf127d1201346093748c270d686131f0cbc50e42870a1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f8c6a936ae99fdd8857e91f86c11c2f5e507ff30631d141d98132bb7ab2c8638"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c283a61423f49cdfa7b5a5dfbb39221e3bd126fca33479cd80749d4d7a6b7349"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e60be6bdcff923386a54a5edcb6ff33fc38ab0118636a762024fa2bc98de55"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c00069f9575bd831eabcce2cdfab158dde1ed151e7e5614c2d985ff7d78a7de1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ff53203d8a43ccb19bb322fa2fb200d764001cc037793f1fadd714bb343da"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26fe7c9c412e4141dea87ea4b3592fd12e385465b5bdab106b0d5125754d4f60"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8fed27319957458340f24fe14daad467cd45021da034eef583519f83113a8c5e"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3657a491a7f96cc75a3568ddd062d25f3be82b6a942c68801a7b226ff7130181"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win32.whl", hash = "sha256:33f7d584d01a7a3c893072f34cfc64ec031f3cfe57eebc32da2f8ac046e101a7"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:1b944af3ee729fa70fc8ae82224a9ff597cdb63addea084e0ea2fa2b0ec39bb7"},
+]
+
+[package.dependencies]
+tree-sitter = "*"
+
+[[package]]
+name = "typer"
+version = "0.9.0"
+description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "typer-0.9.0-py3-none-any.whl", hash = "sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee"},
+ {file = "typer-0.9.0.tar.gz", hash = "sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2"},
+]
+
+[package.dependencies]
+click = ">=7.1.1,<9.0.0"
+typing-extensions = ">=3.7.4.3"
+
+[package.extras]
+all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
+dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"]
+doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"]
+test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
+
+[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
+description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
+ {file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
+]
+
+[[package]]
+name = "types-docutils"
+version = "0.20.0.20240201"
+description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-docutils-0.20.0.20240201.tar.gz", hash = "sha256:ba4bfd4ff6dd19640ba7ab5d93900393a65897880f3650997964a943f4e79a6b"},
+ {file = "types_docutils-0.20.0.20240201-py3-none-any.whl", hash = "sha256:79d3bcef235f7c81a63f4f3dcf1d0b138985079bb32d02f5a7d266e1f9f361ba"},
+]
+
+[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240129"
+description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"},
+ {file = "types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"},
+]
+
+[[package]]
+name = "types-pyopenssl"
+version = "24.0.0.20240130"
+description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-pyOpenSSL-24.0.0.20240130.tar.gz", hash = "sha256:c812e5c1c35249f75ef5935708b2a997d62abf9745be222e5f94b9595472ab25"},
+ {file = "types_pyOpenSSL-24.0.0.20240130-py3-none-any.whl", hash = "sha256:24a255458b5b8a7fca8139cf56f2a8ad5a4f1a5f711b73a5bb9cb50dc688fab5"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
+description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
+ {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
+]
+
+[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
+description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+ {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+]
+
+[[package]]
+name = "types-redis"
+version = "4.5.5.0"
+description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
+ {file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+types-pyOpenSSL = "*"
+
+[[package]]
+name = "types-requests"
+version = "2.28.11.8"
+description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
+ {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
+]
+
+[package.dependencies]
+types-urllib3 = "<1.27"
+
+[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
+description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
+ {file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
+]
+
+[package.dependencies]
+types-docutils = "*"
+
+[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
+description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
+ {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "tzdata"
+version = "2024.1"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
+ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.2.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
+ {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+h2 = ["h2 (>=4,<5)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "virtualenv"
+version = "20.25.0"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
+ {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
+
+[[package]]
+name = "wasabi"
+version = "1.1.2"
+description = "A lightweight console printing and formatting toolkit"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wasabi-1.1.2-py3-none-any.whl", hash = "sha256:0a3f933c4bf0ed3f93071132c1b87549733256d6c8de6473c5f7ed2e171b5cf9"},
+ {file = "wasabi-1.1.2.tar.gz", hash = "sha256:1aaef3aceaa32edb9c91330d29d3936c0c39fdb965743549c173cb54b16c30b5"},
+]
+
+[package.dependencies]
+colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\" and python_version >= \"3.7\""}
+
+[[package]]
+name = "wcwidth"
+version = "0.2.13"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
+ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+]
+
+[[package]]
+name = "weasel"
+version = "0.3.4"
+description = "Weasel: A small and easy workflow system"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "weasel-0.3.4-py3-none-any.whl", hash = "sha256:ee48a944f051d007201c2ea1661d0c41035028c5d5a8bcb29a0b10f1100206ae"},
+ {file = "weasel-0.3.4.tar.gz", hash = "sha256:eb16f92dc9f1a3ffa89c165e3a9acd28018ebb656e0da4da02c0d7d8ae3f6178"},
+]
+
+[package.dependencies]
+cloudpathlib = ">=0.7.0,<0.17.0"
+confection = ">=0.0.4,<0.2.0"
+packaging = ">=20.0"
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<3.0.0"
+requests = ">=2.13.0,<3.0.0"
+smart-open = ">=5.2.1,<7.0.0"
+srsly = ">=2.4.3,<3.0.0"
+typer = ">=0.3.0,<0.10.0"
+wasabi = ">=0.9.1,<1.2.0"
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.10"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"},
+ {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"},
+]
+
+[[package]]
+name = "wrapt"
+version = "1.16.0"
+description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.4"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[[package]]
+name = "zipp"
+version = "3.17.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
+]
+
+[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "b5cc255899a05b1859623cf0956b143155e41d56fc67910b2f3e962d90150d4e"
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml
new file mode 100644
index 0000000000000..84bfeef1b47f1
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml
@@ -0,0 +1,57 @@
+[build-system]
+build-backend = "poetry.core.masonry.api"
+requires = ["poetry-core"]
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+# Feel free to un-skip examples, and experimental, you will just need to
+# work through many typos (--write-changes and --interactive will help)
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.llamahub]
+classes = ["PresidioPIINodePostprocessor"]
+contains_example = false
+import_path = "llama_index.postprocessor.presidio"
+
+[tool.mypy]
+disallow_untyped_defs = true
+# Remove venv skip when integrated with pre-commit
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+authors = ["Your Name "]
+description = "llama-index postprocessor presidio integration"
+license = "MIT"
+maintainers = ["roeybc"]
+name = "llama-index-postprocessor-presidio"
+packages = [{include = "llama_index/"}]
+readme = "README.md"
+version = "0.1.0"
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<3.12"
+llama-index-core = "^0.10.0"
+presidio-analyzer = "^2.2.353"
+presidio-anonymizer = "^2.2.353"
+
+[tool.poetry.group.dev.dependencies]
+black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
+codespell = {extras = ["toml"], version = ">=v2.2.6"}
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "^1.8.0"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8" # TODO: unpin when mypy>0.991
+types-setuptools = "67.1.0.0"
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/BUILD b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/BUILD
new file mode 100644
index 0000000000000..dabf212d7e716
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/BUILD
@@ -0,0 +1 @@
+python_tests()
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/__init__.py b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/test_postprocessor_presidio.py b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/test_postprocessor_presidio.py
new file mode 100644
index 0000000000000..1f5c992c79c23
--- /dev/null
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/tests/test_postprocessor_presidio.py
@@ -0,0 +1,7 @@
+from llama_index.core.postprocessor.types import BaseNodePostprocessor
+from llama_index.postprocessor.presidio import PresidioPIINodePostprocessor
+
+
+def test_class():
+ names_of_base_classes = [b.__name__ for b in PresidioPIINodePostprocessor.__mro__]
+ assert BaseNodePostprocessor.__name__ in names_of_base_classes
diff --git a/llama-index-integrations/readers/llama-index-readers-agent-search/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-agent-search/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-agent-search/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml
index c8b68fe2a9c69..c08dcf013bca3 100644
--- a/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers agent_search integration"
license = "MIT"
+maintainers = ["emrgnt-cmplxty"]
name = "llama-index-readers-agent-search"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml
index 1f482558988db..361516e9bdf44 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_cdk integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-cdk"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-gong/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-gong/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-gong/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml
index 3aa938101528b..13314029175e8 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_gong integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-gong"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml
index cf725b9def2e6..3f43f53c3b56f 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_hubspot integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-hubspot"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml
index 3f3e5440f9bd9..c5c53ddee8fa3 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_salesforce integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-salesforce"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml
index 6d109f20a579e..462ed15183604 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_shopify integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-shopify"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml
index 2c3c773bd3477..c7b04369ba1ae 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_stripe integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-stripe"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml
index d9eb85b6de6ff..37ecf03b1f064 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_typeform integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-typeform"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml
index 7a8ba2b338f24..4dc51fdab8724 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airbyte_zendesk_support integration"
license = "MIT"
+maintainers = ["flash1293"]
name = "llama-index-readers-airbyte-zendesk-support"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-airtable/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-airtable/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-airtable/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml
index 33bc09ff2f122..d0940815ba6b3 100644
--- a/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers airtable integration"
license = "MIT"
+maintainers = ["smyja"]
name = "llama-index-readers-airtable"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-apify/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-apify/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-apify/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml
index 85ac0ef71fcb1..12369aeede177 100644
--- a/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers apify integration"
+keywords = ["apify", "crawler", "scraper", "scraping"]
license = "MIT"
+maintainers = ["drobnikj"]
name = "llama-index-readers-apify"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-arango-db/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-arango-db/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-arango-db/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml
index ba26d095e11d6..6b010182872b3 100644
--- a/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers arango db integration"
license = "MIT"
+maintainers = ["mmaatouk"]
name = "llama-index-readers-arango-db"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-asana/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-asana/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-asana/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml
index 47c783aca407c..1f2c58a8ed8b6 100644
--- a/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers asana integration"
license = "MIT"
+maintainers = ["daveey"]
name = "llama-index-readers-asana"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-assemblyai/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-assemblyai/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-assemblyai/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml
index 2cce51c245fd8..ca48b874ee0c8 100644
--- a/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers assemblyai integration"
license = "MIT"
+maintainers = ["patrickloeber"]
name = "llama-index-readers-assemblyai"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-astra-db/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-astra-db/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-astra-db/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml
index d05aa30fe5cde..3245e15b865f2 100644
--- a/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers astra_db integration"
license = "MIT"
+maintainers = ["erichare"]
name = "llama-index-readers-astra-db"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-athena/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-athena/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-athena/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml
index 4a6220d0cc479..744430405146e 100644
--- a/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers athena integration"
+keywords = ["aws athena", "datalake", "sql"]
license = "MIT"
+maintainers = ["mattick27"]
name = "llama-index-readers-athena"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-azcognitive-search/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-azcognitive-search/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-azcognitive-search/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml
index 5b9218305a925..4b05532a029a6 100644
--- a/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers azcognitive_search integration"
license = "MIT"
+maintainers = ["mrcabellom"]
name = "llama-index-readers-azcognitive-search"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-azstorage-blob/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-azstorage-blob/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-azstorage-blob/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml
index 3c49a03e78956..d212f8c49dc71 100644
--- a/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers azstorage_blob integration"
+keywords = ["azure storage", "azure", "blob", "container"]
license = "MIT"
+maintainers = ["rivms"]
name = "llama-index-readers-azstorage-blob"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-bagel/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-bagel/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-bagel/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml
index 3b0adb92ad8f4..d3364c997758b 100644
--- a/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers bagel integration"
+keywords = ["bagelDB", "database", "storage", "vector"]
license = "MIT"
+maintainers = ["asif"]
name = "llama-index-readers-bagel"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-bilibili/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-bilibili/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-bilibili/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml
index 830e327bbe113..8d09147a74c96 100644
--- a/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers bilibili integration"
license = "MIT"
+maintainers = ["alexzhangji"]
name = "llama-index-readers-bilibili"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-bitbucket/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-bitbucket/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-bitbucket/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml
index 3321d7e1941ff..6cf644c74ba4f 100644
--- a/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers bitbucket integration"
+keywords = ["bitbucket", "project", "repository"]
license = "MIT"
+maintainers = ["lejdiprifti"]
name = "llama-index-readers-bitbucket"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-boarddocs/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-boarddocs/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-boarddocs/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml
index 3d411f995415a..a65f13937d98d 100644
--- a/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers boarddocs integration"
+keywords = ["board", "boarddocs"]
license = "MIT"
+maintainers = ["dweekly"]
name = "llama-index-readers-boarddocs"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml
index 19e0fc0c84019..3f2ec978bcad2 100644
--- a/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers chatgpt plugin integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-chatgpt-plugin"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-chroma/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-chroma/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-chroma/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml
index d0addb6323ee5..51868f3cbf29f 100644
--- a/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers chroma integration"
license = "MIT"
+maintainers = ["atroyn"]
name = "llama-index-readers-chroma"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-confluence/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-confluence/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-confluence/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml
index 83250919a2806..82469f45a9dc0 100644
--- a/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers confluence integration"
license = "MIT"
+maintainers = ["zywilliamli"]
name = "llama-index-readers-confluence"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-couchbase/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-couchbase/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-couchbase/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml
index 1e03fcd4c37cd..3520d7fa273a5 100644
--- a/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers couchbase integration"
+keywords = ["Capella", "Couchbase", "NoSQL"]
license = "MIT"
+maintainers = ["nithishr"]
name = "llama-index-readers-couchbase"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-couchdb/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-couchdb/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-couchdb/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml
index a2af44ea7d8ec..495c38820b7c9 100644
--- a/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers couchdb integration"
license = "MIT"
+maintainers = ["technosophy"]
name = "llama-index-readers-couchdb"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-dad-jokes/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-dad-jokes/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-dad-jokes/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml
index 0b6cdc41bd45a..2c560b46eacf2 100644
--- a/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers dad_jokes integration"
+keywords = ["dad jokes", "jokes"]
license = "MIT"
+maintainers = ["sidu"]
name = "llama-index-readers-dad-jokes"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-database/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-database/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-database/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml
index a7acf541612dd..a5fdda273fdc6 100644
--- a/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers database integration"
+keywords = ["aws rds", "postgres", "snowflake", "sql"]
license = "MIT"
+maintainers = ["kevinqz"]
name = "llama-index-readers-database"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-deeplake/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-deeplake/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-deeplake/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml
index 5f93be60e4f17..2dbf69dadafee 100644
--- a/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers deeplake integration"
+keywords = ["deeplake"]
license = "MIT"
+maintainers = ["adolkhan"]
name = "llama-index-readers-deeplake"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-discord/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-discord/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-discord/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml
index 2725935de6378..e21d12ae88e07 100644
--- a/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers discord integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-discord"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-docstring-walker/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-docstring-walker/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-docstring-walker/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml
index 00ead8f7366fe..d209241ac2780 100644
--- a/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers docstring_walker integration"
+keywords = ["code", "docstring", "python", "source code"]
license = "MIT"
+maintainers = ["Filip Wojcik"]
name = "llama-index-readers-docstring-walker"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-docugami/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-docugami/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-docugami/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml
index eb2ce13f78c51..6cff99c705c6c 100644
--- a/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers docugami integration"
+keywords = ["doc", "docugami", "docx", "pdf", "xml"]
license = "MIT"
+maintainers = ["tjaffri"]
name = "llama-index-readers-docugami"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml
index 2bb3398c0e167..9cfa60e17dfc4 100644
--- a/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers earnings_call_transcript integration"
+keywords = ["Earning calls", "Finance", "Investor"]
license = "MIT"
+maintainers = ["Athe-kunal"]
name = "llama-index-readers-earnings-call-transcript"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-elasticsearch/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-elasticsearch/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-elasticsearch/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml
index c018ddbb1fa8a..8ecf97eb58661 100644
--- a/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers elasticsearch integration"
license = "MIT"
+maintainers = ["jaylmiller"]
name = "llama-index-readers-elasticsearch"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-faiss/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-faiss/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-faiss/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml
index ad43faf177dd1..a1947d76e7cb6 100644
--- a/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers faiss integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-faiss"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-feedly-rss/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-feedly-rss/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-feedly-rss/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml
index b0425b4d9b3fb..9b8144ccd152b 100644
--- a/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers feedly_rss integration"
+keywords = ["feedly", "rss"]
license = "MIT"
+maintainers = ["kychanbp"]
name = "llama-index-readers-feedly-rss"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-feishu-docs/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-feishu-docs/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-feishu-docs/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml
index a775a21de08a6..baabbdb88871f 100644
--- a/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers feishu_docs integration"
license = "MIT"
+maintainers = ["ma-chengcheng"]
name = "llama-index-readers-feishu-docs"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-file/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-file/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-file/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml
index 18e3075b13585..ef841d2af0d35 100644
--- a/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers file integration"
+keywords = ["10k", "10q", "chart", "eml", "figure", "html", "hwp", "image", "invoice", "ipynb", "jupyter", "notebook", "pdf", "pymupdf", "receipt", "sec", "spreadsheet", "tabular", "unstructured.io", "yaml", "yml"]
license = "MIT"
+maintainers = ["FarisHijazi", "Haowjy", "ephe-meral", "hursh-desai", "iamarunbrahma", "jon-chuang", "mmaatouk", "ravi03071991", "sangwongenip", "thejessezhang"]
name = "llama-index-readers-file"
readme = "README.md"
-version = "0.1.2"
+version = "0.1.3"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml
index 07327ed2f5fe4..03bdabae9e48f 100644
--- a/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers firebase_realtimedb integration"
+keywords = ["database", "firebase", "realtimedb"]
license = "MIT"
+maintainers = ["ajay"]
name = "llama-index-readers-firebase-realtimedb"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-firestore/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-firestore/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-firestore/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml
index 779814c5592d3..24742450322fd 100644
--- a/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers firestore integration"
+keywords = ["datastore", "firestore"]
license = "MIT"
+maintainers = ["rayzhudev"]
name = "llama-index-readers-firestore"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-github/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-github/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-github/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml
index 285c39aee3d67..e60346bb3751d 100644
--- a/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers github integration"
+keywords = ["code", "collaborators", "git", "github", "issues", "placeholder", "repository", "source code"]
license = "MIT"
+maintainers = ["ahmetkca", "moncho", "rwood-97"]
name = "llama-index-readers-github"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-google/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-google/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-google/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml
index 2d9e1728df143..5dbc71eabb839 100644
--- a/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers google integration"
+keywords = ["email", "gmail", "google keep", "google notes"]
license = "MIT"
+maintainers = ["bbornsztein", "jerryjliu", "ong", "piroz", "pycui", "ravi03071991"]
name = "llama-index-readers-google"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.10,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-gpt-repo/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-gpt-repo/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-gpt-repo/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml
index f5591ada0685d..c3cde1866a5a8 100644
--- a/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers gpt_repo integration"
license = "MIT"
+maintainers = ["mpoon"]
name = "llama-index-readers-gpt-repo"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml
index 1aa7c96ed60d9..c048ae75bbfe6 100644
--- a/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers graphdb_cypher integration"
+keywords = ["cypher", "graph", "neo4j"]
license = "MIT"
+maintainers = ["jexp"]
name = "llama-index-readers-graphdb-cypher"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-graphql/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-graphql/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-graphql/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml
index c071f14ac0df1..d03ea52962672 100644
--- a/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers graphql integration"
+keywords = ["apollo", "gql", "graphql"]
license = "MIT"
+maintainers = ["jexp"]
name = "llama-index-readers-graphql"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-guru/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-guru/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-guru/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml
index 724c8b2cc30d3..9e3c159042564 100644
--- a/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers guru integration"
+keywords = ["getguru", "guru", "knowledge base"]
license = "MIT"
+maintainers = ["mcclain-thiel"]
name = "llama-index-readers-guru"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-hatena-blog/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-hatena-blog/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-hatena-blog/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml
index 86e6c4244c6c8..d52c538c24efb 100644
--- a/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers hatena_blog integration"
+keywords = ["blog", "hatena"]
license = "MIT"
+maintainers = ["Shoya SHIRAKI"]
name = "llama-index-readers-hatena-blog"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-hive/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-hive/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-hive/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml
index 52083c0abd46d..2b5e659e8b62e 100644
--- a/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers hive integration"
+keywords = ["HDFS", "Hadoop", "Hive"]
license = "MIT"
+maintainers = ["kasen"]
name = "llama-index-readers-hive"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-hubspot/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-hubspot/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-hubspot/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml
index a233ab12162f8..6ea3c82e30bd4 100644
--- a/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers hubspot integration"
+keywords = ["hubspot"]
license = "MIT"
+maintainers = ["ykhli"]
name = "llama-index-readers-hubspot"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-huggingface-fs/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-huggingface-fs/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-huggingface-fs/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml
index f0b9f46620780..35ece98233420 100644
--- a/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers huggingface fs integration"
+keywords = ["face", "filesystem", "fs", "hugging", "huggingface"]
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-huggingface-fs"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-imdb-review/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-imdb-review/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-imdb-review/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml
index 84464aee2e5a8..a4205a5d3ae35 100644
--- a/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers imdb_review integration"
+keywords = ["IMDB", "movies", "reviews"]
license = "MIT"
+maintainers = ["Athe-kunal"]
name = "llama-index-readers-imdb-review"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-intercom/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-intercom/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-intercom/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml
index c5b9da709d3aa..fed0451e75763 100644
--- a/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers intercom integration"
+keywords = ["help center", "intercom", "knowledge base"]
license = "MIT"
+maintainers = ["bbornsztein"]
name = "llama-index-readers-intercom"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-jira/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-jira/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-jira/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml
index 070ad1e8b55a6..df89b882eb3d9 100644
--- a/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers jira integration"
+keywords = ["jira"]
license = "MIT"
+maintainers = ["bearguy"]
name = "llama-index-readers-jira"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-joplin/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-joplin/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-joplin/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml
index da4155b075a5a..599f6481ea2ab 100644
--- a/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers joplin integration"
license = "MIT"
+maintainers = ["alondmnt"]
name = "llama-index-readers-joplin"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-json/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-json/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-json/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml
index 69d3825cccbca..3a478f8a939f5 100644
--- a/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers json integration"
license = "MIT"
+maintainers = ["yisding"]
name = "llama-index-readers-json"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-kaltura/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-kaltura/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-kaltura/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml
index edb9e8fd1bf33..167778265f426 100644
--- a/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers kaltura e-search integration"
+keywords = ["audio", "events", "image", "kaltura", "library", "media", "portal", "search", "video"]
license = "MIT"
+maintainers = ["kaltura"]
name = "llama-index-readers-kaltura-esearch"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-kibela/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-kibela/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-kibela/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml
index d6d20aac3e77c..af4316de53fdf 100644
--- a/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers kibela integration"
license = "MIT"
+maintainers = ["higebu"]
name = "llama-index-readers-kibela"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-lilac/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-lilac/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-lilac/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml
index 9cba45892e517..fa86299471ea1 100644
--- a/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers lilac integration"
license = "MIT"
+maintainers = ["nsthorat"]
name = "llama-index-readers-lilac"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.9,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-linear/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-linear/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-linear/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml
index 3fceea78bcd55..baaaf6e1ddf29 100644
--- a/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers linear integration"
+keywords = ["linear"]
license = "MIT"
+maintainers = ["Sushmithamallesh"]
name = "llama-index-readers-linear"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml
index 8ee6143ff5eab..7fbae388d842c 100644
--- a/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers macrometa_gdn integration"
+keywords = ["macrometa"]
license = "MIT"
+maintainers = ["Dain Im"]
name = "llama-index-readers-macrometa-gdn"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-make-com/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-make-com/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-make-com/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml
index 1fa836b765fb2..287e2faa7c788 100644
--- a/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index readers make-com integration"
license = "MIT"
name = "llama-index-readers-make-com"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-mangadex/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-mangadex/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-mangadex/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml
index 0da35346cb7fc..1f411b783687f 100644
--- a/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers mangadex integration"
+keywords = ["anime", "manga"]
license = "MIT"
+maintainers = ["choombaa"]
name = "llama-index-readers-mangadex"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml
index e6c262b5a312f..60c2516f03f21 100644
--- a/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers mangoapps_guides integration"
+keywords = ["mangoapps"]
license = "MIT"
+maintainers = ["mangoapps"]
name = "llama-index-readers-mangoapps-guides"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-maps/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-maps/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-maps/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml
index 434c58b7dc06c..18ce6ec7292b6 100644
--- a/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers maps integration"
+keywords = ["geo", "maps", "open maps", "open street maps", "overpass api"]
license = "MIT"
+maintainers = ["carrotpy"]
name = "llama-index-readers-maps"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-mbox/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-mbox/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-mbox/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml
index edc2c0ba50e66..1eb299749571c 100644
--- a/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers mbox integration"
license = "MIT"
+maintainers = ["minosvasilias"]
name = "llama-index-readers-mbox"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-memos/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-memos/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-memos/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml
index 938f4807ccc74..d27dc9139743e 100644
--- a/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers memos integration"
+keywords = ["memos", "note"]
license = "MIT"
+maintainers = ["bubu"]
name = "llama-index-readers-memos"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-metal/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-metal/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-metal/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml
index ad46b945025cd..888b7c98e0526 100644
--- a/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers metal integration"
+keywords = ["metal", "retriever", "storage"]
license = "MIT"
+maintainers = ["getmetal"]
name = "llama-index-readers-metal"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml
index d830f6becf6bc..11d582b27dd2a 100644
--- a/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers microsoft_onedrive integration"
+keywords = ["microsoft 365", "microsoft onedrive", "microsoft365", "onedrive for business", "onedrive personal", "onedrive"]
license = "MIT"
+maintainers = ["godwin3737"]
name = "llama-index-readers-microsoft-onedrive"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml
index 0f6d67405013a..6e1ac455a3257 100644
--- a/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers microsoft outlook integration"
+keywords = ["calendar", "outlook"]
license = "MIT"
+maintainers = ["tevslin"]
name = "llama-index-readers-microsoft-outlook"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml
index 64596ebba7a03..9cd8f6287369b 100644
--- a/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers microsoft_sharepoint integration"
+keywords = ["microsoft 365", "microsoft365", "sharepoint"]
license = "MIT"
+maintainers = ["arun-soliton"]
name = "llama-index-readers-microsoft-sharepoint"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-milvus/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-milvus/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-milvus/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml
index 7dac376eccf16..80f7c1564ee86 100644
--- a/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers milvus integration"
license = "MIT"
+maintainers = ["filip-halt"]
name = "llama-index-readers-milvus"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-minio/README.md b/llama-index-integrations/readers/llama-index-readers-minio/README.md
new file mode 100644
index 0000000000000..d0bb5d20dd2d1
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-minio/README.md
@@ -0,0 +1,9 @@
+# Minio Reader
+
+## Install
+
+`pip install llama-index-readers-minio`
+
+## Import
+
+`from llama_index.readers.minio import MinioReader, BotoMinioReader`
diff --git a/llama-index-integrations/readers/llama-index-readers-minio/llama_index/README.md b/llama-index-integrations/readers/llama-index-readers-minio/llama_index/README.md
index 35c3feeedb50a..e17e81f4d6bcc 100644
--- a/llama-index-integrations/readers/llama-index-readers-minio/llama_index/README.md
+++ b/llama-index-integrations/readers/llama-index-readers-minio/llama_index/README.md
@@ -37,6 +37,8 @@ To use this loader, you need to pass in the name of your Minio Bucket. After tha
Otherwise, you may specify a prefix if you only want to parse certain files in the Bucket, or a subdirectory.
+You can now use the client with a TLS-secured MinIO instance (`minio_secure=True`), even if server's certificate isn't trusted (`minio_cert_check=False`).
+
```python
from llama_index import download_loader
@@ -44,7 +46,8 @@ MinioReader = download_loader("MinioReader")
loader = MinioReader(
bucket="documents",
minio_endpoint="localhost:9000",
- minio_secure=False,
+ minio_secure=True,
+ minio_cert_check=False,
minio_access_key="minio_access_key",
minio_secret_key="minio_secret_key",
)
diff --git a/llama-index-integrations/readers/llama-index-readers-minio/llama_index/readers/minio/minio_client/base.py b/llama-index-integrations/readers/llama-index-readers-minio/llama_index/readers/minio/minio_client/base.py
index 35ec79858f3ac..3c4db2ec95129 100644
--- a/llama-index-integrations/readers/llama-index-readers-minio/llama_index/readers/minio/minio_client/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-minio/llama_index/readers/minio/minio_client/base.py
@@ -29,6 +29,7 @@ def __init__(
file_metadata: Optional[Callable[[str], Dict]] = None,
minio_endpoint: Optional[str] = None,
minio_secure: bool = False,
+ minio_cert_check: bool = True,
minio_access_key: Optional[str] = None,
minio_secret_key: Optional[str] = None,
minio_session_token: Optional[str] = None,
@@ -59,6 +60,8 @@ def __init__(
minio_access_key (Optional[str]): The Minio access key. Default is None.
minio_secret_key (Optional[str]): The Minio secret key. Default is None.
minio_session_token (Optional[str]): The Minio session token.
+ minio_secure: MinIO server runs in TLS mode
+ minio_cert_check: allows the usage of a self-signed cert for MinIO server
"""
super().__init__(*args, **kwargs)
@@ -74,6 +77,7 @@ def __init__(
self.minio_endpoint = minio_endpoint
self.minio_secure = minio_secure
+ self.minio_cert_check = minio_cert_check
self.minio_access_key = minio_access_key
self.minio_secret_key = minio_secret_key
self.minio_session_token = minio_session_token
@@ -85,6 +89,7 @@ def load_data(self) -> List[Document]:
minio_client = Minio(
self.minio_endpoint,
secure=self.minio_secure,
+ cert_check=self.minio_cert_check,
access_key=self.minio_access_key,
secret_key=self.minio_secret_key,
session_token=self.minio_session_token,
diff --git a/llama-index-integrations/readers/llama-index-readers-mondaydotcom/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-mondaydotcom/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-mondaydotcom/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml
index 3ff82234410cc..906a708066873 100644
--- a/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers mondaydotcom integration"
+keywords = ["monday", "mondaydotcom"]
license = "MIT"
+maintainers = ["nadavgr"]
name = "llama-index-readers-mondaydotcom"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-mongodb/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-mongodb/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-mongodb/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml
index 9b942579aa21d..3486732d7ddac 100644
--- a/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers mongodb integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-mongodb"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-notion/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-notion/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-notion/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-notion/llama_index/readers/notion/base.py b/llama-index-integrations/readers/llama-index-readers-notion/llama_index/readers/notion/base.py
index d8519301174a6..57b3314fbc09c 100644
--- a/llama-index-integrations/readers/llama-index-readers-notion/llama_index/readers/notion/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-notion/llama_index/readers/notion/base.py
@@ -4,7 +4,7 @@
from typing import Any, Dict, List, Optional
import requests # type: ignore
-from llama_index.core.readers.base import BaseReader
+from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
INTEGRATION_TOKEN_NAME = "NOTION_INTEGRATION_TOKEN"
@@ -14,7 +14,7 @@
# TODO: Notion DB reader coming soon!
-class NotionPageReader(BaseReader):
+class NotionPageReader(BasePydanticReader):
"""Notion Page reader.
Reads a set of Notion pages.
@@ -24,6 +24,10 @@ class NotionPageReader(BaseReader):
"""
+ is_remote: bool = True
+ token: str
+ headers: Dict[str, str]
+
def __init__(self, integration_token: Optional[str] = None) -> None:
"""Initialize with parameters."""
if integration_token is None:
@@ -33,13 +37,16 @@ def __init__(self, integration_token: Optional[str] = None) -> None:
"Must specify `integration_token` or set environment "
"variable `NOTION_INTEGRATION_TOKEN`."
)
- self.token = integration_token
- self.headers = {
+
+ token = integration_token
+ headers = {
"Authorization": "Bearer " + self.token,
"Content-Type": "application/json",
"Notion-Version": "2022-06-28",
}
+ super().__init__(token=token, headers=headers)
+
def _read_block(self, block_id: str, num_tabs: int = 0) -> str:
"""Read a block."""
done = False
diff --git a/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml
index 3d91e442f7394..45f645174d1c1 100644
--- a/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers notion integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-notion"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-nougat-ocr/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-nougat-ocr/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-nougat-ocr/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml
index bb4cb5f25b327..80bfd5ca21f26 100644
--- a/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers nougat_ocr integration"
+keywords = ["academic papers", "ocr", "pdf"]
license = "MIT"
+maintainers = ["mdarshad1000"]
name = "llama-index-readers-nougat-ocr"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-obsidian/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-obsidian/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-obsidian/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml
index f475249adc30e..e49529a7e5c1e 100644
--- a/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers obsidian integration"
license = "MIT"
+maintainers = ["hursh-desai"]
name = "llama-index-readers-obsidian"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-openalex/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-openalex/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-openalex/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml
index b95295dfd3c1e..5a6a1a9b0faff 100644
--- a/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers openalex integration"
+keywords = ["academic papers", "open access", "openalex", "scientific papers"]
license = "MIT"
+maintainers = ["shauryr"]
name = "llama-index-readers-openalex"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-opendal/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-opendal/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-opendal/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml
index 103fdb8395f5b..fc7a542060058 100644
--- a/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers opendal_reader integration"
+keywords = ["azblob", "gcs", "s3", "storage"]
license = "MIT"
+maintainers = ["OpenDAL Contributors"]
name = "llama-index-readers-opendal-reader"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-opensearch/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-opensearch/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-opensearch/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml
index 929ca4060e942..f82edcae712e8 100644
--- a/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers opensearch integration"
license = "MIT"
+maintainers = ["chnsagitchen"]
name = "llama-index-readers-opensearch"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-pandas-ai/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-pandas-ai/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-pandas-ai/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml
index 1727764313903..97ab32367a980 100644
--- a/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers pandas_ai integration"
+keywords = ["ai", "pandas"]
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-pandas-ai"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.9,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-papers/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-papers/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-papers/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml
index 5e9bc9211d58c..22cee84d4ab9f 100644
--- a/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers papers integration"
license = "MIT"
+maintainers = ["thejessezhang"]
name = "llama-index-readers-papers"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-patentsview/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-patentsview/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-patentsview/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml
index f62f07b77afcf..0d77c27b6a99f 100644
--- a/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers patentsview integration"
+keywords = ["patent"]
license = "MIT"
+maintainers = ["shao-shuai"]
name = "llama-index-readers-patentsview"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-pdb/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-pdb/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-pdb/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml
index 110ae22d3934f..ec06937b8ffc4 100644
--- a/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers pdb integration"
+keywords = ["Protein Data Bank", "academic papers", "pdb", "proteins"]
license = "MIT"
+maintainers = ["joshuakto"]
name = "llama-index-readers-pdb"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-pdf-table/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-pdf-table/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-pdf-table/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml
index d6d2a3aac91a9..2c06b0b8abe06 100644
--- a/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers pdf_table integration"
+keywords = ["pdf table", "pdf", "table"]
license = "MIT"
+maintainers = ["yy0867"]
name = "llama-index-readers-pdf-table"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-pinecone/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-pinecone/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-pinecone/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml
index 75ea073ac14ae..453cd44fa4b3a 100644
--- a/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers pinecone integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-pinecone"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-preprocess/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-preprocess/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-preprocess/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml
index f38fcc913c929..01c60fec8530d 100644
--- a/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers preprocess integration"
+keywords = ["chunk", "chunking", "documents", "preprocess"]
license = "MIT"
+maintainers = ["preprocess"]
name = "llama-index-readers-preprocess"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-qdrant/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-qdrant/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-qdrant/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml
index 1df77c5c231b4..5fa835e55e911 100644
--- a/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers qdrant integration"
license = "MIT"
+maintainers = ["kacperlukawski"]
name = "llama-index-readers-qdrant"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-rayyan/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-rayyan/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-rayyan/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml
index 3eb60d547eb23..17596e4afe7ba 100644
--- a/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers rayyan integration"
+keywords = ["rayyan", "systematic review"]
license = "MIT"
+maintainers = ["hammady"]
name = "llama-index-readers-rayyan"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-readwise/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-readwise/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-readwise/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml
index e25c6bcb50554..d5936a44a8c5d 100644
--- a/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers readwise integration"
+keywords = ["highlights", "pkm", "reading", "readwise"]
license = "MIT"
+maintainers = ["alexbowe"]
name = "llama-index-readers-readwise"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-reddit/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-reddit/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-reddit/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml
index 41929382fb08f..02475b4e4f901 100644
--- a/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers reddit integration"
+keywords = ["comments", "reddit", "search", "subreddit"]
license = "MIT"
+maintainers = ["vanessahlyan"]
name = "llama-index-readers-reddit"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-remote-depth/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-remote-depth/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-remote-depth/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml
index ab41e1461f3bb..3ec2b73139d14 100644
--- a/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers remote_depth integration"
+keywords = ["hosted", "multiple", "url"]
license = "MIT"
+maintainers = ["simonMoisselin"]
name = "llama-index-readers-remote-depth"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-remote/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-remote/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-remote/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml
index 9be6153e59d89..d284c93bc2ab4 100644
--- a/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers remote integration"
+keywords = ["gutenberg", "hosted", "url"]
license = "MIT"
+maintainers = ["thejessezhang"]
name = "llama-index-readers-remote"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-s3/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-s3/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-s3/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml
index faa293098115e..45e0a8006e88a 100644
--- a/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers s3 integration"
+keywords = ["amazon web services", "aws s3", "bucket"]
license = "MIT"
+maintainers = ["thejessezhang"]
name = "llama-index-readers-s3"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-sec-filings/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-sec-filings/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-sec-filings/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml
index 640cbcd4c955d..6a358c84fb8ea 100644
--- a/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers sec_filings integration"
+keywords = ["10-K", "10-Q", "SEC Filings", "finance"]
license = "MIT"
+maintainers = ["Athe-kunal"]
name = "llama-index-readers-sec-filings"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.9,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-semanticscholar/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-semanticscholar/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-semanticscholar/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml
index d90c772e1b61b..7704ffefcc096 100644
--- a/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers semanticscholar integration"
+keywords = ["paper", "research", "scholar", "semantic"]
license = "MIT"
+maintainers = ["shauryr"]
name = "llama-index-readers-semanticscholar"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-singlestore/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-singlestore/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-singlestore/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml
index dc996a1810ec1..fabb37e55f100 100644
--- a/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers singlestore integration"
+keywords = ["memsql", "singlestore"]
license = "MIT"
+maintainers = ["singlestore"]
name = "llama-index-readers-singlestore"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-slack/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-slack/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-slack/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml
index 63d2eabc05a67..6f9cd9b11868c 100644
--- a/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers slack integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-slack"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml
index fbcd08e79ed62..4b7882813650f 100644
--- a/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers smart_pdf_loader integration"
+keywords = ["pdf layout", "pdf table", "pdf"]
license = "MIT"
+maintainers = ["ansukla"]
name = "llama-index-readers-smart-pdf-loader"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-snowflake/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-snowflake/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-snowflake/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml
index 15b7243646ca9..1a596dbc0b534 100644
--- a/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers snowflake integration"
+keywords = ["data warehouse", "database", "snowflake", "warehouse"]
license = "MIT"
+maintainers = ["godwin3737"]
name = "llama-index-readers-snowflake"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml
index ada61bf842f64..5a4d41d851bd7 100644
--- a/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers snscrape_twitter integration"
license = "MIT"
+maintainers = ["smyja"]
name = "llama-index-readers-snscrape-twitter"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-spotify/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-spotify/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-spotify/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml
index c4a017406174b..8dca1aff4b39a 100644
--- a/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers spotify integration"
+keywords = ["music", "spotify"]
license = "MIT"
+maintainers = ["ong"]
name = "llama-index-readers-spotify"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-stackoverflow/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-stackoverflow/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-stackoverflow/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml
index f9df6c55eec81..d2c1f0d6de526 100644
--- a/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers stackoverflow integration"
+keywords = ["answers", "posts", "questions"]
license = "MIT"
+maintainers = ["allen-munsch"]
name = "llama-index-readers-stackoverflow"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-steamship/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-steamship/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-steamship/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml
index 8fc6cb9c3ec50..1c38870bd52eb 100644
--- a/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers steamship integration"
+keywords = ["steamship"]
license = "MIT"
+maintainers = ["douglas-reid"]
name = "llama-index-readers-steamship"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-stripe-docs/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-stripe-docs/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-stripe-docs/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml
index a147f68c6e054..14feb2ff501e4 100644
--- a/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers stripe_docs integration"
+keywords = ["documentation", "stripe"]
license = "MIT"
+maintainers = ["amorriscode"]
name = "llama-index-readers-stripe-docs"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-telegram/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-telegram/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-telegram/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml
index c295cfe5d36e9..28ab06298b949 100644
--- a/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Dias Kalkamanov "]
description = "llama-index readers telegram integration"
license = "MIT"
+maintainers = ["diicell"]
name = "llama-index-readers-telegram"
readme = "README.md"
-version = "0.1.2"
+version = "0.1.3"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-trello/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-trello/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-trello/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml
index 89bb44ee06736..711f942e626ed 100644
--- a/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers trello integration"
+keywords = ["trello"]
license = "MIT"
+maintainers = ["bluzir"]
name = "llama-index-readers-trello"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-twitter/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-twitter/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-twitter/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-twitter/llama_index/readers/twitter/base.py b/llama-index-integrations/readers/llama-index-readers-twitter/llama_index/readers/twitter/base.py
index f2cc92f451d46..80e25f11b28ca 100644
--- a/llama-index-integrations/readers/llama-index-readers-twitter/llama_index/readers/twitter/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-twitter/llama_index/readers/twitter/base.py
@@ -69,5 +69,5 @@ def load_data(
response = " "
for tweet in tweets.data:
response = response + tweet.text + "\n"
- results.append(Document(text=response))
+ results.append(Document(text=response, id_=username))
return results
diff --git a/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml
index 5dce05c495a65..df7b8a165d18c 100644
--- a/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers twitter integration"
license = "MIT"
+maintainers = ["ravi03071991"]
name = "llama-index-readers-twitter"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-weather/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-weather/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-weather/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml
index 74f65946dd7fe..a7a92eb30f7b8 100644
--- a/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers weather integration"
+keywords = ["openweather", "weather"]
license = "MIT"
+maintainers = ["iamadhee"]
name = "llama-index-readers-weather"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-weaviate/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-weaviate/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-weaviate/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml
index 5590b6caa04f7..703e61b83a973 100644
--- a/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers weaviate integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-weaviate"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-web/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-web/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-web/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/beautiful_soup_web/base.py b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/beautiful_soup_web/base.py
index 4a9d6fe1ebb24..1758752c69d3d 100644
--- a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/beautiful_soup_web/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/beautiful_soup_web/base.py
@@ -4,7 +4,7 @@
from typing import Any, Callable, Dict, List, Optional, Tuple
from urllib.parse import urljoin
-from llama_index.core.readers.base import BaseReader
+from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
logger = logging.getLogger(__name__)
@@ -131,7 +131,7 @@ def _gitbook_reader(
}
-class BeautifulSoupWebReader(BaseReader):
+class BeautifulSoupWebReader(BasePydanticReader):
"""BeautifulSoup web page reader.
Reads pages from the web.
@@ -143,12 +143,8 @@ class BeautifulSoupWebReader(BaseReader):
extract text from the BeautifulSoup obj. See DEFAULT_WEBSITE_EXTRACTOR.
"""
- def __init__(
- self,
- website_extractor: Optional[Dict[str, Callable]] = None,
- ) -> None:
- """Initialize with parameters."""
- self.website_extractor = website_extractor or DEFAULT_WEBSITE_EXTRACTOR
+ is_remote: bool = True
+ website_extractor: Dict[str, Callable] = DEFAULT_WEBSITE_EXTRACTOR
def load_data(
self,
@@ -195,6 +191,6 @@ def load_data(
else:
data = soup.getText()
- documents.append(Document(text=data, extra_info=extra_info))
+ documents.append(Document(text=data, id_=url, extra_info=extra_info))
return documents
diff --git a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/rss/base.py b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/rss/base.py
index 5238de4c1150c..db419d4a656e0 100644
--- a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/rss/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/rss/base.py
@@ -2,40 +2,23 @@
from typing import List
-from llama_index.core.readers.base import BaseReader
+from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
-class RssReader(BaseReader):
+class RssReader(BasePydanticReader):
"""RSS reader.
Reads content from an RSS feed.
"""
- def __init__(self, html_to_text: bool = False) -> None:
- """Initialize with parameters.
+ is_remote: bool = True
+ html_to_text: bool = False
- Args:
- html_to_text (bool): Whether to convert HTML to text.
- Requires `html2text` package.
-
- """
- try:
- import feedparser # noqa: F401
- except ImportError:
- raise ValueError(
- "`feedparser` package not found, please run `pip install feedparser`"
- )
-
- if html_to_text:
- try:
- import html2text # noqa: F401
- except ImportError:
- raise ValueError(
- "`html2text` package not found, please run `pip install html2text`"
- )
- self._html_to_text = html_to_text
+ @classmethod
+ def class_name(cls) -> str:
+ return "RssReader"
def load_data(self, urls: List[str]) -> List[Document]:
"""Load data from RSS feeds.
@@ -57,17 +40,18 @@ def load_data(self, urls: List[str]) -> List[Document]:
for url in urls:
parsed = feedparser.parse(url)
for entry in parsed.entries:
+ doc_id = entry.id or entry.link
if "content" in entry:
data = entry.content[0].value
else:
data = entry.description or entry.summary
- if self._html_to_text:
+ if self.html_to_text:
import html2text
data = html2text.html2text(data)
extra_info = {"title": entry.title, "link": entry.link}
- documents.append(Document(text=data, extra_info=extra_info))
+ documents.append(Document(text=data, id_=doc_id, extra_info=extra_info))
return documents
diff --git a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/simple_web/base.py b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/simple_web/base.py
index ccd2d0c46ca55..e19e485ce15a8 100644
--- a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/simple_web/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/simple_web/base.py
@@ -1,12 +1,14 @@
"""Simple Web scraper."""
-from typing import List
+from typing import List, Optional, Dict, Callable
import requests
-from llama_index.core.readers.base import BaseReader
+
+from llama_index.core.bridge.pydantic import PrivateAttr
+from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
-class SimpleWebPageReader(BaseReader):
+class SimpleWebPageReader(BasePydanticReader):
"""Simple web page reader.
Reads pages from the web.
@@ -14,12 +16,34 @@ class SimpleWebPageReader(BaseReader):
Args:
html_to_text (bool): Whether to convert HTML to text.
Requires `html2text` package.
-
+ metadata_fn (Optional[Callable[[str], Dict]]): A function that takes in
+ a URL and returns a dictionary of metadata.
+ Default is None.
"""
- def __init__(self, html_to_text: bool = False) -> None:
+ is_remote: bool = True
+ html_to_text: bool
+
+ _metadata_fn: Optional[Callable[[str], Dict]] = PrivateAttr()
+
+ def __init__(
+ self,
+ html_to_text: bool = False,
+ metadata_fn: Optional[Callable[[str], Dict]] = None,
+ ) -> None:
"""Initialize with parameters."""
- self._html_to_text = html_to_text
+ try:
+ import html2text # noqa
+ except ImportError:
+ raise ImportError(
+ "`html2text` package not found, please run `pip install html2text`"
+ )
+ self._metadata_fn = metadata_fn
+ super().__init__(html_to_text=html_to_text)
+
+ @classmethod
+ def class_name(cls) -> str:
+ return "SimpleWebPageReader"
def load_data(self, urls: List[str]) -> List[Document]:
"""Load data from the input directory.
@@ -33,15 +57,18 @@ def load_data(self, urls: List[str]) -> List[Document]:
"""
if not isinstance(urls, list):
raise ValueError("urls must be a list of strings.")
-
documents = []
for url in urls:
- response = requests.get(url).text
- if self._html_to_text:
+ response = requests.get(url, headers=None).text
+ if self.html_to_text:
import html2text
response = html2text.html2text(response)
- documents.append(Document(text=response))
+ metadata: Optional[Dict] = None
+ if self._metadata_fn is not None:
+ metadata = self._metadata_fn(url)
+
+ documents.append(Document(text=response, id_=url, metadata=metadata or {}))
return documents
diff --git a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/trafilatura_web/base.py b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/trafilatura_web/base.py
index 1ccaf4ec5ef08..0e64d6b8e4cfe 100644
--- a/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/trafilatura_web/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-web/llama_index/readers/web/trafilatura_web/base.py
@@ -1,11 +1,10 @@
-from importlib.util import find_spec
from typing import List
-from llama_index.core.readers.base import BaseReader
+from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
-class TrafilaturaWebReader(BaseReader):
+class TrafilaturaWebReader(BasePydanticReader):
"""Trafilatura web page reader.
Reads pages from the web.
@@ -13,12 +12,7 @@ class TrafilaturaWebReader(BaseReader):
"""
- def __init__(self) -> None:
- if find_spec("trafilatura") is None:
- raise ImportError(
- "Missing package: trafilatura.\n"
- "Please `pip install trafilatura` to use this Reader"
- )
+ is_remote: bool = True
def load_data(
self,
@@ -61,6 +55,6 @@ def load_data(
include_formatting=include_formatting,
include_links=include_links,
)
- documents.append(Document(text=response))
+ documents.append(Document(text=response, id_=url))
return documents
diff --git a/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml
index 17da6a0e5076e..150bf685072c8 100644
--- a/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers web integration"
+keywords = ["BFS", "article", "atom", "documentation", "feed", "main content extractor", "news", "readthedocs", "rss", "scraper", "selenium", "seo", "sitemap", "substack", "trafilatura", "unstructured.io", "url", "web reader", "web", "website"]
license = "MIT"
+maintainers = ["HawkClaws", "Hironsan", "NA", "an-bluecat", "bborn", "jasonwcfan", "kravetsmic", "pandazki", "ruze00", "selamanse", "thejessezhang"]
name = "llama-index-readers-web"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-whatsapp/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-whatsapp/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-whatsapp/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml
index 8989bd0997d83..779675dacfc4d 100644
--- a/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers whatsapp integration"
+keywords = ["chat", "whatsapp"]
license = "MIT"
+maintainers = ["batmanscode"]
name = "llama-index-readers-whatsapp"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.9,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-wikipedia/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-wikipedia/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-wikipedia/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml
index 1867d76f7589a..896b9fc277f02 100644
--- a/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers wikipedia integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-readers-wikipedia"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-wordlift/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-wordlift/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-wordlift/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml
index af304482adff2..365118486aab1 100644
--- a/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers wordlift integration"
+keywords = ["graphql", "knowledge graph", "seo", "structured data", "wordlift"]
license = "MIT"
+maintainers = ["msftwarelab"]
name = "llama-index-readers-wordlift"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-wordpress/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-wordpress/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-wordpress/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml
index c31468c5f89ad..b8e8458713d55 100644
--- a/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers wordpress integration"
+keywords = ["blog", "wordpress"]
license = "MIT"
+maintainers = ["bbornsztein"]
name = "llama-index-readers-wordpress"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/llama_index/readers/youtube_transcript/base.py b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/llama_index/readers/youtube_transcript/base.py
index 02a1b1c5ed40c..235c5c66a67fd 100644
--- a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/llama_index/readers/youtube_transcript/base.py
+++ b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/llama_index/readers/youtube_transcript/base.py
@@ -1,23 +1,18 @@
"""Simple Reader that reads transcript of youtube video."""
import re
-from importlib.util import find_spec
from typing import Any, List, Optional
-from llama_index.core.readers.base import BaseReader
+from youtube_transcript_api import YouTubeTranscriptApi
+
+from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
from llama_index.readers.youtube_transcript.utils import YOUTUBE_URL_PATTERNS
-class YoutubeTranscriptReader(BaseReader):
+class YoutubeTranscriptReader(BasePydanticReader):
"""Youtube Transcript reader."""
- def __init__(self) -> None:
- if find_spec("youtube_transcript_api") is None:
- raise ImportError(
- "Missing package: youtube_transcript_api.\n"
- "Please `pip install youtube_transcript_api` to use this Reader"
- )
- super().__init__()
+ is_remote: bool = True
def load_data(
self,
@@ -32,8 +27,6 @@ def load_data(
for which transcripts are to be read.
"""
- from youtube_transcript_api import YouTubeTranscriptApi
-
results = []
for link in ytlinks:
video_id = self._extract_video_id(link)
@@ -52,7 +45,11 @@ def load_data(
)
chunk_text = [chunk["text"] for chunk in transcript_chunks]
transcript = "\n".join(chunk_text)
- results.append(Document(text=transcript, extra_info={"video_id": video_id}))
+ results.append(
+ Document(
+ text=transcript, id_=video_id, extra_info={"video_id": video_id}
+ )
+ )
return results
@staticmethod
diff --git a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml
index bffc6c0823437..ef05aeb641149 100644
--- a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers youtube transcript integration"
+keywords = ["video"]
license = "MIT"
+maintainers = ["ravi03071991"]
name = "llama-index-readers-youtube-transcript"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-zendesk/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-zendesk/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-zendesk/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml
index 6b068099e8353..ced8df1a16ca2 100644
--- a/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers zendesk integration"
+keywords = ["help center", "knowledge base", "zendesk"]
license = "MIT"
+maintainers = ["bbornsztein"]
name = "llama-index-readers-zendesk"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-zep/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-zep/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-zep/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml
index 9c05cc02e0563..9b31ea1f16b83 100644
--- a/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index readers zep integration"
+keywords = ["memory", "retriever", "storage", "zep"]
license = "MIT"
+maintainers = ["zep"]
name = "llama-index-readers-zep"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/readers/llama-index-readers-zulip/CHANGELOG.md b/llama-index-integrations/readers/llama-index-readers-zulip/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/readers/llama-index-readers-zulip/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml
index d9f647077b0d7..18c7579f9a4aa 100644
--- a/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index readers zulip integration"
license = "MIT"
+maintainers = ["plurigrid"]
name = "llama-index-readers-zulip"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-arxiv/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-arxiv/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-arxiv/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml
index e0f37fb906cdc..f17f24a3ec7ac 100644
--- a/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools arxiv integration"
+keywords = ["math", "research", "science"]
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-arxiv"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-cv/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-azure-cv/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-azure-cv/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml
index d381abba941b3..7d4aaea01c11f 100644
--- a/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools azure_cv integration"
+keywords = ["cv", "image", "vision"]
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-azure-cv"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-speech/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-azure-speech/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-azure-speech/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml
index 9fe40f393ead0..6502d7231aea4 100644
--- a/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools azure_speech integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-azure-speech"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-translate/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-azure-translate/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-azure-translate/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml
index 98da8d988aacd..b9f202005d213 100644
--- a/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools azure_translate integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-azure-translate"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-bing-search/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-bing-search/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-bing-search/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml
index e17a82e4f4704..1a1f4d09cb411 100644
--- a/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools bing_search integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-bing-search"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml
index ba2c1a10ba2ef..26aa11645c62b 100644
--- a/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools chatgpt_plugin integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-chatgpt-plugin"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-code-interpreter/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-code-interpreter/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-code-interpreter/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml
index cc75cf163c038..163c8ca879e73 100644
--- a/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools code_interpreter integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-code-interpreter"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-cogniswitch/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-cogniswitch/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-cogniswitch/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml
index 0954cf915e847..33c2baf429cfc 100644
--- a/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools cogniswitch integration"
+keywords = ["embedding", "graph", "knowledge graph", "neural", "symbolic"]
license = "MIT"
+maintainers = ["cogniswitch"]
name = "llama-index-tools-cogniswitch"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-database/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-database/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-database/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml
index d41d57df19505..ee4f13ef2771c 100644
--- a/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools database integration"
+keywords = ["aws rds", "postgres", "snowflake", "sql"]
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-database"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-exa/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-exa/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-exa/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml
index eaa7139f2c13b..30ec02b8e8266 100644
--- a/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools exa integration"
license = "MIT"
+maintainers = ["jeffzwang"]
name = "llama-index-tools-exa"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-google/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-google/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-google/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml
index 47a451c61d856..b5a7c511aa9fd 100644
--- a/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools google integration"
+keywords = ["email", "gmail"]
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-google"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-graphql/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-graphql/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-graphql/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml
index 1133e94f290f1..bf2b2622b490f 100644
--- a/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools graphql integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-graphql"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-ionic-shopping/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-ionic-shopping/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-ionic-shopping/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml
index 7de4a02f025d2..2841043b51b4a 100644
--- a/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools ionic shopping integration"
license = "MIT"
+maintainers = ["stewartjarod"]
name = "llama-index-tools-ionic-shopping"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-metaphor/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-metaphor/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-metaphor/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml
index 0491502180f9e..ab1cfb5a393aa 100644
--- a/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools metaphor integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-metaphor"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-multion/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-multion/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-multion/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml
index c5271a8391aea..583514512cb9e 100644
--- a/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools multion integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-multion"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-neo4j/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-neo4j/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-neo4j/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml
index 138c4be9ea706..820796d60a159 100644
--- a/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools neo4j integration"
+keywords = ["cypher", "graph", "neo4j"]
license = "MIT"
+maintainers = ["shahafp"]
name = "llama-index-tools-neo4j"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-notion/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-notion/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-notion/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml
index 0c2eb37c739c3..671df4d15cfeb 100644
--- a/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools notion integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-tools-notion"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-openai/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-openai/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-openai/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml
index 7dd427b3038ca..578d90c9dd217 100644
--- a/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools openai_image_generation integration"
+keywords = ["cv", "gpt-3", "image", "openai", "vision"]
license = "MIT"
+maintainers = ["manelferreira_"]
name = "llama-index-tools-openai-image-generation"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-openapi/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-openapi/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-openapi/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml
index 0cd8475993f5b..1ce1469fc8a45 100644
--- a/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools openapi integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-openapi"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-playgrounds/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-playgrounds/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-playgrounds/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml
index a759ed9aa987c..abc58adb42c50 100644
--- a/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools playgrounds integration"
+keywords = ["blockchain", "decentralized", "graphql", "playgroundsapi", "subgraph", "thegraph"]
license = "MIT"
+maintainers = ["tachi"]
name = "llama-index-tools-playgrounds"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-python-file/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-python-file/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-python-file/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml
index 0640824f7bc24..f33fed7edafe8 100644
--- a/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools python_file integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-python-file"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-requests/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-requests/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-requests/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml
index 4b3cfe8d81940..abd7098925a85 100644
--- a/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools requests integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-requests"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-salesforce/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-salesforce/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-salesforce/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml
index ded2270807bc4..b5dca1445d5fc 100644
--- a/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools salesforce integration"
+keywords = ["salesforce"]
license = "MIT"
+maintainers = ["chrispangg"]
name = "llama-index-tools-salesforce"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-shopify/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-shopify/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-shopify/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml
index d5dbb82ba4a07..8ff003b4f16c8 100644
--- a/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools shopify integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-shopify"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-slack/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-slack/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-slack/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml
index 649325f651787..024f3b6715a8d 100644
--- a/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools slack integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-tools-slack"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-tavily-research/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-tavily-research/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-tavily-research/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml
index 5f0a20b766cfa..b647d965ee2af 100644
--- a/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools tavily_research integration"
license = "MIT"
+maintainers = ["rotemweiss57"]
name = "llama-index-tools-tavily-research"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-text-to-image/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-text-to-image/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-text-to-image/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml
index 199ff8ceb6895..b939a09c2e2eb 100644
--- a/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools text_to_image integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-text-to-image"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.9,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-vector-db/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-vector-db/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-vector-db/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml
index eb1e763cfe51c..deb5f0a90e102 100644
--- a/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools vector_db integration"
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-tools-vector-db"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-waii/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-waii/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-waii/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml
index c5296321a6bf2..1cfe59ab14385 100644
--- a/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools waii integration"
license = "MIT"
+maintainers = ["wangdatan"]
name = "llama-index-tools-waii"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-weather/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-weather/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-weather/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml
index 7a0a72efc0124..746fff567add3 100644
--- a/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools weather integration"
license = "MIT"
+maintainers = ["logan-markewich"]
name = "llama-index-tools-weather"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-wikipedia/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-wikipedia/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-wikipedia/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml
index ddd974f0fc460..090acb1d7f16a 100644
--- a/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools wikipedia integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-wikipedia"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml
index 23a31c36bfb33..059e51c748be1 100644
--- a/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index tools wolfram_alpha integration"
+keywords = ["math"]
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-wolfram-alpha"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/.gitignore b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/.gitignore
new file mode 100644
index 0000000000000..990c18de22908
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/.gitignore
@@ -0,0 +1,153 @@
+llama_index/_static
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+bin/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+etc/
+include/
+lib/
+lib64/
+parts/
+sdist/
+share/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+.ruff_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+notebooks/
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pyvenv.cfg
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# Jetbrains
+.idea
+modules/
+*.swp
+
+# VsCode
+.vscode
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# pyright
+pyrightconfig.json
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/BUILD b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/BUILD
new file mode 100644
index 0000000000000..0896ca890d8bf
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/BUILD
@@ -0,0 +1,3 @@
+poetry_requirements(
+ name="poetry",
+)
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/Makefile b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/Makefile
new file mode 100644
index 0000000000000..b9eab05aa3706
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/Makefile
@@ -0,0 +1,17 @@
+GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
+
+help: ## Show all Makefile targets.
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
+
+format: ## Run code autoformatters (black).
+ pre-commit install
+ git ls-files | xargs pre-commit run black --files
+
+lint: ## Run linters: pre-commit (black, ruff, codespell) and mypy
+ pre-commit install && git ls-files | xargs pre-commit run --show-diff-on-failure --files
+
+test: ## Run tests via pytest.
+ pytest tests
+
+watch-docs: ## Build and watch documentation.
+ sphinx-autobuild docs/ docs/_build/html --open-browser --watch $(GIT_ROOT)/llama_index/
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/README.md b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/README.md
new file mode 100644
index 0000000000000..21779bb953c08
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/README.md
@@ -0,0 +1,34 @@
+# Yahoo Finance Tool
+
+This tool connects to Yahoo Finance and allows an Agent to access stock, news, and financial data of a company.
+
+## Usage
+
+Here's an example of how to use this tool:
+
+```python
+from llama_index.tools.yahoo_finance import YahooFinanceToolSpec
+from llama_index.agent import OpenAIAgent
+
+tool_spec = YahooFinanceToolSpec()
+agent = OpenAIAgent.from_tools(tool_spec.to_tool_list())
+
+agent.chat("What is the price of Apple stock?")
+agent.chat("What is the latest news about Apple?")
+```
+
+The tools available are:
+
+`balance_sheet`: A tool that returns the balance sheet of a company.
+
+`income_statement`: A tool that returns the income statement of a company.
+
+`cash_flow`: A tool that returns the cash flow of a company.
+
+`stock_news`: A tool that returns the latest news about a company.
+
+`stock_basic_info`: A tool that returns basic information about a company including price.
+
+`stock_analyst_recommendations`: A tool that returns analyst recommendations for a company.
+
+This loader is designed to be used as a way to load data as a Tool in a Agent. See [here](https://github.com/emptycrown/llama-hub/tree/main) for examples.
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/examples/yahoo_finance.ipynb b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/examples/yahoo_finance.ipynb
new file mode 100644
index 0000000000000..34cf59c1bf7ae
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/examples/yahoo_finance.ipynb
@@ -0,0 +1,230 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "ba49c2998ed32020",
+ "metadata": {},
+ "source": [
+ "## Building a Yahoo Finance Agent\n",
+ "\n",
+ "This tutorial walks you through the process of building a Yahoo Finance Agent using the `yahoo_finance` tool. The agent will be able to retrieve stock data, financial statements, and other financial information from Yahoo Finance."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "initial_id",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install llama-index yfinance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b095b103c429e4cb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import openai\n",
+ "from llama_index.agent import OpenAIAgent"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "1e91dc5fcc2f4cf4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "openai.api_key = \"sk-...\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5b0877f51a351135",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "balance_sheet\n",
+ "income_statement\n",
+ "cash_flow\n",
+ "stock_basic_info\n",
+ "stock_analyst_recommendations\n",
+ "stock_news\n"
+ ]
+ }
+ ],
+ "source": [
+ "from llama_index.tools.yahoo_finance.base import YahooFinanceToolSpec\n",
+ "\n",
+ "finance_tool = YahooFinanceToolSpec()\n",
+ "\n",
+ "finance_tool_list = finance_tool.to_tool_list()\n",
+ "for tool in finance_tool_list:\n",
+ " print(tool.metadata.name)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c2d1e7865b0301f9",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Balance Sheet: \n",
+ " 2023-09-30 2022-09-30 2021-09-30 2020-09-30\n",
+ "Treasury Shares Number 0.0 NaN NaN NaN\n",
+ "Ordinary Shares Number 15550061000.0 15943425000.0 16426786000.0 16976763000.0\n",
+ "Share Issued 15550061000.0 15943425000.0 16426786000.0 16976763000.0\n",
+ "Net Debt 81123000000.0 96423000000.0 89779000000.0 74420000000.0\n",
+ "Total Debt 111088000000.0 120069000000.0 124719000000.0 112436000000.0\n",
+ "Tangible Book Value 62146000000.0 50672000000.0 63090000000.0 65339000000.0\n",
+ "Invested Capital 173234000000.0 170741000000.0 187809000000.0 177775000000.0\n",
+ "Working Capital -1742000000.0 -18577000000.0 9355000000.0 38321000000.0\n",
+ "Net Tangible Assets 62146000000.0 50672000000.0 63090000000.0 65339000000.0\n",
+ "Common Stock Equity 62146000000.0 50672000000.0 63090000000.0 65339000000.0\n",
+ "Total Capitalization 157427000000.0 149631000000.0 172196000000.0 164006000000.0\n",
+ "Total Equity Gross Minority Interest 62146000000.0 50672000000.0 63090000000.0 65339000000.0\n",
+ "Stockholders Equity 62146000000.0 50672000000.0 63090000000.0 65339000000.0\n",
+ "Gains Losses Not Affecting Retained Earnings -11452000000.0 -11109000000.0 163000000.0 -406000000.0\n",
+ "Retained Earnings -214000000.0 -3068000000.0 5562000000.0 14966000000.0\n",
+ "Capital Stock 73812000000.0 64849000000.0 57365000000.0 50779000000.0\n",
+ "Common Stock 73812000000.0 64849000000.0 57365000000.0 50779000000.0\n",
+ "Total Liabilities Net Minority Interest 290437000000.0 302083000000.0 287912000000.0 258549000000.0\n",
+ "Total Non Current Liabilities Net Minority Interest 145129000000.0 148101000000.0 162431000000.0 153157000000.0\n",
+ "Other Non Current Liabilities 34391000000.0 32485000000.0 28636000000.0 26320000000.0\n",
+ "Tradeand Other Payables Non Current 15457000000.0 16657000000.0 24689000000.0 28170000000.0\n",
+ "Long Term Debt And Capital Lease Obligation 95281000000.0 98959000000.0 109106000000.0 98667000000.0\n",
+ "Long Term Debt 95281000000.0 98959000000.0 109106000000.0 98667000000.0\n",
+ "Current Liabilities 145308000000.0 153982000000.0 125481000000.0 105392000000.0\n",
+ "Other Current Liabilities 58829000000.0 60845000000.0 47493000000.0 42684000000.0\n",
+ "Current Deferred Liabilities 8061000000.0 7912000000.0 7612000000.0 6643000000.0\n",
+ "Current Deferred Revenue 8061000000.0 7912000000.0 7612000000.0 6643000000.0\n",
+ "Current Debt And Capital Lease Obligation 15807000000.0 21110000000.0 15613000000.0 13769000000.0\n",
+ "Current Debt 15807000000.0 21110000000.0 15613000000.0 13769000000.0\n",
+ "Other Current Borrowings 9822000000.0 11128000000.0 9613000000.0 8773000000.0\n",
+ "Commercial Paper 5985000000.0 9982000000.0 6000000000.0 4996000000.0\n",
+ "Payables And Accrued Expenses 62611000000.0 64115000000.0 54763000000.0 42296000000.0\n",
+ "Payables 62611000000.0 64115000000.0 54763000000.0 42296000000.0\n",
+ "Accounts Payable 62611000000.0 64115000000.0 54763000000.0 42296000000.0\n",
+ "Total Assets 352583000000.0 352755000000.0 351002000000.0 323888000000.0\n",
+ "Total Non Current Assets 209017000000.0 217350000000.0 216166000000.0 180175000000.0\n",
+ "Other Non Current Assets 46906000000.0 39053000000.0 48849000000.0 42522000000.0\n",
+ "Non Current Deferred Assets 17852000000.0 15375000000.0 NaN NaN\n",
+ "Non Current Deferred Taxes Assets 17852000000.0 15375000000.0 NaN NaN\n",
+ "Investments And Advances 100544000000.0 120805000000.0 127877000000.0 100887000000.0\n",
+ "Other Investments NaN 120805000000.0 127877000000.0 100887000000.0\n",
+ "Investmentin Financial Assets 100544000000.0 120805000000.0 127877000000.0 100887000000.0\n",
+ "Available For Sale Securities 100544000000.0 120805000000.0 127877000000.0 100887000000.0\n",
+ "Net PPE 43715000000.0 42117000000.0 39440000000.0 36766000000.0\n",
+ "Accumulated Depreciation -70884000000.0 -72340000000.0 -70283000000.0 -66760000000.0\n",
+ "Gross PPE 114599000000.0 114457000000.0 109723000000.0 103526000000.0\n",
+ "Leases 12839000000.0 11271000000.0 11023000000.0 10283000000.0\n",
+ "Machinery Furniture Equipment 78314000000.0 81060000000.0 78659000000.0 75291000000.0\n",
+ "Land And Improvements 23446000000.0 22126000000.0 20041000000.0 17952000000.0\n",
+ "Properties 0.0 0.0 0.0 0.0\n",
+ "Current Assets 143566000000.0 135405000000.0 134836000000.0 143713000000.0\n",
+ "Other Current Assets 14695000000.0 21223000000.0 14111000000.0 11264000000.0\n",
+ "Inventory 6331000000.0 4946000000.0 6580000000.0 4061000000.0\n",
+ "Receivables 60985000000.0 60932000000.0 51506000000.0 37445000000.0\n",
+ "Other Receivables 31477000000.0 32748000000.0 25228000000.0 21325000000.0\n",
+ "Accounts Receivable 29508000000.0 28184000000.0 26278000000.0 16120000000.0\n",
+ "Cash Cash Equivalents And Short Term Investments 61555000000.0 48304000000.0 62639000000.0 90943000000.0\n",
+ "Other Short Term Investments 31590000000.0 24658000000.0 27699000000.0 52927000000.0\n",
+ "Cash And Cash Equivalents 29965000000.0 23646000000.0 34940000000.0 38016000000.0\n",
+ "Cash Equivalents 1606000000.0 5100000000.0 17635000000.0 20243000000.0\n",
+ "Cash Financial 28359000000.0 18546000000.0 17305000000.0 17773000000.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(finance_tool.balance_sheet(\"AAPL\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5bcaa33f006b4fb9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "agent = OpenAIAgent.from_tools(finance_tool_list)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ba290fe8f1621839",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The analyst recommendations for AAPL (Apple Inc.) are as follows:\n",
+ "\n",
+ "- Current period: \n",
+ " - Strong Buy: 11\n",
+ " - Buy: 21\n",
+ " - Hold: 6\n",
+ " - Sell: 0\n",
+ " - Strong Sell: 0\n",
+ "\n",
+ "- 1 month ago: \n",
+ " - Strong Buy: 10\n",
+ " - Buy: 20\n",
+ " - Hold: 12\n",
+ " - Sell: 1\n",
+ " - Strong Sell: 0\n",
+ "\n",
+ "- 2 months ago: \n",
+ " - Strong Buy: 10\n",
+ " - Buy: 21\n",
+ " - Hold: 12\n",
+ " - Sell: 1\n",
+ " - Strong Sell: 0\n",
+ "\n",
+ "- 3 months ago: \n",
+ " - Strong Buy: 10\n",
+ " - Buy: 24\n",
+ " - Hold: 7\n",
+ " - Sell: 1\n",
+ " - Strong Sell: 0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(agent.chat(\"What are the analyst recommendations for AAPL?\"))"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/BUILD b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/BUILD
new file mode 100644
index 0000000000000..db46e8d6c978c
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/BUILD
@@ -0,0 +1 @@
+python_sources()
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/__init__.py b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/__init__.py
new file mode 100644
index 0000000000000..54d73a83ed6d9
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/__init__.py
@@ -0,0 +1,6 @@
+## init
+from llama_index.tools.yahoo_finance.base import (
+ YahooFinanceToolSpec,
+)
+
+__all__ = ["YahooFinanceToolSpec"]
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/base.py b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/base.py
new file mode 100644
index 0000000000000..6df628cbad6bc
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/llama_index/tools/yahoo_finance/base.py
@@ -0,0 +1,92 @@
+from llama_index.core.tools.tool_spec.base import BaseToolSpec
+import yfinance as yf
+import pandas as pd
+
+
+class YahooFinanceToolSpec(BaseToolSpec):
+ """Yahoo Finance tool spec."""
+
+ spec_functions = [
+ "balance_sheet",
+ "income_statement",
+ "cash_flow",
+ "stock_basic_info",
+ "stock_analyst_recommendations",
+ "stock_news",
+ ]
+
+ def __init__(self) -> None:
+ """Initialize the Yahoo Finance tool spec."""
+
+ def balance_sheet(self, ticker: str) -> str:
+ """
+ Return the balance sheet of the stock.
+
+ Args:
+ ticker (str): the stock ticker to be given to yfinance
+
+ """
+ stock = yf.Ticker(ticker)
+ balance_sheet = pd.DataFrame(stock.balance_sheet)
+ return "Balance Sheet: \n" + balance_sheet.to_string()
+
+ def income_statement(self, ticker: str) -> str:
+ """
+ Return the income statement of the stock.
+
+ Args:
+ ticker (str): the stock ticker to be given to yfinance
+
+ """
+ stock = yf.Ticker(ticker)
+ income_statement = pd.DataFrame(stock.income_stmt)
+ return "Income Statement: \n" + income_statement.to_string()
+
+ def cash_flow(self, ticker: str) -> str:
+ """
+ Return the cash flow of the stock.
+
+ Args:
+ ticker (str): the stock ticker to be given to yfinance
+
+ """
+ stock = yf.Ticker(ticker)
+ cash_flow = pd.DataFrame(stock.cashflow)
+ return "Cash Flow: \n" + cash_flow.to_string()
+
+ def stock_basic_info(self, ticker: str) -> str:
+ """
+ Return the basic info of the stock. Ex: price, description, name.
+
+ Args:
+ ticker (str): the stock ticker to be given to yfinance
+
+ """
+ stock = yf.Ticker(ticker)
+ return "Info: \n" + str(stock.info)
+
+ def stock_analyst_recommendations(self, ticker: str) -> str:
+ """
+ Get the analyst recommendations for a stock.
+
+ Args:
+ ticker (str): the stock ticker to be given to yfinance
+
+ """
+ stock = yf.Ticker(ticker)
+ return "Recommendations: \n" + str(stock.recommendations)
+
+ def stock_news(self, ticker: str) -> str:
+ """
+ Get the most recent news titles of a stock.
+
+ Args:
+ ticker (str): the stock ticker to be given to yfinance
+
+ """
+ stock = yf.Ticker(ticker)
+ news = stock.news
+ out = "News: \n"
+ for i in news:
+ out += i["title"] + "\n"
+ return out
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/poetry.lock b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/poetry.lock
new file mode 100644
index 0000000000000..b37c1712c6f50
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/poetry.lock
@@ -0,0 +1,4753 @@
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+
+[[package]]
+name = "aiohttp"
+version = "3.9.3"
+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"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "brotlicffi"]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "annotated-types"
+version = "0.6.0"
+description = "Reusable constraint types to use with typing.Annotated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
+ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+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)"]
+
+[[package]]
+name = "appdirs"
+version = "1.4.4"
+description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+optional = false
+python-versions = "*"
+files = [
+ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
+ {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
+]
+
+[[package]]
+name = "appnope"
+version = "0.1.4"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"]
+
+[[package]]
+name = "astroid"
+version = "2.13.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
+ {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+wrapt = [
+ {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
+ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
+]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "attrs"
+version = "23.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"},
+]
+
+[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]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.dependencies]
+pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "backcall"
+version = "0.2.0"
+description = "Specifications for callback functions passed in to an API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "black"
+version = "23.9.1"
+description = "The uncompromising code formatter."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+]
+
+[package.dependencies]
+click = ">=8.0.0"
+ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""}
+mypy-extensions = ">=0.4.3"
+packaging = ">=22.0"
+pathspec = ">=0.9.0"
+platformdirs = ">=2"
+tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""}
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "certifi"
+version = "2024.2.2"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+ {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+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"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "codespell"
+version = "2.2.6"
+description = "Codespell"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+ {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+]
+
+[package.dependencies]
+tomli = {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"toml\""}
+
+[package.extras]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
+hard-encoding-detection = ["chardet"]
+toml = ["tomli"]
+types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "comm"
+version = "0.2.1"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"},
+ {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "cryptography"
+version = "42.0.2"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"},
+ {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"},
+ {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"},
+ {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"},
+ {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"},
+ {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"},
+ {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"},
+ {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"},
+ {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"},
+ {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"},
+ {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"},
+ {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"},
+ {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"},
+ {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"},
+]
+
+[package.dependencies]
+cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
+nox = ["nox"]
+pep8test = ["check-sdist", "click", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "dataclasses-json"
+version = "0.6.4"
+description = "Easily serialize dataclasses to and from JSON."
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"},
+ {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
+]
+
+[package.dependencies]
+marshmallow = ">=3.18.0,<4.0.0"
+typing-inspect = ">=0.4.0,<1"
+
+[[package]]
+name = "debugpy"
+version = "1.8.1"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
+ {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
+ {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
+ {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
+ {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
+ {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
+ {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
+ {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
+ {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
+ {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
+ {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
+ {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
+ {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
+ {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
+ {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
+ {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
+ {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
+ {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
+ {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
+ {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
+ {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
+ {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "deprecated"
+version = "1.2.14"
+description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"},
+ {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"},
+]
+
+[package.dependencies]
+wrapt = ">=1.10,<2"
+
+[package.extras]
+dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+
+[[package]]
+name = "dill"
+version = "0.3.8"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
+ {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dirtyjson"
+version = "1.0.8"
+description = "JSON decoder for Python that can extract data from the muck"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"},
+ {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"},
+]
+
+[[package]]
+name = "distlib"
+version = "0.3.8"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
+]
+
+[[package]]
+name = "distro"
+version = "1.9.0"
+description = "Distro - an OS platform information API"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"},
+ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
+]
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "frozendict"
+version = "2.4.0"
+description = "A simple immutable dictionary"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "frozendict-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:475c65202a6f5421df8cacb8a2f29c5087134a0542b0540ae95fbf4db7af2ff9"},
+ {file = "frozendict-2.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2607e82efdd2c277224a58bda3994d4cd48e49eff7fa31e404cf3066e8dbfeae"},
+ {file = "frozendict-2.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fd4583194baabe100c135883017da76259a315d34e303eddf198541b7e02e44"},
+ {file = "frozendict-2.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efca7281184b54f7abab6980cf25837b709f72ced62791f62dabcd7b184d958a"},
+ {file = "frozendict-2.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fc4cba1ced988ce9020dfcaae6fe3f5521eebc00c5772b511aaf691b0be91e6"},
+ {file = "frozendict-2.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8fab616e7c0fea2ac928f107c740bd9ba516fc083adfcd1c391d6bfc9164403d"},
+ {file = "frozendict-2.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:09ba8ee37d260adde311b8eb4cd12bf27f64071242f736757ae6a11d331eb860"},
+ {file = "frozendict-2.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:0615ed71570eec3cc96df063930ea6e563211efeeac86e3f3cc8bdfc9c9bfab7"},
+ {file = "frozendict-2.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc754117a7d60ba8e55b3c39abd67f37fbc05dd63cdcb03d1717a382fe0a3421"},
+ {file = "frozendict-2.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2804ea4bd2179bb33b99483cc8d69246630cc00632b9affe2914e8666f1cc7e5"},
+ {file = "frozendict-2.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd4700c3f0aebdc8f4375c35590135794b1dbf2aca132f4756b584fa9910af2d"},
+ {file = "frozendict-2.4.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:da4406d95c340e0b1cc43a3858fac729f52689325bcf61a9182eb94aff7451dc"},
+ {file = "frozendict-2.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:1875e7b70a5724bf964354da8fd542240d2cead0d80053ac96bf4494ce3517fa"},
+ {file = "frozendict-2.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a60f353496637ca21396289a7d969af1eb4ec4d11a7c37a0e7f25fc1761a0c97"},
+ {file = "frozendict-2.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b666f9c6c8a9e794d2713a944b10a65480ff459579d75b5f686c75031c2c2dfc"},
+ {file = "frozendict-2.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d81fb396ea81fcba3b3dde4a4b51adcb74ff31632014fbfd030f8acd5a7292"},
+ {file = "frozendict-2.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4925c8e82d2bd23d45996cd0827668a52b9c51103897c98ce409a763d0c00c61"},
+ {file = "frozendict-2.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aa86325da6a6071284b4ed3d9d2cd9db068560aebad503b658d6a889a0575683"},
+ {file = "frozendict-2.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5bb5b62d4e2bce12e91800496d94de41bec8f16e4d8a7b16e8f263676ae2031a"},
+ {file = "frozendict-2.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3909df909516cfd7bcefd9a3003948970a12a50c5648d8bbddafcef171f2117f"},
+ {file = "frozendict-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:204f2c5c10fc018d1ba8ccc67758aa83fe769c782547bd26dc250317a7ccba71"},
+ {file = "frozendict-2.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8d1d269874c94b1ed2b6667e5e43dcf4541838019b1caa4c48f848ac73634df"},
+ {file = "frozendict-2.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:809f1cffb602cf06e5186c69c0e3b74bec7a3684593145331f9aa2a65b5ba3b7"},
+ {file = "frozendict-2.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b017cba5f73869b04c2977139ad08e57a7480de1e384c34193939698119baa1d"},
+ {file = "frozendict-2.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0b75e5e231621dedaef88334997e79fbd137dd89895543d3862fe0220fc3572c"},
+ {file = "frozendict-2.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df3819a5d48ab3aae1548e62093d0111ad7c3b62ff9392421b7bbf149c08b629"},
+ {file = "frozendict-2.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:42a9b33ccf9d417b22146e59803c53d5c39d7d9151d2df8df59c235f6a1a5ed7"},
+ {file = "frozendict-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3f51bfa64e0c4a6608e3f2878bab1211a6b3b197de6fa57151bbe73f1184457"},
+ {file = "frozendict-2.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a1d232f092dc686e6ef23d436bde30f82c018f31cef1b89b31caef03814b1617"},
+ {file = "frozendict-2.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e530658134e88607ff8c2c8934a07b2bb5e9fffab5045f127746f6542c6c77e"},
+ {file = "frozendict-2.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23a52bbea30c9e35b89291273944393770fb031e522a172e3aff19b62cc50047"},
+ {file = "frozendict-2.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f91acaff475d0ef0d3436b805c9b91fc627a6a8a281771a24f7ab7f458a0b34f"},
+ {file = "frozendict-2.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:08d9c7c1aa92b94538b3a79c43999f999012e174588435f197794d5e5a80e0f5"},
+ {file = "frozendict-2.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:05c5a77957ecba4286c7ab33861a8f4f2badc7ea86fc82b834fb360d3aa4c108"},
+ {file = "frozendict-2.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:c8af8a6a39e0050d3f3193cda56c42b43534a9b3995c44241bb9527e3c3fd451"},
+ {file = "frozendict-2.4.0.tar.gz", hash = "sha256:c26758198e403337933a92b01f417a8240c954f553e1d4b5e0f8e39d9c8e3f0a"},
+]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.1"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"},
+ {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"},
+ {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"},
+ {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"},
+ {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"},
+ {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"},
+ {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"},
+ {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"},
+ {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"},
+ {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"},
+ {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"},
+ {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"},
+ {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"},
+ {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"},
+ {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"},
+ {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"},
+ {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"},
+ {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"},
+ {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"},
+ {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"},
+ {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"},
+ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2024.2.0"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"},
+ {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "greenlet"
+version = "3.0.3"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
+ {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
+ {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
+ {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
+ {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
+ {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
+ {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
+ {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
+ {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
+ {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
+ {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
+ {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
+ {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
+ {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
+ {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
+ {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
+ {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
+ {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
+ {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
+ {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
+ {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
+ {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
+ {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
+ {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
+ {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
+ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
+ {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "html5lib"
+version = "1.1"
+description = "HTML parser based on the WHATWG HTML specification"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
+ {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
+]
+
+[package.dependencies]
+six = ">=1.9"
+webencodings = "*"
+
+[package.extras]
+all = ["chardet (>=2.2)", "genshi", "lxml"]
+chardet = ["chardet (>=2.2)"]
+genshi = ["genshi"]
+lxml = ["lxml"]
+
+[[package]]
+name = "httpcore"
+version = "1.0.2"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
+ {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
+]
+
+[package.dependencies]
+certifi = "*"
+h11 = ">=0.13,<0.15"
+
+[package.extras]
+asyncio = ["anyio (>=4.0,<5.0)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+trio = ["trio (>=0.22.0,<0.23.0)"]
+
+[[package]]
+name = "httpx"
+version = "0.26.0"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
+ {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
+]
+
+[package.dependencies]
+anyio = "*"
+certifi = "*"
+httpcore = "==1.*"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "identify"
+version = "2.5.34"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "identify-2.5.34-py2.py3-none-any.whl", hash = "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed"},
+ {file = "identify-2.5.34.tar.gz", hash = "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "importlib-metadata"
+version = "7.0.1"
+description = "Read metadata from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"},
+ {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"},
+]
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[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"]
+perf = ["ipython"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+
+[[package]]
+name = "importlib-resources"
+version = "6.1.1"
+description = "Read resources from Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"},
+ {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+]
+
+[[package]]
+name = "ipykernel"
+version = "6.29.2"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"},
+ {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.10.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"},
+ {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
+backcall = "*"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+pickleshare = "*"
+prompt-toolkit = ">=3.0.30,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.2"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"},
+ {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.10,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.10,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.21.1"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
+ {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.7.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"},
+ {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.2"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"},
+ {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"},
+]
+
+[package.dependencies]
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.5"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"},
+ {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.2"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"},
+ {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.1.1"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.1.1-py3-none-any.whl", hash = "sha256:fa3e8c18b804eac04e51ceebd9dd3dd396e08106816f0d09cc426799d7087632"},
+ {file = "jupyterlab-4.1.1.tar.gz", hash = "sha256:8acc9f561729d8f32c14c294c397917cddfeeb13a5d46f811979b71b4911a9fd"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+httpx = ">=0.25.0"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""}
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.2.0)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.2.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.1)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post6)", "matplotlib (==3.8.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.0)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.10"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"},
+ {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"},
+]
+
+[[package]]
+name = "lazy-object-proxy"
+version = "1.10.0"
+description = "A fast and thorough lazy object proxy."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
+ {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
+ {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
+ {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
+ {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
+ {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
+ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+]
+
+[[package]]
+name = "llama-index-core"
+version = "0.10.3"
+description = "Interface between LLMs and your data"
+optional = false
+python-versions = ">=3.8.1,<4.0"
+files = [
+ {file = "llama_index_core-0.10.3-py3-none-any.whl", hash = "sha256:711e2766cb1690a394a209dc6155d1b7a05b44fd6b7e08084d6b96c00bef5dd0"},
+ {file = "llama_index_core-0.10.3.tar.gz", hash = "sha256:5cced2c56bd640311835094fe6946ce6498e6d31dffcdb3df7583ff1aa3861b8"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.8.6,<4.0.0"
+dataclasses-json = "*"
+deprecated = ">=1.2.9.3"
+dirtyjson = ">=1.0.8,<2.0.0"
+fsspec = ">=2023.5.0"
+httpx = "*"
+nest-asyncio = ">=1.5.8,<2.0.0"
+networkx = ">=3.0"
+nltk = ">=3.8.1,<4.0.0"
+numpy = "*"
+openai = ">=1.1.0"
+pandas = "*"
+pillow = ">=9.0.0"
+PyYAML = ">=6.0.1"
+requests = ">=2.31.0"
+SQLAlchemy = {version = ">=1.4.49", extras = ["asyncio"]}
+tenacity = ">=8.2.0,<9.0.0"
+tiktoken = ">=0.3.3"
+tqdm = ">=4.66.1,<5.0.0"
+typing-extensions = ">=4.5.0"
+typing-inspect = ">=0.8.0"
+
+[package.extras]
+gradientai = ["gradientai (>=1.4.0)"]
+html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"]
+langchain = ["langchain (>=0.0.303)"]
+local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"]
+postgres = ["asyncpg (>=0.28.0,<0.29.0)", "pgvector (>=0.1.0,<0.2.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"]
+query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"]
+
+[[package]]
+name = "lxml"
+version = "5.1.0"
+description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"},
+ {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"},
+ {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"},
+ {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"},
+ {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"},
+ {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"},
+ {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"},
+ {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"},
+ {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"},
+ {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"},
+ {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"},
+ {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"},
+ {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"},
+ {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"},
+ {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"},
+ {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"},
+ {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"},
+ {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"},
+ {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"},
+ {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"},
+ {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"},
+ {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"},
+ {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"},
+ {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"},
+ {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"},
+ {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"},
+ {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"},
+ {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"},
+ {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"},
+ {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"},
+ {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"},
+ {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"},
+ {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"},
+ {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"},
+ {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"},
+ {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"},
+ {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"},
+ {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"},
+ {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"},
+ {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"},
+ {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"},
+ {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"},
+ {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"},
+ {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"},
+ {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"},
+ {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"},
+ {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"},
+ {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"},
+ {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"},
+ {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"},
+ {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"},
+ {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"},
+ {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"},
+ {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"},
+ {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"},
+ {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"},
+ {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"},
+ {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"},
+ {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"},
+ {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"},
+ {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"},
+ {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"},
+ {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"},
+ {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"},
+ {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"},
+ {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"},
+ {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"},
+ {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"},
+ {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"},
+ {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"},
+ {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"},
+ {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"},
+ {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"},
+ {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"},
+ {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"},
+ {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"},
+ {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"},
+ {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"},
+]
+
+[package.extras]
+cssselect = ["cssselect (>=0.7)"]
+html5 = ["html5lib"]
+htmlsoup = ["BeautifulSoup4"]
+source = ["Cython (>=3.0.7)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "marshmallow"
+version = "3.20.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "marshmallow-3.20.2-py3-none-any.whl", hash = "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9"},
+ {file = "marshmallow-3.20.2.tar.gz", hash = "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd"},
+]
+
+[package.dependencies]
+packaging = ">=17.0"
+
+[package.extras]
+dev = ["pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"]
+docs = ["alabaster (==0.7.15)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"]
+lint = ["pre-commit (>=2.4,<4.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "multidict"
+version = "6.0.5"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[[package]]
+name = "multitasking"
+version = "0.0.11"
+description = "Non-blocking Python methods using decorators"
+optional = false
+python-versions = "*"
+files = [
+ {file = "multitasking-0.0.11-py3-none-any.whl", hash = "sha256:1e5b37a5f8fc1e6cfaafd1a82b6b1cc6d2ed20037d3b89c25a84f499bd7b3dd4"},
+ {file = "multitasking-0.0.11.tar.gz", hash = "sha256:4d6bc3cc65f9b2dca72fb5a787850a88dae8f620c2b36ae9b55248e51bcd6026"},
+]
+
+[[package]]
+name = "mypy"
+version = "0.991"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"},
+ {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"},
+ {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"},
+ {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"},
+ {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"},
+ {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"},
+ {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"},
+ {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"},
+ {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"},
+ {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"},
+ {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"},
+ {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"},
+ {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"},
+ {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"},
+ {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"},
+ {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"},
+ {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"},
+ {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"},
+ {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"},
+ {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"},
+ {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"},
+ {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"},
+ {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"},
+ {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"},
+ {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"},
+ {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"},
+ {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.4.3"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = ">=3.10"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+python2 = ["typed-ast (>=1.4.0,<2)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.16.0"
+description = "Converting Jupyter Notebooks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"},
+ {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"},
+ {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"]
+developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"]
+doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"]
+test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "nltk"
+version = "3.8.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"},
+ {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "nodeenv"
+version = "1.8.0"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
+files = [
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
+]
+
+[package.dependencies]
+setuptools = "*"
+
+[[package]]
+name = "notebook"
+version = "7.1.0"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.1.0-py3-none-any.whl", hash = "sha256:a8fa4ccb5e5fe220f29d9900337efd7752bc6f2efe004d6f320db01f7743adc9"},
+ {file = "notebook-7.1.0.tar.gz", hash = "sha256:99caf01ff166b1cc86355c9b37c1ba9bf566c1d7fc4ab57bb6f8f24e36c4260e"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.1.1,<4.2"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.24.4"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
+ {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
+ {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
+ {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
+ {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
+ {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
+ {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
+ {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
+ {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
+ {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
+ {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
+ {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
+ {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
+ {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
+ {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
+ {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
+ {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
+ {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
+ {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
+]
+
+[[package]]
+name = "openai"
+version = "1.12.0"
+description = "The official Python library for the openai API"
+optional = false
+python-versions = ">=3.7.1"
+files = [
+ {file = "openai-1.12.0-py3-none-any.whl", hash = "sha256:a54002c814e05222e413664f651b5916714e4700d041d5cf5724d3ae1a3e3481"},
+ {file = "openai-1.12.0.tar.gz", hash = "sha256:99c5d257d09ea6533d689d1cc77caa0ac679fa21efef8893d8b0832a86877f1b"},
+]
+
+[package.dependencies]
+anyio = ">=3.5.0,<5"
+distro = ">=1.7.0,<2"
+httpx = ">=0.23.0,<1"
+pydantic = ">=1.9.0,<3"
+sniffio = "*"
+tqdm = ">4"
+typing-extensions = ">=4.7,<5"
+
+[package.extras]
+datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
+
+[[package]]
+name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.0.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.1"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
+aws = ["s3fs (>=2021.08.0)"]
+clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
+compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
+computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2021.07.0)"]
+gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"]
+hdf5 = ["tables (>=3.6.1)"]
+html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"]
+mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
+spss = ["pyreadstat (>=1.1.2)"]
+sql-other = ["SQLAlchemy (>=1.4.16)"]
+test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.6.3)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pathspec"
+version = "0.12.1"
+description = "Utility library for gitignore style pattern matching of file paths."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
+]
+
+[[package]]
+name = "peewee"
+version = "3.17.1"
+description = "a little orm"
+optional = false
+python-versions = "*"
+files = [
+ {file = "peewee-3.17.1.tar.gz", hash = "sha256:e009ac4227c4fdc0058a56e822ad5987684f0a1fbb20fed577200785102581c3"},
+]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pickleshare"
+version = "0.7.5"
+description = "Tiny 'shelve'-like database with concurrency support"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
+
+[[package]]
+name = "pillow"
+version = "10.2.0"
+description = "Python Imaging Library (Fork)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"},
+ {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"},
+ {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"},
+ {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"},
+ {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"},
+ {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"},
+ {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"},
+ {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"},
+ {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"},
+ {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"},
+ {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"},
+ {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"},
+ {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"},
+ {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"},
+ {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"},
+ {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"},
+ {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"},
+ {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"},
+ {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"},
+ {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"},
+ {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"},
+ {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"},
+ {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"},
+ {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"},
+ {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"},
+ {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"},
+ {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"},
+ {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"},
+ {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"},
+ {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"},
+ {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"},
+ {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"},
+ {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"},
+ {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+typing = ["typing-extensions"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+
+[[package]]
+name = "platformdirs"
+version = "4.2.0"
+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.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+ {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+]
+
+[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)"]
+
+[[package]]
+name = "pluggy"
+version = "1.4.0"
+description = "plugin and hook calling mechanisms for python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+ {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "pre-commit"
+version = "3.2.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pre_commit-3.2.0-py2.py3-none-any.whl", hash = "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a"},
+ {file = "pre_commit-3.2.0.tar.gz", hash = "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
+ {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "psutil"
+version = "5.9.8"
+description = "Cross-platform lib for process and system monitoring in Python."
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"},
+ {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"},
+ {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"},
+ {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"},
+ {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"},
+ {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"},
+ {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"},
+ {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"},
+ {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"},
+ {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"},
+ {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"},
+ {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"},
+ {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pydantic"
+version = "2.6.1"
+description = "Data validation using Python type hints"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"},
+ {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"},
+]
+
+[package.dependencies]
+annotated-types = ">=0.4.0"
+pydantic-core = "2.16.2"
+typing-extensions = ">=4.6.1"
+
+[package.extras]
+email = ["email-validator (>=2.0.0)"]
+
+[[package]]
+name = "pydantic-core"
+version = "2.16.2"
+description = ""
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"},
+ {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"},
+ {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"},
+ {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"},
+ {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"},
+ {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"},
+ {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"},
+ {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"},
+ {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"},
+ {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"},
+ {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"},
+ {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"},
+ {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"},
+ {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"},
+ {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"},
+ {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"},
+ {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"},
+ {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"},
+ {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pylint"
+version = "2.15.10"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.7.2"
+files = [
+ {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
+ {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+]
+
+[package.dependencies]
+astroid = ">=2.12.13,<=2.14.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = [
+ {version = ">=0.2", markers = "python_version < \"3.11\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+]
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+tomlkit = ">=0.10.1"
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pytest"
+version = "7.2.1"
+description = "pytest: simple powerful testing with Python"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"},
+ {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"},
+]
+
+[package.dependencies]
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-mock"
+version = "3.11.1"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
+ {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+]
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[package.extras]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2024.1"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.6"
+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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {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"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "referencing"
+version = "0.33.0"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"},
+ {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "regex"
+version = "2023.12.25"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
+ {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
+ {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
+ {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
+ {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
+ {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
+ {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
+ {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
+ {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
+ {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
+ {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
+ {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
+ {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
+ {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
+ {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
+ {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
+ {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
+ {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
+ {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
+ {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
+ {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
+ {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
+ {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
+ {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
+ {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
+ {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
+ {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
+ {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
+ {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
+ {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
+ {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
+ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
+]
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.18.0"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
+ {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
+ {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
+ {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
+ {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
+ {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
+ {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
+ {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
+ {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
+ {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
+ {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
+ {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
+ {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
+ {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
+ {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
+ {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
+ {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
+ {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
+ {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
+ {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
+ {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
+ {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
+ {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
+ {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
+ {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
+ {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
+ {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
+ {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
+ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
+]
+
+[[package]]
+name = "ruff"
+version = "0.0.292"
+description = "An extremely fast Python linter, written in Rust."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ruff-0.0.292-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96"},
+ {file = "ruff-0.0.292-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8"},
+ {file = "ruff-0.0.292-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_i686.whl", hash = "sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0"},
+ {file = "ruff-0.0.292-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016"},
+ {file = "ruff-0.0.292-py3-none-win32.whl", hash = "sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003"},
+ {file = "ruff-0.0.292-py3-none-win_amd64.whl", hash = "sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c"},
+ {file = "ruff-0.0.292-py3-none-win_arm64.whl", hash = "sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68"},
+ {file = "ruff-0.0.292.tar.gz", hash = "sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac"},
+]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "setuptools"
+version = "69.1.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
+ {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+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"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.27"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"},
+ {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"},
+ {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"},
+ {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"},
+ {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"},
+ {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"},
+ {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"},
+ {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"},
+ {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "tenacity"
+version = "8.2.3"
+description = "Retry code until it succeeds"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"},
+ {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"},
+]
+
+[package.extras]
+doc = ["reno", "sphinx", "tornado (>=4.5)"]
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "tiktoken"
+version = "0.6.0"
+description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"},
+ {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"},
+ {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"},
+ {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"},
+ {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"},
+ {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"},
+ {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"},
+ {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"},
+ {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"},
+ {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"},
+ {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"},
+ {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"},
+ {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"},
+ {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"},
+ {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"},
+ {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"},
+ {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"},
+ {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"},
+ {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"},
+ {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"},
+ {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"},
+ {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"},
+]
+
+[package.dependencies]
+regex = ">=2022.1.18"
+requests = ">=2.26.0"
+
+[package.extras]
+blobfile = ["blobfile (>=2)"]
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tokenize-rt"
+version = "5.2.0"
+description = "A wrapper around the stdlib `tokenize` which roundtrips."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"},
+ {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"},
+]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.12.3"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"},
+ {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"},
+]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.2"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
+ {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.1"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
+ {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.4"
+description = "Python bindings for the Tree-Sitter parsing library"
+optional = false
+python-versions = ">=3.3"
+files = [
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e"},
+ {file = "tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58"},
+ {file = "tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f"},
+ {file = "tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9d33a55598dd18a4d8b869a3417de82a4812c3a7dc7e61cb025ece3e9c3e4e96"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cee6955c2c97fc5927a41c7a8b06647c4b4d9b99b8a1581bf1183435c8cec3e"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5022bea67e479ad212be7c05b983a72e297a013efb4e8ea5b5b4d7da79a9fdef"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:640f60a5b966f0990338f1bf559455c3dcb822bc4329d82b3d42f32a48374dfe"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0e83f641fe6f27d91bd4d259fff5d35de1567d3f581b9efe9bbd5be50fe4ddc7"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win32.whl", hash = "sha256:ce6a85027c66fa3f09d482cc6d41927ea40955f7f33b86aedd26dd932709a2c9"},
+ {file = "tree_sitter-0.20.4-cp36-cp36m-win_amd64.whl", hash = "sha256:fe10779347a6c067af29cb37fd4b75fa96c5cb68f587cc9530b70fe3f2a51a55"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28d5f84e34e276887e3a240b60906ca7e2b51e975f3145c3149ceed977a69508"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c913b65cbe10996116988ac436748f24883b5097e58274223e89bb2c5d1bb1a"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecaed46241e071752195a628bb97d2b740f2fde9e34f8a74456a4ea8bb26df88"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b641e88a97eab002a1736d93ef5a4beac90ea4fd6e25affd1831319b99f456c9"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:327c40f439c6155e4eee54c4657e4701a04f5f4816d9defdcb836bf65bf83d21"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win32.whl", hash = "sha256:1b7c1d95f006b3de42fbf4045bd00c273d113e372fcb6a5378e74ed120c12032"},
+ {file = "tree_sitter-0.20.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6140d037239a41046f5d34fba5e0374ee697adb4b48b90579c618b5402781c11"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5"},
+ {file = "tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7"},
+ {file = "tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43"},
+ {file = "tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7eec3b55135fe851a38fa248c9fd75fc3d58ceb6e1865b795e416e4d598c2a1"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc76225529ee14a53e84413480ce81ec3c44eaa0455c140e961c90ac3118ead"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf0396e47efffc0b528959a8f2e2346a98297579f867e9e1834c2aad4be829c"},
+ {file = "tree_sitter-0.20.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a15fbabd3bc8e29c48289c156d743e69f5ec72bb125cf44f7adbdaa1937c3da6"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592"},
+ {file = "tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d"},
+ {file = "tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a"},
+ {file = "tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5"},
+]
+
+[[package]]
+name = "tree-sitter-languages"
+version = "1.10.2"
+description = "Binary Python wheels for all tree sitter languages."
+optional = false
+python-versions = "*"
+files = [
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5580348f0b20233b1d5431fa178ccd3d07423ca4a3275df02a44608fd72344b9"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:103c7466644486b1e9e03850df46fc6aa12f13ca636c74f173270276220ac80b"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d13db84511c6f1a7dc40383b66deafa74dabd8b877e3d65ab253f3719eccafd6"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57adfa32be7e465b54aa72f915f6c78a2b66b227df4f656b5d4fbd1ca7a92b3f"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6385e033e460ceb8f33f3f940335f422ef2b763700a04f0089391a68b56153"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dfa3f38cc5381c5aba01dd7494f59b8a9050e82ff6e06e1233e3a0cbae297e3c"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9f195155acf47f8bc5de7cee46ecd07b2f5697f007ba89435b51ef4c0b953ea5"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2de330e2ac6d7426ca025a3ec0f10d5640c3682c1d0c7702e812dcfb44b58120"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win32.whl", hash = "sha256:c9731cf745f135d9770eeba9bb4e2ff4dabc107b5ae9b8211e919f6b9100ea6d"},
+ {file = "tree_sitter_languages-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:6dd75851c41d0c3c4987a9b7692d90fa8848706c23115669d8224ffd6571e357"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7eb7d7542b2091c875fe52719209631fca36f8c10fa66970d2c576ae6a1b8289"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b41bcb00974b1c8a1800c7f1bb476a1d15a0463e760ee24872f2d53b08ee424"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f370cd7845c6c81df05680d5bd96db8a99d32b56f4728c5d05978911130a853"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1dc195c88ef4c72607e112a809a69190e096a2e5ebc6201548b3e05fdd169ad"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae34ac314a7170be24998a0f994c1ac80761d8d4bd126af27ee53a023d3b849"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01b5742d5f5bd675489486b582bd482215880b26dde042c067f8265a6e925d9c"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab1cbc46244d34fd16f21edaa20231b2a57f09f092a06ee3d469f3117e6eb954"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b1149e7467a4e92b8a70e6005fe762f880f493cf811fc003554b29f04f5e7c8"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win32.whl", hash = "sha256:049276343962f4696390ee555acc2c1a65873270c66a6cbe5cb0bca83bcdf3c6"},
+ {file = "tree_sitter_languages-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:7f3fdd468a577f04db3b63454d939e26e360229b53c80361920aa1ebf2cd7491"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c0f4c8b2734c45859edc7fcaaeaab97a074114111b5ba51ab4ec7ed52104763c"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eecd3c1244ac3425b7a82ba9125b4ddb45d953bbe61de114c0334fd89b7fe782"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15db3c8510bc39a80147ee7421bf4782c15c09581c1dc2237ea89cefbd95b846"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92c6487a6feea683154d3e06e6db68c30e0ae749a7ce4ce90b9e4e46b78c85c7"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2f1cd1d1bdd65332f9c2b67d49dcf148cf1ded752851d159ac3e5ee4f4d260"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:976c8039165b8e12f17a01ddee9f4e23ec6e352b165ad29b44d2bf04e2fbe77e"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dafbbdf16bf668a580902e1620f4baa1913e79438abcce721a50647564c687b9"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1aeabd3d60d6d276b73cd8f3739d595b1299d123cc079a317f1a5b3c5461e2ca"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win32.whl", hash = "sha256:fab8ee641914098e8933b87ea3d657bea4dd00723c1ee7038b847b12eeeef4f5"},
+ {file = "tree_sitter_languages-1.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e606430d736367e5787fa5a7a0c5a1ec9b85eded0b3596bbc0d83532a40810b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:838d5b48a7ed7a17658721952c77fda4570d2a069f933502653b17e15a9c39c9"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b3c71b1d278c2889e018ee77b8ee05c384e2e3334dec798f8b611c4ab2d1e"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa00abcb2c819027df58472da055d22fa7dfcb77c77413d8500c32ebe24d38b"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e102fbbf02322d9201a86a814e79a9734ac80679fdb9682144479044f401a73"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0b87cf1a7b03174ba18dfd81582be82bfed26803aebfe222bd20e444aba003"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0f1b9af9cb67f0b942b020da9fdd000aad5e92f2383ae0ba7a330b318d31912"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a4076c921f7a4d31e643843de7dfe040b65b63a238a5aa8d31d93aabe6572aa"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win32.whl", hash = "sha256:fa6391a3a5d83d32db80815161237b67d70576f090ce5f38339206e917a6f8bd"},
+ {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:55649d3f254585a064121513627cf9788c1cfdadbc5f097f33d5ba750685a4c0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f85d1edaa2d22d80d4ea5b6d12b95cf3644017b6c227d0d42854439e02e8893"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d78feed4a764ef3141cb54bf00fe94d514d8b6e26e09423e23b4c616fcb7938c"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1aca27531f9dd5308637d76643372856f0f65d0d28677d1bcf4211e8ed1ad0"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1031ea440dafb72237437d754eff8940153a3b051e3d18932ac25e75ce060a15"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99d3249beaef2c9fe558ecc9a97853c260433a849dcc68266d9770d196c2e102"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:59a4450f262a55148fb7e68681522f0c2a2f6b7d89666312a2b32708d8f416e1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ce74eab0e430370d5e15a96b6c6205f93405c177a8b2e71e1526643b2fb9bab1"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9b4dd2b6b3d24c85dffe33d6c343448869eaf4f41c19ddba662eb5d65d8808f4"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win32.whl", hash = "sha256:92d734fb968fe3927a7596d9f0459f81a8fa7b07e16569476b28e27d0d753348"},
+ {file = "tree_sitter_languages-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:46a13f7d38f2eeb75f7cf127d1201346093748c270d686131f0cbc50e42870a1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f8c6a936ae99fdd8857e91f86c11c2f5e507ff30631d141d98132bb7ab2c8638"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c283a61423f49cdfa7b5a5dfbb39221e3bd126fca33479cd80749d4d7a6b7349"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e60be6bdcff923386a54a5edcb6ff33fc38ab0118636a762024fa2bc98de55"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c00069f9575bd831eabcce2cdfab158dde1ed151e7e5614c2d985ff7d78a7de1"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ff53203d8a43ccb19bb322fa2fb200d764001cc037793f1fadd714bb343da"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26fe7c9c412e4141dea87ea4b3592fd12e385465b5bdab106b0d5125754d4f60"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8fed27319957458340f24fe14daad467cd45021da034eef583519f83113a8c5e"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3657a491a7f96cc75a3568ddd062d25f3be82b6a942c68801a7b226ff7130181"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win32.whl", hash = "sha256:33f7d584d01a7a3c893072f34cfc64ec031f3cfe57eebc32da2f8ac046e101a7"},
+ {file = "tree_sitter_languages-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:1b944af3ee729fa70fc8ae82224a9ff597cdb63addea084e0ea2fa2b0ec39bb7"},
+]
+
+[package.dependencies]
+tree-sitter = "*"
+
+[[package]]
+name = "types-deprecated"
+version = "1.2.9.20240106"
+description = "Typing stubs for Deprecated"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-Deprecated-1.2.9.20240106.tar.gz", hash = "sha256:afeb819e9a03d0a5795f18c88fe6207c48ed13c639e93281bd9d9b7bb6d34310"},
+ {file = "types_Deprecated-1.2.9.20240106-py3-none-any.whl", hash = "sha256:9dcb258493b5be407574ee21e50ddac9e429072d39b576126bf1ac00764fb9a8"},
+]
+
+[[package]]
+name = "types-docutils"
+version = "0.20.0.20240201"
+description = "Typing stubs for docutils"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-docutils-0.20.0.20240201.tar.gz", hash = "sha256:ba4bfd4ff6dd19640ba7ab5d93900393a65897880f3650997964a943f4e79a6b"},
+ {file = "types_docutils-0.20.0.20240201-py3-none-any.whl", hash = "sha256:79d3bcef235f7c81a63f4f3dcf1d0b138985079bb32d02f5a7d266e1f9f361ba"},
+]
+
+[[package]]
+name = "types-protobuf"
+version = "4.24.0.20240129"
+description = "Typing stubs for protobuf"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"},
+ {file = "types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"},
+]
+
+[[package]]
+name = "types-pyopenssl"
+version = "24.0.0.20240130"
+description = "Typing stubs for pyOpenSSL"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-pyOpenSSL-24.0.0.20240130.tar.gz", hash = "sha256:c812e5c1c35249f75ef5935708b2a997d62abf9745be222e5f94b9595472ab25"},
+ {file = "types_pyOpenSSL-24.0.0.20240130-py3-none-any.whl", hash = "sha256:24a255458b5b8a7fca8139cf56f2a8ad5a4f1a5f711b73a5bb9cb50dc688fab5"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.20240106"
+description = "Typing stubs for python-dateutil"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"},
+ {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"},
+]
+
+[[package]]
+name = "types-pyyaml"
+version = "6.0.12.12"
+description = "Typing stubs for PyYAML"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+ {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+]
+
+[[package]]
+name = "types-redis"
+version = "4.5.5.0"
+description = "Typing stubs for redis"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-redis-4.5.5.0.tar.gz", hash = "sha256:26547d91f011a4024375d9216cd4d917b4678c984201d46f72c604526c138523"},
+ {file = "types_redis-4.5.5.0-py3-none-any.whl", hash = "sha256:c7132e0cedeb52a83d20138c0440721bfae89cd2027c1ef57a294b56dfde4ee8"},
+]
+
+[package.dependencies]
+cryptography = ">=35.0.0"
+types-pyOpenSSL = "*"
+
+[[package]]
+name = "types-requests"
+version = "2.28.11.8"
+description = "Typing stubs for requests"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
+ {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
+]
+
+[package.dependencies]
+types-urllib3 = "<1.27"
+
+[[package]]
+name = "types-setuptools"
+version = "67.1.0.0"
+description = "Typing stubs for setuptools"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-setuptools-67.1.0.0.tar.gz", hash = "sha256:162a39d22e3a5eb802197c84f16b19e798101bbd33d9437837fbb45627da5627"},
+ {file = "types_setuptools-67.1.0.0-py3-none-any.whl", hash = "sha256:5bd7a10d93e468bfcb10d24cb8ea5e12ac4f4ac91267293959001f1448cf0619"},
+]
+
+[package.dependencies]
+types-docutils = "*"
+
+[[package]]
+name = "types-urllib3"
+version = "1.26.25.14"
+description = "Typing stubs for urllib3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"},
+ {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "typing-inspect"
+version = "0.9.0"
+description = "Runtime inspection utilities for typing module."
+optional = false
+python-versions = "*"
+files = [
+ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"},
+ {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=0.3.0"
+typing-extensions = ">=3.7.4"
+
+[[package]]
+name = "tzdata"
+version = "2024.1"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
+ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.2.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
+ {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+h2 = ["h2 (>=4,<5)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "virtualenv"
+version = "20.25.0"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
+ {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.13"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
+ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+]
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.10"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"},
+ {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"},
+]
+
+[[package]]
+name = "wrapt"
+version = "1.16.0"
+description = "Module for decorators, wrappers and monkey patching."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
+ {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
+ {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
+ {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
+ {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
+ {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
+ {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
+ {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
+ {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
+ {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
+ {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
+ {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
+ {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
+ {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
+ {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
+ {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
+ {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
+ {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
+ {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
+ {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
+ {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
+ {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
+ {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
+ {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
+ {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
+ {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
+ {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
+ {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
+ {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
+ {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
+ {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
+ {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
+ {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
+ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.4"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+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"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
+[[package]]
+name = "yfinance"
+version = "0.2.36"
+description = "Download market data from Yahoo! Finance API"
+optional = false
+python-versions = "*"
+files = [
+ {file = "yfinance-0.2.36-py2.py3-none-any.whl", hash = "sha256:700f8b8fb51d4f7ca31bcef042175be68b2f39ed680a99170163e5f54874e2a6"},
+ {file = "yfinance-0.2.36.tar.gz", hash = "sha256:5367c0538cf57bb0dd393ca24866cda1ab5d4aba47e375e549760652a4a19fc2"},
+]
+
+[package.dependencies]
+appdirs = ">=1.4.4"
+beautifulsoup4 = ">=4.11.1"
+frozendict = ">=2.3.4"
+html5lib = ">=1.1"
+lxml = ">=4.9.1"
+multitasking = ">=0.0.7"
+numpy = ">=1.16.5"
+pandas = ">=1.3.0"
+peewee = ">=3.16.2"
+pytz = ">=2022.5"
+requests = ">=2.31"
+
+[package.extras]
+nospam = ["requests-cache (>=1.0)", "requests-ratelimiter (>=0.3.1)"]
+repair = ["scipy (>=1.6.3)"]
+
+[[package]]
+name = "zipp"
+version = "3.17.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
+]
+
+[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 = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = ">=3.8.1,<3.12"
+content-hash = "54827237dd9c977d522b9fcad58cd68e2c92fec821ad678ae48a6a5474c2a525"
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml
new file mode 100644
index 0000000000000..e007c5d4b1f94
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml
@@ -0,0 +1,48 @@
+[build-system]
+build-backend = "poetry.core.masonry.api"
+requires = ["poetry-core"]
+
+[tool.codespell]
+check-filenames = true
+check-hidden = true
+skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
+
+[tool.mypy]
+disallow_untyped_defs = true
+# Remove venv skip when integrated with pre-commit
+exclude = ["_static", "build", "examples", "notebooks", "venv"]
+ignore_missing_imports = true
+python_version = "3.8"
+
+[tool.poetry]
+authors = ["Your Name "]
+description = "llama-index tools yahoo_finance integration"
+license = "MIT"
+name = "llama-index-tools-yahoo-finance"
+packages = [{include = "llama_index/"}]
+readme = "README.md"
+version = "0.1.0"
+
+[tool.poetry.dependencies]
+python = ">=3.8.1,<3.12"
+llama-index-core = "^0.10.0"
+yfinance = "^0.2.36"
+
+[tool.poetry.group.dev.dependencies]
+black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
+codespell = {extras = ["toml"], version = ">=v2.2.6"}
+ipython = "8.10.0"
+jupyter = "^1.0.0"
+mypy = "0.991"
+pre-commit = "3.2.0"
+pylint = "2.15.10"
+pytest = "7.2.1"
+pytest-mock = "3.11.1"
+ruff = "0.0.292"
+tree-sitter-languages = "^1.8.0"
+types-Deprecated = ">=0.1.0"
+types-PyYAML = "^6.0.12.12"
+types-protobuf = "^4.24.0.4"
+types-redis = "4.5.5.0"
+types-requests = "2.28.11.8"
+types-setuptools = "67.1.0.0"
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/BUILD b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/BUILD
new file mode 100644
index 0000000000000..dabf212d7e716
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/BUILD
@@ -0,0 +1 @@
+python_tests()
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/__init__.py b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/test_tools_yahoo_finance.py b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/test_tools_yahoo_finance.py
new file mode 100644
index 0000000000000..5b2ada4b4cf64
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/tests/test_tools_yahoo_finance.py
@@ -0,0 +1,7 @@
+from llama_index.core.tools.tool_spec.base import BaseToolSpec
+from llama_index.tools.yahoo_finance import YahooFinanceToolSpec
+
+
+def test_class():
+ names_of_base_classes = [b.__name__ for b in YahooFinanceToolSpec.__mro__]
+ assert BaseToolSpec.__name__ in names_of_base_classes
diff --git a/llama-index-integrations/tools/llama-index-tools-yelp/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-yelp/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-yelp/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml
index 47630933604c2..68958994b172a 100644
--- a/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools yelp integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-yelp"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/tools/llama-index-tools-zapier/CHANGELOG.md b/llama-index-integrations/tools/llama-index-tools-zapier/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-integrations/tools/llama-index-tools-zapier/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml
index 7dc17d5c7c4bb..dc6fe869686fa 100644
--- a/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml
@@ -22,9 +22,10 @@ python_version = "3.8"
authors = ["Your Name "]
description = "llama-index tools zapier integration"
license = "MIT"
+maintainers = ["ajhofmann"]
name = "llama-index-tools-zapier"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py
index 16a51c6532452..b81e5e5512761 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/llama_index/vector_stores/azureaisearch/base.py
@@ -143,14 +143,14 @@ def _create_index(self, index_name: Optional[str]) -> None:
SearchableField(
name=self._field_mapping["chunk"],
type="Edm.String",
- analyzer_name="en.microsoft",
+ analyzer_name=self.language_analyzer,
),
SearchField(
name=self._field_mapping["embedding"],
type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
searchable=True,
vector_search_dimensions=self.embedding_dimensionality,
- vector_search_profile_name="default",
+ vector_search_profile_name=self.vector_profile_name,
),
SimpleField(name=self._field_mapping["metadata"], type="Edm.String"),
SimpleField(
@@ -243,6 +243,10 @@ def __init__(
] = None,
index_management: IndexManagement = IndexManagement.NO_VALIDATION,
embedding_dimensionality: int = 1536,
+ vector_algorithm_type: str = "exhaustiveKnn",
+ # If we have content in other languages, it is better to enable the language analyzer to be adjusted in searchable fields.
+ # https://learn.microsoft.com/en-us/azure/search/index-add-language-analyzers
+ language_analyzer: str = "en.lucene",
**kwargs: Any,
) -> None:
# ruff: noqa: E501
@@ -306,6 +310,16 @@ def __init__(
self._search_client: SearchClient = cast(SearchClient, None)
self.embedding_dimensionality = embedding_dimensionality
+ if vector_algorithm_type == "exhaustiveKnn":
+ self.vector_profile_name = "myExhaustiveKnnProfile"
+ elif vector_algorithm_type == "hnsw":
+ self.vector_profile_name = "myHnswProfile"
+ else:
+ raise ValueError(
+ "Only 'exhaustiveKnn' and 'hnsw' are supported for vector_algorithm_type"
+ )
+
+ self.language_analyzer = language_analyzer
# Validate search_or_index_client
if search_or_index_client is not None:
if isinstance(search_or_index_client, SearchIndexClient):
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
index 5dc3d8f03f296..db2698e58d185 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index vector_stores azureaisearch integration"
license = "MIT"
name = "llama-index-vector-stores-azureaisearch"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/tests/test_chromadb.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/tests/test_chromadb.py
index d0d718dda9ba8..ccf10b02eacc3 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/tests/test_chromadb.py
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/tests/test_chromadb.py
@@ -1,16 +1,12 @@
import os
-from typing import Dict, List
+from typing import Dict, List, Generator
import pytest
from llama_index.core.schema import NodeRelationship, RelatedNodeInfo, TextNode
-from llama_index.core.vector_stores.types import VectorStoreQuery
from llama_index.vector_stores.chroma import ChromaVectorStore
+from llama_index.core.vector_stores.types import VectorStoreQuery
##
-# Start chromadb locally
-# cd tests
-# docker-compose up
-#
# Run tests
# cd tests/vector_stores
# pytest test_chromadb.py
@@ -29,20 +25,19 @@
conn__ = chromadb.HttpClient(**PARAMS) # type: ignore
conn__.get_or_create_collection(COLLECTION_NAME)
- chromadb_not_available = False
+ http_client_chromadb_mode = True
except (ImportError, Exception):
- chromadb_not_available = True
+ http_client_chromadb_mode = False
-@pytest.mark.skipif(chromadb_not_available, reason="chromadb is not available")
-def test_instance_creation_from_collection() -> None:
- connection = chromadb.HttpClient(**PARAMS)
- collection = connection.get_collection(COLLECTION_NAME)
- store = ChromaVectorStore.from_collection(collection)
- assert isinstance(store, ChromaVectorStore)
-
-
-@pytest.mark.skipif(chromadb_not_available, reason="chromadb is not available")
+# To test chromadb http-client functionality do:
+# cd tests
+# docker-compose up
+#
+@pytest.mark.skipif(
+ http_client_chromadb_mode is False,
+ reason="chromadb is not running in http client mode",
+)
def test_instance_creation_from_http_params() -> None:
store = ChromaVectorStore.from_params(
host=PARAMS["host"],
@@ -53,7 +48,13 @@ def test_instance_creation_from_http_params() -> None:
assert isinstance(store, ChromaVectorStore)
-@pytest.mark.skipif(chromadb_not_available, reason="chromadb is not available")
+def test_instance_creation_from_collection() -> None:
+ chroma_client = chromadb.Client()
+ collection = chroma_client.get_or_create_collection(COLLECTION_NAME)
+ store = ChromaVectorStore.from_collection(collection)
+ assert isinstance(store, ChromaVectorStore)
+
+
def test_instance_creation_from_persist_dir() -> None:
store = ChromaVectorStore.from_params(
persist_dir="./data",
@@ -64,10 +65,11 @@ def test_instance_creation_from_persist_dir() -> None:
@pytest.fixture()
-def vector_store() -> ChromaVectorStore:
- connection = chromadb.HttpClient(**PARAMS)
- collection = connection.get_collection(COLLECTION_NAME)
- return ChromaVectorStore(chroma_collection=collection)
+def vector_store() -> Generator[ChromaVectorStore, None, None]:
+ chroma_client = chromadb.Client()
+ collection = chroma_client.get_or_create_collection(COLLECTION_NAME)
+ yield ChromaVectorStore(chroma_collection=collection)
+ chroma_client.delete_collection(name=COLLECTION_NAME)
@pytest.fixture(scope="session")
@@ -106,7 +108,7 @@ def node_embeddings() -> List[TextNode]:
text="I was taught that the way of progress was neither swift nor easy.",
id_="0b31ae71-b797-4e88-8495-031371a7752e",
relationships={NodeRelationship.SOURCE: RelatedNodeInfo(node_id="text-3")},
- metadate={
+ metadata={
"author": "Marie Curie",
},
embedding=[0.0, 0.0, 0.9],
@@ -118,7 +120,7 @@ def node_embeddings() -> List[TextNode]:
),
id_="bd2e080b-159a-4030-acc3-d98afd2ba49b",
relationships={NodeRelationship.SOURCE: RelatedNodeInfo(node_id="text-4")},
- metadate={
+ metadata={
"author": "Albert Einstein",
},
embedding=[0.0, 0.0, 0.5],
@@ -130,7 +132,7 @@ def node_embeddings() -> List[TextNode]:
),
id_="f658de3b-8cef-4d1c-8bed-9a263c907251",
relationships={NodeRelationship.SOURCE: RelatedNodeInfo(node_id="text-5")},
- metadate={
+ metadata={
"author": "Charlotte Bronte",
},
embedding=[0.0, 0.0, 0.3],
@@ -138,7 +140,6 @@ def node_embeddings() -> List[TextNode]:
]
-@pytest.mark.skipif(chromadb_not_available, reason="chromadb is not available")
@pytest.mark.asyncio()
@pytest.mark.parametrize("use_async", [True, False])
async def test_add_to_chromadb_and_query(
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/llama_index/vector_stores/deeplake/base.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/llama_index/vector_stores/deeplake/base.py
index 4a6d96b19c332..734da12f31b61 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/llama_index/vector_stores/deeplake/base.py
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/llama_index/vector_stores/deeplake/base.py
@@ -69,37 +69,24 @@ def __init__(
) -> None:
"""
Args:
- dataset_path (str): Path to the deeplake dataset, where data will be
- stored. Defaults to "llama_index".
- overwrite (bool, optional): Whether to overwrite existing dataset with same
- name. Defaults to False.
- token (str, optional): the deeplake token that allows you to access the
- dataset with proper access. Defaults to None.
- read_only (bool, optional): Whether to open the dataset with read only mode.
- ingestion_batch_size (int): used for controlling batched data
- ingestion to deeplake dataset. Defaults to 1024.
+ dataset_path (str): The full path for storing to the Deep Lake Vector Store. It can be:
+ - a Deep Lake cloud path of the form ``hub://org_id/dataset_name``. Requires registration with Deep Lake.
+ - an s3 path of the form ``s3://bucketname/path/to/dataset``. Credentials are required in either the environment or passed to the creds argument.
+ - a local file system path of the form ``./path/to/dataset`` or ``~/path/to/dataset`` or ``path/to/dataset``.
+ - a memory path of the form ``mem://path/to/dataset`` which doesn't save the dataset but keeps it in memory instead. Should be used only for testing as it does not persist.
+ Defaults to "llama_index".
+ overwrite (bool, optional): If set to True this overwrites the Vector Store if it already exists. Defaults to False.
+ token (str, optional): Activeloop token, used for fetching user credentials. This is Optional, tokens are normally autogenerated. Defaults to None.
+ read_only (bool, optional): Opens dataset in read-only mode if True. Defaults to False.
+ ingestion_batch_size (int): During data ingestion, data is divided
+ into batches. Batch size is the size of each batch. Defaults to 1024.
ingestion_num_workers (int): number of workers to use during data ingestion.
Defaults to 4.
- overwrite (bool): Whether to overwrite existing dataset with the
- new dataset with the same name.
- exec_option (str): Default method for search execution. It could be either
- It could be either ``"python"``, ``"compute_engine"`` or
- ``"tensor_db"``. Defaults to ``"python"``.
- - ``python`` - Pure-python implementation that runs on the client and
- can be used for data stored anywhere. WARNING: using this option
- with big datasets is discouraged because it can lead to memory
- issues.
- - ``compute_engine`` - Performant C++ implementation of the Deep Lake
- Compute Engine that runs on the client and can be used for any data
- stored in or connected to Deep Lake. It cannot be used with
- in-memory or local datasets.
- - ``tensor_db`` - Performant and fully-hosted Managed Tensor Database
- that is responsible for storage and query execution. Only available
- for data stored in the Deep Lake Managed Database. Store datasets in
- this database by specifying runtime = {"tensor_db": True} during
- dataset creation.
- verbose (bool): Specify if verbose output is enabled. Default is True.
- **kwargs (Any): Additional keyword arguments.
+ exec_option (str): Default method for search execution. It could be either ``"auto"``, ``"python"``, ``"compute_engine"`` or ``"tensor_db"``. Defaults to ``"auto"``. If None, it's set to "auto".
+ - ``auto``- Selects the best execution method based on the storage location of the Vector Store. It is the default option.
+ - ``python`` - Pure-python implementation that runs on the client and can be used for data stored anywhere. WARNING: using this option with big datasets is discouraged because it can lead to memory issues.
+ - ``compute_engine`` - Performant C++ implementation of the Deep Lake Compute Engine that runs on the client and can be used for any data stored in or connected to Deep Lake. It cannot be used with in-memory or local datasets.
+ - ``tensor_db`` - Performant and fully-hosted Managed Tensor Database that is responsible for storage and query execution. Only available for data stored in the Deep Lake Managed Database. Store datasets in this database by specifying runtime = {"tensor_db": True} during dataset creation.
Raises:
ImportError: Unable to import `deeplake`.
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/llama_index/vector_stores/mongodb/base.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/llama_index/vector_stores/mongodb/base.py
index abd3776fecbaa..c883a3e39ae68 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/llama_index/vector_stores/mongodb/base.py
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/llama_index/vector_stores/mongodb/base.py
@@ -9,10 +9,11 @@
from importlib.metadata import version
from typing import Any, Dict, List, Optional, cast
+from llama_index.core.bridge.pydantic import PrivateAttr
from llama_index.core.schema import BaseNode, MetadataMode, TextNode
from llama_index.core.vector_stores.types import (
MetadataFilters,
- VectorStore,
+ BasePydanticVectorStore,
VectorStoreQuery,
VectorStoreQueryResult,
)
@@ -35,7 +36,7 @@ def _to_mongodb_filter(standard_filters: MetadataFilters) -> Dict:
return filters
-class MongoDBAtlasVectorSearch(VectorStore):
+class MongoDBAtlasVectorSearch(BasePydanticVectorStore):
"""MongoDB Atlas Vector Store.
To use, you should have both:
@@ -48,6 +49,15 @@ class MongoDBAtlasVectorSearch(VectorStore):
stores_text: bool = True
flat_metadata: bool = True
+ _mongodb_client: Any = PrivateAttr()
+ _collection: Any = PrivateAttr()
+ _index_name: str = PrivateAttr()
+ _embedding_key: str = PrivateAttr()
+ _id_key: str = PrivateAttr()
+ _text_key: str = PrivateAttr()
+ _metadata_key: str = PrivateAttr()
+ _insert_kwargs: Dict = PrivateAttr()
+
def __init__(
self,
mongodb_client: Optional[Any] = None,
@@ -97,6 +107,8 @@ def __init__(
self._metadata_key = metadata_key
self._insert_kwargs = insert_kwargs or {}
+ super().__init__()
+
def add(
self,
nodes: List[BaseNode],
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml
index 1fd00c14843fe..de01ba5aae5e6 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml
@@ -24,7 +24,7 @@ description = "llama-index vector_stores mongodb integration"
license = "MIT"
name = "llama-index-vector-stores-mongodb"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.3"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/tests/test_vector_stores_mongodb.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/tests/test_vector_stores_mongodb.py
index 88017acc967ff..4066dae44415f 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/tests/test_vector_stores_mongodb.py
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/tests/test_vector_stores_mongodb.py
@@ -1,7 +1,7 @@
-from llama_index.core.vector_stores.types import VectorStore
+from llama_index.core.vector_stores.types import BasePydanticVectorStore
from llama_index.vector_stores.mongodb import MongoDBAtlasVectorSearch
def test_class():
names_of_base_classes = [b.__name__ for b in MongoDBAtlasVectorSearch.__mro__]
- assert VectorStore.__name__ in names_of_base_classes
+ assert BasePydanticVectorStore.__name__ in names_of_base_classes
diff --git a/llama-index-legacy/llama_index/legacy/callbacks/__init__.py b/llama-index-legacy/llama_index/legacy/callbacks/__init__.py
index 097353e3bd341..d419baa947969 100644
--- a/llama-index-legacy/llama_index/legacy/callbacks/__init__.py
+++ b/llama-index-legacy/llama_index/legacy/callbacks/__init__.py
@@ -5,6 +5,7 @@
from .open_inference_callback import OpenInferenceCallbackHandler
from .schema import CBEvent, CBEventType, EventPayload
from .token_counting import TokenCountingHandler
+from .uptrain_callback import UpTrainCallbackHandler
from .utils import trace_method
from .wandb_callback import WandbCallbackHandler
@@ -21,4 +22,5 @@
"OpenAIFineTuningHandler",
"GradientAIFineTuningHandler",
"trace_method",
+ "UpTrainCallbackHandler",
]
diff --git a/llama-index-legacy/llama_index/legacy/callbacks/global_handlers.py b/llama-index-legacy/llama_index/legacy/callbacks/global_handlers.py
index f191de2181bda..c52ed3ed354f1 100644
--- a/llama-index-legacy/llama_index/legacy/callbacks/global_handlers.py
+++ b/llama-index-legacy/llama_index/legacy/callbacks/global_handlers.py
@@ -14,6 +14,7 @@
)
from llama_index.legacy.callbacks.promptlayer_handler import PromptLayerHandler
from llama_index.legacy.callbacks.simple_llm_handler import SimpleLLMHandler
+from llama_index.legacy.callbacks.uptrain_callback import UpTrainCallbackHandler
from llama_index.legacy.callbacks.wandb_callback import WandbCallbackHandler
@@ -40,6 +41,8 @@ def create_global_handler(eval_mode: str, **eval_params: Any) -> BaseCallbackHan
handler = deepeval_callback_handler(**eval_params)
elif eval_mode == "simple":
handler = SimpleLLMHandler(**eval_params)
+ elif eval_mode == "uptrain":
+ handler = UpTrainCallbackHandler(**eval_params)
elif eval_mode == "argilla":
handler = argilla_callback_handler(**eval_params)
else:
diff --git a/llama-index-legacy/llama_index/legacy/indices/knowledge_graph/base.py b/llama-index-legacy/llama_index/legacy/indices/knowledge_graph/base.py
index a09fd5b937789..6d94aad25ee13 100644
--- a/llama-index-legacy/llama_index/legacy/indices/knowledge_graph/base.py
+++ b/llama-index-legacy/llama_index/legacy/indices/knowledge_graph/base.py
@@ -217,17 +217,25 @@ def _insert(self, nodes: Sequence[BaseNode], **insert_kwargs: Any) -> None:
)
self._index_struct.add_to_embedding_dict(triplet_str, rel_embedding)
- def upsert_triplet(self, triplet: Tuple[str, str, str]) -> None:
- """Insert triplets.
+ def upsert_triplet(
+ self, triplet: Tuple[str, str, str], include_embeddings: bool = False
+ ) -> None:
+ """Insert triplets and optionally embeddings.
Used for manual insertion of KG triplets (in the form
of (subject, relationship, object)).
Args:
- triplet (str): Knowledge triplet
-
+ triplet (tuple): Knowledge triplet
+ embedding (Any, optional): Embedding option for the triplet. Defaults to None.
"""
self._graph_store.upsert_triplet(*triplet)
+ triplet_str = str(triplet)
+ if include_embeddings:
+ set_embedding = self._service_context.embed_model.get_text_embedding(
+ triplet_str
+ )
+ self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def add_node(self, keywords: List[str], node: BaseNode) -> None:
"""Add node.
@@ -243,7 +251,10 @@ def add_node(self, keywords: List[str], node: BaseNode) -> None:
self._docstore.add_documents([node], allow_update=True)
def upsert_triplet_and_node(
- self, triplet: Tuple[str, str, str], node: BaseNode
+ self,
+ triplet: Tuple[str, str, str],
+ node: BaseNode,
+ include_embeddings: bool = False,
) -> None:
"""Upsert KG triplet and node.
@@ -254,11 +265,18 @@ def upsert_triplet_and_node(
Args:
keywords (List[str]): Keywords to index the node.
node (Node): Node to be indexed.
+ include_embeddings (bool): Option to add embeddings for triplets. Defaults to False
"""
subj, _, obj = triplet
self.upsert_triplet(triplet)
self.add_node([subj, obj], node)
+ triplet_str = str(triplet)
+ if include_embeddings:
+ set_embedding = self._service_context.embed_model.get_text_embedding(
+ triplet_str
+ )
+ self._index_struct.add_to_embedding_dict(str(triplet), set_embedding)
def _delete_node(self, node_id: str, **delete_kwargs: Any) -> None:
"""Delete a node."""
diff --git a/llama-index-legacy/tests/agent/custom/BUILD b/llama-index-legacy/tests/agent/custom/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/agent/custom/BUILD
+++ b/llama-index-legacy/tests/agent/custom/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/agent/openai/BUILD b/llama-index-legacy/tests/agent/openai/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/agent/openai/BUILD
+++ b/llama-index-legacy/tests/agent/openai/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/agent/react/BUILD b/llama-index-legacy/tests/agent/react/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/agent/react/BUILD
+++ b/llama-index-legacy/tests/agent/react/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/agent/runner/BUILD b/llama-index-legacy/tests/agent/runner/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/agent/runner/BUILD
+++ b/llama-index-legacy/tests/agent/runner/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/callbacks/BUILD b/llama-index-legacy/tests/callbacks/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/callbacks/BUILD
+++ b/llama-index-legacy/tests/callbacks/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/chat_engine/BUILD b/llama-index-legacy/tests/chat_engine/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/chat_engine/BUILD
+++ b/llama-index-legacy/tests/chat_engine/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/embeddings/BUILD b/llama-index-legacy/tests/embeddings/BUILD
index c961ee65a4ae1..4fd9889d4d4b4 100644
--- a/llama-index-legacy/tests/embeddings/BUILD
+++ b/llama-index-legacy/tests/embeddings/BUILD
@@ -2,6 +2,7 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-legacy/tests/evaluation/BUILD b/llama-index-legacy/tests/evaluation/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/evaluation/BUILD
+++ b/llama-index-legacy/tests/evaluation/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/extractors/BUILD b/llama-index-legacy/tests/extractors/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/extractors/BUILD
+++ b/llama-index-legacy/tests/extractors/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/finetuning/BUILD b/llama-index-legacy/tests/finetuning/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/finetuning/BUILD
+++ b/llama-index-legacy/tests/finetuning/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/BUILD b/llama-index-legacy/tests/indices/BUILD
index f48e68990b6ae..829c31b3437a6 100644
--- a/llama-index-legacy/tests/indices/BUILD
+++ b/llama-index-legacy/tests/indices/BUILD
@@ -6,4 +6,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/composability/BUILD b/llama-index-legacy/tests/indices/composability/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/indices/composability/BUILD
+++ b/llama-index-legacy/tests/indices/composability/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/document_summary/BUILD b/llama-index-legacy/tests/indices/document_summary/BUILD
index f48e68990b6ae..829c31b3437a6 100644
--- a/llama-index-legacy/tests/indices/document_summary/BUILD
+++ b/llama-index-legacy/tests/indices/document_summary/BUILD
@@ -6,4 +6,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/empty/BUILD b/llama-index-legacy/tests/indices/empty/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/indices/empty/BUILD
+++ b/llama-index-legacy/tests/indices/empty/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/keyword_table/BUILD b/llama-index-legacy/tests/indices/keyword_table/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/indices/keyword_table/BUILD
+++ b/llama-index-legacy/tests/indices/keyword_table/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/knowledge_graph/BUILD b/llama-index-legacy/tests/indices/knowledge_graph/BUILD
index f48e68990b6ae..829c31b3437a6 100644
--- a/llama-index-legacy/tests/indices/knowledge_graph/BUILD
+++ b/llama-index-legacy/tests/indices/knowledge_graph/BUILD
@@ -6,4 +6,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/list/BUILD b/llama-index-legacy/tests/indices/list/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/indices/list/BUILD
+++ b/llama-index-legacy/tests/indices/list/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/managed/BUILD b/llama-index-legacy/tests/indices/managed/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/indices/managed/BUILD
+++ b/llama-index-legacy/tests/indices/managed/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/query/BUILD b/llama-index-legacy/tests/indices/query/BUILD
index f48e68990b6ae..829c31b3437a6 100644
--- a/llama-index-legacy/tests/indices/query/BUILD
+++ b/llama-index-legacy/tests/indices/query/BUILD
@@ -6,4 +6,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/query/query_transform/BUILD b/llama-index-legacy/tests/indices/query/query_transform/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/indices/query/query_transform/BUILD
+++ b/llama-index-legacy/tests/indices/query/query_transform/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/response/BUILD b/llama-index-legacy/tests/indices/response/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/indices/response/BUILD
+++ b/llama-index-legacy/tests/indices/response/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/struct_store/BUILD b/llama-index-legacy/tests/indices/struct_store/BUILD
index f48e68990b6ae..829c31b3437a6 100644
--- a/llama-index-legacy/tests/indices/struct_store/BUILD
+++ b/llama-index-legacy/tests/indices/struct_store/BUILD
@@ -6,4 +6,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/indices/tree/BUILD b/llama-index-legacy/tests/indices/tree/BUILD
index 40ac166288421..7107a6517aef4 100644
--- a/llama-index-legacy/tests/indices/tree/BUILD
+++ b/llama-index-legacy/tests/indices/tree/BUILD
@@ -4,6 +4,7 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
python_sources()
diff --git a/llama-index-legacy/tests/indices/vector_store/BUILD b/llama-index-legacy/tests/indices/vector_store/BUILD
index de9a3569f120d..a88e9ef158b72 100644
--- a/llama-index-legacy/tests/indices/vector_store/BUILD
+++ b/llama-index-legacy/tests/indices/vector_store/BUILD
@@ -4,6 +4,7 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-legacy/tests/indices/vector_store/auto_retriever/BUILD b/llama-index-legacy/tests/indices/vector_store/auto_retriever/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/indices/vector_store/auto_retriever/BUILD
+++ b/llama-index-legacy/tests/indices/vector_store/auto_retriever/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/ingestion/BUILD b/llama-index-legacy/tests/ingestion/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/ingestion/BUILD
+++ b/llama-index-legacy/tests/ingestion/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/ingestion/test_pipeline.py b/llama-index-legacy/tests/ingestion/test_pipeline.py
index 3a7302c8949f0..a41e00254979a 100644
--- a/llama-index-legacy/tests/ingestion/test_pipeline.py
+++ b/llama-index-legacy/tests/ingestion/test_pipeline.py
@@ -1,162 +1,45 @@
-from multiprocessing import cpu_count
+from typing import Any, Dict
-from llama_index.legacy.embeddings import OpenAIEmbedding
-from llama_index.legacy.extractors import KeywordExtractor
-from llama_index.legacy.ingestion.pipeline import IngestionPipeline
-from llama_index.legacy.llms import MockLLM
-from llama_index.legacy.node_parser import SentenceSplitter
-from llama_index.legacy.readers import ReaderConfig, StringIterableReader
-from llama_index.legacy.schema import Document
-from llama_index.legacy.storage.docstore import SimpleDocumentStore
+from llama_index.legacy.embeddings import (
+ HuggingFaceEmbedding,
+ OpenAIEmbedding,
+)
+from llama_index.legacy.embeddings.utils import resolve_embed_model
+from llama_index.legacy.token_counter.mock_embed_model import MockEmbedding
+from pytest import MonkeyPatch
-# clean up folders after tests
-def teardown_function() -> None:
- import shutil
+def mock_hf_embeddings(*args: Any, **kwargs: Dict[str, Any]) -> Any:
+ """Mock HuggingFaceEmbeddings."""
+ return
- shutil.rmtree("./test_pipeline", ignore_errors=True)
-
-def test_build_pipeline() -> None:
- pipeline = IngestionPipeline(
- reader=ReaderConfig(
- reader=StringIterableReader(), reader_kwargs={"texts": ["This is a test."]}
- ),
- documents=[Document.example()],
- transformations=[
- SentenceSplitter(),
- KeywordExtractor(llm=MockLLM()),
- OpenAIEmbedding(api_key="fake"),
- ],
- )
-
- assert len(pipeline.transformations) == 3
-
-
-def test_run_pipeline() -> None:
- pipeline = IngestionPipeline(
- reader=ReaderConfig(
- reader=StringIterableReader(), reader_kwargs={"texts": ["This is a test."]}
- ),
- documents=[Document.example()],
- transformations=[
- SentenceSplitter(),
- KeywordExtractor(llm=MockLLM()),
- ],
- )
-
- nodes = pipeline.run()
-
- assert len(nodes) == 2
- assert len(nodes[0].metadata) > 0
-
-
-def test_save_load_pipeline() -> None:
- documents = [
- Document(text="one", doc_id="1"),
- Document(text="two", doc_id="2"),
- Document(text="one", doc_id="1"),
- ]
-
- pipeline = IngestionPipeline(
- transformations=[
- SentenceSplitter(chunk_size=25, chunk_overlap=0),
- ],
- docstore=SimpleDocumentStore(),
- )
-
- nodes = pipeline.run(documents=documents)
- assert len(nodes) == 2
- assert pipeline.docstore is not None
- assert len(pipeline.docstore.docs) == 2
-
- # dedup will catch the last node
- nodes = pipeline.run(documents=[documents[-1]])
- assert len(nodes) == 0
- assert pipeline.docstore is not None
- assert len(pipeline.docstore.docs) == 2
-
- # test save/load
- pipeline.persist("./test_pipeline")
-
- pipeline2 = IngestionPipeline(
- transformations=[
- SentenceSplitter(chunk_size=25, chunk_overlap=0),
- ],
- )
-
- pipeline2.load("./test_pipeline")
-
- # dedup will catch the last node
- nodes = pipeline.run(documents=[documents[-1]])
- assert len(nodes) == 0
- assert pipeline.docstore is not None
- assert len(pipeline.docstore.docs) == 2
+def mock_openai_embeddings(*args: Any, **kwargs: Dict[str, Any]) -> Any:
+ """Mock OpenAIEmbedding."""
+ return
-def test_pipeline_update() -> None:
- document1 = Document.example()
- document1.id_ = "1"
-
- pipeline = IngestionPipeline(
- transformations=[
- SentenceSplitter(chunk_size=25, chunk_overlap=0),
- ],
- docstore=SimpleDocumentStore(),
+def test_resolve_embed_model(monkeypatch: MonkeyPatch) -> None:
+ monkeypatch.setattr(
+ "llama_index.legacy.embeddings.huggingface.HuggingFaceEmbedding.__init__",
+ mock_hf_embeddings,
)
-
- nodes = pipeline.run(documents=[document1])
- assert len(nodes) == 19
- assert pipeline.docstore is not None
- assert len(pipeline.docstore.docs) == 1
-
- # adjust document content
- document1 = Document(text="test", doc_id="1")
-
- # run pipeline again
- nodes = pipeline.run(documents=[document1])
-
- assert len(nodes) == 1
- assert pipeline.docstore is not None
- assert len(pipeline.docstore.docs) == 1
- assert next(iter(pipeline.docstore.docs.values())).text == "test" # type: ignore
-
-
-def test_pipeline_dedup_duplicates_only() -> None:
- documents = [
- Document(text="one", doc_id="1"),
- Document(text="two", doc_id="2"),
- Document(text="three", doc_id="3"),
- ]
-
- pipeline = IngestionPipeline(
- transformations=[
- SentenceSplitter(chunk_size=25, chunk_overlap=0),
- ],
- docstore=SimpleDocumentStore(),
+ monkeypatch.setattr(
+ "llama_index.legacy.embeddings.OpenAIEmbedding.__init__", mock_openai_embeddings
)
- nodes = pipeline.run(documents=documents)
- assert len(nodes) == 3
+ # Test None
+ embed_model = resolve_embed_model(None)
+ assert isinstance(embed_model, MockEmbedding)
- nodes = pipeline.run(documents=documents)
- assert len(nodes) == 0
+ # Test str
+ embed_model = resolve_embed_model("local")
+ assert isinstance(embed_model, HuggingFaceEmbedding)
+ # Test LCEmbeddings
+ embed_model = resolve_embed_model(HuggingFaceEmbedding())
+ assert isinstance(embed_model, HuggingFaceEmbedding)
-def test_pipeline_parallel() -> None:
- document1 = Document.example()
- document1.id_ = "1"
- document2 = Document(text="One\n\n\nTwo\n\n\nThree.", doc_id="2")
-
- pipeline = IngestionPipeline(
- transformations=[
- SentenceSplitter(chunk_size=25, chunk_overlap=0),
- ],
- docstore=SimpleDocumentStore(),
- )
-
- num_workers = min(2, cpu_count())
- nodes = pipeline.run(documents=[document1, document2], num_workers=num_workers)
- assert len(nodes) == 20
- assert pipeline.docstore is not None
- assert len(pipeline.docstore.docs) == 2
+ # Test BaseEmbedding
+ embed_model = resolve_embed_model(OpenAIEmbedding())
+ assert isinstance(embed_model, OpenAIEmbedding)
diff --git a/llama-index-legacy/tests/llm_predictor/BUILD b/llama-index-legacy/tests/llm_predictor/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/llm_predictor/BUILD
+++ b/llama-index-legacy/tests/llm_predictor/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/llm_predictor/vellum/BUILD b/llama-index-legacy/tests/llm_predictor/vellum/BUILD
index d20ffc39f7022..26312c34480e5 100644
--- a/llama-index-legacy/tests/llm_predictor/vellum/BUILD
+++ b/llama-index-legacy/tests/llm_predictor/vellum/BUILD
@@ -4,4 +4,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/llms/BUILD b/llama-index-legacy/tests/llms/BUILD
index b8583f391e3e8..3cf92e7132765 100644
--- a/llama-index-legacy/tests/llms/BUILD
+++ b/llama-index-legacy/tests/llms/BUILD
@@ -1,5 +1,6 @@
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-legacy/tests/logger/BUILD b/llama-index-legacy/tests/logger/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/logger/BUILD
+++ b/llama-index-legacy/tests/logger/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/memory/BUILD b/llama-index-legacy/tests/memory/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/memory/BUILD
+++ b/llama-index-legacy/tests/memory/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/multi_modal_llms/BUILD b/llama-index-legacy/tests/multi_modal_llms/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/multi_modal_llms/BUILD
+++ b/llama-index-legacy/tests/multi_modal_llms/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/node_parser/BUILD b/llama-index-legacy/tests/node_parser/BUILD
index c961ee65a4ae1..4fd9889d4d4b4 100644
--- a/llama-index-legacy/tests/node_parser/BUILD
+++ b/llama-index-legacy/tests/node_parser/BUILD
@@ -2,6 +2,7 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-legacy/tests/objects/BUILD b/llama-index-legacy/tests/objects/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/objects/BUILD
+++ b/llama-index-legacy/tests/objects/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/output_parsers/BUILD b/llama-index-legacy/tests/output_parsers/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/output_parsers/BUILD
+++ b/llama-index-legacy/tests/output_parsers/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/param_tuner/BUILD b/llama-index-legacy/tests/param_tuner/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/param_tuner/BUILD
+++ b/llama-index-legacy/tests/param_tuner/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/playground/BUILD b/llama-index-legacy/tests/playground/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/playground/BUILD
+++ b/llama-index-legacy/tests/playground/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/postprocessor/BUILD b/llama-index-legacy/tests/postprocessor/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/postprocessor/BUILD
+++ b/llama-index-legacy/tests/postprocessor/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/program/BUILD b/llama-index-legacy/tests/program/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/program/BUILD
+++ b/llama-index-legacy/tests/program/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/prompts/BUILD b/llama-index-legacy/tests/prompts/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/prompts/BUILD
+++ b/llama-index-legacy/tests/prompts/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/query_engine/BUILD b/llama-index-legacy/tests/query_engine/BUILD
index b8583f391e3e8..3cf92e7132765 100644
--- a/llama-index-legacy/tests/query_engine/BUILD
+++ b/llama-index-legacy/tests/query_engine/BUILD
@@ -1,5 +1,6 @@
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-legacy/tests/query_pipeline/BUILD b/llama-index-legacy/tests/query_pipeline/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/query_pipeline/BUILD
+++ b/llama-index-legacy/tests/query_pipeline/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/query_pipeline/components/BUILD b/llama-index-legacy/tests/query_pipeline/components/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/query_pipeline/components/BUILD
+++ b/llama-index-legacy/tests/query_pipeline/components/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/question_gen/BUILD b/llama-index-legacy/tests/question_gen/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/question_gen/BUILD
+++ b/llama-index-legacy/tests/question_gen/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/readers/BUILD b/llama-index-legacy/tests/readers/BUILD
index c961ee65a4ae1..4fd9889d4d4b4 100644
--- a/llama-index-legacy/tests/readers/BUILD
+++ b/llama-index-legacy/tests/readers/BUILD
@@ -2,6 +2,7 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-legacy/tests/response_synthesizers/BUILD b/llama-index-legacy/tests/response_synthesizers/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/response_synthesizers/BUILD
+++ b/llama-index-legacy/tests/response_synthesizers/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/retrievers/BUILD b/llama-index-legacy/tests/retrievers/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/retrievers/BUILD
+++ b/llama-index-legacy/tests/retrievers/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/selectors/BUILD b/llama-index-legacy/tests/selectors/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/selectors/BUILD
+++ b/llama-index-legacy/tests/selectors/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/storage/BUILD b/llama-index-legacy/tests/storage/BUILD
index d20ffc39f7022..26312c34480e5 100644
--- a/llama-index-legacy/tests/storage/BUILD
+++ b/llama-index-legacy/tests/storage/BUILD
@@ -4,4 +4,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/storage/chat_store/BUILD b/llama-index-legacy/tests/storage/chat_store/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/storage/chat_store/BUILD
+++ b/llama-index-legacy/tests/storage/chat_store/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/storage/docstore/BUILD b/llama-index-legacy/tests/storage/docstore/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/storage/docstore/BUILD
+++ b/llama-index-legacy/tests/storage/docstore/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/storage/index_store/BUILD b/llama-index-legacy/tests/storage/index_store/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/storage/index_store/BUILD
+++ b/llama-index-legacy/tests/storage/index_store/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/storage/kvstore/BUILD b/llama-index-legacy/tests/storage/kvstore/BUILD
index 0eea8b1cf1a32..1d58cc63c8f14 100644
--- a/llama-index-legacy/tests/storage/kvstore/BUILD
+++ b/llama-index-legacy/tests/storage/kvstore/BUILD
@@ -2,4 +2,5 @@ python_sources()
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/text_splitter/BUILD b/llama-index-legacy/tests/text_splitter/BUILD
index d20ffc39f7022..26312c34480e5 100644
--- a/llama-index-legacy/tests/text_splitter/BUILD
+++ b/llama-index-legacy/tests/text_splitter/BUILD
@@ -4,4 +4,5 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/token_predictor/BUILD b/llama-index-legacy/tests/token_predictor/BUILD
index 00e59b30170b1..134d0f2fdba31 100644
--- a/llama-index-legacy/tests/token_predictor/BUILD
+++ b/llama-index-legacy/tests/token_predictor/BUILD
@@ -1,5 +1,6 @@
python_tests(
name="tests",
+ skip_tests=True,
)
python_sources()
diff --git a/llama-index-legacy/tests/tools/BUILD b/llama-index-legacy/tests/tools/BUILD
index 40ac166288421..7107a6517aef4 100644
--- a/llama-index-legacy/tests/tools/BUILD
+++ b/llama-index-legacy/tests/tools/BUILD
@@ -4,6 +4,7 @@ python_test_utils(
python_tests(
name="tests",
+ skip_tests=True,
)
python_sources()
diff --git a/llama-index-legacy/tests/tools/tool_spec/BUILD b/llama-index-legacy/tests/tools/tool_spec/BUILD
index 00e59b30170b1..134d0f2fdba31 100644
--- a/llama-index-legacy/tests/tools/tool_spec/BUILD
+++ b/llama-index-legacy/tests/tools/tool_spec/BUILD
@@ -1,5 +1,6 @@
python_tests(
name="tests",
+ skip_tests=True,
)
python_sources()
diff --git a/llama-index-legacy/tests/utilities/BUILD b/llama-index-legacy/tests/utilities/BUILD
index 57341b1358b56..03cf00dcf3579 100644
--- a/llama-index-legacy/tests/utilities/BUILD
+++ b/llama-index-legacy/tests/utilities/BUILD
@@ -1,3 +1,4 @@
python_tests(
name="tests",
+ skip_tests=True,
)
diff --git a/llama-index-legacy/tests/vector_stores/BUILD b/llama-index-legacy/tests/vector_stores/BUILD
index b8583f391e3e8..3cf92e7132765 100644
--- a/llama-index-legacy/tests/vector_stores/BUILD
+++ b/llama-index-legacy/tests/vector_stores/BUILD
@@ -1,5 +1,6 @@
python_tests(
name="tests",
+ skip_tests=True,
dependencies=[
"!!llama-index-core:poetry",
"!!llama-index-core/pyproject.toml:poetry",
diff --git a/llama-index-packs/llama-index-packs-agent-search-retriever/CHANGELOG.md b/llama-index-packs/llama-index-packs-agent-search-retriever/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-packs/llama-index-packs-agent-search-retriever/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml
index 0ae1107511c87..abca133f0a77f 100644
--- a/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index packs agent_search_retriever integration"
+keywords = ["agent", "retriever", "search"]
license = "MIT"
+maintainers = ["logan-markewich"]
name = "llama-index-packs-agent-search-retriever"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.9,<3.12"
diff --git a/llama-index-packs/llama-index-packs-agents-llm-compiler/CHANGELOG.md b/llama-index-packs/llama-index-packs-agents-llm-compiler/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-packs/llama-index-packs-agents-llm-compiler/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml b/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml
index 50284e73130ea..dfb4c9051e0f7 100644
--- a/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index packs agents llm compiler"
+keywords = ["agent", "compiler", "llm"]
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-packs-agents-llm-compiler"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-packs/llama-index-packs-amazon-product-extraction/CHANGELOG.md b/llama-index-packs/llama-index-packs-amazon-product-extraction/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-packs/llama-index-packs-amazon-product-extraction/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml b/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml
index 2c59063594c9b..f5aefa2aa7514 100644
--- a/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name "]
description = "llama-index packs amazon_product_extraction integration"
+keywords = ["amazon", "extraction", "product"]
license = "MIT"
+maintainers = ["jerryjliu"]
name = "llama-index-packs-amazon-product-extraction"
readme = "README.md"
-version = "0.1.1"
+version = "0.1.2"
[tool.poetry.dependencies]
python = ">=3.8.1,<3.12"
diff --git a/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/CHANGELOG.md b/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/CHANGELOG.md
new file mode 100644
index 0000000000000..36bff877abcbe
--- /dev/null
+++ b/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/CHANGELOG.md
@@ -0,0 +1,5 @@
+# CHANGELOG
+
+## [0.1.2] - 2024-02-13
+
+- Add maintainers and keywords from library.json (llamahub)
diff --git a/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml
index df4018e47666d..0b021cedbc93c 100644
--- a/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml
@@ -21,10 +21,12 @@ python_version = "3.8"
[tool.poetry]
authors = ["Your Name