diff --git a/.gitignore b/.gitignore index c9129fe..0d6b86a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,10 @@ .DS_Store webapp/.env *.pyc + +# Segmentation use-cases +# langserve/packages/bq-agent/bq_agent/dev + +# Original agent.py +langserve/packages/bq-agent/bq_agent/agent_original.py + diff --git a/langserve/packages/bq-agent/README.md b/langserve/packages/bq-agent/README.md new file mode 100644 index 0000000..dfe9df4 --- /dev/null +++ b/langserve/packages/bq-agent/README.md @@ -0,0 +1,71 @@ + +# csv-agent + +This template uses a [pandas agent](https://python.langchain.com/docs/integrations/toolkits/pandas) with tools [BigQuery DataFrames](https://cloud.google.com/python/docs/reference/bigframes/latest) to read a BigQuery table for interaction (question-answering) with tabular data. + +## Environment Setup + +Set the `OPENAI_API_KEY` environment variable to access the OpenAI models. + + +## Usage + +To use this package, you should first have the LangChain CLI installed: + +```shell +pip install -U langchain-cli +``` + +To create a new LangChain project and install this as the only package, you can do: + +```shell +langchain app new my-app --package bq-agent +``` + +If you want to add this to an existing project, you can just run: + +```shell +langchain app add bq-agent +``` + +And add the following code to your `server.py` file: +```python + +from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent + + +add_routes(app, csv_agent_chain, path="/bq-agent") +``` + +(Optional) Let's now configure LangSmith. +LangSmith will help us trace, monitor and debug LangChain applications. +LangSmith is currently in private beta, you can sign up [here](https://smith.langchain.com/). +If you don't have access, you can skip this section + + +```shell +export LANGCHAIN_TRACING_V2=true +export LANGCHAIN_API_KEY= +export LANGCHAIN_PROJECT= # if not specified, defaults to "default" +``` + +If you are inside this directory, then you can spin up a LangServe instance directly by: + +```shell +langchain serve +``` + +This will start the FastAPI app with a server is running locally at +[http://localhost:8000](http://localhost:8000) + +We can see all templates at [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) + +We can access the playground at [http://127.0.0.1:8000/bq-agent/playground](http://127.0.0.1:8000/bq-agent/playground) + +We can access the template from code with: + +```python +from langserve.client import RemoteRunnable + +runnable = RemoteRunnable("http://localhost:8000/csv-agent") +``` diff --git a/langserve/packages/bq-agent/bq_agent/__init__.py b/langserve/packages/bq-agent/bq_agent/__init__.py new file mode 100644 index 0000000..5533be3 --- /dev/null +++ b/langserve/packages/bq-agent/bq_agent/__init__.py @@ -0,0 +1,3 @@ +from bq_agent.agent import agent_executor + +__all__ = ["agent_executor"] diff --git a/langserve/packages/bq-agent/bq_agent/agent.py b/langserve/packages/bq-agent/bq_agent/agent.py new file mode 100644 index 0000000..c7544a2 --- /dev/null +++ b/langserve/packages/bq-agent/bq_agent/agent.py @@ -0,0 +1,31 @@ +from pathlib import Path + +import pandas as pd +from langchain.agents import AgentExecutor, OpenAIFunctionsAgent +# from langchain.chat_models import ChatOpenAI +# from langchain.embeddings import OpenAIEmbeddings +# from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder +# from langchain.pydantic_v1 import BaseModel, Field +# from langchain.tools.retriever import create_retriever_tool +# from langchain.vectorstores import FAISS +# from langchain_experimental.tools import PythonAstREPLTool +import bigframes.pandas as bpd +from langchain.agents.agent_types import AgentType +from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent +from langchain_openai import ChatOpenAI +from langchain_openai import OpenAI + + + +# Load data +df = bpd.read_gbq("SELECT name, job, created, transactions, revenue, permission, crm_id, FROM `annular-form-389809.merged_data.crm_ga4`LIMIT 45").to_pandas() + +# Defining agent +agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True) + +# Default prompt +agent.run("How many rows are there in this dataframe?") + +# Defining agent executor +agent_executor = AgentExecutor( + agent=agent) diff --git a/langserve/packages/bq-agent/bq_agent/dev/archive (1).zip b/langserve/packages/bq-agent/bq_agent/dev/archive (1).zip new file mode 100644 index 0000000..dbd9966 Binary files /dev/null and b/langserve/packages/bq-agent/bq_agent/dev/archive (1).zip differ diff --git a/langserve/packages/bq-agent/bq_agent/dev/big_frames_test.ipynb b/langserve/packages/bq-agent/bq_agent/dev/big_frames_test.ipynb new file mode 100644 index 0000000..90e47ae --- /dev/null +++ b/langserve/packages/bq-agent/bq_agent/dev/big_frames_test.ipynb @@ -0,0 +1,3715 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# On the instance where you are running jupyter,\n", + "# authenticate with gcloud first:\n", + "#\n", + "# gcloud auth application-default login\n", + "\n", + "import bigframes.pandas as bpd\n", + "\n", + "bpd.options.bigquery.location = \"US\"\n", + "\n", + "import pandas as pd\n", + "from langchain.agents import AgentExecutor, OpenAIFunctionsAgent\n", + "# from langchain.chat_models import ChatOpenAI\n", + "# from langchain.embeddings import OpenAIEmbeddings\n", + "# from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "# from langchain.pydantic_v1 import BaseModel, Field\n", + "# from langchain.tools.retriever import create_retriever_tool\n", + "# from langchain.vectorstores import FAISS\n", + "# from langchain_experimental.tools import PythonAstREPLTool\n", + "import bigframes.pandas as bpd\n", + "from langchain.agents.agent_types import AgentType\n", + "from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent\n", + "from langchain_openai import ChatOpenAI\n", + "from langchain_openai import OpenAI\n", + "\n", + "from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "df = bpd.read_gbq(\"annular-form-389809.merged_data.crm_ga4\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Original CRM Features\n", + "- Skip to next section for ingest of larger BQ data and enriched features" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Query job 25f60db3-3828-46b7-aeb3-e6193798b8b6 is DONE. 1.2 MB processed. Open Job" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Query job 17f16b27-6442-4d99-b884-9bc0dce05374 is DONE. 4.8 kB processed. Open Job" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Load data\n", + "df = bpd.read_gbq(\"SELECT name, job, created, transactions, revenue, permission, crm_id, FROM `annular-form-389809.merged_data.crm_ga4`LIMIT 50\").to_pandas()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "# Defining agent\n", + "agent = create_pandas_dataframe_agent(OpenAI(temperature=0, openai_api_key = \"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\"), df, verbose=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namejobcreatedtransactionsrevenuepermissioncrm_id
0Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
1Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
2Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
3Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
4Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
\n", + "
" + ], + "text/plain": [ + " name job created transactions \\\n", + "0 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "1 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "2 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "3 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "4 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "\n", + " revenue permission crm_id \n", + "0 79718.09 TRUE CRM000826 \n", + "1 79718.09 TRUE CRM000826 \n", + "2 79718.09 TRUE CRM000826 \n", + "3 79718.09 TRUE CRM000826 \n", + "4 79718.09 TRUE CRM000826 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "df = df.astype({'revenue':'float'})" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 50 entries, 0 to 49\n", + "Data columns (total 7 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 50 non-null string \n", + " 1 job 50 non-null string \n", + " 2 created 50 non-null string \n", + " 3 transactions 50 non-null string \n", + " 4 revenue 50 non-null float64\n", + " 5 permission 50 non-null string \n", + " 6 crm_id 50 non-null string \n", + "dtypes: float64(1), string(6)\n", + "memory usage: 5.6 KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing Basic Prompts\n", + "\n", + "Learnings\n", + "- You have assign correct dtype to each column" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "# Defining prompts\n", + "\n", + "row_count = \"How many rows are there?\"\n", + "\n", + "distinct_users = \"How many distinct users are there? What are their names?\"\n", + "\n", + "value_per_distinct_user = \"How many distinct users are there? How much value has each brought?\"\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3mThought: I need to find the number of unique users and their total revenue.\n", + "Action: python_repl_ast\n", + "Action Input: df['name'].nunique()\u001b[0m\u001b[36;1m\u001b[1;3m10\u001b[0m\u001b[32;1m\u001b[1;3m10 unique users\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby('name')['revenue'].sum()\u001b[0m\u001b[36;1m\u001b[1;3mname\n", + "Demario Wiza 29091.06\n", + "Dr. Eulalie Beer PhD 68934.70\n", + "Hillary Powlowski 166873.92\n", + "Ima Bahringer 16911.30\n", + "Kenia Moen 73128.39\n", + "Lesta Effertz 6996.70\n", + "Mr. Austen Conn 398590.45\n", + "Mr. Delmar Nitzsche 4802.40\n", + "Perri Adams 141831.65\n", + "Rogers Cummerata-Lehner 3871.64\n", + "Name: revenue, dtype: float64\u001b[0m\u001b[32;1m\u001b[1;3m10 unique users with their respective total revenue\n", + "Final Answer: There are 10 distinct users and their total revenue is shown above.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" + ] + }, + { + "data": { + "text/plain": [ + "'There are 10 distinct users and their total revenue is shown above.'" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "agent.run(value_per_distinct_user)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pasing template to agent" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "TEMPLATE = \"\"\"You are working with a pandas dataframe in Python. The name of the dataframe is `df`.\n", + "It is important to understand the attributes of the dataframe before working with it. This is the result of running `df.head().to_markdown()`\n", + "\n", + "\n", + "{dhead}\n", + "\n", + "\n", + "You are not meant to use only these rows to answer questions - they are meant as a way of telling you about the shape and schema of the dataframe.\n", + "You also do not have use only the information here to answer questions - you can run intermediate queries to do exporatory data analysis to give you more information as needed.\n", + "\n", + "You have a tool called `person_name_search` through which you can lookup a person by name and find the records corresponding to people with similar name as the query.\n", + "You should only really use this if your search term contains a persons name. Otherwise, try to solve it with code.\n", + "\n", + "For example:\n", + "\n", + "How old is Jane?\n", + "Use `person_name_search` since you can use the query `Jane`\n", + "\n", + "Who has id 320\n", + "Use `python_repl` since even though the question is about a person, you don't know their name so you can't include it.\n", + "\"\"\" " + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "template = TEMPLATE.format(dhead=df.head().to_markdown())" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\"system\", template),\n", + " MessagesPlaceholder(variable_name=\"agent_scratchpad\"),\n", + " (\"human\", \"{input}\"),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "agent = OpenAIFunctionsAgent(\n", + " llm=ChatOpenAI(temperature=0, model=\"gpt-4\"), prompt=prompt, tools=tools\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/root/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_experimental/agents/agent_toolkits/pandas/base.py:233: UserWarning: Received additional kwargs {'prompt': ChatPromptTemplate(input_variables=['agent_scratchpad', 'input'], input_types={'agent_scratchpad': typing.List[typing.Union[langchain_core.messages.ai.AIMessage, langchain_core.messages.human.HumanMessage, langchain_core.messages.chat.ChatMessage, langchain_core.messages.system.SystemMessage, langchain_core.messages.function.FunctionMessage, langchain_core.messages.tool.ToolMessage]]}, messages=[SystemMessagePromptTemplate(prompt=PromptTemplate(input_variables=[], template=\"You are working with a pandas dataframe in Python. The name of the dataframe is `df`.\\nIt is important to understand the attributes of the dataframe before working with it. This is the result of running `df.head().to_markdown()`\\n\\n\\n| | name | job | created | transactions | revenue | permission | crm_id |\\n|---:|:----------------|:-----------------------|:--------------------|---------------:|----------:|:-------------|:----------|\\n| 0 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 1 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 2 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 3 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 4 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n\\n\\nYou are not meant to use only these rows to answer questions - they are meant as a way of telling you about the shape and schema of the dataframe.\\nYou also do not have use only the information here to answer questions - you can run intermediate queries to do exporatory data analysis to give you more information as needed.\\n\\nYou have a tool called `person_name_search` through which you can lookup a person by name and find the records corresponding to people with similar name as the query.\\nYou should only really use this if your search term contains a persons name. Otherwise, try to solve it with code.\\n\\nFor example:\\n\\nHow old is Jane?\\nUse `person_name_search` since you can use the query `Jane`\\n\\nWho has id 320\\nUse `python_repl` since even though the question is about a person, you don't know their name so you can't include it.\\n\")), MessagesPlaceholder(variable_name='agent_scratchpad'), HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['input'], template='{input}'))])} which are no longer supported.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "# Defining agent\n", + "agent = create_pandas_dataframe_agent(OpenAI(temperature=0, openai_api_key = \"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\"), df, prompt = prompt, verbose=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3mThought: I need to find the number of unique values in the \"crm_id\" column and then sum the \"revenue\" column for each unique value.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"crm_id\"].nunique()\u001b[0m\u001b[36;1m\u001b[1;3m1255\u001b[0m\u001b[32;1m\u001b[1;3m1255 is the number of distinct users, now I need to sum the \"revenue\" column for each unique value in the \"crm_id\" column.\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby(\"crm_id\")[\"revenue\"].sum()\u001b[0m\u001b[36;1m\u001b[1;3mcrm_id\n", + "CRM000116 27812.3227812.3227812.3227812.3227812.3227812.32\n", + "CRM000272 1399.341399.341399.341399.341399.341399.34\n", + "CRM000317 13786.9413786.9413786.9413786.9413786.94\n", + "CRM000415 967.91967.91967.91967.91\n", + "CRM000772 24376.1324376.1324376.13\n", + " ... \n", + "CRM134485 968.58968.58968.58968.58968.58968.58\n", + "CRM134495 10347.1110347.1110347.1110347.1110347.1110347....\n", + "CRM134852 18033.5118033.5118033.5118033.5118033.5118033....\n", + "CRM134904 7730.537730.537730.537730.537730.537730.537730...\n", + "CRM134974 4731.594731.594731.594731.594731.594731.59\n", + "Name: revenue, Length: 1255, dtype: string\u001b[0m\u001b[32;1m\u001b[1;3m I need to sum the values in the \"revenue\" column for each unique value in the \"crm_id\" column, but the output is not in a numerical format.\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby(\"crm_id\")[\"revenue\"].sum().astype(float)\u001b[0m\u001b[36;1m\u001b[1;3mValueError: could not convert string to float: '27812.3227812.3227812.3227812.3227812.3227812.32'\u001b[0m\u001b[32;1m\u001b[1;3m I need to remove the extra characters in the \"revenue\" column before converting it to a float.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"] = df[\"revenue\"].str.replace(r\"[^0-9.]\", \"\")\u001b[0m\u001b[36;1m\u001b[1;3m\u001b[0m\u001b[32;1m\u001b[1;3m The extra characters have been removed, now I can convert the \"revenue\" column to a float and sum the values for each unique \"crm_id\".\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby(\"crm_id\")[\"revenue\"].sum().astype(float)\u001b[0m\u001b[36;1m\u001b[1;3mValueError: could not convert string to float: '27812.3227812.3227812.3227812.3227812.3227812.32'\u001b[0m\u001b[32;1m\u001b[1;3m I need to check the \"revenue\" column again to see if there are any remaining non-numeric characters.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"].unique()\u001b[0m\u001b[36;1m\u001b[1;3m\n", + "[ '2748.01', '11515.29', '7352.04', '376.48', '7987.04', '2338.99',\n", + " '2099.99', '18.69', '2057.98', '44514.43',\n", + " ...\n", + " '4264.08', '9786.44', '6289.37', '15022.13', '11720.95', '3469.99',\n", + " '698.9', '8001.8', '2019.54', '28149.73']\n", + "Length: 1253, dtype: string\u001b[0m\u001b[32;1m\u001b[1;3m There are still some non-numeric characters in the \"revenue\" column, I need to remove them.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"] = df[\"revenue\"].str.replace(r\"[^0-9.]\", \"\")\u001b[0m\u001b[36;1m\u001b[1;3m\u001b[0m\u001b[32;1m\u001b[1;3m The non-numeric characters have been removed, now I can convert the \"revenue\" column to a float and sum the values for each unique \"crm_id\".\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby(\"crm_id\")[\"revenue\"].sum().astype(float)\u001b[0m\u001b[36;1m\u001b[1;3mValueError: could not convert string to float: '27812.3227812.3227812.3227812.3227812.3227812.32'\u001b[0m\u001b[32;1m\u001b[1;3m I need to check the \"revenue\" column again to see if there are any remaining non-numeric characters.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"].unique()\u001b[0m\u001b[36;1m\u001b[1;3m\n", + "[ '2748.01', '11515.29', '7352.04', '376.48', '7987.04', '2338.99',\n", + " '2099.99', '18.69', '2057.98', '44514.43',\n", + " ...\n", + " '4264.08', '9786.44', '6289.37', '15022.13', '11720.95', '3469.99',\n", + " '698.9', '8001.8', '2019.54', '28149.73']\n", + "Length: 1253, dtype: string\u001b[0m\u001b[32;1m\u001b[1;3m There are still some non-numeric characters in the \"revenue\" column, I need to remove them.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"] = df[\"revenue\"].str.replace(r\"[^0-9.]\", \"\")\u001b[0m\u001b[36;1m\u001b[1;3m\u001b[0m\u001b[32;1m\u001b[1;3m The non-numeric characters have been removed, now I can convert the \"revenue\" column to a float and sum the values for each unique \"crm_id\".\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby(\"crm_id\")[\"revenue\"].sum().astype(float)\u001b[0m\u001b[36;1m\u001b[1;3mValueError: could not convert string to float: '27812.3227812.3227812.3227812.3227812.3227812.32'\u001b[0m\u001b[32;1m\u001b[1;3m I need to check the \"revenue\" column again to see if there are any remaining non-numeric characters.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"].unique()\u001b[0m\u001b[36;1m\u001b[1;3m\n", + "[ '2748.01', '11515.29', '7352.04', '376.48', '7987.04', '2338.99',\n", + " '2099.99', '18.69', '2057.98', '44514.43',\n", + " ...\n", + " '4264.08', '9786.44', '6289.37', '15022.13', '11720.95', '3469.99',\n", + " '698.9', '8001.8', '2019.54', '28149.73']\n", + "Length: 1253, dtype: string\u001b[0m\u001b[32;1m\u001b[1;3m There are still some non-numeric characters in the \"revenue\" column, I need to remove them.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"] = df[\"revenue\"].str.replace(r\"[^0-9.]\", \"\")\u001b[0m\u001b[36;1m\u001b[1;3m\u001b[0m\u001b[32;1m\u001b[1;3m The non-numeric characters have been removed, now I can convert the \"revenue\" column to a float and sum the values for each unique \"crm_id\".\n", + "Action: python_repl_ast\n", + "Action Input: df.groupby(\"crm_id\")[\"revenue\"].sum().astype(float)\u001b[0m\u001b[36;1m\u001b[1;3mValueError: could not convert string to float: '27812.3227812.3227812.3227812.3227812.3227812.32'\u001b[0m\u001b[32;1m\u001b[1;3m I need to check the \"revenue\" column again to see if there are any remaining non-numeric characters.\n", + "Action: python_repl_ast\n", + "Action Input: df[\"revenue\"].unique()\u001b[0m\u001b[36;1m\u001b[1;3m\n", + "[ '2748.01', '11515.29', '7352.04', '376.48', '7987.04', '2338.99',\n", + " '2099.99', '18.69', '2057.98', '44514.43',\n", + " ...\n", + " '4264.08', '9786.44', '6289.37', '15022.13', '11720.95', '3469.99',\n", + " '698.9', '8001.8', '2019.54', '28149.73']\n", + "Length: 1253, dtype: string\u001b[0m\u001b[32;1m\u001b[1;3m\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" + ] + }, + { + "data": { + "text/plain": [ + "'Agent stopped due to iteration limit or time limit.'" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "agent.run(value_per_distinct_user)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namejobcreatedtransactionsrevenuepermissioncrm_id
0Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
1Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
2Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
3Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
4Mr. Austen ConnApplications developer2002-11-15 23:03:5062179718.09TRUECRM000826
\n", + "
" + ], + "text/plain": [ + " name job created transactions \\\n", + "0 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "1 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "2 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "3 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "4 Mr. Austen Conn Applications developer 2002-11-15 23:03:50 621 \n", + "\n", + " revenue permission crm_id \n", + "0 79718.09 TRUE CRM000826 \n", + "1 79718.09 TRUE CRM000826 \n", + "2 79718.09 TRUE CRM000826 \n", + "3 79718.09 TRUE CRM000826 \n", + "4 79718.09 TRUE CRM000826 " + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Enriching CRM Data with more features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading Data" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Query job ed810333-d33e-4095-948a-d4ef53ca7c03 is DONE. 3.3 MB processed. Open Job" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Query job 8d372e3b-1a3f-4877-9fb3-8b23ec83e67a is DONE. 3.3 MB processed. Open Job" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Load data\n", + "df_data_to_enrich = bpd.read_gbq(\"SELECT name, job, created, transactions, revenue, permission, crm_id, event_timestamp, event_name, device.*, geo.*, FROM `annular-form-389809.merged_data.crm_ga4`\").to_pandas()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [], + "source": [ + "df = df_data_to_enrich.copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding features" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['name', 'job', 'created', 'transactions', 'revenue', 'permission',\n", + " 'crm_id', 'event_timestamp', 'event_name', 'category',\n", + " 'mobile_brand_name', 'mobile_model_name', 'mobile_marketing_name',\n", + " 'mobile_os_hardware_model', 'operating_system',\n", + " 'operating_system_version', 'vendor_id', 'advertising_id', 'language',\n", + " 'is_limited_ad_tracking', 'time_zone_offset_seconds', 'web_info',\n", + " 'continent', 'sub_continent', 'country', 'region', 'city', 'metro'],\n", + " dtype='object')" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import random" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Removing Gendered titles Titles" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [], + "source": [ + "# The regex pattern looks for \"Mr. \", \"Mrs. \", or \"Ms. \" at the beginning of the string\n", + "df['name'] = df['name'].str.replace(r'^Mr\\. |^Mrs\\. |^Ms\\. ', '', regex=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Generating unique event_id for every unique timestamp" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [], + "source": [ + "import hashlib\n" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to generate a unique 8-digit code from the timestamp\n", + "def generate_event_id(timestamp):\n", + " # Convert the timestamp to string to ensure hashability\n", + " timestamp_str = str(timestamp)\n", + " # Generate MD5 hash of the timestamp string\n", + " hash_object = hashlib.md5(timestamp_str.encode())\n", + " # Return the first 8 characters of the hexadecimal digest\n", + " return hash_object.hexdigest()[:8]\n", + "\n", + "# Apply the function to create the 'event_id' column\n", + "df['event_id'] = df['event_timestamp'].apply(generate_event_id)" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namejobcreatedtransactionsrevenuepermissioncrm_idevent_timestampevent_namecategorymobile_brand_namemobile_model_namemobile_marketing_namemobile_os_hardware_modeloperating_systemoperating_system_versionvendor_idadvertising_idlanguageis_limited_ad_trackingtime_zone_offset_secondsweb_infocontinentsub_continentcountryregioncitymetroevent_id
0Otho HarrisPurchasing manager2003-11-16 19:04:587192748.01FALSECRM1255091612076959662317session_startdesktopGoogleChrome<Other><NA>WindowsWindows 7<NA><NA>en-usNo<NA>{'browser': 'Chrome', 'browser_version': '87.0'}AmericasNorthern AmericaUnited StatesCalifornia(not set)(not set)7b63f3ac
1Dr. Tito HettingerEngineer, civil (consulting)2011-09-08 08:33:0820711515.29TRUECRM0869491612116213132183first_visitdesktopGoogleChrome<Other><NA>Web10<NA><NA>en-gbNo<NA>{'browser': 'Chrome', 'browser_version': '87.0'}AmericasNorthern AmericaUnited StatesFloridaTampa(not set)7606cfde
2Elder Hamill-BeattyDesigner, jewellery2014-03-16 03:03:511087352.04TRUECRM0137131612107547772306user_engagementmobileAppleiPhone<Other><NA>iOSiOS 14.3<NA><NA><NA>No<NA>{'browser': 'Safari', 'browser_version': '14.0'}AmericasNorthern AmericaUnited StatesIndiana(not set)(not set)f74dcaf3
3Rolland HandNetwork engineer2018-11-03 14:02:3119376.48TRUECRM0181681612125332738442page_viewdesktopAppleSafari<Other><NA>WebIntel 10.15<NA><NA>en-gbNo<NA>{'browser': 'Safari', 'browser_version': '14.0'}AmericasNorthern AmericaUnited StatesLouisianaBaton Rouge(not set)4cb1481f
4Jase HarberDietitian2011-11-09 01:09:54777987.04FALSECRM0014451612131609849637user_engagementdesktopGoogleChrome<Other><NA>Web10<NA><NA><NA>No<NA>{'browser': 'Chrome', 'browser_version': '86.0'}AsiaEastern AsiaJapan(not set)(not set)(not set)6c7f1ea1
\n", + "
" + ], + "text/plain": [ + " name job created \\\n", + "0 Otho Harris Purchasing manager 2003-11-16 19:04:58 \n", + "1 Dr. Tito Hettinger Engineer, civil (consulting) 2011-09-08 08:33:08 \n", + "2 Elder Hamill-Beatty Designer, jewellery 2014-03-16 03:03:51 \n", + "3 Rolland Hand Network engineer 2018-11-03 14:02:31 \n", + "4 Jase Harber Dietitian 2011-11-09 01:09:54 \n", + "\n", + " transactions revenue permission crm_id event_timestamp \\\n", + "0 719 2748.01 FALSE CRM125509 1612076959662317 \n", + "1 207 11515.29 TRUE CRM086949 1612116213132183 \n", + "2 108 7352.04 TRUE CRM013713 1612107547772306 \n", + "3 19 376.48 TRUE CRM018168 1612125332738442 \n", + "4 77 7987.04 FALSE CRM001445 1612131609849637 \n", + "\n", + " event_name category mobile_brand_name mobile_model_name \\\n", + "0 session_start desktop Google Chrome \n", + "1 first_visit desktop Google Chrome \n", + "2 user_engagement mobile Apple iPhone \n", + "3 page_view desktop Apple Safari \n", + "4 user_engagement desktop Google Chrome \n", + "\n", + " mobile_marketing_name mobile_os_hardware_model operating_system \\\n", + "0 Windows \n", + "1 Web \n", + "2 iOS \n", + "3 Web \n", + "4 Web \n", + "\n", + " operating_system_version vendor_id advertising_id language \\\n", + "0 Windows 7 en-us \n", + "1 10 en-gb \n", + "2 iOS 14.3 \n", + "3 Intel 10.15 en-gb \n", + "4 10 \n", + "\n", + " is_limited_ad_tracking time_zone_offset_seconds \\\n", + "0 No \n", + "1 No \n", + "2 No \n", + "3 No \n", + "4 No \n", + "\n", + " web_info continent \\\n", + "0 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "1 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "2 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "3 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "4 {'browser': 'Chrome', 'browser_version': '86.0'} Asia \n", + "\n", + " sub_continent country region city metro \\\n", + "0 Northern America United States California (not set) (not set) \n", + "1 Northern America United States Florida Tampa (not set) \n", + "2 Northern America United States Indiana (not set) (not set) \n", + "3 Northern America United States Louisiana Baton Rouge (not set) \n", + "4 Eastern Asia Japan (not set) (not set) (not set) \n", + "\n", + " event_id \n", + "0 7b63f3ac \n", + "1 7606cfde \n", + "2 f74dcaf3 \n", + "3 4cb1481f \n", + "4 6c7f1ea1 " + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Creating datetime features" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert 'event_timestamp' from microseconds to datetime\n", + "df['datetime'] = pd.to_datetime(df['event_timestamp'], unit='us', utc=True)\n", + "\n", + "# Extract components from the datetime\n", + "df['date'] = df['datetime'].dt.date # Date\n", + "df['year'] = df['datetime'].dt.year # Year\n", + "df['month'] = df['datetime'].dt.month_name() # Month as full name\n", + "df['month_number'] = df['datetime'].dt.month # Month as number\n", + "df['week_number'] = df['datetime'].dt.isocalendar().week # Week number\n", + "df['day_number'] = df['datetime'].dt.day # Day of the month\n", + "df['hour'] = df['datetime'].dt.hour # Hour of the day\n" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namejobcreatedtransactionsrevenuepermissioncrm_idevent_timestampevent_namecategorymobile_brand_namemobile_model_namemobile_marketing_namemobile_os_hardware_modeloperating_systemoperating_system_versionvendor_idadvertising_idlanguageis_limited_ad_trackingtime_zone_offset_secondsweb_infocontinentsub_continentcountryregioncitymetroevent_iddatetimedateyearmonthmonth_numberweek_numberday_numberhour
0Otho HarrisPurchasing manager2003-11-16 19:04:587192748.01FALSECRM1255091612076959662317session_startdesktopGoogleChrome<Other><NA>WindowsWindows 7<NA><NA>en-usNo<NA>{'browser': 'Chrome', 'browser_version': '87.0'}AmericasNorthern AmericaUnited StatesCalifornia(not set)(not set)7b63f3ac2021-01-31 07:09:19.662317+00:002021-01-312021January14317
1Dr. Tito HettingerEngineer, civil (consulting)2011-09-08 08:33:0820711515.29TRUECRM0869491612116213132183first_visitdesktopGoogleChrome<Other><NA>Web10<NA><NA>en-gbNo<NA>{'browser': 'Chrome', 'browser_version': '87.0'}AmericasNorthern AmericaUnited StatesFloridaTampa(not set)7606cfde2021-01-31 18:03:33.132183+00:002021-01-312021January143118
2Elder Hamill-BeattyDesigner, jewellery2014-03-16 03:03:511087352.04TRUECRM0137131612107547772306user_engagementmobileAppleiPhone<Other><NA>iOSiOS 14.3<NA><NA><NA>No<NA>{'browser': 'Safari', 'browser_version': '14.0'}AmericasNorthern AmericaUnited StatesIndiana(not set)(not set)f74dcaf32021-01-31 15:39:07.772306+00:002021-01-312021January143115
3Rolland HandNetwork engineer2018-11-03 14:02:3119376.48TRUECRM0181681612125332738442page_viewdesktopAppleSafari<Other><NA>WebIntel 10.15<NA><NA>en-gbNo<NA>{'browser': 'Safari', 'browser_version': '14.0'}AmericasNorthern AmericaUnited StatesLouisianaBaton Rouge(not set)4cb1481f2021-01-31 20:35:32.738442+00:002021-01-312021January143120
4Jase HarberDietitian2011-11-09 01:09:54777987.04FALSECRM0014451612131609849637user_engagementdesktopGoogleChrome<Other><NA>Web10<NA><NA><NA>No<NA>{'browser': 'Chrome', 'browser_version': '86.0'}AsiaEastern AsiaJapan(not set)(not set)(not set)6c7f1ea12021-01-31 22:20:09.849637+00:002021-01-312021January143122
\n", + "
" + ], + "text/plain": [ + " name job created \\\n", + "0 Otho Harris Purchasing manager 2003-11-16 19:04:58 \n", + "1 Dr. Tito Hettinger Engineer, civil (consulting) 2011-09-08 08:33:08 \n", + "2 Elder Hamill-Beatty Designer, jewellery 2014-03-16 03:03:51 \n", + "3 Rolland Hand Network engineer 2018-11-03 14:02:31 \n", + "4 Jase Harber Dietitian 2011-11-09 01:09:54 \n", + "\n", + " transactions revenue permission crm_id event_timestamp \\\n", + "0 719 2748.01 FALSE CRM125509 1612076959662317 \n", + "1 207 11515.29 TRUE CRM086949 1612116213132183 \n", + "2 108 7352.04 TRUE CRM013713 1612107547772306 \n", + "3 19 376.48 TRUE CRM018168 1612125332738442 \n", + "4 77 7987.04 FALSE CRM001445 1612131609849637 \n", + "\n", + " event_name category mobile_brand_name mobile_model_name \\\n", + "0 session_start desktop Google Chrome \n", + "1 first_visit desktop Google Chrome \n", + "2 user_engagement mobile Apple iPhone \n", + "3 page_view desktop Apple Safari \n", + "4 user_engagement desktop Google Chrome \n", + "\n", + " mobile_marketing_name mobile_os_hardware_model operating_system \\\n", + "0 Windows \n", + "1 Web \n", + "2 iOS \n", + "3 Web \n", + "4 Web \n", + "\n", + " operating_system_version vendor_id advertising_id language \\\n", + "0 Windows 7 en-us \n", + "1 10 en-gb \n", + "2 iOS 14.3 \n", + "3 Intel 10.15 en-gb \n", + "4 10 \n", + "\n", + " is_limited_ad_tracking time_zone_offset_seconds \\\n", + "0 No \n", + "1 No \n", + "2 No \n", + "3 No \n", + "4 No \n", + "\n", + " web_info continent \\\n", + "0 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "1 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "2 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "3 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "4 {'browser': 'Chrome', 'browser_version': '86.0'} Asia \n", + "\n", + " sub_continent country region city metro \\\n", + "0 Northern America United States California (not set) (not set) \n", + "1 Northern America United States Florida Tampa (not set) \n", + "2 Northern America United States Indiana (not set) (not set) \n", + "3 Northern America United States Louisiana Baton Rouge (not set) \n", + "4 Eastern Asia Japan (not set) (not set) (not set) \n", + "\n", + " event_id datetime date year month \\\n", + "0 7b63f3ac 2021-01-31 07:09:19.662317+00:00 2021-01-31 2021 January \n", + "1 7606cfde 2021-01-31 18:03:33.132183+00:00 2021-01-31 2021 January \n", + "2 f74dcaf3 2021-01-31 15:39:07.772306+00:00 2021-01-31 2021 January \n", + "3 4cb1481f 2021-01-31 20:35:32.738442+00:00 2021-01-31 2021 January \n", + "4 6c7f1ea1 2021-01-31 22:20:09.849637+00:00 2021-01-31 2021 January \n", + "\n", + " month_number week_number day_number hour \n", + "0 1 4 31 7 \n", + "1 1 4 31 18 \n", + "2 1 4 31 15 \n", + "3 1 4 31 20 \n", + "4 1 4 31 22 " + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "[ 'session_start', 'first_visit', 'user_engagement',\n", + " 'page_view', 'view_promotion', 'select_item',\n", + " 'view_item', 'add_shipping_info', 'scroll',\n", + " 'add_to_cart', 'begin_checkout', 'view_search_results',\n", + " 'select_promotion', 'add_payment_info', 'purchase',\n", + " 'click']\n", + "Length: 16, dtype: string" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['event_name'].unique()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Changing \"permission\" to \"email_permission\"" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename the \"permission\" column to \"email_permissions\"\n", + "df.rename(columns={'permission': 'email_permissions'}, inplace=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adding \"units_purchased\" as a feature\n" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [], + "source": [ + "# Creating function to assign quantity for 'purchase' events\n", + "def assign_quantity(event_name):\n", + " if event_name == 'purchase':\n", + " return np.random.randint(1, 6) # Generate a random integer between 1 and 5\n", + " else:\n", + " return np.nan # Assign NaN for non-purchase events\n", + "\n", + "# Apply the function to create the 'quantity' column\n", + "df['units_purchased'] = df['event_name'].apply(assign_quantity)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adding \"transaction_amount\" as a feature" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to calculate transaction amount\n", + "def calculate_transaction_amount(units_purchased):\n", + " # Assuming each unit contributes an amount between 25 and 150 in a linear fashion\n", + " # Adjust the multiplier as necessary to fit your correlation needs\n", + " # This is a placeholder calculation and should be adjusted to your specific correlation logic\n", + " base_amount = 25 # Minimum amount for a purchase\n", + " if pd.isnull(units_purchased):\n", + " return np.nan\n", + " else:\n", + " # Simple correlation: base_amount + a variable amount based on units_purchased\n", + " # Ensuring the transaction amount does not exceed 150\n", + " amount = min(base_amount + (units_purchased * (125 / 5)), 150)\n", + " return amount\n", + "\n", + "# Apply the function to create the 'transaction_amount' column\n", + "df['transaction_amount'] = df['units_purchased'].apply(calculate_transaction_amount)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " transaction_amount units_purchased\n", + "1364 125.0 4.0\n", + "2196 50.0 1.0\n", + "2599 125.0 4.0\n", + "3612 125.0 4.0\n", + "8052 50.0 1.0\n", + "8369 125.0 4.0\n", + "9188 50.0 1.0\n", + "9418 100.0 3.0\n", + "11466 75.0 2.0\n", + "12331 75.0 2.0\n" + ] + } + ], + "source": [ + "# Filter the DataFrame for rows where 'event_name' is 'purchase'\n", + "# and select only the 'transaction_amount' and 'units_purchased' columns\n", + "purchase_transactions = df[df['event_name'] == 'purchase'][['transaction_amount', 'units_purchased']]\n", + "\n", + "# Display the filtered DataFrame\n", + "print(purchase_transactions)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adding Age as a feature" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Miss Dorine Metz MD: 46\n", + "Marchello Gaylord: 31\n", + "Newton Schuster DVM: 23\n", + "Hale Doyle IV: 20\n", + "Justice Streich: 68\n", + "Hildegard Monahan: 53\n", + "Keesha Cummings DVM: 31\n", + "Dr. Tito Hettinger: 18\n", + "Joy Halvorson: 31\n", + "Garvin Mueller: 28\n", + "Sharman Connelly MD: 43\n", + "Dr. Kaitlyn Stamm DVM: 48\n", + "Wanita Kris DVM: 21\n", + "Stephania Keeling-Romaguera: 59\n", + "Buell Hilpert-Weissnat: 19\n", + "Rhoda Anderson: 38\n", + "Pearle Bergstrom: 54\n", + "Christiana Kris: 32\n", + "Farah Grant: 65\n", + "Jonna Bartoletti-Simonis: 20\n", + "Alvia Emmerich: 52\n", + "Angelique VonRueden: 26\n", + "Jeane Turner: 67\n", + "Katarina Kuhic: 70\n", + "Rolland Dare: 41\n", + "Exa Friesen-Mueller: 24\n", + "Dr. Tella Ratke PhD: 33\n", + "Cleola Hauck DDS: 31\n", + "Schuyler Vandervort: 63\n", + "Clark Baumbach: 66\n", + "Mathews Ritchie: 25\n", + "Maceo Weimann-Schmitt: 42\n", + "Miss Katarina Wehner: 49\n", + "Manning Lebsack: 46\n", + "Trena Heathcote: 25\n", + "Tyrell Davis: 42\n", + "Mykel Cruickshank: 65\n", + "Norwood Padberg: 40\n", + "Bess Gerhold: 18\n", + "Mavis O'Hara: 41\n", + "Casimiro Rath: 37\n", + "Dr. Judah Stiedemann I: 63\n", + "Kisha Thiel: 50\n", + "Verl Huel: 25\n", + "Max Nikolaus: 45\n", + "Watt Borer DDS: 53\n", + "Priscila Powlowski: 33\n", + "Jaylyn McKenzie: 20\n", + "Dr. Reino Kuhic: 39\n", + "Tosha Botsford PhD: 34\n", + "Dr. Cathrine Wyman DVM: 29\n", + "Erika Wyman: 23\n", + "Jamie Goyette: 24\n", + "Reilly Harvey II: 28\n", + "Carisa Rice DVM: 26\n", + "Yehuda Hansen: 45\n", + "Kellen Walker: 37\n", + "Marely Pouros: 36\n", + "Theresia Weissnat: 33\n", + "Kenia Moen: 65\n", + "Brodie Effertz: 40\n", + "Bernardo Labadie: 35\n", + "Kalyn Bergnaum: 25\n", + "Dr. Nery Simonis Sr.: 24\n", + "Harmony Homenick: 40\n", + "Latisha Barrows: 37\n", + "Monnie Connelly: 23\n", + "Stone Sporer II: 51\n", + "Little Tremblay Jr.: 61\n", + "Kristofer Effertz-Hermiston: 37\n", + "Young Hamill: 48\n", + "Desean Kulas: 66\n", + "Leopold Blick-Lubowitz: 51\n", + "Lois Orn: 45\n", + "Louis Borer: 45\n", + "Geno DuBuque-Walter: 51\n", + "Jonnie Abshire: 38\n", + "Dr. Toya McCullough: 35\n", + "Jerel Rempel: 35\n", + "Marcos Hoeger: 65\n", + "Gayle Runte: 44\n", + "Miss Kaylee Barrows DVM: 28\n", + "Tawana Kunde-Howe: 36\n", + "Liston Murray: 57\n", + "Emilie Schumm: 20\n", + "Nell Harris-Kub: 26\n", + "Malcolm Schumm: 27\n", + "Dr. Regan Waelchi: 38\n", + "Dedra Bosco-Abernathy: 69\n", + "Kamila Raynor: 56\n", + "Tyler Kuhn: 31\n", + "Valinda Bergstrom DVM: 63\n", + "Jamey Kling: 23\n", + "Jesenia Hermann: 63\n", + "Sarita O'Reilly: 63\n", + "Rice Shields: 36\n", + "Wylie Hansen III: 53\n", + "Carey McDermott: 59\n", + "Griffin Smitham: 29\n", + "Sylvanus Bernhard: 31\n", + "Deric Schmidt: 48\n", + "Tyrus Gleason DVM: 36\n", + "Laurance Cummerata: 44\n", + "Azzie Schinner DDS: 57\n", + "Dr. Skyler Lindgren: 22\n", + "Merrilee O'Reilly: 35\n", + "Severo Rath: 68\n", + "Dr. Nigel Tremblay DDS: 47\n", + "Auther Weber: 56\n", + "Harlene Friesen: 27\n", + "Chaim Lesch II: 68\n", + "Edsel Gibson: 35\n", + "Herschel Franecki III: 33\n", + "Miss Marianita Corwin: 47\n", + "Doreen Christiansen: 19\n", + "Dr. Chadd Crona: 22\n", + "Judge Pacocha: 66\n", + "Yael Kihn-Sporer: 64\n", + "Miss Glynis Feeney PhD: 19\n", + "Michal Raynor: 68\n", + "Bjorn Ullrich-Kunde: 60\n", + "Octavio Haag: 42\n", + "Alphonsus Vandervort-Wiegand: 70\n", + "Wynona Johnson: 21\n", + "Carmelo Schmeler: 32\n", + "Mckinley Nitzsche: 47\n", + "Dr. Steven Spinka: 26\n", + "Roxanna Stark-Reilly: 18\n", + "Tracy Roob: 69\n", + "Miss Lainey Strosin MD: 52\n", + "Billye Carroll: 23\n", + "Kirk Stark DVM: 60\n", + "Finn Kling: 47\n", + "Edd Kohler Sr.: 46\n", + "Aliyah Moen: 58\n", + "Marin Lubowitz: 42\n", + "Zita Nikolaus: 36\n", + "Dr. Meg Wehner: 56\n", + "Garry Hilpert: 28\n", + "Casper McKenzie: 46\n", + "Jayvon Lind: 69\n", + "Taina Mayer DVM: 46\n", + "Dell DuBuque: 41\n", + "Jaydan Bednar-Marvin: 33\n", + "Lala Lesch: 22\n", + "Holland Gulgowski: 37\n", + "Lary Considine: 49\n", + "Lafe Kuphal: 49\n", + "Dr. Kendrick Sporer IV: 33\n", + "Miss Joanie Bogan: 66\n", + "Conley Swift DDS: 19\n", + "Dixon Huels: 69\n", + "Agustin Klocko-Stanton: 19\n", + "Gale Pacocha: 47\n", + "Miss Casey Armstrong MD: 56\n", + "Etha Douglas: 48\n", + "Doreen Johnson: 60\n", + "Rosanna Hirthe: 58\n", + "Nakia Hettinger: 45\n", + "Randell Borer: 44\n", + "Derrell Kohler: 53\n", + "Regan Cassin: 40\n", + "Dr. Josie Ledner: 45\n", + "Randolf Dietrich: 22\n", + "Vella Morissette: 48\n", + "Sydell Bergnaum PhD: 21\n", + "Tula O'Connell: 54\n", + "Delphine Harvey: 68\n", + "Godfrey Nolan: 69\n", + "Berniece Gottlieb DVM: 44\n", + "Firman Rodriguez Sr.: 47\n", + "Brande Mayer: 34\n", + "Cindi Wisozk: 69\n", + "Williams Cremin-Steuber: 65\n", + "Idamae Kris DDS: 50\n", + "Vertie Padberg: 31\n", + "Britny Bergnaum: 47\n", + "Dr. Carleton Davis: 29\n", + "Nadia Paucek: 23\n", + "Minoru Lebsack: 56\n", + "Georgie Donnelly: 19\n", + "Dr. Markel Schuster PhD: 69\n", + "Dr. Presley Kuhlman: 56\n", + "Waino Morar: 26\n", + "Algie Miller: 52\n", + "Ivanna Schuster DVM: 26\n", + "Clella O'Keefe: 23\n", + "Texas Schinner-Boyle: 56\n", + "Dr. Skip Ruecker I: 49\n", + "Tyshawn Lynch: 61\n", + "Kamari Beer Sr.: 66\n", + "Lera O'Reilly: 46\n", + "Romaine Rippin: 55\n", + "Migdalia Feeney: 18\n", + "Booker Goodwin-O'Reilly: 23\n", + "Quiana Blick: 59\n", + "Kimberlie Volkman: 68\n", + "Johnnie Goyette DDS: 25\n", + "Cary Zemlak-Simonis: 25\n", + "Oda Weimann-Kuphal: 27\n", + "Benjamine Fadel: 69\n", + "Jodie Mosciski: 58\n", + "Dr. Rayshawn Paucek: 23\n", + "Dora Abbott: 38\n", + "Charisse Schmitt DDS: 23\n", + "Carlie Runte: 66\n", + "Kenya Huels: 18\n", + "Dr. Selina Runolfsdottir DVM: 25\n", + "Emerald Heaney DDS: 67\n", + "Miss Makayla White PhD: 22\n", + "Bose Doyle: 29\n", + "Dr. Lula Erdman: 29\n", + "Rolland Hand: 68\n", + "Jerusha Dicki: 22\n", + "Vic DuBuque: 67\n", + "Fount Batz: 28\n", + "Joaquin Sauer: 25\n", + "Maribeth Leannon: 30\n", + "Agustus Blanda: 22\n", + "Kala Ankunding: 23\n", + "Tayler Kassulke: 20\n", + "Cornelia Herzog: 35\n", + "Wilbur Ullrich: 64\n", + "Dr. Chandra Jones: 52\n", + "Alvie Collins I: 47\n", + "Nigel Murphy MD: 18\n", + "Bryson Barrows: 53\n", + "Zechariah D'Amore Jr.: 43\n", + "Cam Yost-O'Reilly: 34\n", + "Willaim Jenkins: 33\n", + "Dalvin Schumm III: 28\n", + "Sanford Runolfsson: 40\n", + "Dr. Anfernee Beatty: 25\n", + "Doshia Hilll: 48\n", + "Rafe Keebler Sr.: 33\n", + "Elon O'Connell DVM: 44\n", + "Sharleen Terry: 28\n", + "Ilda Hansen: 65\n", + "Miss Jessika Fahey DVM: 61\n", + "Dr. Vito Gleichner III: 52\n", + "Dr. Zackery Hermiston: 52\n", + "Dr. Pete Stracke Jr.: 21\n", + "Lukas Kautzer: 64\n", + "York Wiegand: 55\n", + "Lurline Green: 65\n", + "Nadine Hoeger: 66\n", + "Kelley Mohr: 57\n", + "Dan Williamson: 46\n", + "Shae Zulauf: 48\n", + "Hardie Kris: 26\n", + "Micaela Pouros: 70\n", + "Osbaldo Bahringer: 44\n", + "Delcie Stark: 60\n", + "Hill Zboncak: 60\n", + "Virge Zboncak: 30\n", + "Dr. Ancel White: 62\n", + "Anissa Hessel: 43\n", + "Lorrie Bayer-Hoppe: 37\n", + "Dr. Eulalie Olson: 23\n", + "Stephanie Brakus-Shields: 61\n", + "Torrey Hahn: 50\n", + "Mae Jakubowski: 44\n", + "Baker Jerde: 61\n", + "Neil Rau: 46\n", + "Mariyah Walter: 43\n", + "Jakob Koss: 69\n", + "Fredrick Hane-Quitzon: 59\n", + "Felton Rau: 65\n", + "Cherri Marquardt MD: 25\n", + "Syble Morar: 43\n", + "Luvinia Funk DDS: 44\n", + "Lucretia Leannon: 60\n", + "Tracey Kilback: 50\n", + "Jesica Monahan: 42\n", + "Link Mitchell: 44\n", + "Gerard Altenwerth MD: 37\n", + "Miss Vernia Kling DVM: 49\n", + "Dr. Ludwig Torphy PhD: 51\n", + "Sincere Goldner MD: 40\n", + "Acie Gerhold: 25\n", + "Francis Will: 44\n", + "Miguel Gulgowski: 48\n", + "Pat Brown: 45\n", + "Lyn Sawayn: 35\n", + "Laurance Gorczany II: 34\n", + "Hubert Emmerich: 35\n", + "Verne Smitham: 54\n", + "Vela Bogan: 45\n", + "Demario Wiza: 38\n", + "Demetria Torp: 53\n", + "Shelvia Bosco-Doyle: 60\n", + "Sydni Steuber: 56\n", + "Rillie Cummings: 69\n", + "Sammy Ward MD: 37\n", + "Lorine Okuneva-Zulauf: 70\n", + "Eugene McCullough: 70\n", + "Dequan Langworth: 70\n", + "Kelsey Schinner: 47\n", + "Kody Ryan: 64\n", + "Melissa Waters: 54\n", + "Dwaine Littel: 58\n", + "Coleton Fisher: 39\n", + "Almeda Rice: 26\n", + "Dovie Ebert: 70\n", + "Young Kovacek: 31\n", + "Reinaldo Spencer: 50\n", + "Alphonse Reichert: 52\n", + "Dr. Marsh Wisozk IV: 61\n", + "Stanton Walter: 18\n", + "Hilliard Greenholt: 44\n", + "Doctor Keeling DDS: 30\n", + "Jovani Cormier: 59\n", + "Icy Becker-Bauch: 19\n", + "Elenore Raynor: 66\n", + "Amiya O'Reilly MD: 41\n", + "Francesco Hilll-Kovacek: 63\n", + "Alvie O'Conner: 33\n", + "Johannah Volkman-Reilly: 34\n", + "Monty Simonis: 33\n", + "Hansford Hegmann: 43\n", + "Jarret Swift-Turner: 22\n", + "Dr. Kade Sawayn: 34\n", + "Dr. Octavius Rutherford: 47\n", + "Norman Berge: 49\n", + "Babe Crona V: 21\n", + "Dagny Thompson-Kihn: 25\n", + "Antone Feest: 34\n", + "Willia Parker-Auer: 51\n", + "Bryton Fisher: 64\n", + "Bryce Hand: 54\n", + "Hilma Raynor DVM: 44\n", + "Alfonzo Mraz: 39\n", + "Bernard Breitenberg: 61\n", + "Miss Buna Murazik DVM: 24\n", + "Javon Bartell: 68\n", + "Dr. Basil Kulas PhD: 20\n", + "Dorman Bode: 26\n", + "Francisca Collier MD: 28\n", + "Jarrett Paucek DVM: 31\n", + "Joe Haag: 53\n", + "Saundra Wiegand: 35\n", + "Cassidy Moen-Hermiston: 65\n", + "Dr. Markel King II: 64\n", + "Nyah Littel: 42\n", + "Ronan Hegmann: 50\n", + "Dione Ferry: 18\n", + "Metro Cremin: 40\n", + "Christine Rowe MD: 21\n", + "Dr. Bose Morissette I: 52\n", + "Lakisha Parisian: 20\n", + "Lu Connelly: 68\n", + "Ethyle Morar: 20\n", + "Denese Kautzer: 23\n", + "Reino Gutkowski: 34\n", + "Pedro Raynor MD: 36\n", + "Dr. Roderic Romaguera III: 49\n", + "Eldora Brekke: 55\n", + "Ryker Zboncak: 61\n", + "Ransom Walsh: 69\n", + "Malaki Becker: 32\n", + "Malorie Yost PhD: 28\n", + "Emmanuel Rempel II: 26\n", + "Orval Rau II: 40\n", + "Elroy Kunde: 29\n", + "Allie Howe PhD: 45\n", + "Carie Mante DVM: 44\n", + "Ronan Cummerata PhD: 62\n", + "Vince Armstrong: 63\n", + "Jonnie Schaden-Gorczany: 19\n", + "Eden Kuhlman DDS: 66\n", + "Lennon DuBuque: 57\n", + "Freddy Streich-Roberts: 63\n", + "Chaim Durgan: 53\n", + "Mortimer McClure: 31\n", + "Declan Sauer III: 52\n", + "Brittanie McGlynn PhD: 55\n", + "Barrie Haag: 59\n", + "Etta Buckridge: 37\n", + "Jase Harber: 48\n", + "Nila Glover: 70\n", + "Alethea Aufderhar DDS: 26\n", + "Elmire Lemke: 30\n", + "Quiana Stamm: 20\n", + "Alfreda Haag: 54\n", + "Antoinette Moore-Cassin: 21\n", + "Grayling Stracke I: 51\n", + "Beverly Harris: 47\n", + "Devontae Adams: 20\n", + "Vernie Langworth III: 48\n", + "Bernard Corwin: 70\n", + "Keyshawn Kunde: 44\n", + "Roseanna Considine: 33\n", + "Dr. Bryan Kshlerin DDS: 53\n", + "Rettie Wilkinson: 64\n", + "Miss Thora Hammes MD: 56\n", + "Dr. Estelle Stracke: 26\n", + "Seldon D'Amore: 67\n", + "Angelo Hackett: 60\n", + "Harrie Orn: 39\n", + "Roselyn Brekke: 35\n", + "Eugene Barrows: 50\n", + "Sherrie Barrows: 62\n", + "Lavenia Balistreri: 58\n", + "Anders Block: 27\n", + "Commodore Borer: 31\n", + "Jeff Lueilwitz-Nolan: 24\n", + "Jasper Runolfsson: 49\n", + "Dr. Silver Wehner I: 24\n", + "Kassie Brakus DDS: 61\n", + "Lashanda Roob: 63\n", + "Lewis Durgan-Rosenbaum: 32\n", + "Mintie Nolan: 69\n", + "Amy Rippin: 47\n", + "Annika Will DVM: 64\n", + "Dr. Bob Mante DVM: 52\n", + "Richmond Hagenes: 26\n", + "Sid Cole: 66\n", + "Belva Bechtelar: 57\n", + "Briley Cassin: 54\n", + "Johana Kiehn-Wehner: 37\n", + "Jefferson Zulauf: 50\n", + "Dr. Wilmer Sanford MD: 38\n", + "Vashon Wiegand DVM: 66\n", + "Daryle Effertz-Berge: 44\n", + "Milan Wyman: 55\n", + "Addie McCullough-Steuber: 30\n", + "Roland Friesen: 62\n", + "Alphonso Hermann: 62\n", + "Dr. Jadon Rath Sr.: 50\n", + "Malik Sawayn: 55\n", + "Starr Hartmann MD: 62\n", + "Adalberto Gottlieb-Padberg: 50\n", + "Oneta Dickens: 27\n", + "Shira Leuschke: 37\n", + "Delisa Goodwin DVM: 39\n", + "Knox Douglas-Durgan: 64\n", + "Jamie Fisher: 32\n", + "Jerrilyn Ward: 48\n", + "Florida Runolfsson-Leffler: 21\n", + "Janessa Schultz-Sporer: 67\n", + "Lexie Borer-Kiehn: 34\n", + "Algie Welch: 33\n", + "Ardeth Baumbach: 69\n", + "Miss Lulu Baumbach PhD: 32\n", + "Elianna Doyle: 63\n", + "Kassie Trantow: 66\n", + "Antonetta Kuhlman: 24\n", + "Nickolas Rau: 35\n", + "Michell O'Conner DDS: 39\n", + "Dr. Deegan Cruickshank: 30\n", + "Jaimee Satterfield: 20\n", + "Lary Friesen: 35\n", + "Horatio Marquardt: 54\n", + "Elihu Mills: 56\n", + "Darl Conn: 25\n", + "Sydney Eichmann: 59\n", + "Camila Ferry: 44\n", + "Sie Christiansen: 51\n", + "Ema Runolfsdottir DDS: 41\n", + "Etter Hayes: 65\n", + "Cathy Bergstrom DVM: 28\n", + "Clement Pollich: 64\n", + "Brandon Rogahn: 33\n", + "Reanna Frami MD: 38\n", + "Dr. Archer Carter PhD: 53\n", + "Rhoda Kihn: 39\n", + "Aliyah Crooks: 39\n", + "Latarsha Langosh: 46\n", + "Hillary Powlowski: 63\n", + "Westley Schulist: 63\n", + "Tawanda Boyer: 37\n", + "Lewis Grant: 26\n", + "Beadie O'Kon: 65\n", + "Clarence Schaden: 29\n", + "Shaina Marquardt DVM: 49\n", + "Priscilla McCullough: 50\n", + "Penni Hoppe: 19\n", + "Dr. Orlando Effertz PhD: 21\n", + "Tiffanie Anderson-Jacobs: 45\n", + "Jerrilyn Hammes DVM: 49\n", + "Elie Yundt: 37\n", + "Robley Gottlieb: 29\n", + "Kamryn Ward: 40\n", + "Naima Kessler: 46\n", + "Destin Romaguera: 56\n", + "Tari Jast: 62\n", + "Ora Christiansen: 22\n", + "Denver Barton: 19\n", + "Dr. Kyrie Lockman DVM: 43\n", + "Kiara Farrell: 51\n", + "Tella Walker-Kemmer: 55\n", + "Campbell Ruecker: 28\n", + "Lorayne Pfannerstill DVM: 49\n", + "Rick Anderson: 51\n", + "Cassandra Nitzsche: 28\n", + "Stetson Osinski: 25\n", + "Jann Mohr: 57\n", + "Dr. Jaron Labadie I: 22\n", + "Cam Jacobs PhD: 68\n", + "Bartholomew Christiansen: 23\n", + "Gustie McKenzie: 49\n", + "Daryl Bogisich-Romaguera: 26\n", + "Breanna Douglas: 27\n", + "Harlon Fahey V: 43\n", + "Dr. Allyn Greenholt PhD: 69\n", + "Lauryn Tremblay DVM: 39\n", + "Laraine Turner-Heidenreich: 70\n", + "Jessie Hilll: 36\n", + "Louann Schmitt: 32\n", + "Jensen Mante DVM: 53\n", + "Domingo Eichmann: 42\n", + "Macel Douglas: 36\n", + "Jeffie Hilll-Cassin: 18\n", + "Wing Nitzsche: 45\n", + "Ryleigh Schinner: 37\n", + "Porter Kovacek-Zulauf: 28\n", + "Fredy Kling: 53\n", + "Lyn Padberg: 45\n", + "Burr Schinner: 60\n", + "Saige Cartwright: 25\n", + "Telly Shanahan V: 22\n", + "Darryle Bauch: 38\n", + "Jones Cummerata-Botsford: 29\n", + "Casimiro Klocko DVM: 64\n", + "Dr. Pleas Macejkovic V: 32\n", + "Dr. Jenna Mohr: 28\n", + "Jarred Dach: 42\n", + "Rickie Hermann: 48\n", + "Lora Moore DDS: 20\n", + "Dr. Mario Ratke Jr.: 45\n", + "Lyric Jacobson: 34\n", + "Elouise Harber DDS: 28\n", + "Miss Loree Schowalter MD: 44\n", + "Katharine Bartell: 55\n", + "Carmel Willms: 32\n", + "Myrta Becker: 20\n", + "Gottlieb Ondricka-Walker: 32\n", + "Myer Rolfson: 39\n", + "Evon Quitzon: 53\n", + "Jedediah Sporer: 65\n", + "Shelli Funk: 42\n", + "Tomeka Robel: 34\n", + "Malik Bins: 54\n", + "Destini Blick PhD: 47\n", + "Cassandra Denesik: 63\n", + "Areli Raynor: 32\n", + "Dustin Larkin: 24\n", + "Dulcie Torphy MD: 36\n", + "Elisa Satterfield: 60\n", + "Ahmad Doyle: 66\n", + "Jamil Huel-Barton: 62\n", + "Karyn Oberbrunner: 29\n", + "Sherrill Rolfson PhD: 60\n", + "Ruffin Hane: 56\n", + "Georganna Rogahn: 46\n", + "Jamaal Bernhard DDS: 49\n", + "Keara Ferry: 32\n", + "Eliga Lesch Sr.: 20\n", + "Genoveva Kertzmann: 32\n", + "Dr. Dimitrios Williamson V: 24\n", + "Freddie Roberts: 48\n", + "Sondra Ratke: 58\n", + "Jovita Oberbrunner: 65\n", + "Raelynn Barton: 63\n", + "Nadia Bradtke: 38\n", + "Baylie Donnelly PhD: 66\n", + "Dr. Elton Pfeffer MD: 41\n", + "Kaylynn Shields: 25\n", + "Spurgeon Balistreri: 24\n", + "Ardyce Nienow: 34\n", + "Dr. Harley Baumbach: 28\n", + "Adina Herman: 26\n", + "Lennon Ortiz MD: 40\n", + "Sina Kautzer-West: 29\n", + "Orra Reynolds: 31\n", + "Abb Balistreri: 68\n", + "Leopoldo Zemlak-Cartwright: 27\n", + "Dixon Schoen: 57\n", + "Koda Kutch: 66\n", + "Eliana Hansen: 57\n", + "Mayme Morar-Fadel: 59\n", + "Lillard Mante-Cruickshank: 41\n", + "Reubin Daniel-Goldner: 52\n", + "Clarice Okuneva-Dicki: 60\n", + "Andon Hauck V: 63\n", + "Oral Stiedemann: 49\n", + "Annabelle Grimes-Bednar: 38\n", + "Hilma Dooley: 45\n", + "Griselda Hane: 20\n", + "Efrem Jerde: 33\n", + "Isadore Feeney: 39\n", + "Hernan Donnelly: 63\n", + "Dosha Bernier MD: 52\n", + "Wright Boehm-Gerlach: 68\n", + "Oris Hessel: 35\n", + "Towanda Kshlerin: 58\n", + "Curtiss Schumm III: 62\n", + "Dr. Yetta Denesik: 68\n", + "Trinidad Goodwin MD: 20\n", + "Alexys Kuvalis: 64\n", + "Zetta DuBuque: 42\n", + "Carolyn Moen DVM: 22\n", + "Mikhail Leuschke: 41\n", + "Marius Nader-Schinner: 22\n", + "Tishie Murazik DDS: 37\n", + "Katia Jenkins MD: 58\n", + "Laurie Hilll: 66\n", + "Laquita Labadie: 21\n", + "Burl Predovic: 52\n", + "Germaine Hickle: 69\n", + "Rocky Marquardt: 27\n", + "Dr. Jakobe Armstrong III: 65\n", + "Percy Hand: 53\n", + "Gilbert Cronin-Bechtelar: 64\n", + "Dr. Myer Douglas Jr.: 63\n", + "Meta Auer: 39\n", + "Denny Breitenberg-Leffler: 25\n", + "Dr. Heriberto O'Conner: 66\n", + "Maebelle Blick: 54\n", + "Barron Cummerata: 49\n", + "Nikolai Miller: 64\n", + "Lyman Lesch PhD: 57\n", + "Alvah Cronin: 30\n", + "Annette Sipes: 25\n", + "Emerald Runolfsson-Gislason: 50\n", + "Tandy Abernathy: 35\n", + "Vivien VonRueden-Vandervort: 64\n", + "Xavier Howell: 63\n", + "Dr. Hardie Kozey: 38\n", + "Jaclyn Jones DDS: 42\n", + "Merl Lubowitz: 20\n", + "Javen Robel IV: 62\n", + "Tobie Heidenreich: 30\n", + "Bliss Jacobi IV: 60\n", + "Stefan Daniel: 41\n", + "Cleve Auer: 25\n", + "Carson Witting: 68\n", + "Dr. Wayland Raynor IV: 49\n", + "Brody Koch: 28\n", + "Jasmin Hackett-Orn: 46\n", + "Lindsay Hessel MD: 42\n", + "Sarita Hayes: 63\n", + "Violeta Marquardt-Keebler: 40\n", + "Deontae Senger: 41\n", + "Loyce Lakin: 27\n", + "Estefany Schmitt: 24\n", + "Sibyl Davis-Ankunding: 18\n", + "Dr. Rayfield Roberts III: 63\n", + "Dr. Lane Keebler: 33\n", + "Valentine Olson: 40\n", + "Frederic Powlowski: 41\n", + "Reynold Farrell IV: 22\n", + "Dr. Meg Ruecker: 69\n", + "Yee Kirlin: 29\n", + "Orion Walter: 38\n", + "Hester Thompson: 29\n", + "Jordan Mills MD: 43\n", + "Jaheem Carter Sr.: 62\n", + "Loris Langosh: 58\n", + "Miss Lupe Waelchi: 58\n", + "Shonda Kihn: 39\n", + "Luetta Lesch: 37\n", + "Dr. Dejah Pfannerstill: 36\n", + "Jaimie Streich-VonRueden: 67\n", + "Selene Legros: 39\n", + "Lula Koepp: 62\n", + "Perri Adams: 67\n", + "Cathi Hane DDS: 29\n", + "Dr. Dayne Johns DVM: 37\n", + "Tavaris Bruen: 31\n", + "Margeret Koss: 23\n", + "Texanna Pfeffer: 47\n", + "Concepcion Wilderman: 40\n", + "Brion Block: 22\n", + "Dempsey Koepp: 35\n", + "Emerald Bernhard MD: 50\n", + "Odile Upton DVM: 21\n", + "Dexter Reynolds: 40\n", + "Francina Zieme-Williamson: 23\n", + "Dr. Abraham Johnson: 46\n", + "Dr. Rey Upton: 18\n", + "Jamila Bechtelar: 22\n", + "Dr. Florencio Rowe: 56\n", + "Gerrit Heidenreich: 29\n", + "Brodie Bayer: 56\n", + "Gunner Lakin-Muller: 65\n", + "Ivey Schmidt: 22\n", + "Chace Hettinger-Satterfield: 42\n", + "Alyson Ankunding: 49\n", + "Delma VonRueden DVM: 22\n", + "Ica Cruickshank: 30\n", + "Raven Bechtelar: 65\n", + "Dr. Ashely Ruecker: 53\n", + "Rolf Mohr: 50\n", + "Israel Hodkiewicz: 25\n", + "Travis Kling Jr.: 33\n", + "Harl Morissette: 35\n", + "Tanner Connelly: 55\n", + "Casey Welch: 59\n", + "Elmina Ratke-DuBuque: 62\n", + "Virgle Hintz: 58\n", + "Dr. Jameel Feest: 58\n", + "Roosevelt Pouros-Kirlin: 65\n", + "Dr. Jazlene Considine PhD: 65\n", + "Kaylyn Douglas: 25\n", + "Isam Gulgowski: 45\n", + "Miss Marnie Harris MD: 39\n", + "Torey Hyatt: 62\n", + "Miss Eddie Olson: 32\n", + "Serenity Johnson DDS: 58\n", + "Elisabeth Reinger: 50\n", + "Waneta Lubowitz: 49\n", + "Cooper Harvey-Senger: 38\n", + "Otis Osinski: 34\n", + "Linzy Roob: 26\n", + "Sherree Prosacco: 57\n", + "Marcellus Fahey: 43\n", + "Odin Kautzer Sr.: 40\n", + "Murdock Connelly: 51\n", + "Marchello Green: 67\n", + "Daria O'Connell: 30\n", + "Valentino Tromp: 42\n", + "Shani Fisher: 56\n", + "Gaetano Weber: 21\n", + "Missie Bins DVM: 55\n", + "Evertt Dickens-Olson: 53\n", + "Herma Cole PhD: 51\n", + "Lavonne Wilkinson: 54\n", + "Ignatz Schowalter: 40\n", + "Schuyler Johnson: 19\n", + "Algot Goyette: 24\n", + "Maria Walsh: 67\n", + "Anya Parker-Rodriguez: 59\n", + "Kaeden Rice: 25\n", + "Cindy Blanda: 32\n", + "Diamond Stracke: 29\n", + "Audra Koch-Hamill: 51\n", + "Chancey Schaden: 58\n", + "Samual Mann V: 57\n", + "Kari Douglas: 27\n", + "Chandra Orn: 45\n", + "Sannie Tillman: 55\n", + "Ida Fadel DVM: 25\n", + "Camilla Pollich: 58\n", + "Arvo Yost: 54\n", + "Dr. Carlie Stoltenberg PhD: 45\n", + "Candy Boehm: 70\n", + "Irven Tremblay: 61\n", + "Essex Hoppe: 34\n", + "Eva Leannon: 52\n", + "Melvin Feil: 55\n", + "Blaine Toy-Lakin: 44\n", + "Anjali Brekke: 35\n", + "Alessandro Stark: 34\n", + "Rustin Waters: 47\n", + "Taina Kiehn: 69\n", + "Tab Funk Sr.: 23\n", + "Shanna Huels: 29\n", + "Frida Goldner: 56\n", + "Dena Jaskolski: 35\n", + "Yusuf Lubowitz: 70\n", + "Genesis D'Amore MD: 64\n", + "Tai Braun: 64\n", + "Faron Effertz: 42\n", + "Elvia Hauck: 44\n", + "Truman Brown: 36\n", + "Rosalia Nader: 48\n", + "Shirley Halvorson: 20\n", + "Angelita Heathcote: 70\n", + "Frederick Bauch: 64\n", + "Matteo Jast: 62\n", + "Landan Schowalter: 23\n", + "Zilpha Shanahan: 47\n", + "Evander Keeling: 31\n", + "Genaro Weber: 42\n", + "Susann Hodkiewicz: 34\n", + "Euna Thompson: 24\n", + "Kenan Renner: 68\n", + "Oda Lesch: 30\n", + "Geary Lemke DDS: 55\n", + "Zavier Hegmann: 60\n", + "Elfrieda Kreiger: 29\n", + "Traci O'Hara-Schuppe: 60\n", + "Dellar Feest: 60\n", + "Rogers Cummerata-Lehner: 39\n", + "Aletha Kreiger PhD: 22\n", + "Perla McDermott: 53\n", + "Austen Conn: 53\n", + "Santo Baumbach: 39\n", + "Johnny Brown II: 46\n", + "Dominque Baumbach: 34\n", + "Dr. Mark Rau: 26\n", + "Levern Graham: 53\n", + "Jarrell Prosacco: 68\n", + "Lana Bergstrom: 44\n", + "Abel Mitchell: 58\n", + "Dr. Anson Toy DDS: 62\n", + "Tracee Jenkins DDS: 43\n", + "Veronica Tromp: 22\n", + "Carmel Thiel: 20\n", + "Somer Abshire-Padberg: 50\n", + "Erasmo Mills: 69\n", + "Davonte Schowalter: 48\n", + "Elick Ward: 35\n", + "Barrett Stiedemann-Schulist: 54\n", + "Zelpha Robel MD: 27\n", + "Stuart O'Hara: 25\n", + "Barry Abbott: 64\n", + "Donavon Beatty: 40\n", + "Shakira Anderson: 59\n", + "Neveah Johnston: 39\n", + "Micayla Mertz PhD: 34\n", + "Lavern Berge PhD: 69\n", + "Marcia Cruickshank-Gerlach: 65\n", + "Stephaine Rutherford: 46\n", + "Ezequiel Wilderman: 19\n", + "Jaleel Pollich DDS: 19\n", + "Dr. Lolita Cruickshank DVM: 22\n", + "Sydney Powlowski: 21\n", + "Christal Aufderhar: 36\n", + "Jenelle Schoen: 29\n", + "Cornell Senger DVM: 18\n", + "Kolton Kozey: 35\n", + "Roland Gleichner: 47\n", + "Taurean Kemmer: 67\n", + "Zilpha Morissette: 34\n", + "Kermit Padberg: 19\n", + "Thursa Langosh-Strosin: 67\n", + "Jahiem Sipes: 32\n", + "Sanai Considine: 58\n", + "Miss Kinsley Boyle: 64\n", + "Miss Brooklynn Robel DDS: 57\n", + "Red Howe: 46\n", + "Rollin Eichmann: 39\n", + "Antoine Dietrich Jr.: 57\n", + "Sebastian Hane: 20\n", + "Alois Mitchell: 18\n", + "Sannie Torphy: 44\n", + "Londyn Beer: 31\n", + "Otho Harris: 33\n", + "Miss Cassondra Wolf: 56\n", + "Reagan Torp: 58\n", + "Alethea Feil: 24\n", + "Devante Koepp: 53\n", + "Wayde Barrows: 18\n", + "Brittnay O'Keefe: 52\n", + "China Hilll: 66\n", + "Dr. Yusuf Crooks: 43\n", + "Josephus Brakus: 40\n", + "Maye Cummerata: 52\n", + "Dr. Luna Rosenbaum: 69\n", + "Talan Schuppe: 24\n", + "Damion Aufderhar: 65\n", + "Miss Dorthea Raynor MD: 59\n", + "Che Schultz: 52\n", + "Ester Schowalter: 57\n", + "Ora Bernier: 18\n", + "Lula Morar: 60\n", + "Dr. Kamari Connelly IV: 62\n", + "Juli Bins: 41\n", + "Azul Wunsch-Waters: 27\n", + "Maury Considine: 69\n", + "Takisha Davis: 54\n", + "Robby Prohaska DVM: 28\n", + "Keenen Carter DDS: 57\n", + "Marsha Franecki: 37\n", + "Greggory Pagac DVM: 56\n", + "Miss Carroll Kilback: 51\n", + "Mack Dach: 49\n", + "Griselda Grimes: 59\n", + "Karly Hermiston: 51\n", + "Mahala McLaughlin DVM: 65\n", + "Long Stark: 66\n", + "Oral Gorczany: 24\n", + "Demian Anderson PhD: 62\n", + "Euna Huel-Botsford: 69\n", + "Dejah Beer: 57\n", + "Berdie Bahringer: 60\n", + "Fleta Dicki: 22\n", + "Jana Renner: 18\n", + "Trace Gerhold: 62\n", + "Gracelyn Torphy: 70\n", + "Angus Kertzmann: 27\n", + "Philomena Christiansen-Larkin: 60\n", + "Reva Frami: 50\n", + "Nautica Hills: 26\n", + "Dr. Torrey Harris: 35\n", + "Camille Schamberger: 30\n", + "Hershell Keeling III: 23\n", + "Rosalie White: 27\n", + "Miss Salina Bergnaum: 33\n", + "Odie Vandervort DVM: 63\n", + "Ivonne Jacobi: 28\n", + "Lacy Wilderman: 59\n", + "Alferd Bartoletti III: 27\n", + "Astrid Kuhn DVM: 47\n", + "Joretta Harvey: 28\n", + "Nathen Stoltenberg-Toy: 20\n", + "Symone Hodkiewicz PhD: 28\n", + "Denise Schaden-Mertz: 24\n", + "Dr. Lucious Boyle DDS: 51\n", + "Muhammad Rau PhD: 37\n", + "Shelbie Stamm: 52\n", + "Dr. Eulalie Beer PhD: 58\n", + "Catherine Ankunding: 30\n", + "Rozanne Moore: 21\n", + "Hollie Simonis MD: 35\n", + "Trudi Hills: 48\n", + "Hilario Torp: 21\n", + "Trinidad Cummerata: 44\n", + "Fern Maggio-DuBuque: 21\n", + "Mariyah Bauch-Gutkowski: 33\n", + "Kelsi Johns: 27\n", + "Dallas Nolan: 34\n", + "Corinna Price: 22\n", + "Dr. Deanne McLaughlin MD: 38\n", + "Larae Treutel: 70\n", + "Mora Hegmann: 64\n", + "Omar Swift: 45\n", + "Mariann Stiedemann: 45\n", + "Janay Hartmann: 63\n", + "Raynard Padberg: 69\n", + "Alphonsine Wehner: 26\n", + "Londyn Sauer-Hahn: 42\n", + "Cyrus Lueilwitz: 57\n", + "Miss Addie Feeney DDS: 40\n", + "Vernie Daniel DDS: 33\n", + "Stevie Abernathy: 58\n", + "Aria Greenfelder PhD: 44\n", + "Ferris Ziemann-Bechtelar: 57\n", + "Gianna Schuppe DDS: 22\n", + "Bose Hudson: 35\n", + "Joslyn Kiehn: 52\n", + "Sharon Ernser V: 49\n", + "Xiomara Cartwright PhD: 27\n", + "Jennings Waelchi: 47\n", + "Mercedes Schoen: 60\n", + "Treyvon Zemlak: 43\n", + "Robin Casper: 40\n", + "Marsh Gibson: 24\n", + "Brielle White PhD: 37\n", + "Edson Littel: 19\n", + "Dr. Vick Bartell DVM: 56\n", + "Dell Schmidt: 25\n", + "Dr. Jayce Ryan: 36\n", + "Caden Hahn: 65\n", + "Boris Jones III: 33\n", + "Rock Welch-Towne: 33\n", + "Roger Jakubowski: 27\n", + "Jaylee Rodriguez PhD: 27\n", + "Katharine Bartoletti-Padberg: 29\n", + "Della Mayer: 38\n", + "Harrie Hayes IV: 20\n", + "Tyesha Graham PhD: 60\n", + "Lora Nikolaus: 59\n", + "Julius Hansen: 39\n", + "Manson Muller-Bode: 42\n", + "Miss Tessa Kuhlman: 21\n", + "Encarnacion Huel: 67\n", + "Dr. Ota Ryan DVM: 18\n", + "Tracey Schroeder: 64\n", + "Elder Hamill-Beatty: 62\n", + "Jinnie Rice MD: 57\n", + "Deshawn Dibbert-Franecki: 57\n", + "Kasey Brown: 52\n", + "Tracy Mueller: 69\n", + "Dr. Karon Sauer: 40\n", + "Newell Gorczany: 23\n", + "Cleora Balistreri: 30\n", + "Marley McClure: 29\n", + "Mercer Mertz DVM: 28\n", + "Abbie Emard: 63\n", + "Ivy Feeney: 70\n", + "Carey Klocko: 59\n", + "Kayli Auer: 33\n", + "Perley Anderson PhD: 31\n", + "Shannon Hauck-Steuber: 63\n", + "Rodrigo Wunsch: 59\n", + "Glenn Grant DVM: 33\n", + "Keon Reichel PhD: 70\n", + "Estefania Zemlak PhD: 22\n", + "Nicolas Torphy-Romaguera: 50\n", + "Jermaine Pouros-Schowalter: 69\n", + "Etta Gaylord: 33\n", + "Dillie Rowe: 35\n", + "Dr. Tollie Powlowski: 28\n", + "Sanjuanita Boyle DVM: 26\n", + "Thaddeus Terry: 52\n", + "Estela Parisian: 27\n", + "Rihanna Prohaska PhD: 53\n", + "Ruthanne Hagenes: 19\n", + "Emett Jones MD: 44\n", + "Lamarcus Haag: 43\n", + "Victorine Price: 25\n", + "Marius Welch: 47\n", + "Mathilda Tromp: 37\n", + "Dessie Hartmann: 24\n", + "Cuba Ullrich: 31\n", + "Jaydin Cronin: 48\n", + "Dr. Stephon Mills III: 21\n", + "Harman Dare: 53\n", + "Cornelious Harvey: 65\n", + "Lacie Robel PhD: 24\n", + "Jensen Rippin: 22\n", + "Lula Boyle: 33\n", + "Dillion Wisoky: 59\n", + "Kathlene Corkery: 28\n", + "Horton Zulauf: 26\n", + "Patti Christiansen PhD: 57\n", + "Enid Stracke DDS: 21\n", + "Alcide Lehner: 32\n", + "Kelli Connelly: 54\n", + "Justina D'Amore: 26\n", + "Emiliano Mohr DDS: 41\n", + "Terence Jerde: 54\n", + "Harper Swift: 28\n", + "Jeremie Hills: 29\n", + "Dr. Dani Rau DDS: 61\n", + "Shelbi Kub-DuBuque: 33\n", + "Olivine Pagac: 46\n", + "Rosita Hauck MD: 37\n", + "Dr. Paralee Heaney MD: 61\n", + "Micky Miller-Mraz: 23\n", + "Ruben Haag: 37\n", + "Llewellyn Schinner III: 38\n", + "Markita Rolfson-Cartwright: 22\n", + "Sage Ward PhD: 63\n", + "Yajaira Harber: 57\n", + "Michaela Kunze-Bahringer: 48\n", + "Donny Dietrich: 30\n", + "Maddison Friesen: 50\n", + "Miss Destinee Collins PhD: 53\n", + "Brittney Jaskolski-Hammes: 35\n", + "Ima Ward: 69\n", + "Arlington Conn: 49\n", + "Sudie Botsford: 51\n", + "Miss Lynn Abernathy DDS: 53\n", + "Winfred Hagenes: 67\n", + "Chloe Will: 27\n", + "Bunk Collier DVM: 22\n", + "Vicy Gleichner: 43\n", + "Sherree Wyman-Roberts: 23\n", + "Zeb Ortiz: 54\n", + "Dr. Layla Aufderhar: 33\n", + "Ardelia Hamill: 70\n", + "Shae Willms MD: 20\n", + "Noma Harber: 25\n", + "Isham Leuschke: 44\n", + "Jewell Homenick DVM: 36\n", + "Xzavier Hickle: 61\n", + "Julisa Pacocha: 67\n", + "Lucina Cronin DVM: 44\n", + "Cielo Lakin: 64\n", + "Billy Huel: 25\n", + "Destini McGlynn: 29\n", + "Ernest Shields: 67\n", + "Dr. Rocco Johnston: 49\n", + "Nayeli Morissette: 24\n", + "Deven Gottlieb: 26\n", + "Sheron Dibbert: 69\n", + "Horatio Jenkins: 58\n", + "Lovie Rowe-King: 59\n", + "Thaddeus Koss PhD: 65\n", + "Adolph Buckridge: 38\n", + "Mitch Schimmel IV: 49\n", + "Carie Jaskolski-Berge: 30\n", + "Valentin Jerde IV: 19\n", + "Kirstin Hintz: 49\n", + "Obe Nolan III: 38\n", + "Thurman Schiller: 47\n", + "Edsel Douglas: 67\n", + "Toshio Koch-Bahringer: 31\n", + "Ray Wintheiser: 51\n", + "Bernie Schamberger: 28\n", + "Narcissus Bayer: 68\n", + "Carolynn Green: 42\n", + "Dylon Koelpin: 44\n", + "Jacquez Schmidt-Hansen: 54\n", + "Alcee Osinski: 47\n", + "Salomon Tillman: 53\n", + "Jasen Kris-Reichel: 42\n", + "Hezzie Beahan: 26\n", + "Genesis Romaguera: 32\n", + "Claribel Rohan: 56\n", + "Miss Noelle Bergnaum: 41\n", + "Lilyan O'Kon-Gerhold: 51\n", + "Patience Dach-Heidenreich: 63\n", + "Janette Schaefer: 18\n", + "Kimball Brown: 52\n", + "Dr. Ramiro Sipes MD: 56\n", + "Altha Ziemann: 49\n", + "Edie Flatley: 38\n", + "Erie O'Keefe: 54\n", + "Kay Kovacek: 42\n", + "Eileen Sporer DVM: 61\n", + "Montel Kuvalis: 43\n", + "Buddy Rempel: 25\n", + "Miss Rosy Bartoletti DVM: 61\n", + "Santina Hirthe: 19\n", + "Willow Feil: 20\n", + "Ethen VonRueden: 36\n", + "Jessee Quigley: 39\n", + "Dr. Shade Nienow MD: 69\n", + "Eleanora Lueilwitz: 48\n", + "Lakesha Ratke: 65\n", + "Delpha VonRueden: 23\n", + "Stanford Gutkowski: 48\n", + "Dozier Anderson: 59\n", + "Jerri Swaniawski-Murray: 29\n", + "Mae Mann: 36\n", + "Zollie Braun Sr.: 56\n", + "Ola Kassulke V: 45\n", + "Dr. Oran Bartell IV: 54\n", + "Mabell Feil: 44\n", + "Nicolas Haley: 69\n", + "Lesta Effertz: 51\n", + "Larkin Green: 69\n", + "Shatara Kerluke: 21\n", + "Bertina Kiehn MD: 50\n", + "Miss Aurore Witting: 23\n", + "Dr. Tea Zboncak DDS: 29\n", + "Isa Jacobs: 45\n", + "Mozell Dibbert: 62\n", + "Dr. Sherrie Dach: 29\n", + "Miss Jennifer Collins MD: 52\n", + "Kathy Kovacek: 69\n", + "Jeryl Purdy: 45\n", + "Dr. Juan Stracke: 39\n", + "Marvin Zboncak: 21\n", + "Gilmore Bashirian: 18\n", + "Zed Reichert: 42\n", + "Estie Raynor: 23\n", + "Arnett Boyer: 53\n", + "Latoya Kohler: 69\n", + "Kevan Waelchi: 46\n", + "Yusuf Goodwin I: 35\n", + "Kristin Oberbrunner: 31\n", + "Victor Mann PhD: 60\n", + "Kandice Casper DVM: 28\n", + "Peyton Labadie-Anderson: 35\n", + "Ivie Funk: 43\n", + "Carlie Murray: 24\n", + "Jimmy Doyle: 27\n", + "Author Kunde: 46\n", + "Harmony O'Kon: 35\n", + "Ima Bahringer: 62\n", + "Nakia Dare: 53\n", + "Kenia O'Hara: 31\n", + "Dr. Vick Witting V: 39\n", + "Vesta Renner: 57\n", + "Tal Powlowski: 58\n", + "Miss Latrice Green DVM: 66\n", + "Miss Makenna Lynch: 44\n", + "Jean Tillman: 29\n", + "Einar Dicki: 40\n", + "Otha Fay III: 59\n", + "Rubye Luettgen PhD: 59\n", + "Pascal Cassin: 40\n", + "Casimiro Rutherford: 36\n", + "Boyce Howe: 51\n", + "Marius Nolan: 19\n", + "Pearla Schuppe: 33\n", + "Elam Rippin-Kulas: 37\n", + "Tarah Fahey: 20\n", + "Arden Corkery: 63\n", + "Ali Gerlach II: 35\n", + "Oddie Stokes: 33\n", + "Tricia Corwin MD: 65\n", + "Achsah Renner: 48\n", + "Cuba Buckridge DDS: 65\n", + "Barbara Reinger: 66\n", + "Dwight King-Rogahn: 23\n", + "Dr. Silver Mante II: 31\n", + "Dr. Pearle Cronin: 30\n", + "Ramon Kilback: 69\n", + "Mylie Farrell: 32\n", + "Colt Gleason DVM: 32\n", + "Vern Lang: 31\n", + "Dr. Tavon Koch I: 66\n", + "Chelsey Bayer MD: 58\n", + "Jeffie O'Hara: 52\n", + "Authur Keebler: 22\n", + "Devonta Marquardt-Dicki: 65\n", + "Graydon Padberg: 64\n", + "Dr. Rylan Langworth: 62\n", + "Geary Predovic: 59\n", + "Katherin Hettinger: 56\n", + "Evia Wunsch-O'Keefe: 35\n", + "Hildegarde Larkin: 51\n", + "Genie Metz-Wisozk: 56\n", + "Flavia Dietrich: 43\n", + "Vilma Zieme: 45\n", + "Dr. Arron Schimmel: 29\n", + "Florene Russel-Christiansen: 25\n", + "Annabella Anderson: 30\n", + "Nevaeh Will: 22\n", + "Audy Pfeffer-Romaguera: 38\n", + "Dr. Syed Stroman PhD: 64\n", + "Christian Russel: 19\n", + "Anne Bahringer: 54\n", + "Tawnya Gislason: 51\n", + "Deja Harber-McLaughlin: 29\n", + "Thelma Bradtke DVM: 25\n", + "Lashonda Hilpert MD: 69\n", + "Jethro Tremblay: 70\n", + "Orlando Lebsack-Lueilwitz: 26\n", + "Rohan Mosciski: 52\n", + "Jarret Weber: 25\n", + "Dr. Salomon Shanahan Jr.: 56\n", + "Beadie Parisian: 44\n", + "Sharday Schumm DVM: 50\n", + "Tyra Purdy-Jacobi: 47\n", + "Miss Joline Medhurst PhD: 48\n", + "Modena Kozey-Reinger: 46\n", + "Dr. Valentino Cremin: 33\n", + "Freida O'Connell: 55\n", + "Juanita Emard: 40\n", + "Opal Blanda: 64\n", + "Ethelyn Stiedemann: 56\n", + "Debra Tremblay: 36\n", + "Dawne Bartoletti: 48\n", + "Casimiro Graham: 37\n", + "Trystan Breitenberg: 41\n", + "Danae Bernhard: 68\n", + "Jo Gleason: 48\n", + "Dr. Shellie Daugherty: 68\n", + "Dr. Krystle Labadie: 25\n", + "Jaclyn Koelpin: 28\n", + "Lena O'Hara-Bogan: 30\n", + "Arsenio Kuphal: 41\n", + "Kiera Abbott: 45\n", + "Durwood Halvorson: 34\n", + "Jenifer Feeney DDS: 62\n", + "Albina Walker: 64\n", + "Renata Collins MD: 65\n", + "Hortensia Wuckert: 65\n", + "Susanna Wyman-Bartell: 42\n", + "Karren Bradtke: 52\n", + "Noelle Carroll PhD: 28\n", + "Francisquita Kassulke: 39\n", + "Mathilda Eichmann MD: 62\n", + "Fallon Kuvalis-Volkman: 56\n", + "Ezell Muller: 19\n", + "Nanci Koelpin: 65\n", + "Carlyle Barton: 36\n", + "Evonne Breitenberg: 63\n", + "Oswaldo Kohler: 21\n", + "Cherry Rath: 59\n", + "Mary Ebert DDS: 36\n", + "Dr. Lara Rice PhD: 70\n", + "Pranav Leuschke V: 27\n", + "Ammon Wilderman: 68\n", + "Breann Fay: 19\n", + "Delmar Nitzsche: 20\n", + "Dedric Pollich: 21\n" + ] + } + ], + "source": [ + "# Creating set of names from crm df\n", + "crm_names = list(set(df.name))\n", + "\n", + "# Generate random ages for each name\n", + "ages = {name: random.randint(18, 70) for name in crm_names}\n", + "\n", + "# Print the names and their corresponding ages\n", + "for name, age in ages.items():\n", + " print(f\"{name}: {age}\")\n", + " \n", + "# Adding ages to dataframe\n", + "df['age'] = df['name'].map(ages)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adding Gender as a feature" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import gender_guesser.detector as gender" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_4530/2715333114.py:5: UserWarning: you are shuffling a 'ArrowStringArray' object which is not a subclass of 'Sequence'; `shuffle` is not guaranteed to behave correctly. E.g., non-numpy array/tensor objects with view semantics may contain duplicates after shuffling.\n", + " np.random.shuffle(unique_names)\n" + ] + } + ], + "source": [ + "# Step 1: Get unique names\n", + "unique_names = df['name'].unique()\n", + "\n", + "# Step 2: Shuffle the unique names to randomize the order\n", + "np.random.shuffle(unique_names)\n", + "\n", + "# Calculate the number of entries for each gender based on the proportions\n", + "num_unique = len(unique_names)\n", + "num_male = int(0.45 * num_unique)\n", + "num_female = int(0.45 * num_unique)\n", + "num_unknown = num_unique - num_male - num_female # Ensure total adds up to the number of unique names\n", + "\n", + "# Step 3: Assign genders to unique names\n", + "genders = ['male'] * num_male + ['female'] * num_female + ['unknown'] * num_unknown\n", + "gender_assignment = dict(zip(unique_names, genders)) # Create a dictionary mapping names to genders\n", + "\n", + "# Step 4: Map these unique name-gender pairs back to the original dataframe\n", + "df['gender'] = df['name'].apply(lambda x: gender_assignment[x])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adding \"loyalty_program\" feature" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [], + "source": [ + "# Step 1: Get unique names\n", + "unique_names = df['name'].unique()\n", + "\n", + "# Calculate the number of names to be assigned \"loyalty_member\" = 1 based on the 20% proportion\n", + "num_loyalty_members = int(0.20 * len(unique_names))\n", + "\n", + "# Create an array with 0s and 1s according to the desired distribution\n", + "# Start with an array of 0s, then set the first 20% (or num_loyalty_members) to 1\n", + "loyalty_status = np.zeros(len(unique_names), dtype=int)\n", + "loyalty_status[:num_loyalty_members] = 1\n", + "\n", + "# Shuffle the array to randomize the distribution of loyalty members\n", + "np.random.shuffle(loyalty_status)\n", + "\n", + "# Create a dictionary mapping each unique name to its loyalty status\n", + "loyalty_assignment = dict(zip(unique_names, loyalty_status))\n", + "\n", + "# Step 2: Map these unique name-loyalty status pairs back to the original dataframe\n", + "# This ensures each name has a consistent loyalty member status across the dataframe\n", + "df['loyalty_member'] = df['name'].apply(lambda x: loyalty_assignment[x])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adding \"Product Category\" and \"Product Name\" features" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " name job created \\\n", + "0 Otho Harris Purchasing manager 2003-11-16 19:04:58 \n", + "1 Dr. Tito Hettinger Engineer, civil (consulting) 2011-09-08 08:33:08 \n", + "2 Elder Hamill-Beatty Designer, jewellery 2014-03-16 03:03:51 \n", + "3 Rolland Hand Network engineer 2018-11-03 14:02:31 \n", + "4 Jase Harber Dietitian 2011-11-09 01:09:54 \n", + "... ... ... ... \n", + "13089 Tari Jast Surveyor, quantity 2001-06-03 16:06:57 \n", + "13090 Shani Fisher IT consultant 2001-11-27 06:18:55 \n", + "13091 Marsh Gibson Mining engineer 2014-12-16 01:38:11 \n", + "13092 Etha Douglas Pensions consultant 2008-09-17 10:55:34 \n", + "13093 Red Howe Chartered accountant 2003-02-25 11:55:50 \n", + "\n", + " transactions revenue email_permissions crm_id event_timestamp \\\n", + "0 719 2748.01 FALSE CRM125509 1612076959662317 \n", + "1 207 11515.29 TRUE CRM086949 1612116213132183 \n", + "2 108 7352.04 TRUE CRM013713 1612107547772306 \n", + "3 19 376.48 TRUE CRM018168 1612125332738442 \n", + "4 77 7987.04 FALSE CRM001445 1612131609849637 \n", + "... ... ... ... ... ... \n", + "13089 370 8055.56 FALSE CRM044778 1612075221528220 \n", + "13090 160 373.44 TRUE CRM059126 1612065424491888 \n", + "13091 388 16857.19 FALSE CRM093129 1612097704306488 \n", + "13092 92 11171.68 FALSE CRM064269 1612072777324198 \n", + "13093 115 16553.99 TRUE CRM129363 1612102504002134 \n", + "\n", + " event_name category mobile_brand_name mobile_model_name \\\n", + "0 session_start desktop Google Chrome \n", + "1 first_visit desktop Google Chrome \n", + "2 user_engagement mobile Apple iPhone \n", + "3 page_view desktop Apple Safari \n", + "4 user_engagement desktop Google Chrome \n", + "... ... ... ... ... \n", + "13089 page_view desktop Google Chrome \n", + "13090 page_view desktop Google Chrome \n", + "13091 session_start desktop Apple Safari \n", + "13092 user_engagement desktop Google Chrome \n", + "13093 user_engagement mobile Xiaomi \n", + "\n", + " mobile_marketing_name mobile_os_hardware_model operating_system \\\n", + "0 Windows \n", + "1 Web \n", + "2 iOS \n", + "3 Web \n", + "4 Web \n", + "... ... ... ... \n", + "13089 \n", + "13090 Windows \n", + "13091 Web \n", + "13092 Web \n", + "13093 Web \n", + "\n", + " operating_system_version vendor_id advertising_id language \\\n", + "0 Windows 7 en-us \n", + "1 10 en-gb \n", + "2 iOS 14.3 \n", + "3 Intel 10.15 en-gb \n", + "4 10 \n", + "... ... ... ... ... \n", + "13089 \n", + "13090 Windows 10 en-gb \n", + "13091 Intel 10.15 en-us \n", + "13092 10 \n", + "13093 10 en-us \n", + "\n", + " is_limited_ad_tracking time_zone_offset_seconds \\\n", + "0 No \n", + "1 No \n", + "2 No \n", + "3 No \n", + "4 No \n", + "... ... ... \n", + "13089 No \n", + "13090 No \n", + "13091 No \n", + "13092 No \n", + "13093 No \n", + "\n", + " web_info continent \\\n", + "0 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "1 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "2 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "3 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "4 {'browser': 'Chrome', 'browser_version': '86.0'} Asia \n", + "... ... ... \n", + "13089 {'browser': 'Chrome', 'browser_version': '\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namejobcreatedtransactionsrevenueemail_permissionscrm_idevent_timestampevent_namecategorymobile_brand_namemobile_model_namemobile_marketing_namemobile_os_hardware_modeloperating_systemoperating_system_versionvendor_idadvertising_idlanguageis_limited_ad_trackingtime_zone_offset_secondsweb_infocontinentsub_continentcountryregioncitymetroevent_iddatetimedateyearmonthmonth_numberweek_numberday_numberhourunits_purchasedtransaction_amountageproduct_categoryproduct_name
0Otho HarrisPurchasing manager2003-11-16 19:04:587192748.01FALSECRM1255091612076959662317session_startdesktopGoogleChrome<Other><NA>WindowsWindows 7<NA><NA>en-usNo<NA>{'browser': 'Chrome', 'browser_version': '87.0'}AmericasNorthern AmericaUnited StatesCalifornia(not set)(not set)7b63f3ac2021-01-31 07:09:19.662317+00:002021-01-312021January14317NaNNaN33NoneNone
1Dr. Tito HettingerEngineer, civil (consulting)2011-09-08 08:33:0820711515.29TRUECRM0869491612116213132183first_visitdesktopGoogleChrome<Other><NA>Web10<NA><NA>en-gbNo<NA>{'browser': 'Chrome', 'browser_version': '87.0'}AmericasNorthern AmericaUnited StatesFloridaTampa(not set)7606cfde2021-01-31 18:03:33.132183+00:002021-01-312021January143118NaNNaN18NoneNone
2Elder Hamill-BeattyDesigner, jewellery2014-03-16 03:03:511087352.04TRUECRM0137131612107547772306user_engagementmobileAppleiPhone<Other><NA>iOSiOS 14.3<NA><NA><NA>No<NA>{'browser': 'Safari', 'browser_version': '14.0'}AmericasNorthern AmericaUnited StatesIndiana(not set)(not set)f74dcaf32021-01-31 15:39:07.772306+00:002021-01-312021January143115NaNNaN62NoneNone
3Rolland HandNetwork engineer2018-11-03 14:02:3119376.48TRUECRM0181681612125332738442page_viewdesktopAppleSafari<Other><NA>WebIntel 10.15<NA><NA>en-gbNo<NA>{'browser': 'Safari', 'browser_version': '14.0'}AmericasNorthern AmericaUnited StatesLouisianaBaton Rouge(not set)4cb1481f2021-01-31 20:35:32.738442+00:002021-01-312021January143120NaNNaN68NoneNone
4Jase HarberDietitian2011-11-09 01:09:54777987.04FALSECRM0014451612131609849637user_engagementdesktopGoogleChrome<Other><NA>Web10<NA><NA><NA>No<NA>{'browser': 'Chrome', 'browser_version': '86.0'}AsiaEastern AsiaJapan(not set)(not set)(not set)6c7f1ea12021-01-31 22:20:09.849637+00:002021-01-312021January143122NaNNaN48NoneNone
\n", + "" + ], + "text/plain": [ + " name job created \\\n", + "0 Otho Harris Purchasing manager 2003-11-16 19:04:58 \n", + "1 Dr. Tito Hettinger Engineer, civil (consulting) 2011-09-08 08:33:08 \n", + "2 Elder Hamill-Beatty Designer, jewellery 2014-03-16 03:03:51 \n", + "3 Rolland Hand Network engineer 2018-11-03 14:02:31 \n", + "4 Jase Harber Dietitian 2011-11-09 01:09:54 \n", + "\n", + " transactions revenue email_permissions crm_id event_timestamp \\\n", + "0 719 2748.01 FALSE CRM125509 1612076959662317 \n", + "1 207 11515.29 TRUE CRM086949 1612116213132183 \n", + "2 108 7352.04 TRUE CRM013713 1612107547772306 \n", + "3 19 376.48 TRUE CRM018168 1612125332738442 \n", + "4 77 7987.04 FALSE CRM001445 1612131609849637 \n", + "\n", + " event_name category mobile_brand_name mobile_model_name \\\n", + "0 session_start desktop Google Chrome \n", + "1 first_visit desktop Google Chrome \n", + "2 user_engagement mobile Apple iPhone \n", + "3 page_view desktop Apple Safari \n", + "4 user_engagement desktop Google Chrome \n", + "\n", + " mobile_marketing_name mobile_os_hardware_model operating_system \\\n", + "0 Windows \n", + "1 Web \n", + "2 iOS \n", + "3 Web \n", + "4 Web \n", + "\n", + " operating_system_version vendor_id advertising_id language \\\n", + "0 Windows 7 en-us \n", + "1 10 en-gb \n", + "2 iOS 14.3 \n", + "3 Intel 10.15 en-gb \n", + "4 10 \n", + "\n", + " is_limited_ad_tracking time_zone_offset_seconds \\\n", + "0 No \n", + "1 No \n", + "2 No \n", + "3 No \n", + "4 No \n", + "\n", + " web_info continent \\\n", + "0 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "1 {'browser': 'Chrome', 'browser_version': '87.0'} Americas \n", + "2 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "3 {'browser': 'Safari', 'browser_version': '14.0'} Americas \n", + "4 {'browser': 'Chrome', 'browser_version': '86.0'} Asia \n", + "\n", + " sub_continent country region city metro \\\n", + "0 Northern America United States California (not set) (not set) \n", + "1 Northern America United States Florida Tampa (not set) \n", + "2 Northern America United States Indiana (not set) (not set) \n", + "3 Northern America United States Louisiana Baton Rouge (not set) \n", + "4 Eastern Asia Japan (not set) (not set) (not set) \n", + "\n", + " event_id datetime date year month \\\n", + "0 7b63f3ac 2021-01-31 07:09:19.662317+00:00 2021-01-31 2021 January \n", + "1 7606cfde 2021-01-31 18:03:33.132183+00:00 2021-01-31 2021 January \n", + "2 f74dcaf3 2021-01-31 15:39:07.772306+00:00 2021-01-31 2021 January \n", + "3 4cb1481f 2021-01-31 20:35:32.738442+00:00 2021-01-31 2021 January \n", + "4 6c7f1ea1 2021-01-31 22:20:09.849637+00:00 2021-01-31 2021 January \n", + "\n", + " month_number week_number day_number hour units_purchased \\\n", + "0 1 4 31 7 NaN \n", + "1 1 4 31 18 NaN \n", + "2 1 4 31 15 NaN \n", + "3 1 4 31 20 NaN \n", + "4 1 4 31 22 NaN \n", + "\n", + " transaction_amount age product_category product_name \n", + "0 NaN 33 None None \n", + "1 NaN 18 None None \n", + "2 NaN 62 None None \n", + "3 NaN 68 None None \n", + "4 NaN 48 None None " + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/root/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_experimental/agents/agent_toolkits/pandas/base.py:233: UserWarning: Received additional kwargs {'prompt': ChatPromptTemplate(input_variables=['agent_scratchpad', 'input'], input_types={'agent_scratchpad': typing.List[typing.Union[langchain_core.messages.ai.AIMessage, langchain_core.messages.human.HumanMessage, langchain_core.messages.chat.ChatMessage, langchain_core.messages.system.SystemMessage, langchain_core.messages.function.FunctionMessage, langchain_core.messages.tool.ToolMessage]]}, messages=[SystemMessagePromptTemplate(prompt=PromptTemplate(input_variables=[], template=\"You are working with a pandas dataframe in Python. The name of the dataframe is `df`.\\nIt is important to understand the attributes of the dataframe before working with it. This is the result of running `df.head().to_markdown()`\\n\\n\\n| | name | job | created | transactions | revenue | permission | crm_id |\\n|---:|:----------------|:-----------------------|:--------------------|---------------:|----------:|:-------------|:----------|\\n| 0 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 1 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 2 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 3 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n| 4 | Mr. Austen Conn | Applications developer | 2002-11-15 23:03:50 | 621 | 79718.1 | TRUE | CRM000826 |\\n\\n\\nYou are not meant to use only these rows to answer questions - they are meant as a way of telling you about the shape and schema of the dataframe.\\nYou also do not have use only the information here to answer questions - you can run intermediate queries to do exporatory data analysis to give you more information as needed.\\n\\nYou have a tool called `person_name_search` through which you can lookup a person by name and find the records corresponding to people with similar name as the query.\\nYou should only really use this if your search term contains a persons name. Otherwise, try to solve it with code.\\n\\nFor example:\\n\\nHow old is Jane?\\nUse `person_name_search` since you can use the query `Jane`\\n\\nWho has id 320\\nUse `python_repl` since even though the question is about a person, you don't know their name so you can't include it.\\n\")), MessagesPlaceholder(variable_name='agent_scratchpad'), HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['input'], template='{input}'))])} which are no longer supported.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "# Defining agent\n", + "agent = create_pandas_dataframe_agent(OpenAI(temperature=0, openai_api_key = \"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\"), df, prompt = prompt, verbose=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3mThought: We need to filter the dataframe to only include users who are male, from the United States, and below the age of 50. Then, we can count the number of rows in the filtered dataframe.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['product_category'] == 'male')])\u001b[0m\u001b[36;1m\u001b[1;3m0\u001b[0m\u001b[32;1m\u001b[1;3mThis result is incorrect, there must be an issue with the filtering conditions.\n", + "Action: python_repl_ast\n", + "Action Input: df['product_category'].unique()\u001b[0m\u001b[36;1m\u001b[1;3m[None 'Jurassic World' 'Marvel' 'Batman']\u001b[0m\u001b[32;1m\u001b[1;3m The 'product_category' column contains values other than 'male'. We need to use the 'job' column to filter for male users.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['job'].str.contains('male'))])\u001b[0m\u001b[36;1m\u001b[1;3m0\u001b[0m\u001b[32;1m\u001b[1;3m This result is still incorrect, there must be an issue with the 'job' column. We need to check the unique values in this column.\n", + "Action: python_repl_ast\n", + "Action Input: df['job'].unique()\u001b[0m\u001b[36;1m\u001b[1;3m\n", + "[ 'Purchasing manager',\n", + " 'Engineer, civil (consulting)',\n", + " 'Designer, jewellery',\n", + " 'Network engineer',\n", + " 'Dietitian',\n", + " 'Scientist, marine',\n", + " 'Development worker, international aid',\n", + " 'Biomedical scientist',\n", + " 'Producer, television/film/video',\n", + " 'Office manager',\n", + " ...\n", + " 'Accountant, chartered',\n", + " 'Soil scientist',\n", + " 'Physiological scientist',\n", + " 'Estate manager/land agent',\n", + " 'Retail banker',\n", + " 'Scientist, research (medical)',\n", + " 'Water quality scientist',\n", + " 'Scientist, clinical (histocompatibility and immunogenetics)',\n", + " 'Oceanographer',\n", + " 'Accommodation manager']\n", + "Length: 547, dtype: string\u001b[0m\u001b[32;1m\u001b[1;3m There are no values in the 'job' column that specifically indicate male. We need to use the 'name' column to filter for male users.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.'))])\u001b[0m\u001b[36;1m\u001b[1;3m25\u001b[0m\u001b[32;1m\u001b[1;3m This result seems more accurate, but we should also check for other titles that may indicate male.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.|Sir|Master|Prince|King|Lord|Duke|Baron|Count|Viscount|Earl|Marquess|Emperor|Sultan|Sheikh|Khan|Chief|Captain|Colonel|Major|Lieutenant|Sergeant|Private|Corporal|Admiral|Commander|Captain|Lieutenant|Ensign|Commodore|General|Brigadier|Marshal|Air Marshal|Field Marshal|Admiral|Fleet Admiral|Admiral of the Fleet|Admiral of the Navy|Admiral of the Armada|Admiral of the Ocean Sea|Admiral of the Ocean|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean\u001b[0m\u001b[36;1m\u001b[1;3mSyntaxError: unterminated string literal (detected at line 1) (, line 1)\u001b[0m\u001b[32;1m\u001b[1;3m There seems to be an issue with the input string, we need to break it up into smaller chunks.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.|Sir|Master|Prince|King|Lord|Duke|Baron|Count|Viscount|Earl|Marquess|Emperor|Sultan|Sheikh|Khan|Chief|Captain|Colonel|Major|Lieutenant|Sergeant|Private|Corporal|Admiral|Commander|Captain|Lieutenant|Ensign|Commodore|General|Brigadier|Marshal|Air Marshal|Field Marshal|Admiral|Fleet Admiral|Admiral of the Fleet|Admiral of the Navy|Admiral of the Armada|Admiral of the Ocean Sea|Admiral of the Ocean|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of\u001b[0m\u001b[36;1m\u001b[1;3mSyntaxError: unterminated string literal (detected at line 1) (, line 1)\u001b[0m\u001b[32;1m\u001b[1;3m There still seems to be an issue with the input string, we need to break it up into smaller chunks.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.|Sir|Master|Prince|King|Lord|Duke|Baron|Count|Viscount|Earl|Marquess|Emperor|Sultan|Sheikh|Khan|Chief|Captain|Colonel|Major|Lieutenant|Sergeant|Private|Corporal|Admiral|Commander|Captain|Lieutenant|Ensign|Commodore|General|Brigadier|Marshal|Air Marshal|Field Marshal|Admiral|Fleet Admiral|Admiral of the Fleet|Admiral of the Navy|Admiral of the Armada|Admiral of the Ocean Sea|Admiral of the Ocean|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral\u001b[0m\u001b[36;1m\u001b[1;3mSyntaxError: unterminated string literal (detected at line 1) (, line 1)\u001b[0m\u001b[32;1m\u001b[1;3m There still seems to be an issue with the input string, we need to break it up into smaller chunks.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.|Sir|Master|Prince|King|Lord|Duke|Baron|Count|Viscount|Earl|Marquess|Emperor|Sultan|Sheikh|Khan|Chief|Captain|Colonel|Major|Lieutenant|Sergeant|Private|Corporal|Admiral|Commander|Captain|Lieutenant|Ensign|Commodore|General|Brigadier|Marshal|Air Marshal|Field Marshal|Admiral|Fleet Admiral|Admiral of the Fleet|Admiral of the Navy|Admiral of the Armada|Admiral of the Ocean Sea|Admiral of the Ocean|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral\u001b[0m\u001b[36;1m\u001b[1;3mSyntaxError: unterminated string literal (detected at line 1) (, line 1)\u001b[0m\u001b[32;1m\u001b[1;3m There still seems to be an issue with the input string, we need to break it up into smaller chunks.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.|Sir|Master|Prince|King|Lord|Duke|Baron|Count|Viscount|Earl|Marquess|Emperor|Sultan|Sheikh|Khan|Chief|Captain|Colonel|Major|Lieutenant|Sergeant|Private|Corporal|Admiral|Commander|Captain|Lieutenant|Ensign|Commodore|General|Brigadier|Marshal|Air Marshal|Field Marshal|Admiral|Fleet Admiral|Admiral of the Fleet|Admiral of the Navy|Admiral of the Armada|Admiral of the Ocean Sea|Admiral of the Ocean|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral\u001b[0m\u001b[36;1m\u001b[1;3mSyntaxError: unterminated string literal (detected at line 1) (, line 1)\u001b[0m\u001b[32;1m\u001b[1;3m There still seems to be an issue with the input string, we need to break it up into smaller chunks.\n", + "Action: python_repl_ast\n", + "Action Input: len(df[(df['age'] < 50) & (df['country'] == 'United States') & (df['name'].str.contains('Mr.|Sir|Master|Prince|King|Lord|Duke|Baron|Count|Viscount|Earl|Marquess|Emperor|Sultan|Sheikh|Khan|Chief|Captain|Colonel|Major|Lieutenant|Sergeant|Private|Corporal|Admiral|Commander|Captain|Lieutenant|Ensign|Commodore|General|Brigadier|Marshal|Air Marshal|Field Marshal|Admiral|Fleet Admiral|Admiral of the Fleet|Admiral of the Navy|Admiral of the Armada|Admiral of the Ocean Sea|Admiral of the Ocean|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral of the Ocean Sea|Admiral\u001b[0m\u001b[36;1m\u001b[1;3mSyntaxError: unterminated string literal (detected at line 1) (, line 1)\u001b[0m" + ] + }, + { + "ename": "BadRequestError", + "evalue": "Error code: 400 - {'error': {'message': \"This model's maximum context length is 4097 tokens, however you requested 4142 tokens (3886 in your prompt; 256 for the completion). Please reduce your prompt; or completion length.\", 'type': 'invalid_request_error', 'param': None, 'code': None}}", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mBadRequestError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[193], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43magent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mCount the number of users below the age of 50, from the United States who are male\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:145\u001b[0m, in \u001b[0;36mdeprecated..deprecate..warning_emitting_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 143\u001b[0m warned \u001b[39m=\u001b[39m \u001b[39mTrue\u001b[39;00m\n\u001b[1;32m 144\u001b[0m emit_warning()\n\u001b[0;32m--> 145\u001b[0m \u001b[39mreturn\u001b[39;00m wrapped(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/chains/base.py:538\u001b[0m, in \u001b[0;36mChain.run\u001b[0;34m(self, callbacks, tags, metadata, *args, **kwargs)\u001b[0m\n\u001b[1;32m 536\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(args) \u001b[39m!=\u001b[39m \u001b[39m1\u001b[39m:\n\u001b[1;32m 537\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39m`run` supports only one positional argument.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 538\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m(args[\u001b[39m0\u001b[39;49m], callbacks\u001b[39m=\u001b[39;49mcallbacks, tags\u001b[39m=\u001b[39;49mtags, metadata\u001b[39m=\u001b[39;49mmetadata)[\n\u001b[1;32m 539\u001b[0m _output_key\n\u001b[1;32m 540\u001b[0m ]\n\u001b[1;32m 542\u001b[0m \u001b[39mif\u001b[39;00m kwargs \u001b[39mand\u001b[39;00m \u001b[39mnot\u001b[39;00m args:\n\u001b[1;32m 543\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m(kwargs, callbacks\u001b[39m=\u001b[39mcallbacks, tags\u001b[39m=\u001b[39mtags, metadata\u001b[39m=\u001b[39mmetadata)[\n\u001b[1;32m 544\u001b[0m _output_key\n\u001b[1;32m 545\u001b[0m ]\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:145\u001b[0m, in \u001b[0;36mdeprecated..deprecate..warning_emitting_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 143\u001b[0m warned \u001b[39m=\u001b[39m \u001b[39mTrue\u001b[39;00m\n\u001b[1;32m 144\u001b[0m emit_warning()\n\u001b[0;32m--> 145\u001b[0m \u001b[39mreturn\u001b[39;00m wrapped(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/chains/base.py:363\u001b[0m, in \u001b[0;36mChain.__call__\u001b[0;34m(self, inputs, return_only_outputs, callbacks, tags, metadata, run_name, include_run_info)\u001b[0m\n\u001b[1;32m 331\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"Execute the chain.\u001b[39;00m\n\u001b[1;32m 332\u001b[0m \n\u001b[1;32m 333\u001b[0m \u001b[39mArgs:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[39m `Chain.output_keys`.\u001b[39;00m\n\u001b[1;32m 355\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 356\u001b[0m config \u001b[39m=\u001b[39m {\n\u001b[1;32m 357\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mcallbacks\u001b[39m\u001b[39m\"\u001b[39m: callbacks,\n\u001b[1;32m 358\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mtags\u001b[39m\u001b[39m\"\u001b[39m: tags,\n\u001b[1;32m 359\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mmetadata\u001b[39m\u001b[39m\"\u001b[39m: metadata,\n\u001b[1;32m 360\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mrun_name\u001b[39m\u001b[39m\"\u001b[39m: run_name,\n\u001b[1;32m 361\u001b[0m }\n\u001b[0;32m--> 363\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49minvoke(\n\u001b[1;32m 364\u001b[0m inputs,\n\u001b[1;32m 365\u001b[0m cast(RunnableConfig, {k: v \u001b[39mfor\u001b[39;49;00m k, v \u001b[39min\u001b[39;49;00m config\u001b[39m.\u001b[39;49mitems() \u001b[39mif\u001b[39;49;00m v \u001b[39mis\u001b[39;49;00m \u001b[39mnot\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m}),\n\u001b[1;32m 366\u001b[0m return_only_outputs\u001b[39m=\u001b[39;49mreturn_only_outputs,\n\u001b[1;32m 367\u001b[0m include_run_info\u001b[39m=\u001b[39;49minclude_run_info,\n\u001b[1;32m 368\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/chains/base.py:162\u001b[0m, in \u001b[0;36mChain.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mBaseException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 161\u001b[0m run_manager\u001b[39m.\u001b[39mon_chain_error(e)\n\u001b[0;32m--> 162\u001b[0m \u001b[39mraise\u001b[39;00m e\n\u001b[1;32m 163\u001b[0m run_manager\u001b[39m.\u001b[39mon_chain_end(outputs)\n\u001b[1;32m 164\u001b[0m final_outputs: Dict[\u001b[39mstr\u001b[39m, Any] \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mprep_outputs(\n\u001b[1;32m 165\u001b[0m inputs, outputs, return_only_outputs\n\u001b[1;32m 166\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/chains/base.py:156\u001b[0m, in \u001b[0;36mChain.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 149\u001b[0m run_manager \u001b[39m=\u001b[39m callback_manager\u001b[39m.\u001b[39mon_chain_start(\n\u001b[1;32m 150\u001b[0m dumpd(\u001b[39mself\u001b[39m),\n\u001b[1;32m 151\u001b[0m inputs,\n\u001b[1;32m 152\u001b[0m name\u001b[39m=\u001b[39mrun_name,\n\u001b[1;32m 153\u001b[0m )\n\u001b[1;32m 154\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 155\u001b[0m outputs \u001b[39m=\u001b[39m (\n\u001b[0;32m--> 156\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_call(inputs, run_manager\u001b[39m=\u001b[39;49mrun_manager)\n\u001b[1;32m 157\u001b[0m \u001b[39mif\u001b[39;00m new_arg_supported\n\u001b[1;32m 158\u001b[0m \u001b[39melse\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_call(inputs)\n\u001b[1;32m 159\u001b[0m )\n\u001b[1;32m 160\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mBaseException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 161\u001b[0m run_manager\u001b[39m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/agents/agent.py:1391\u001b[0m, in \u001b[0;36mAgentExecutor._call\u001b[0;34m(self, inputs, run_manager)\u001b[0m\n\u001b[1;32m 1389\u001b[0m \u001b[39m# We now enter the agent loop (until it returns something).\u001b[39;00m\n\u001b[1;32m 1390\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_should_continue(iterations, time_elapsed):\n\u001b[0;32m-> 1391\u001b[0m next_step_output \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_take_next_step(\n\u001b[1;32m 1392\u001b[0m name_to_tool_map,\n\u001b[1;32m 1393\u001b[0m color_mapping,\n\u001b[1;32m 1394\u001b[0m inputs,\n\u001b[1;32m 1395\u001b[0m intermediate_steps,\n\u001b[1;32m 1396\u001b[0m run_manager\u001b[39m=\u001b[39;49mrun_manager,\n\u001b[1;32m 1397\u001b[0m )\n\u001b[1;32m 1398\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(next_step_output, AgentFinish):\n\u001b[1;32m 1399\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_return(\n\u001b[1;32m 1400\u001b[0m next_step_output, intermediate_steps, run_manager\u001b[39m=\u001b[39mrun_manager\n\u001b[1;32m 1401\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/agents/agent.py:1097\u001b[0m, in \u001b[0;36mAgentExecutor._take_next_step\u001b[0;34m(self, name_to_tool_map, color_mapping, inputs, intermediate_steps, run_manager)\u001b[0m\n\u001b[1;32m 1088\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_take_next_step\u001b[39m(\n\u001b[1;32m 1089\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 1090\u001b[0m name_to_tool_map: Dict[\u001b[39mstr\u001b[39m, BaseTool],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1094\u001b[0m run_manager: Optional[CallbackManagerForChainRun] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 1095\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Union[AgentFinish, List[Tuple[AgentAction, \u001b[39mstr\u001b[39m]]]:\n\u001b[1;32m 1096\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_consume_next_step(\n\u001b[0;32m-> 1097\u001b[0m [\n\u001b[1;32m 1098\u001b[0m a\n\u001b[1;32m 1099\u001b[0m \u001b[39mfor\u001b[39;49;00m a \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_iter_next_step(\n\u001b[1;32m 1100\u001b[0m name_to_tool_map,\n\u001b[1;32m 1101\u001b[0m color_mapping,\n\u001b[1;32m 1102\u001b[0m inputs,\n\u001b[1;32m 1103\u001b[0m intermediate_steps,\n\u001b[1;32m 1104\u001b[0m run_manager,\n\u001b[1;32m 1105\u001b[0m )\n\u001b[1;32m 1106\u001b[0m ]\n\u001b[1;32m 1107\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/agents/agent.py:1097\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 1088\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_take_next_step\u001b[39m(\n\u001b[1;32m 1089\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 1090\u001b[0m name_to_tool_map: Dict[\u001b[39mstr\u001b[39m, BaseTool],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1094\u001b[0m run_manager: Optional[CallbackManagerForChainRun] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 1095\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Union[AgentFinish, List[Tuple[AgentAction, \u001b[39mstr\u001b[39m]]]:\n\u001b[1;32m 1096\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_consume_next_step(\n\u001b[0;32m-> 1097\u001b[0m [\n\u001b[1;32m 1098\u001b[0m a\n\u001b[1;32m 1099\u001b[0m \u001b[39mfor\u001b[39;49;00m a \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_iter_next_step(\n\u001b[1;32m 1100\u001b[0m name_to_tool_map,\n\u001b[1;32m 1101\u001b[0m color_mapping,\n\u001b[1;32m 1102\u001b[0m inputs,\n\u001b[1;32m 1103\u001b[0m intermediate_steps,\n\u001b[1;32m 1104\u001b[0m run_manager,\n\u001b[1;32m 1105\u001b[0m )\n\u001b[1;32m 1106\u001b[0m ]\n\u001b[1;32m 1107\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/agents/agent.py:1125\u001b[0m, in \u001b[0;36mAgentExecutor._iter_next_step\u001b[0;34m(self, name_to_tool_map, color_mapping, inputs, intermediate_steps, run_manager)\u001b[0m\n\u001b[1;32m 1122\u001b[0m intermediate_steps \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_prepare_intermediate_steps(intermediate_steps)\n\u001b[1;32m 1124\u001b[0m \u001b[39m# Call the LLM to see what to do.\u001b[39;00m\n\u001b[0;32m-> 1125\u001b[0m output \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49magent\u001b[39m.\u001b[39;49mplan(\n\u001b[1;32m 1126\u001b[0m intermediate_steps,\n\u001b[1;32m 1127\u001b[0m callbacks\u001b[39m=\u001b[39;49mrun_manager\u001b[39m.\u001b[39;49mget_child() \u001b[39mif\u001b[39;49;00m run_manager \u001b[39melse\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m,\n\u001b[1;32m 1128\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49minputs,\n\u001b[1;32m 1129\u001b[0m )\n\u001b[1;32m 1130\u001b[0m \u001b[39mexcept\u001b[39;00m OutputParserException \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 1131\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandle_parsing_errors, \u001b[39mbool\u001b[39m):\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain/agents/agent.py:387\u001b[0m, in \u001b[0;36mRunnableAgent.plan\u001b[0;34m(self, intermediate_steps, callbacks, **kwargs)\u001b[0m\n\u001b[1;32m 381\u001b[0m \u001b[39m# Use streaming to make sure that the underlying LLM is invoked in a streaming\u001b[39;00m\n\u001b[1;32m 382\u001b[0m \u001b[39m# fashion to make it possible to get access to the individual LLM tokens\u001b[39;00m\n\u001b[1;32m 383\u001b[0m \u001b[39m# when using stream_log with the Agent Executor.\u001b[39;00m\n\u001b[1;32m 384\u001b[0m \u001b[39m# Because the response from the plan is not a generator, we need to\u001b[39;00m\n\u001b[1;32m 385\u001b[0m \u001b[39m# accumulate the output into final output and return that.\u001b[39;00m\n\u001b[1;32m 386\u001b[0m final_output: Any \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m--> 387\u001b[0m \u001b[39mfor\u001b[39;49;00m chunk \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrunnable\u001b[39m.\u001b[39;49mstream(inputs, config\u001b[39m=\u001b[39;49m{\u001b[39m\"\u001b[39;49m\u001b[39mcallbacks\u001b[39;49m\u001b[39m\"\u001b[39;49m: callbacks}):\n\u001b[1;32m 388\u001b[0m \u001b[39mif\u001b[39;49;00m final_output \u001b[39mis\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m:\n\u001b[1;32m 389\u001b[0m final_output \u001b[39m=\u001b[39;49m chunk\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:2424\u001b[0m, in \u001b[0;36mRunnableSequence.stream\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 2418\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mstream\u001b[39m(\n\u001b[1;32m 2419\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 2420\u001b[0m \u001b[39minput\u001b[39m: Input,\n\u001b[1;32m 2421\u001b[0m config: Optional[RunnableConfig] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 2422\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 2423\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Iterator[Output]:\n\u001b[0;32m-> 2424\u001b[0m \u001b[39myield from\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransform(\u001b[39miter\u001b[39m([\u001b[39minput\u001b[39m]), config, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:2411\u001b[0m, in \u001b[0;36mRunnableSequence.transform\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 2405\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mtransform\u001b[39m(\n\u001b[1;32m 2406\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 2407\u001b[0m \u001b[39minput\u001b[39m: Iterator[Input],\n\u001b[1;32m 2408\u001b[0m config: Optional[RunnableConfig] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 2409\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 2410\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Iterator[Output]:\n\u001b[0;32m-> 2411\u001b[0m \u001b[39myield from\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_transform_stream_with_config(\n\u001b[1;32m 2412\u001b[0m \u001b[39minput\u001b[39m,\n\u001b[1;32m 2413\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_transform,\n\u001b[1;32m 2414\u001b[0m patch_config(config, run_name\u001b[39m=\u001b[39m(config \u001b[39mor\u001b[39;00m {})\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mrun_name\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mname),\n\u001b[1;32m 2415\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs,\n\u001b[1;32m 2416\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:1497\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1495\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 1496\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[0;32m-> 1497\u001b[0m chunk: Output \u001b[39m=\u001b[39m context\u001b[39m.\u001b[39mrun(\u001b[39mnext\u001b[39m, iterator) \u001b[39m# type: ignore\u001b[39;00m\n\u001b[1;32m 1498\u001b[0m \u001b[39myield\u001b[39;00m chunk\n\u001b[1;32m 1499\u001b[0m \u001b[39mif\u001b[39;00m final_output_supported:\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:2375\u001b[0m, in \u001b[0;36mRunnableSequence._transform\u001b[0;34m(self, input, run_manager, config)\u001b[0m\n\u001b[1;32m 2366\u001b[0m \u001b[39mfor\u001b[39;00m step \u001b[39min\u001b[39;00m steps:\n\u001b[1;32m 2367\u001b[0m final_pipeline \u001b[39m=\u001b[39m step\u001b[39m.\u001b[39mtransform(\n\u001b[1;32m 2368\u001b[0m final_pipeline,\n\u001b[1;32m 2369\u001b[0m patch_config(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2372\u001b[0m ),\n\u001b[1;32m 2373\u001b[0m )\n\u001b[0;32m-> 2375\u001b[0m \u001b[39mfor\u001b[39;49;00m output \u001b[39min\u001b[39;49;00m final_pipeline:\n\u001b[1;32m 2376\u001b[0m \u001b[39myield\u001b[39;49;00m output\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:1035\u001b[0m, in \u001b[0;36mRunnable.transform\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 1032\u001b[0m final: Input\n\u001b[1;32m 1033\u001b[0m got_first_val \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m\n\u001b[0;32m-> 1035\u001b[0m \u001b[39mfor\u001b[39;49;00m chunk \u001b[39min\u001b[39;49;00m \u001b[39minput\u001b[39;49m:\n\u001b[1;32m 1036\u001b[0m \u001b[39mif\u001b[39;49;00m \u001b[39mnot\u001b[39;49;00m got_first_val:\n\u001b[1;32m 1037\u001b[0m final \u001b[39m=\u001b[39;49m chunk\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:4168\u001b[0m, in \u001b[0;36mRunnableBindingBase.transform\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 4162\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mtransform\u001b[39m(\n\u001b[1;32m 4163\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 4164\u001b[0m \u001b[39minput\u001b[39m: Iterator[Input],\n\u001b[1;32m 4165\u001b[0m config: Optional[RunnableConfig] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 4166\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: Any,\n\u001b[1;32m 4167\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Iterator[Output]:\n\u001b[0;32m-> 4168\u001b[0m \u001b[39myield from\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mbound\u001b[39m.\u001b[39mtransform(\n\u001b[1;32m 4169\u001b[0m \u001b[39minput\u001b[39m,\n\u001b[1;32m 4170\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_merge_configs(config),\n\u001b[1;32m 4171\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39m{\u001b[39m*\u001b[39m\u001b[39m*\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mkwargs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs},\n\u001b[1;32m 4172\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/runnables/base.py:1045\u001b[0m, in \u001b[0;36mRunnable.transform\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 1042\u001b[0m final \u001b[39m=\u001b[39m final \u001b[39m+\u001b[39m chunk \u001b[39m# type: ignore[operator]\u001b[39;00m\n\u001b[1;32m 1044\u001b[0m \u001b[39mif\u001b[39;00m got_first_val:\n\u001b[0;32m-> 1045\u001b[0m \u001b[39myield from\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mstream(final, config, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/language_models/llms.py:452\u001b[0m, in \u001b[0;36mBaseLLM.stream\u001b[0;34m(self, input, config, stop, **kwargs)\u001b[0m\n\u001b[1;32m 445\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mBaseException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 446\u001b[0m run_manager\u001b[39m.\u001b[39mon_llm_error(\n\u001b[1;32m 447\u001b[0m e,\n\u001b[1;32m 448\u001b[0m response\u001b[39m=\u001b[39mLLMResult(\n\u001b[1;32m 449\u001b[0m generations\u001b[39m=\u001b[39m[[generation]] \u001b[39mif\u001b[39;00m generation \u001b[39melse\u001b[39;00m []\n\u001b[1;32m 450\u001b[0m ),\n\u001b[1;32m 451\u001b[0m )\n\u001b[0;32m--> 452\u001b[0m \u001b[39mraise\u001b[39;00m e\n\u001b[1;32m 453\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 454\u001b[0m run_manager\u001b[39m.\u001b[39mon_llm_end(LLMResult(generations\u001b[39m=\u001b[39m[[generation]]))\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_core/language_models/llms.py:436\u001b[0m, in \u001b[0;36mBaseLLM.stream\u001b[0;34m(self, input, config, stop, **kwargs)\u001b[0m\n\u001b[1;32m 434\u001b[0m generation: Optional[GenerationChunk] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 435\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 436\u001b[0m \u001b[39mfor\u001b[39;49;00m chunk \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_stream(\n\u001b[1;32m 437\u001b[0m prompt, stop\u001b[39m=\u001b[39;49mstop, run_manager\u001b[39m=\u001b[39;49mrun_manager, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs\n\u001b[1;32m 438\u001b[0m ):\n\u001b[1;32m 439\u001b[0m \u001b[39myield\u001b[39;49;00m chunk\u001b[39m.\u001b[39;49mtext\n\u001b[1;32m 440\u001b[0m \u001b[39mif\u001b[39;49;00m generation \u001b[39mis\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m:\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/langchain_openai/llms/base.py:252\u001b[0m, in \u001b[0;36mBaseOpenAI._stream\u001b[0;34m(self, prompt, stop, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 250\u001b[0m params \u001b[39m=\u001b[39m {\u001b[39m*\u001b[39m\u001b[39m*\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_invocation_params, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs, \u001b[39m\"\u001b[39m\u001b[39mstream\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39mTrue\u001b[39;00m}\n\u001b[1;32m 251\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mget_sub_prompts(params, [prompt], stop) \u001b[39m# this mutates params\u001b[39;00m\n\u001b[0;32m--> 252\u001b[0m \u001b[39mfor\u001b[39;00m stream_resp \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mclient\u001b[39m.\u001b[39;49mcreate(prompt\u001b[39m=\u001b[39;49mprompt, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mparams):\n\u001b[1;32m 253\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(stream_resp, \u001b[39mdict\u001b[39m):\n\u001b[1;32m 254\u001b[0m stream_resp \u001b[39m=\u001b[39m stream_resp\u001b[39m.\u001b[39mdict()\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/openai/_utils/_utils.py:275\u001b[0m, in \u001b[0;36mrequired_args..inner..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 273\u001b[0m msg \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mMissing required argument: \u001b[39m\u001b[39m{\u001b[39;00mquote(missing[\u001b[39m0\u001b[39m])\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m\n\u001b[1;32m 274\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mTypeError\u001b[39;00m(msg)\n\u001b[0;32m--> 275\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/openai/resources/completions.py:506\u001b[0m, in \u001b[0;36mCompletions.create\u001b[0;34m(self, model, prompt, best_of, echo, frequency_penalty, logit_bias, logprobs, max_tokens, n, presence_penalty, seed, stop, stream, suffix, temperature, top_p, user, extra_headers, extra_query, extra_body, timeout)\u001b[0m\n\u001b[1;32m 478\u001b[0m \u001b[39m@required_args\u001b[39m([\u001b[39m\"\u001b[39m\u001b[39mmodel\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mprompt\u001b[39m\u001b[39m\"\u001b[39m], [\u001b[39m\"\u001b[39m\u001b[39mmodel\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mprompt\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mstream\u001b[39m\u001b[39m\"\u001b[39m])\n\u001b[1;32m 479\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mcreate\u001b[39m(\n\u001b[1;32m 480\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 504\u001b[0m timeout: \u001b[39mfloat\u001b[39m \u001b[39m|\u001b[39m httpx\u001b[39m.\u001b[39mTimeout \u001b[39m|\u001b[39m \u001b[39mNone\u001b[39;00m \u001b[39m|\u001b[39m NotGiven \u001b[39m=\u001b[39m NOT_GIVEN,\n\u001b[1;32m 505\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Completion \u001b[39m|\u001b[39m Stream[Completion]:\n\u001b[0;32m--> 506\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_post(\n\u001b[1;32m 507\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39m/completions\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m 508\u001b[0m body\u001b[39m=\u001b[39;49mmaybe_transform(\n\u001b[1;32m 509\u001b[0m {\n\u001b[1;32m 510\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mmodel\u001b[39;49m\u001b[39m\"\u001b[39;49m: model,\n\u001b[1;32m 511\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mprompt\u001b[39;49m\u001b[39m\"\u001b[39;49m: prompt,\n\u001b[1;32m 512\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mbest_of\u001b[39;49m\u001b[39m\"\u001b[39;49m: best_of,\n\u001b[1;32m 513\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mecho\u001b[39;49m\u001b[39m\"\u001b[39;49m: echo,\n\u001b[1;32m 514\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mfrequency_penalty\u001b[39;49m\u001b[39m\"\u001b[39;49m: frequency_penalty,\n\u001b[1;32m 515\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mlogit_bias\u001b[39;49m\u001b[39m\"\u001b[39;49m: logit_bias,\n\u001b[1;32m 516\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mlogprobs\u001b[39;49m\u001b[39m\"\u001b[39;49m: logprobs,\n\u001b[1;32m 517\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mmax_tokens\u001b[39;49m\u001b[39m\"\u001b[39;49m: max_tokens,\n\u001b[1;32m 518\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mn\u001b[39;49m\u001b[39m\"\u001b[39;49m: n,\n\u001b[1;32m 519\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mpresence_penalty\u001b[39;49m\u001b[39m\"\u001b[39;49m: presence_penalty,\n\u001b[1;32m 520\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mseed\u001b[39;49m\u001b[39m\"\u001b[39;49m: seed,\n\u001b[1;32m 521\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mstop\u001b[39;49m\u001b[39m\"\u001b[39;49m: stop,\n\u001b[1;32m 522\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mstream\u001b[39;49m\u001b[39m\"\u001b[39;49m: stream,\n\u001b[1;32m 523\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39msuffix\u001b[39;49m\u001b[39m\"\u001b[39;49m: suffix,\n\u001b[1;32m 524\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mtemperature\u001b[39;49m\u001b[39m\"\u001b[39;49m: temperature,\n\u001b[1;32m 525\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mtop_p\u001b[39;49m\u001b[39m\"\u001b[39;49m: top_p,\n\u001b[1;32m 526\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39muser\u001b[39;49m\u001b[39m\"\u001b[39;49m: user,\n\u001b[1;32m 527\u001b[0m },\n\u001b[1;32m 528\u001b[0m completion_create_params\u001b[39m.\u001b[39;49mCompletionCreateParams,\n\u001b[1;32m 529\u001b[0m ),\n\u001b[1;32m 530\u001b[0m options\u001b[39m=\u001b[39;49mmake_request_options(\n\u001b[1;32m 531\u001b[0m extra_headers\u001b[39m=\u001b[39;49mextra_headers, extra_query\u001b[39m=\u001b[39;49mextra_query, extra_body\u001b[39m=\u001b[39;49mextra_body, timeout\u001b[39m=\u001b[39;49mtimeout\n\u001b[1;32m 532\u001b[0m ),\n\u001b[1;32m 533\u001b[0m cast_to\u001b[39m=\u001b[39;49mCompletion,\n\u001b[1;32m 534\u001b[0m stream\u001b[39m=\u001b[39;49mstream \u001b[39mor\u001b[39;49;00m \u001b[39mFalse\u001b[39;49;00m,\n\u001b[1;32m 535\u001b[0m stream_cls\u001b[39m=\u001b[39;49mStream[Completion],\n\u001b[1;32m 536\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/openai/_base_client.py:1200\u001b[0m, in \u001b[0;36mSyncAPIClient.post\u001b[0;34m(self, path, cast_to, body, options, files, stream, stream_cls)\u001b[0m\n\u001b[1;32m 1186\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mpost\u001b[39m(\n\u001b[1;32m 1187\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 1188\u001b[0m path: \u001b[39mstr\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1195\u001b[0m stream_cls: \u001b[39mtype\u001b[39m[_StreamT] \u001b[39m|\u001b[39m \u001b[39mNone\u001b[39;00m \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 1196\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m ResponseT \u001b[39m|\u001b[39m _StreamT:\n\u001b[1;32m 1197\u001b[0m opts \u001b[39m=\u001b[39m FinalRequestOptions\u001b[39m.\u001b[39mconstruct(\n\u001b[1;32m 1198\u001b[0m method\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mpost\u001b[39m\u001b[39m\"\u001b[39m, url\u001b[39m=\u001b[39mpath, json_data\u001b[39m=\u001b[39mbody, files\u001b[39m=\u001b[39mto_httpx_files(files), \u001b[39m*\u001b[39m\u001b[39m*\u001b[39moptions\n\u001b[1;32m 1199\u001b[0m )\n\u001b[0;32m-> 1200\u001b[0m \u001b[39mreturn\u001b[39;00m cast(ResponseT, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrequest(cast_to, opts, stream\u001b[39m=\u001b[39;49mstream, stream_cls\u001b[39m=\u001b[39;49mstream_cls))\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/openai/_base_client.py:889\u001b[0m, in \u001b[0;36mSyncAPIClient.request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 880\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrequest\u001b[39m(\n\u001b[1;32m 881\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 882\u001b[0m cast_to: Type[ResponseT],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 887\u001b[0m stream_cls: \u001b[39mtype\u001b[39m[_StreamT] \u001b[39m|\u001b[39m \u001b[39mNone\u001b[39;00m \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 888\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m ResponseT \u001b[39m|\u001b[39m _StreamT:\n\u001b[0;32m--> 889\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_request(\n\u001b[1;32m 890\u001b[0m cast_to\u001b[39m=\u001b[39;49mcast_to,\n\u001b[1;32m 891\u001b[0m options\u001b[39m=\u001b[39;49moptions,\n\u001b[1;32m 892\u001b[0m stream\u001b[39m=\u001b[39;49mstream,\n\u001b[1;32m 893\u001b[0m stream_cls\u001b[39m=\u001b[39;49mstream_cls,\n\u001b[1;32m 894\u001b[0m remaining_retries\u001b[39m=\u001b[39;49mremaining_retries,\n\u001b[1;32m 895\u001b[0m )\n", + "File \u001b[0;32m~/anaconda3/envs/langchain/lib/python3.11/site-packages/openai/_base_client.py:980\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 977\u001b[0m err\u001b[39m.\u001b[39mresponse\u001b[39m.\u001b[39mread()\n\u001b[1;32m 979\u001b[0m log\u001b[39m.\u001b[39mdebug(\u001b[39m\"\u001b[39m\u001b[39mRe-raising status error\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 980\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_make_status_error_from_response(err\u001b[39m.\u001b[39mresponse) \u001b[39mfrom\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 982\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_process_response(\n\u001b[1;32m 983\u001b[0m cast_to\u001b[39m=\u001b[39mcast_to,\n\u001b[1;32m 984\u001b[0m options\u001b[39m=\u001b[39moptions,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 987\u001b[0m stream_cls\u001b[39m=\u001b[39mstream_cls,\n\u001b[1;32m 988\u001b[0m )\n", + "\u001b[0;31mBadRequestError\u001b[0m: Error code: 400 - {'error': {'message': \"This model's maximum context length is 4097 tokens, however you requested 4142 tokens (3886 in your prompt; 256 for the completion). Please reduce your prompt; or completion length.\", 'type': 'invalid_request_error', 'param': None, 'code': None}}" + ] + } + ], + "source": [ + "agent.run(\"Count the number of users below the age of 50, from the United States who are male\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.11.7 ('langchain')", + "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", + "version": "3.11.7" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "93da0c5358f0ca153fbb1057aa30f9adfd442dcacbb798de9a154f7bb30bd892" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/langserve/packages/bq-agent/bq_agent/dev/kaggle.json b/langserve/packages/bq-agent/bq_agent/dev/kaggle.json new file mode 100644 index 0000000..5088c49 --- /dev/null +++ b/langserve/packages/bq-agent/bq_agent/dev/kaggle.json @@ -0,0 +1 @@ +{"username":"alexanderhumpert","key":"ecebeed6b450fd85320b282a494866bd"} \ No newline at end of file diff --git a/langserve/packages/bq-agent/bq_agent/dev/segmentation_test.ipynb b/langserve/packages/bq-agent/bq_agent/dev/segmentation_test.ipynb new file mode 100644 index 0000000..6bc9735 --- /dev/null +++ b/langserve/packages/bq-agent/bq_agent/dev/segmentation_test.ipynb @@ -0,0 +1,72 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/bin/bash: line 1: kaggle: command not found\n" + ] + } + ], + "source": [ + "!kaggle datasets download -d titanic\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/bin/bash: line 1: kaggle: command not found\n" + ] + } + ], + "source": [ + "!kaggle datasets list -s titanic" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.12 64-bit", + "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", + "version": "3.10.12" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/langserve/packages/bq-agent/ingest.py b/langserve/packages/bq-agent/ingest.py new file mode 100644 index 0000000..8cc99a9 --- /dev/null +++ b/langserve/packages/bq-agent/ingest.py @@ -0,0 +1,12 @@ +from langchain.document_loaders import CSVLoader +from langchain.indexes import VectorstoreIndexCreator +from langchain.vectorstores import FAISS + +loader = CSVLoader("/Users/harrisonchase/Downloads/titanic.csv") + +docs = loader.load() +index_creator = VectorstoreIndexCreator(vectorstore_cls=FAISS) + +index = index_creator.from_documents(docs) + +index.vectorstore.save_local("titanic_data") diff --git a/langserve/packages/bq-agent/main.py b/langserve/packages/bq-agent/main.py new file mode 100644 index 0000000..2c3e95e --- /dev/null +++ b/langserve/packages/bq-agent/main.py @@ -0,0 +1,5 @@ +from bq_agent.agent import agent_executor + +if __name__ == "__main__": + question = "how many unique users are there?" + print(agent_executor.invoke({"input": question})) diff --git a/langserve/packages/bq-agent/poetry.lock b/langserve/packages/bq-agent/poetry.lock new file mode 100644 index 0000000..93ae869 --- /dev/null +++ b/langserve/packages/bq-agent/poetry.lock @@ -0,0 +1,1915 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[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 = "anyio" +version = "3.7.1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.7" +files = [ + {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, + {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, +] + +[package.dependencies] +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] +test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (<0.22)"] + +[[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.1.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] + +[[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 = "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 = "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 = "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 = "distro" +version = "1.8.0" +description = "Distro - an OS platform information API" +optional = false +python-versions = ">=3.6" +files = [ + {file = "distro-1.8.0-py3-none-any.whl", hash = "sha256:99522ca3e365cac527b44bde033f64c6945d90eb9f769703caaec52b09bbd3ff"}, + {file = "distro-1.8.0.tar.gz", hash = "sha256:02e111d1dc6a50abb8eed6bf31c3e48ed8b0830d1ea2a1b78c61765c2513fdd8"}, +] + +[[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 = "faiss-cpu" +version = "1.7.4" +description = "A library for efficient similarity search and clustering of dense vectors." +optional = false +python-versions = "*" +files = [ + {file = "faiss-cpu-1.7.4.tar.gz", hash = "sha256:265dc31b0c079bf4433303bf6010f73922490adff9188b915e2d3f5e9c82dd0a"}, + {file = "faiss_cpu-1.7.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50d4ebe7f1869483751c558558504f818980292a9b55be36f9a1ee1009d9a686"}, + {file = "faiss_cpu-1.7.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b1db7fae7bd8312aeedd0c41536bcd19a6e297229e1dce526bde3a73ab8c0b5"}, + {file = "faiss_cpu-1.7.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17b7fa7194a228a84929d9e6619d0e7dbf00cc0f717e3462253766f5e3d07de8"}, + {file = "faiss_cpu-1.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dca531952a2e3eac56f479ff22951af4715ee44788a3fe991d208d766d3f95f3"}, + {file = "faiss_cpu-1.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:7173081d605e74766f950f2e3d6568a6f00c53f32fd9318063e96728c6c62821"}, + {file = "faiss_cpu-1.7.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0bbd6f55d7940cc0692f79e32a58c66106c3c950cee2341b05722de9da23ea3"}, + {file = "faiss_cpu-1.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13c14280376100f143767d0efe47dcb32618f69e62bbd3ea5cd38c2e1755926"}, + {file = "faiss_cpu-1.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c521cb8462f3b00c0c7dfb11caff492bb67816528b947be28a3b76373952c41d"}, + {file = "faiss_cpu-1.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afdd9fe1141117fed85961fd36ee627c83fc3b9fd47bafb52d3c849cc2f088b7"}, + {file = "faiss_cpu-1.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:2ff7f57889ea31d945e3b87275be3cad5d55b6261a4e3f51c7aba304d76b81fb"}, + {file = "faiss_cpu-1.7.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:eeaf92f27d76249fb53c1adafe617b0f217ab65837acf7b4ec818511caf6e3d8"}, + {file = "faiss_cpu-1.7.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:102b1bd763e9b0c281ac312590af3eaf1c8b663ccbc1145821fe6a9f92b8eaaf"}, + {file = "faiss_cpu-1.7.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5512da6707c967310c46ff712b00418b7ae28e93cb609726136e826e9f2f14fa"}, + {file = "faiss_cpu-1.7.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0c2e5b9d8c28c99f990e87379d5bbcc6c914da91ebb4250166864fd12db5755b"}, + {file = "faiss_cpu-1.7.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:43f67f325393145d360171cd98786fcea6120ce50397319afd3bb78be409fb8a"}, + {file = "faiss_cpu-1.7.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6a4e4af194b8fce74c4b770cad67ad1dd1b4673677fc169723e4c50ba5bd97a8"}, + {file = "faiss_cpu-1.7.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31bfb7b9cffc36897ae02a983e04c09fe3b8c053110a287134751a115334a1df"}, + {file = "faiss_cpu-1.7.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52d7de96abef2340c0d373c1f5cbc78026a3cebb0f8f3a5920920a00210ead1f"}, + {file = "faiss_cpu-1.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:699feef85b23c2c729d794e26ca69bebc0bee920d676028c06fd0e0becc15c7e"}, + {file = "faiss_cpu-1.7.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:559a0133f5ed44422acb09ee1ac0acffd90c6666d1bc0d671c18f6e93ad603e2"}, + {file = "faiss_cpu-1.7.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1d71539fe3dc0f1bed41ef954ca701678776f231046bf0ca22ccea5cf5bef6"}, + {file = "faiss_cpu-1.7.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12d45e0157024eb3249842163162983a1ac8b458f1a8b17bbf86f01be4585a99"}, + {file = "faiss_cpu-1.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f0eab359e066d32c874f51a7d4bf6440edeec068b7fe47e6d803c73605a8b4c"}, + {file = "faiss_cpu-1.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:98459ceeeb735b9df1a5b94572106ffe0a6ce740eb7e4626715dd218657bb4dc"}, +] + +[[package]] +name = "fastapi" +version = "0.104.1" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi-0.104.1-py3-none-any.whl", hash = "sha256:752dc31160cdbd0436bb93bad51560b57e525cbb1d4bbf6f4904ceee75548241"}, + {file = "fastapi-0.104.1.tar.gz", hash = "sha256:e5e4540a7c5e1dcfbbcf5b903c234feddcdcd881f191977a1c5dfd917487e7ae"}, +] + +[package.dependencies] +anyio = ">=3.7.1,<4.0.0" +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.27.0,<0.28.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.5)", "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 = "frozenlist" +version = "1.4.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"}, + {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"}, + {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"}, + {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"}, + {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"}, + {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"}, + {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"}, + {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"}, + {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"}, + {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"}, +] + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.40" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, + {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] + +[[package]] +name = "greenlet" +version = "3.0.1" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"}, + {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"}, + {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"}, + {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"}, + {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"}, + {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"}, + {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"}, + {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"}, + {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"}, + {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"}, + {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"}, + {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"}, + {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"}, + {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"}, + {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"}, + {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"}, + {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"}, + {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"}, + {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"}, + {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"}, + {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"}, + {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"}, + {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"}, + {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"}, + {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"}, + {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"}, + {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"}, +] + +[package.extras] +docs = ["Sphinx"] +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.25.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.25.2-py3-none-any.whl", hash = "sha256:a05d3d052d9b2dfce0e3896636467f8a5342fb2b902c819428e1ac65413ca118"}, + {file = "httpx-0.25.2.tar.gz", hash = "sha256:8b8fcaa0c8ea7b05edd69a094e63a2094c4efcb48129fb757361bc423c0ad9e8"}, +] + +[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 = "httpx-sse" +version = "0.3.1" +description = "Consume Server-Sent Event (SSE) messages with HTTPX." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpx-sse-0.3.1.tar.gz", hash = "sha256:3bb3289b2867f50cbdb2fee3eeeefecb1e86653122e164faac0023f1ffc88aea"}, + {file = "httpx_sse-0.3.1-py3-none-any.whl", hash = "sha256:7376dd88732892f9b6b549ac0ad05a8e2341172fe7dcf9f8f9c8050934297316"}, +] + +[[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 = "jsonpatch" +version = "1.33" +description = "Apply JSON-Patches (RFC 6902)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, +] + +[package.dependencies] +jsonpointer = ">=1.9" + +[[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 = "langchain" +version = "0.0.344" +description = "Building applications with LLMs through composability" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain-0.0.344-py3-none-any.whl", hash = "sha256:6dc85e8569a58537bd772a8ba18c629f882e12a73104d79df730be823d630482"}, + {file = "langchain-0.0.344.tar.gz", hash = "sha256:37a6d72d23aee54fc1dfea3934ed63762f604e8665fe008fb7a30c4591fe808d"}, +] + +[package.dependencies] +aiohttp = ">=3.8.3,<4.0.0" +anyio = "<4.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-core = ">=0.0.8,<0.1" +langsmith = ">=0.0.63,<0.1.0" +numpy = ">=1,<2" +pydantic = ">=1,<3" +PyYAML = ">=5.3" +requests = ">=2,<3" +SQLAlchemy = ">=1.4,<3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +all = ["O365 (>=2.0.26,<3.0.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "amadeus (>=8.1.0)", "arxiv (>=1.4,<2.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "awadb (>=0.3.9,<0.4.0)", "azure-ai-formrecognizer (>=3.2.1,<4.0.0)", "azure-ai-textanalytics (>=5.3.0,<6.0.0)", "azure-ai-vision (>=0.11.1b1,<0.12.0)", "azure-cognitiveservices-speech (>=1.28.0,<2.0.0)", "azure-cosmos (>=4.4.0b1,<5.0.0)", "azure-identity (>=1.12.0,<2.0.0)", "beautifulsoup4 (>=4,<5)", "clarifai (>=9.1.0)", "clickhouse-connect (>=0.5.14,<0.6.0)", "cohere (>=4,<5)", "deeplake (>=3.8.3,<4.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "docarray[hnswlib] (>=0.32.0,<0.33.0)", "duckduckgo-search (>=3.8.3,<4.0.0)", "elasticsearch (>=8,<9)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "google-api-python-client (==2.70.0)", "google-auth (>=2.18.1,<3.0.0)", "google-search-results (>=2,<3)", "gptcache (>=0.1.7)", "html2text (>=2020.1.16,<2021.0.0)", "huggingface_hub (>=0,<1)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "lancedb (>=0.1,<0.2)", "langkit (>=0.0.6,<0.1.0)", "lark (>=1.1.5,<2.0.0)", "librosa (>=0.10.0.post2,<0.11.0)", "lxml (>=4.9.2,<5.0.0)", "manifest-ml (>=0.0.1,<0.0.2)", "marqo (>=1.2.4,<2.0.0)", "momento (>=1.13.0,<2.0.0)", "nebula3-python (>=3.4.0,<4.0.0)", "neo4j (>=5.8.1,<6.0.0)", "networkx (>=2.6.3,<4)", "nlpcloud (>=1,<2)", "nltk (>=3,<4)", "nomic (>=1.0.43,<2.0.0)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "opensearch-py (>=2.0.0,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pexpect (>=4.8.0,<5.0.0)", "pgvector (>=0.1.6,<0.2.0)", "pinecone-client (>=2,<3)", "pinecone-text (>=0.4.2,<0.5.0)", "psycopg2-binary (>=2.9.5,<3.0.0)", "pymongo (>=4.3.3,<5.0.0)", "pyowm (>=3.3.0,<4.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pytesseract (>=0.3.10,<0.4.0)", "python-arango (>=7.5.9,<8.0.0)", "pyvespa (>=0.33.0,<0.34.0)", "qdrant-client (>=1.3.1,<2.0.0)", "rdflib (>=6.3.2,<7.0.0)", "redis (>=4,<5)", "requests-toolbelt (>=1.0.0,<2.0.0)", "sentence-transformers (>=2,<3)", "singlestoredb (>=0.7.1,<0.8.0)", "tensorflow-text (>=2.11.0,<3.0.0)", "tigrisdb (>=1.0.0b6,<2.0.0)", "tiktoken (>=0.3.2,<0.6.0)", "torch (>=1,<3)", "transformers (>=4,<5)", "weaviate-client (>=3,<4)", "wikipedia (>=1,<2)", "wolframalpha (==5.0.0)"] +azure = ["azure-ai-formrecognizer (>=3.2.1,<4.0.0)", "azure-ai-textanalytics (>=5.3.0,<6.0.0)", "azure-ai-vision (>=0.11.1b1,<0.12.0)", "azure-cognitiveservices-speech (>=1.28.0,<2.0.0)", "azure-core (>=1.26.4,<2.0.0)", "azure-cosmos (>=4.4.0b1,<5.0.0)", "azure-identity (>=1.12.0,<2.0.0)", "azure-search-documents (==11.4.0b8)", "openai (<2)"] +clarifai = ["clarifai (>=9.1.0)"] +cli = ["typer (>=0.9.0,<0.10.0)"] +cohere = ["cohere (>=4,<5)"] +docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] +embeddings = ["sentence-transformers (>=2,<3)"] +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)", "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)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.6.0,<0.7.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)", "html2text (>=2020.1.16,<2021.0.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)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.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)", "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)"] +javascript = ["esprima (>=4.0.1,<5.0.0)"] +llms = ["clarifai (>=9.1.0)", "cohere (>=4,<5)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] +openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] +qdrant = ["qdrant-client (>=1.3.1,<2.0.0)"] +text-helpers = ["chardet (>=5.1.0,<6.0.0)"] + +[[package]] +name = "langchain-cli" +version = "0.0.19" +description = "CLI for interacting with LangChain" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_cli-0.0.19-py3-none-any.whl", hash = "sha256:07b37f6fe507639537d2d79757cc659dfc396df6049ee97b8e12dfbfcb86a85b"}, + {file = "langchain_cli-0.0.19.tar.gz", hash = "sha256:c518e1b2e8dd787d30385a5947a01b4cd72c24eb79159c9833f08b681975fd84"}, +] + +[package.dependencies] +gitpython = ">=3.1.40,<4.0.0" +langserve = {version = ">=0.0.16", extras = ["all"]} +tomlkit = ">=0.12.2,<0.13.0" +typer = {version = ">=0.9.0,<0.10.0", extras = ["all"]} +uvicorn = ">=0.23.2,<0.24.0" + +[[package]] +name = "langchain-core" +version = "0.0.8" +description = "Building applications with LLMs through composability" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_core-0.0.8-py3-none-any.whl", hash = "sha256:148dcb2613c61d0f60b7ce0ffe8a3a37e2f35a8d95a87bffa19c4b50a3bd0a1a"}, + {file = "langchain_core-0.0.8.tar.gz", hash = "sha256:cb4fa016fab93d904d556b995ce3b057edc55a912328cc477cd1ae22654bef4a"}, +] + +[package.dependencies] +jsonpatch = ">=1.33,<2.0" +langsmith = ">=0.0.63,<0.1.0" +pydantic = ">=1,<3" +tenacity = ">=8.1.0,<9.0.0" + +[[package]] +name = "langchain-experimental" +version = "0.0.43" +description = "Building applications with LLMs through composability" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_experimental-0.0.43-py3-none-any.whl", hash = "sha256:acc2af426f62ad18d5632b9136a5f851ed6bec662096dcbaea4bc94704968141"}, + {file = "langchain_experimental-0.0.43.tar.gz", hash = "sha256:d68eb7e5253575a8a30b4d6f218edbaf6db153a2bf344bdcd5ccf90b048f8477"}, +] + +[package.dependencies] +langchain = ">=0.0.342,<0.1" + +[package.extras] +extended-testing = ["faker (>=19.3.1,<20.0.0)", "presidio-analyzer (>=2.2.33,<3.0.0)", "presidio-anonymizer (>=2.2.33,<3.0.0)", "sentence-transformers (>=2,<3)", "vowpal-wabbit-next (==0.6.0)"] + +[[package]] +name = "langserve" +version = "0.0.32" +description = "" +optional = false +python-versions = ">=3.8.1,<4.0.0" +files = [ + {file = "langserve-0.0.32-py3-none-any.whl", hash = "sha256:41cc522fcec22f1d4e2ec05bd8952783a297fbf57c65eb2ab5ad29dff03caa86"}, + {file = "langserve-0.0.32.tar.gz", hash = "sha256:8773fe87ec27c263756d4f2dcd2f0fc8a970ac90e475a517703821bd5ae1836d"}, +] + +[package.dependencies] +fastapi = {version = ">=0.90.1,<1", optional = true, markers = "extra == \"server\" or extra == \"all\""} +httpx = ">=0.23.0" +httpx-sse = {version = ">=0.3.1", optional = true, markers = "extra == \"client\" or extra == \"all\""} +langchain = ">=0.0.333" +orjson = ">=2" +pydantic = ">=1" +sse-starlette = {version = ">=1.3.0,<2.0.0", optional = true, markers = "extra == \"server\" or extra == \"all\""} + +[package.extras] +all = ["fastapi (>=0.90.1,<1)", "httpx-sse (>=0.3.1)", "sse-starlette (>=1.3.0,<2.0.0)"] +client = ["httpx-sse (>=0.3.1)"] +server = ["fastapi (>=0.90.1,<1)", "sse-starlette (>=1.3.0,<2.0.0)"] + +[[package]] +name = "langsmith" +version = "0.0.68" +description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langsmith-0.0.68-py3-none-any.whl", hash = "sha256:c60d66f8f6745bba170204b0e7c88ace9db72941d3f8b9a47cef25947880f7dc"}, + {file = "langsmith-0.0.68.tar.gz", hash = "sha256:420bd2e088656935419f39e2e748b560af5961cb9133e149dd9ad14670981af8"}, +] + +[package.dependencies] +pydantic = ">=1,<3" +requests = ">=2,<3" + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "marshmallow" +version = "3.20.1" +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.1-py3-none-any.whl", hash = "sha256:684939db93e80ad3561392f47be0230743131560a41c5110684c16e21ade0a5c"}, + {file = "marshmallow-3.20.1.tar.gz", hash = "sha256:5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889"}, +] + +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["flake8 (==6.0.0)", "flake8-bugbear (==23.7.10)", "mypy (==1.4.1)", "pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"] +docs = ["alabaster (==0.7.13)", "autodocsumm (==0.2.11)", "sphinx (==7.0.1)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] +lint = ["flake8 (==6.0.0)", "flake8-bugbear (==23.7.10)", "mypy (==1.4.1)", "pre-commit (>=2.4,<4.0)"] +tests = ["pytest", "pytz", "simplejson"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[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 = "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 = "numpy" +version = "1.26.2" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, + {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, + {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, + {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, + {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, + {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, + {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, + {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, + {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, + {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, +] + +[[package]] +name = "openai" +version = "1.3.7" +description = "The official Python library for the openai API" +optional = false +python-versions = ">=3.7.1" +files = [ + {file = "openai-1.3.7-py3-none-any.whl", hash = "sha256:e5c51367a910297e4d1cd33d2298fb87d7edf681edbe012873925ac16f95bee0"}, + {file = "openai-1.3.7.tar.gz", hash = "sha256:18074a0f51f9b49d1ae268c7abc36f7f33212a0c0d08ce11b7053ab2d17798de"}, +] + +[package.dependencies] +anyio = ">=3.5.0,<4" +distro = ">=1.7.0,<2" +httpx = ">=0.23.0,<1" +pydantic = ">=1.9.0,<3" +sniffio = "*" +tqdm = ">4" +typing-extensions = ">=4.5,<5" + +[package.extras] +datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] + +[[package]] +name = "orjson" +version = "3.9.10" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c18a4da2f50050a03d1da5317388ef84a16013302a5281d6f64e4a3f406aabc4"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5148bab4d71f58948c7c39d12b14a9005b6ab35a0bdf317a8ade9a9e4d9d0bd5"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cf7837c3b11a2dfb589f8530b3cff2bd0307ace4c301e8997e95c7468c1378e"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c62b6fa2961a1dcc51ebe88771be5319a93fd89bd247c9ddf732bc250507bc2b"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb3922a7a804755bbe6b5be9b312e746137a03600f488290318936c1a2d4dc"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1234dc92d011d3554d929b6cf058ac4a24d188d97be5e04355f1b9223e98bbe9"}, + {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:06ad5543217e0e46fd7ab7ea45d506c76f878b87b1b4e369006bdb01acc05a83"}, + {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fd72fab7bddce46c6826994ce1e7de145ae1e9e106ebb8eb9ce1393ca01444d"}, + {file = "orjson-3.9.10-cp310-none-win32.whl", hash = "sha256:b5b7d4a44cc0e6ff98da5d56cde794385bdd212a86563ac321ca64d7f80c80d1"}, + {file = "orjson-3.9.10-cp310-none-win_amd64.whl", hash = "sha256:61804231099214e2f84998316f3238c4c2c4aaec302df12b21a64d72e2a135c7"}, + {file = "orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cff7570d492bcf4b64cc862a6e2fb77edd5e5748ad715f487628f102815165e9"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8bc367f725dfc5cabeed1ae079d00369900231fbb5a5280cf0736c30e2adf7"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c812312847867b6335cfb264772f2a7e85b3b502d3a6b0586aa35e1858528ab1"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edd2856611e5050004f4722922b7b1cd6268da34102667bd49d2a2b18bafb81"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:674eb520f02422546c40401f4efaf8207b5e29e420c17051cddf6c02783ff5ca"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0dc4310da8b5f6415949bd5ef937e60aeb0eb6b16f95041b5e43e6200821fb"}, + {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e99c625b8c95d7741fe057585176b1b8783d46ed4b8932cf98ee145c4facf499"}, + {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec6f18f96b47299c11203edfbdc34e1b69085070d9a3d1f302810cc23ad36bf3"}, + {file = "orjson-3.9.10-cp311-none-win32.whl", hash = "sha256:ce0a29c28dfb8eccd0f16219360530bc3cfdf6bf70ca384dacd36e6c650ef8e8"}, + {file = "orjson-3.9.10-cp311-none-win_amd64.whl", hash = "sha256:cf80b550092cc480a0cbd0750e8189247ff45457e5a023305f7ef1bcec811616"}, + {file = "orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:602a8001bdf60e1a7d544be29c82560a7b49319a0b31d62586548835bbe2c862"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f295efcd47b6124b01255d1491f9e46f17ef40d3d7eabf7364099e463fb45f0f"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92af0d00091e744587221e79f68d617b432425a7e59328ca4c496f774a356071"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5a02360e73e7208a872bf65a7554c9f15df5fe063dc047f79738998b0506a14"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:858379cbb08d84fe7583231077d9a36a1a20eb72f8c9076a45df8b083724ad1d"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666c6fdcaac1f13eb982b649e1c311c08d7097cbda24f32612dae43648d8db8d"}, + {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3fb205ab52a2e30354640780ce4587157a9563a68c9beaf52153e1cea9aa0921"}, + {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7ec960b1b942ee3c69323b8721df2a3ce28ff40e7ca47873ae35bfafeb4555ca"}, + {file = "orjson-3.9.10-cp312-none-win_amd64.whl", hash = "sha256:3e892621434392199efb54e69edfff9f699f6cc36dd9553c5bf796058b14b20d"}, + {file = "orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8b9ba0ccd5a7f4219e67fbbe25e6b4a46ceef783c42af7dbc1da548eb28b6531"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e2ecd1d349e62e3960695214f40939bbfdcaeaaa62ccc638f8e651cf0970e5f"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f433be3b3f4c66016d5a20e5b4444ef833a1f802ced13a2d852c637f69729c1"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4689270c35d4bb3102e103ac43c3f0b76b169760aff8bcf2d401a3e0e58cdb7f"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd176f528a8151a6efc5359b853ba3cc0e82d4cd1fab9c1300c5d957dc8f48c"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a2ce5ea4f71681623f04e2b7dadede3c7435dfb5e5e2d1d0ec25b35530e277b"}, + {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:49f8ad582da6e8d2cf663c4ba5bf9f83cc052570a3a767487fec6af839b0e777"}, + {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a11b4b1a8415f105d989876a19b173f6cdc89ca13855ccc67c18efbd7cbd1f8"}, + {file = "orjson-3.9.10-cp38-none-win32.whl", hash = "sha256:a353bf1f565ed27ba71a419b2cd3db9d6151da426b61b289b6ba1422a702e643"}, + {file = "orjson-3.9.10-cp38-none-win_amd64.whl", hash = "sha256:e28a50b5be854e18d54f75ef1bb13e1abf4bc650ab9d635e4258c58e71eb6ad5"}, + {file = "orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ee5926746232f627a3be1cc175b2cfad24d0170d520361f4ce3fa2fd83f09e1d"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a73160e823151f33cdc05fe2cea557c5ef12fdf276ce29bb4f1c571c8368a60"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c338ed69ad0b8f8f8920c13f529889fe0771abbb46550013e3c3d01e5174deef"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5869e8e130e99687d9e4be835116c4ebd83ca92e52e55810962446d841aba8de"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2c1e559d96a7f94a4f581e2a32d6d610df5840881a8cba8f25e446f4d792df3"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a3a3a72c9811b56adf8bcc829b010163bb2fc308877e50e9910c9357e78521"}, + {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7f8fb7f5ecf4f6355683ac6881fd64b5bb2b8a60e3ccde6ff799e48791d8f864"}, + {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c943b35ecdf7123b2d81d225397efddf0bce2e81db2f3ae633ead38e85cd5ade"}, + {file = "orjson-3.9.10-cp39-none-win32.whl", hash = "sha256:fb0b361d73f6b8eeceba47cd37070b5e6c9de5beaeaa63a1cb35c7e1a73ef088"}, + {file = "orjson-3.9.10-cp39-none-win_amd64.whl", hash = "sha256:b90f340cb6397ec7a854157fac03f0c82b744abdd1c0941a024c3c29d1340aff"}, + {file = "orjson-3.9.10.tar.gz", hash = "sha256:9ebbdbd6a046c304b1845e96fbcc5559cd296b4dfd3ad2509e33c4d9ce07d6a1"}, +] + +[[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.1.3" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acf08a73b5022b479c1be155d4988b72f3020f308f7a87c527702c5f8966d34f"}, + {file = "pandas-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3cc4469ff0cf9aa3a005870cb49ab8969942b7156e0a46cc3f5abd6b11051dfb"}, + {file = "pandas-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35172bff95f598cc5866c047f43c7f4df2c893acd8e10e6653a4b792ed7f19bb"}, + {file = "pandas-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59dfe0e65a2f3988e940224e2a70932edc964df79f3356e5f2997c7d63e758b4"}, + {file = "pandas-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0296a66200dee556850d99b24c54c7dfa53a3264b1ca6f440e42bad424caea03"}, + {file = "pandas-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:465571472267a2d6e00657900afadbe6097c8e1dc43746917db4dfc862e8863e"}, + {file = "pandas-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04d4c58e1f112a74689da707be31cf689db086949c71828ef5da86727cfe3f82"}, + {file = "pandas-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fa2ad4ff196768ae63a33f8062e6838efed3a319cf938fdf8b95e956c813042"}, + {file = "pandas-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4441ac94a2a2613e3982e502ccec3bdedefe871e8cea54b8775992485c5660ef"}, + {file = "pandas-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ded6ff28abbf0ea7689f251754d3789e1edb0c4d0d91028f0b980598418a58"}, + {file = "pandas-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca5680368a5139d4920ae3dc993eb5106d49f814ff24018b64d8850a52c6ed2"}, + {file = "pandas-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:de21e12bf1511190fc1e9ebc067f14ca09fccfb189a813b38d63211d54832f5f"}, + {file = "pandas-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a5d53c725832e5f1645e7674989f4c106e4b7249c1d57549023ed5462d73b140"}, + {file = "pandas-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7cf4cf26042476e39394f1f86868d25b265ff787c9b2f0d367280f11afbdee6d"}, + {file = "pandas-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72c84ec1b1d8e5efcbff5312abe92bfb9d5b558f11e0cf077f5496c4f4a3c99e"}, + {file = "pandas-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f539e113739a3e0cc15176bf1231a553db0239bfa47a2c870283fd93ba4f683"}, + {file = "pandas-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc77309da3b55732059e484a1efc0897f6149183c522390772d3561f9bf96c00"}, + {file = "pandas-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:08637041279b8981a062899da0ef47828df52a1838204d2b3761fbd3e9fcb549"}, + {file = "pandas-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b99c4e51ef2ed98f69099c72c75ec904dd610eb41a32847c4fcbc1a975f2d2b8"}, + {file = "pandas-2.1.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7ea8ae8004de0381a2376662c0505bb0a4f679f4c61fbfd122aa3d1b0e5f09d"}, + {file = "pandas-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd76d67ca2d48f56e2db45833cf9d58f548f97f61eecd3fdc74268417632b8a"}, + {file = "pandas-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1329dbe93a880a3d7893149979caa82d6ba64a25e471682637f846d9dbc10dd2"}, + {file = "pandas-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:321ecdb117bf0f16c339cc6d5c9a06063854f12d4d9bc422a84bb2ed3207380a"}, + {file = "pandas-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:11a771450f36cebf2a4c9dbd3a19dfa8c46c4b905a3ea09dc8e556626060fe71"}, + {file = "pandas-2.1.3.tar.gz", hash = "sha256:22929f84bca106921917eb73c1521317ddd0a4c71b395bcf767a106e3494209f"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.1" + +[package.extras] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.8.0)"] + +[[package]] +name = "pydantic" +version = "1.10.13" +description = "Data validation and settings management using python type hints" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, + {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, + {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, + {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"}, + {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"}, + {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"}, + {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"}, + {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"}, + {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, + {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, + {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, + {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, + {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, +] + +[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 = "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 = "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 = "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-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-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {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-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-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 = "regex" +version = "2023.10.3" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.7" +files = [ + {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, + {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, + {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, + {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, + {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, + {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, + {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, + {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, + {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, + {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, + {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, + {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, + {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, + {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, + {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, + {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, + {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, + {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, + {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, + {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, + {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, + {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, + {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, + {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, +] + +[[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 = "rich" +version = "13.7.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "setuptools" +version = "68.2.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "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 = "shellingham" +version = "1.5.4" +description = "Tool to Detect Surrounding Shell" +optional = false +python-versions = ">=3.7" +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + +[[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 = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[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 = "sqlalchemy" +version = "2.0.23" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-win32.whl", hash = "sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-win_amd64.whl", hash = "sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-win32.whl", hash = "sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-win_amd64.whl", hash = "sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-win32.whl", hash = "sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-win_amd64.whl", hash = "sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-win32.whl", hash = "sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-win_amd64.whl", hash = "sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-win32.whl", hash = "sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-win_amd64.whl", hash = "sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-win32.whl", hash = "sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-win_amd64.whl", hash = "sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b"}, + {file = "SQLAlchemy-2.0.23-py3-none-any.whl", hash = "sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d"}, + {file = "SQLAlchemy-2.0.23.tar.gz", hash = "sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", 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\""} +typing-extensions = ">=4.2.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 = "sse-starlette" +version = "1.8.2" +description = "SSE plugin for Starlette" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sse_starlette-1.8.2-py3-none-any.whl", hash = "sha256:70cc7ef5aca4abe8a25dec1284cce4fe644dd7bf0c406d3e852e516092b7f849"}, + {file = "sse_starlette-1.8.2.tar.gz", hash = "sha256:e0f9b8dec41adc092a0a6e0694334bd3cfd3084c44c497a6ebc1fb4bdd919acd"}, +] + +[package.dependencies] +anyio = "*" +fastapi = "*" +starlette = "*" +uvicorn = "*" + +[[package]] +name = "starlette" +version = "0.27.0" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.7" +files = [ + {file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"}, + {file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"}, +] + +[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", "pyyaml"] + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + +[[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 = "tiktoken" +version = "0.5.1" +description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tiktoken-0.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2b0bae3fd56de1c0a5874fb6577667a3c75bf231a6cef599338820210c16e40a"}, + {file = "tiktoken-0.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e529578d017045e2f0ed12d2e00e7e99f780f477234da4aae799ec4afca89f37"}, + {file = "tiktoken-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edd2ffbb789712d83fee19ab009949f998a35c51ad9f9beb39109357416344ff"}, + {file = "tiktoken-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c73d47bdc1a3f1f66ffa019af0386c48effdc6e8797e5e76875f6388ff72e9"}, + {file = "tiktoken-0.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:46b8554b9f351561b1989157c6bb54462056f3d44e43aa4e671367c5d62535fc"}, + {file = "tiktoken-0.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92ed3bbf71a175a6a4e5fbfcdb2c422bdd72d9b20407e00f435cf22a68b4ea9b"}, + {file = "tiktoken-0.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:714efb2f4a082635d9f5afe0bf7e62989b72b65ac52f004eb7ac939f506c03a4"}, + {file = "tiktoken-0.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a10488d1d1a5f9c9d2b2052fdb4cf807bba545818cb1ef724a7f5d44d9f7c3d4"}, + {file = "tiktoken-0.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8079ac065572fe0e7c696dbd63e1fdc12ce4cdca9933935d038689d4732451df"}, + {file = "tiktoken-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ef730db4097f5b13df8d960f7fdda2744fe21d203ea2bb80c120bb58661b155"}, + {file = "tiktoken-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:426e7def5f3f23645dada816be119fa61e587dfb4755de250e136b47a045c365"}, + {file = "tiktoken-0.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:323cec0031358bc09aa965c2c5c1f9f59baf76e5b17e62dcc06d1bb9bc3a3c7c"}, + {file = "tiktoken-0.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5abd9436f02e2c8eda5cce2ff8015ce91f33e782a7423de2a1859f772928f714"}, + {file = "tiktoken-0.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:1fe99953b63aabc0c9536fbc91c3c9000d78e4755edc28cc2e10825372046a2d"}, + {file = "tiktoken-0.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dcdc630461927718b317e6f8be7707bd0fc768cee1fdc78ddaa1e93f4dc6b2b1"}, + {file = "tiktoken-0.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1f2b3b253e22322b7f53a111e1f6d7ecfa199b4f08f3efdeb0480f4033b5cdc6"}, + {file = "tiktoken-0.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43ce0199f315776dec3ea7bf86f35df86d24b6fcde1babd3e53c38f17352442f"}, + {file = "tiktoken-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a84657c083d458593c0235926b5c993eec0b586a2508d6a2020556e5347c2f0d"}, + {file = "tiktoken-0.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c008375c0f3d97c36e81725308699116cd5804fdac0f9b7afc732056329d2790"}, + {file = "tiktoken-0.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:779c4dea5edd1d3178734d144d32231e0b814976bec1ec09636d1003ffe4725f"}, + {file = "tiktoken-0.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:b5dcfcf9bfb798e86fbce76d40a1d5d9e3f92131aecfa3d1e5c9ea1a20f1ef1a"}, + {file = "tiktoken-0.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b180a22db0bbcc447f691ffc3cf7a580e9e0587d87379e35e58b826ebf5bc7b"}, + {file = "tiktoken-0.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b756a65d98b7cf760617a6b68762a23ab8b6ef79922be5afdb00f5e8a9f4e76"}, + {file = "tiktoken-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba9873c253ca1f670e662192a0afcb72b41e0ba3e730f16c665099e12f4dac2d"}, + {file = "tiktoken-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74c90d2be0b4c1a2b3f7dde95cd976757817d4df080d6af0ee8d461568c2e2ad"}, + {file = "tiktoken-0.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:709a5220891f2b56caad8327fab86281787704931ed484d9548f65598dea9ce4"}, + {file = "tiktoken-0.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d5a187ff9c786fae6aadd49f47f019ff19e99071dc5b0fe91bfecc94d37c686"}, + {file = "tiktoken-0.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:e21840043dbe2e280e99ad41951c00eff8ee3b63daf57cd4c1508a3fd8583ea2"}, + {file = "tiktoken-0.5.1.tar.gz", hash = "sha256:27e773564232004f4f810fd1f85236673ec3a56ed7f1206fc9ed8670ebedb97a"}, +] + +[package.dependencies] +regex = ">=2022.1.18" +requests = ">=2.26.0" + +[package.extras] +blobfile = ["blobfile (>=2)"] + +[[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 = "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 = "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" +colorama = {version = ">=0.4.3,<0.5.0", optional = true, markers = "extra == \"all\""} +rich = {version = ">=10.11.0,<14.0.0", optional = true, markers = "extra == \"all\""} +shellingham = {version = ">=1.3.0,<2.0.0", optional = true, markers = "extra == \"all\""} +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 = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + +[[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.3" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, +] + +[[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 = "uvicorn" +version = "0.23.2" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"}, + {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"}, +] + +[package.dependencies] +click = ">=7.0" +h11 = ">=0.8" +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 = "yarl" +version = "1.9.3" +description = "Yet another URL library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab"}, + {file = "yarl-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e"}, + {file = "yarl-1.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d"}, + {file = "yarl-1.9.3-cp310-cp310-win32.whl", hash = "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6"}, + {file = "yarl-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93"}, + {file = "yarl-1.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd"}, + {file = "yarl-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566"}, + {file = "yarl-1.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321"}, + {file = "yarl-1.9.3-cp311-cp311-win32.whl", hash = "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279"}, + {file = "yarl-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696"}, + {file = "yarl-1.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d"}, + {file = "yarl-1.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a"}, + {file = "yarl-1.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3"}, + {file = "yarl-1.9.3-cp312-cp312-win32.whl", hash = "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7"}, + {file = "yarl-1.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e"}, + {file = "yarl-1.9.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732"}, + {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92"}, + {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca"}, + {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4"}, + {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d"}, + {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d"}, + {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb"}, + {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae"}, + {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a"}, + {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42"}, + {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9"}, + {file = "yarl-1.9.3-cp37-cp37m-win32.whl", hash = "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6"}, + {file = "yarl-1.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf"}, + {file = "yarl-1.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225"}, + {file = "yarl-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8"}, + {file = "yarl-1.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a"}, + {file = "yarl-1.9.3-cp38-cp38-win32.whl", hash = "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6"}, + {file = "yarl-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70"}, + {file = "yarl-1.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e"}, + {file = "yarl-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90"}, + {file = "yarl-1.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682"}, + {file = "yarl-1.9.3-cp39-cp39-win32.whl", hash = "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f"}, + {file = "yarl-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb"}, + {file = "yarl-1.9.3-py3-none-any.whl", hash = "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929"}, + {file = "yarl-1.9.3.tar.gz", hash = "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "2.0" +python-versions = ">=3.9,<3.13" +content-hash = "b635ca551e6b9cec07c838b51b18c37531ed6718d9595098e6427449d11ceb93" diff --git a/langserve/packages/bq-agent/pyproject.toml b/langserve/packages/bq-agent/pyproject.toml new file mode 100644 index 0000000..49515a9 --- /dev/null +++ b/langserve/packages/bq-agent/pyproject.toml @@ -0,0 +1,38 @@ +[tool.poetry] +name = "bq-agent" +version = "0.0.1" +description = "Analyze bq data with Pandas and OpenAI" +authors = [] +readme = "README.md" + +[tool.poetry.dependencies] +python = ">=3.9,<3.13" +langchain = ">=0.0.325" +openai = "<2" +tiktoken = "^0.5.1" +faiss-cpu = "^1.7.4" +pandas = "^2.1.1" +setuptools = "^68.2.2" +tabulate = "^0.9.0" +pydantic = "<2" +langchain-experimental = ">=0.0.37" +bigframes = "^0.21.0" + +[tool.poetry.group.dev.dependencies] +langchain-cli = ">=0.0.15" + +[tool.langserve] +export_module = "bq_agent" +export_attr = "agent_executor" + +[tool.templates-hub] +use-case = "question-answering" +author = "LangChain" +integrations = ["OpenAI", "Pandas"] +tags = ["data", "agents"] + +[build-system] +requires = [ + "poetry-core", +] +build-backend = "poetry.core.masonry.api" diff --git a/langserve/packages/bq-agent/tests/__init__.py b/langserve/packages/bq-agent/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/langserve/packages/csv-agent/csv_agent/agent.py b/langserve/packages/csv-agent/csv_agent/agent.py index 88d518d..21e9f7f 100644 --- a/langserve/packages/csv-agent/csv_agent/agent.py +++ b/langserve/packages/csv-agent/csv_agent/agent.py @@ -78,4 +78,4 @@ class PythonInputs(BaseModel): class AgentInputs(BaseModel): input: str -agent_executor = agent_executor.with_types(input_type=AgentInputs) +agent_executor = agent_executor.with_types(input_type=AgentInputs) \ No newline at end of file