From 6e702b9c367f7c74ef8a5be6589cbbf12d0ffd04 Mon Sep 17 00:00:00 2001 From: Adilkhan Sarsen <54854336+adolkhan@users.noreply.github.com> Date: Tue, 31 Oct 2023 01:16:14 +0600 Subject: [PATCH] Deep memory support in LangChain (#12268) - Description: adding support to Activeloop's DeepMemory feature that boosts recall up to 25%. Added Jupyter notebook showcasing the feature and also made index params explicit. - Twitter handle: will really appreciate if we could announce this on twitter. --------- Co-authored-by: adolkhan --- .../Activeloop DeepMemory+LangChain.ipynb | 717 ++++++++++ .../langchain/vectorstores/deeplake.py | 75 +- libs/langchain/poetry.lock | 1182 ++++++++--------- libs/langchain/pyproject.toml | 4 +- 4 files changed, 1378 insertions(+), 600 deletions(-) create mode 100644 docs/docs/integrations/retrievers/Activeloop DeepMemory+LangChain.ipynb diff --git a/docs/docs/integrations/retrievers/Activeloop DeepMemory+LangChain.ipynb b/docs/docs/integrations/retrievers/Activeloop DeepMemory+LangChain.ipynb new file mode 100644 index 0000000000..79e34456d3 --- /dev/null +++ b/docs/docs/integrations/retrievers/Activeloop DeepMemory+LangChain.ipynb @@ -0,0 +1,717 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Activeloop DeepLake's DeepMemory + LangChain + ragas or how to get +27% on RAG recall." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Retrieval-Augmented Generators (RAGs) have recently gained significant attention. As advanced RAG techniques and agents emerge, they expand the potential of what RAGs can accomplish. However, several challenges may limit the integration of RAGs into production. The primary factors to consider when implementing RAGs in production settings are accuracy (recall), cost, and latency. For basic use cases, OpenAI's Ada model paired with a naive similarity search can produce satisfactory results. Yet, for higher accuracy or recall during searches, one might need to employ advanced retrieval techniques. These methods might involve varying data chunk sizes, rewriting queries multiple times, and more, potentially increasing latency and costs. [Activeloop's](https://activeloop.ai/) [Deep Memory](https://www.activeloop.ai/resources/use-deep-memory-to-boost-rag-apps-accuracy-by-up-to-22/) a feature available to Activeloop Deep Lake users, addresses these issuea by introducing a tiny neural network layer trained to match user queries with relevant data from a corpus. While this addition incurs minimal latency during search, it can boost retrieval accuracy by up to 27\n", + "% and remains cost-effective and simple to use, without requiring any additional advanced rag techniques.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this tutorial we will parse deeplake documentation, and create a RAG system that could answer the question from the docs. \n", + "\n", + "The tutorial can be divided into several parts:\n", + "1. [Dataset creation and uploading](#1-dataset-creation)\n", + "2. [Generating synthetic queries and training deep_memory](#2-generating-synthetic-queries-and-training-deep_memory)\n", + "3. [Evaluating deep memory performance](#3-evaluating-deep-memory-performance)\n", + " - 3.1 [using deepmemory recall@10 metric](#31-using-deepmemory-recall10-metric)\n", + " - 3.2 [using ragas](#32-deepmemory--ragas)\n", + " - 3.3 [deep_memory inference](#33-deepmemory-inference)\n", + " - 3.4 [deep_memory cost savings](#34-cost-savings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1. Dataset Creation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will parse activeloop's docs for this tutorial using `BeautifulSoup` library and LangChain's document parsers like `Html2TextTransformer`, `AsyncHtmlLoader`. So we will need to install the following libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install tiktoken openai python-dotenv datasets langchain deeplake beautifulsoup4 html2text ragas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Also you'll need to create a [Activeloop]((https://activeloop.ai/)) account." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "from langchain.vectorstores.deeplake import DeepLake\n", + "\n", + "from langchain.embeddings.openai import OpenAIEmbeddings\n", + "from langchain.chains import RetrievalQA\n", + "from langchain.llms import OpenAIChat\n", + "\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"Enter your OpenAI API token: \")\n", + "# # activeloop token is needed if you are not signed in using CLI: `activeloop login -u -p `\n", + "os.environ[\"ACTIVELOOP_TOKEN\"] = getpass.getpass(\n", + " \"Enter your ActiveLoop API token: \"\n", + ") # Get your API token from https://app.activeloop.ai, click on your profile picture in the top right corner, and select \"API Tokens\"\n", + "\n", + "token = os.getenv(\"ACTIVELOOP_TOKEN\")\n", + "openai_embeddings = OpenAIEmbeddings()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "db = DeepLake(\n", + " dataset_path=f\"hub://{ORG_ID}/deeplake-docs-deepmemory\", # org_id stands for your username or organization from activeloop\n", + " embedding=openai_embeddings,\n", + " runtime={\"tensor_db\": True},\n", + " token=token,\n", + " # overwrite=True, # user overwrite flag if you want to overwrite the full dataset\n", + " read_only=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "parsing all links in the webpage using `BeautifulSoup`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup\n", + "from urllib.parse import urljoin\n", + "\n", + "\n", + "def get_all_links(url):\n", + " response = requests.get(url)\n", + " if response.status_code != 200:\n", + " print(f\"Failed to retrieve the page: {url}\")\n", + " return []\n", + "\n", + " soup = BeautifulSoup(response.content, \"html.parser\")\n", + "\n", + " # Finding all 'a' tags which typically contain href attribute for links\n", + " links = [\n", + " urljoin(url, a[\"href\"]) for a in soup.find_all(\"a\", href=True) if a[\"href\"]\n", + " ]\n", + "\n", + " return links\n", + "\n", + "\n", + "base_url = \"https://docs.deeplake.ai/en/latest/\"\n", + "all_links = get_all_links(base_url)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Loading data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.document_loaders import AsyncHtmlLoader\n", + "\n", + "loader = AsyncHtmlLoader(all_links)\n", + "docs = loader.load()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Converting data into user readable format:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.document_transformers import Html2TextTransformer\n", + "\n", + "html2text = Html2TextTransformer()\n", + "docs_transformed = html2text.transform_documents(docs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let us chunk further the documents as some of the contain too much text:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "\n", + "\n", + "chunk_size = 4096\n", + "docs_new = []\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter(\n", + " chunk_size=chunk_size,\n", + ")\n", + "\n", + "for doc in docs_transformed:\n", + " if len(doc.page_content) < chunk_size:\n", + " docs_new.append(doc)\n", + " else:\n", + " docs = text_splitter.create_documents([doc.page_content])\n", + " docs_new.extend(docs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Populating VectorStore:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "docs = db.add_documents(docs_new)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2. Generating synthetic queries and training deep_memory " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next step would be to train a deep_memory model that will align your users queries with the dataset that you already have. If you don't have any user queries yet, no worries, we will generate them using LLM!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Alt text](data:image/png;base64,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AAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrQBBnGylyIcAAggggAACCCCAAAIIIIAAAgjkUYAgTh7xOTUCCCCAAAIIIIAAAggggAACCCCQrUCTbDOSDwEEEEAgfwI/fpCwxQvyd37OjAAC2Qm0aGvWtnNZdpnJhQACCCCAAAII5ChAECdHMLIjgAACDS0w+o4lNrTv4oY+LedDAIEaChzzfhNbrSeBnBrycRgCCCCAAAIIVCFAd6oqcNiFAAIIFILA3GmFUAvqgAAC2QrM/TXbnORDAAEEEEAAAQRyE6AlTm5e5EYAAQQaXGDhzIpTbtx3gbVaI1GxgSUEECgIga+ebWpTRzZ2dVk0T7+jtMQpiBtDJRBAAAEEECgyAYI4RXZDuRwEEChugQ2PXxgEcZYU90VydQjEUGDpdkuCIM7SMaw5VUYAAQQQQACBOAnQnSpOd4u6IoAAAggggAACCCCAAAIIIIBAyQoQxCnZW8+FI4AAAggggAACCCCAAAIIIIBAnAQI4sTpblFXBBBAAAEEEEAAAQQQQAABBBAoWQGCOCV767lwBBBAAAEEEEAAAQQQQAABBBCIkwBBnDjdLeqKAAIIIIAAAggggAACCCCAAAIlK0AQp2RvPReOAAIIIIAAAggggAACCCCAAAJxEiCIE6e7RV0RQAABBBBAAAEEEEAAAQQQQKBkBQjilOyt58IRQAABBBBAAAEEEEAAAQQQQCBOAgRx4nS3qCsCCCCAAAIIIIAAAggggAACCJSsAEGckr31XDgCCCCAAAIIIIAAAggggAACCMRJgCBOnO4WdUUAAQQQQAABBBBAAAEEEEAAgZIVIIhTsreeC0cAAQQQQAABBBBAAAEEEEAAgTgJEMSJ092irggggAACCCCAAAIIIIAAAgggULICBHFK9tZz4QgggAACCCCAAAIIIIAAAgggECcBgjhxulvUFQEEEEAAAQQQQAABBBBAAAEESlaAIE7J3nouHAEEEEAAAQQQQAABBBBAAAEE4iRAECdOd4u6IoAAAggggAACCCCAAAIIIIBAyQoQxCnZW8+FI4AAAggggAACCCCAAAIIIIBAnAQI4sTpblFXBBBAAAEEEEAAAQQQQAABBBAoWQGCOCV767lwBBBAAAEEEEAAAQQQQAABBBCIkwBBnDjdLeqKAAIIIIAAAggggAACCCCAAAIlK0AQp2RvPReOAAIIIIAAAggggAACCCCAAAJxEiCIE6e7RV0RQAABBBBAAAEEEEAAAQQQQKBkBQjilOyt58IRQAABBBBAAAEEEEAAAQQQQCBOAgRx4nS3qCsCCCCAAAIIIIAAAggggAACCJSsAEGckr31XDgCCCCAAAIIIIAAAggggAACCMRJgCBOnO4WdUUAAQQQQAABBBBAAAEEEEAAgZIVIIhTsreeC0cAAQQQQAABBBBAAAEEEEAAgTgJEMSJ092irggggAACCCCAAAIIIIAAAgggULICBHFK9tZz4QgggAACCCCAAAIIIIAAAgggECcBgjhxulvUFQEEEEAAAQQQQAABBBBAAAEESlaAIE7J3nouHAEEEEAAAQQQQAABBBBAAAEE4iTQJE6VTVfXeX+YTXk7Yb9+mrDZUxP24+iEtduwLF1WtiFQ7wK/fmq2SnezlquU2Ypdy6z9tmW21HL1flpOgAACCCCAAAIIIIAAAgggUAICsQ3iTHwmYWMHLrFJzy+pdJu+fzdRaRsbEGgogSkjks+07j6NbJNjG9m6+xBcTJZhDQEEEEAAAQQQQAABBBBAIBeB2AVxpo5J2OvnL7GvX6kcvMnlwsmLQEMJfPHcEtNPp90b2c7XNLKVuhHMaSh7zoMAAggggAACCCCAAAIIFJNArII4Y+9ZYs8fvzjJf7Vt/7QOu/1p7br/aa3aL7GyxmaNY3VVSZfDSswFlvxptiR4i876rpH9PLqJfftyE/thRPkb8qthS0w/ew9sbN2OYTiqmN9qqo8AAggggAACCCCAAAIINLhAbMIdI29eYi+fVRHAWXPXP23Ts+bbSptVbGtwPU6IQAaBZVZebCv3WGwb911gP33Q2EbfuJR991r5r9uQYxfbwllmPU4nkJOBj80IIIAAAggggAACCCCAAAJpBGLxFPnJo8kBnC0vm297PDqHAE6aG8qmwhNYefPFtuegObbFxfPDyg07Y7F9OogugSEICwgggAACCCCAAAIIIIAAAtUKFHwQZ8a3Zi+cWPGwu8NN86zbKQuqvTAyIFBoApucvsC2u2FeWK2hfZfYzO/DVRYQQAABBBBAAAEEEEAAAQQQqFKg4IM4b16irifls01tds4C69JnYZUXxE4EClmg65ELbdMzy4OQ86cnbPildAcs5PtF3RBAAAEEEEAAAQQQQACBQhIo6CDOL+MTNv6h8lY4K2682DbvV9EdpZAQqQsCuQj0uHC+td2g/H097r4l9uun5UHKXMogLwIIIIAAAggggAACCCCAQOkJFHQQZ/yDFQ+3dKEqvTdnMV9xt5MrApLjH6p4nxfzNXNtCCCAAAIIIIAAAggggAACtRMo6CDOF0PKWyssvVLC1u69qHZXytEIFJDAOgcsshZty4M3k/56nxdQ9agKAggggAACCCCAAAIIIIBAAQoUbBBn1o9mv31R/pC7xg5/FiAdVUKgdgKrb1/+vv71s4TN+aV2ZXE0AggggAACCCCAAAIIIIBA8QsUbBDn90kVXUxW6Mrgr8X/Viy9K2y7QcX7Ovp+Lz0JrhgBBBBAAAEEEEAAAQQQQCAbgYIN4sz7raL6S69UMcV4xVaWEIi3QPR9HX2/x/uqqD0CCCCAAAIIIIAAAggggEB9CRRsEOePryta4sz9uWCrWV/3hXJLQGDO1Ir39fRvKt7vJXDpXCICCCCAAAIIIIAAAggggEANBCqeImtwcH0esmz7srD4lqvREifEYKFoBFquXvG+br16xfu9aC6QC0EAAQQQQAABBBBAAAEEEKhTgYIN4tTpVVIYAggggAACCCCAAAIIIIAAAgggEHMBgjgxv4FUHwEEEEAAAQQQQAABBBBAAAEESkOAIE5p3GeuEgEEEEAAAQQQQAABBBBAAAEEYi5AECfmN5DqI4AAAggggAACCCCAAAIIIIBAaQgQxCmN+8xVIoAAAggggAACCCCAAAIIIIBAzAUI4sT8BlJ9BBBAAAEEEEAAAQQQQAABBBAoDQGCOKVxn7lKBBBAAAEEEEAAAQQQQAABBBCIuQBBnJjfQKqPAAIIIIAAAggggAACCCCAAAKlIUAQpzTuM1eJAAIIIIAAAggggAACCCCAAAIxFyCIE/MbSPURQAABBBBAAAEEEEAAAQQQQKA0BJqUxmVylQgggAACb7zxhn355Zc5QXTq1Ml22mmnnI7JNfM999xjiUTCunXrZptvvnmuh9d5/rffftsmTJhgbdu2tb///e9Zlz937lx75JFHXP7dd9/d2rdv75bHjx9vI0eOtObNm9vhhx9ujRoV3vcnQ4YMsZ9++im81t69e9uKK64YrmdaeP75523q1Klu92qrrWZ77LFHpqx1tj2Tc01P8MEHH9i4ceOsrKzMjjvuuJoWw3EIIIAAAggggECDCBDEaRBmToIAAgjkX+CJJ56wJ598MqeK9OzZs96DOBdddJEtWbLETj/99III4jz99NP20EMPWbt27XIK4sycOdMuvPBC59usWTM78sgj3fLw4cPtiiuucMsKCrVq1Sqne9AQme+44w4bNWpUeKpFixbZSSedFK6nW5gzZ4717dvX5s+f73avt956DRLEyeScro7ZbHv55ZftlltuIYiTDRZ5EEAAAQQQQCDvAoX3dWDeSagAAggggAACpS3w3HPPVQvw0ksvhQGcajOTAQEEEEAAAQQQQKBOBGiJUyeM9VfIpEmTTM3Vv/32W/vhhx+sZcuWtsYaa9hGG21ke++9t2ueX39np2QEEChWga+//tp9nhTr9RXSde2888621FJLuSqpS1Uc0ujRo23KlCnu/5tM9VWLJRICCCCAAAIIIIBAwwoQxGlY76zPpnErzjnnHHvnnXcyHqMuCGrKri4I6stPQgABBLIV0LgsfG5kq1W7fOuvv77pJw6padOmpq5UShonJ1OXqunTp5vGWCIhgAACCCCAAAIINKwAQZyG9c7qbMOGDXPBmVmzZoX51fqmS5cutnDhQvv000/t119/td9//92uvvpq06CMd955J9+qh1osIIBAfQkMGjTINCaJBu5t3bq1e5AfMWKEzZgxw7bcckvbcccdTYMhK33//ff22muv2Ycffmh//vmnrb322nb00UdbmzZtMlbvl19+sWeeecbUEkRBpu7du7sy11lnnYzHKKCgrj36bPzqq6/cgMIbbLCB9erVy1ZYYYWMxyn///3f/9nkyZPdtWyxxRbumIwH/LVjwYIFpvGF9Nn722+/uZaR22+/vXXo0CHtoR999JEb2Fg7jzrqKNN4OUrecrfddnMmslKZ3333nWl8mc0226zK+nz22WdujCPVX2VuuummbkwajS8kD6VjjjnGmjTJ/r96XcMyyyzjBvp99tlnMwZxhg4d6v4/0r1cc801bezYse58mf5588037f3337cvvvjCDezctWtXd2/llinl6hwtR47vvfeee08oKKX3gwbN3nbbbaPZWEYAAQQQQAABBGInkP1fdrG7tHhWWC1wNDuGHyhyu+22cwMuKojjkx6G1Iz93HPPNQ0sqUEZ1WpHA1OSEECgMAQSC2dZWbPCG8C2tjpnnXWWa6mhzyHNKqUuNz5pHBUFE/SArwfwQw45xKLBaOW76667XAuPdddd1x8Wvo4ZM8bU9Sg6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i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvQBBnKK/xVwgAggggAACCCCAAAIIIIAAAggUgwBBnGK4i1wDAggggAACCCCAAAIIIIAAAggUvUCTor9CLhABBBAoIoGHu7ey5ssliuiKuBQEikNgwfSy4rgQrgIBBBBAAAEEClqAIE5B3x4qhwACCAQCKc+GPCzG/12xWpf3rNNmL7oLGffScTbz1/bxvyiuIBQoK0v5pQ33sIAAAggggAACCNROgCBO7fw4GgEEEKh3ge4nlNm0CY1s0dx6PxUnaCCBNdedZOt1e9ydbdai/Wz6tA4NdGZOU58CCt20Wt2sywEEcerTmbIRQAABBBAoZQGCOKV897l2BBCIhcDyncrs4Gcbx6KuVDI7gXmflNms98rz7n5LI2u6Evc3OzlyIYAAAggggAACpS3AwMalff+5egQQQAABBBBAAAEEEEAAAQQQiIkAQZyY3CiqiQACCCBQrAJ0vSnWO8t1IYAAAggggAACdS1AEKeuRSkPAQQQQACBagQSTDBWjRC7EUAAAQQQQAABBNIJEMRJp8I2BBBAAAEE6lWAKE698lI4AggggAACCCBQpAIEcYr0xnJZCCCAAAIxEaA3VUxuFNVEAAEEEEAAAQTyL0AQJ//3gBoggAACCJS0AFGckr79XDwCCCCAAAIIIJCDAEGcHLDIigACCCCAAAIIIIAAAggggAACCORLgCBOvuQ5LwIIIIAAAggggAACCCCAAAIIIJCDAEGcHLDIigACCCCAAAIIIIAAAggggAACCORLgCBOvuQ5LwIIIIBACQswO1UJ33wuHQEEEEAAAQQQqLEAQZwa03EgAggggAACCCCAAAIIIIAAAggg0HACBHEazpozIYAAAgggkEaA2anSoLAJAQQQQAABBBBAII0AQZw0KGxCAAEEEEAAAQQQQAABBBBAAAEECk2AIE6h3RHqgwACCCCAAAIIIIAAAggggAACCKQRIIiTBoVNCCCAAAIIIIAAAggggAACCCCAQKEJEMQptDtCfRBAAAEEil8gUTE7VRlD4hT//eYKEUAAAQQQQACBOhIgiFNHkBSDAAIIIIBATQQSRhSnJm4cgwACCCCAAAIIlKIAQZxSvOtcMwIIIIAAAggggAACCCCAAAIIxE6AIE7sbhkVRgABBBAoJgHa4RTT3eRaEEAAAQQQQACB+hUgiFO/vpSOAAIIIIBAlQIVo+NUmY2dCCCAAAIIIIAAAggYQRzeBAgggAACCDS4QEXohpY4DY7PCRFAAAEEEEAAgdgKEMSJ7a2j4ggggAACxSFAGKc47iNXgQACCCCAAAII1L9Ak/o/BWdAAAEEEEAAAQRqLjBhwgQbPHiwTZ482aZMmWItW7a0Dh06WPfu3e2AAw6w5s2b17xwjkQAAQQQQAABBGIkQBAnRjeLqiKAAAIIIFBKAhMnTrQTTzzR3nzzzYyXfcYZZ9hZZ51l559/vpWV0aopIxQ7EEAAAQQQQKAoBOhOVRS3kYtAAAEEEECguASGDBliPXr0SArgrLnmmrbXXnvZbrvtZiuttJK74GnTptmFF15o++yzj82aNau4ELgaBBBAAAEEEEAgRYAgTgoIqwgggAACCNS/QMXAxvV/rvidQS1wDj74YJs5c6ar/M4772zffPON+1FwZ9iwYfb999/bQw895LpWKdPzzz/vWu3E72qpMQIIIIAAAgggkL0AQZzsrciJAAIIIIBA3QgkxXDoAhRFTSQSduSRR9q8efPcZnWTeuWVV0ytcKKpSZMmdvjhh9tjjz1mjRqV/znz6KOP2tNPPx3NxjICCCCAAAIIIFBUAmXBH0tJf0oW1dVxMQgggAACCBSgwNyP7rTZo651NWvz92etSdsNC7CW+anSO++8Y9tss407+XrrrWcff/yxNW3atMrK3HbbbXb66ae7PFtvvbWNGDHCLS9ZssQGDBjglrfYYgvXPSu1oNdff90++eQTa9GihR1//PGpu936u+++a2+//bZ99NFHtmjRItt4441tq622sp122qlS/pEjR5p+1N1r9913t7vuust0vOq1yy67uLrpT6/NNtvMlVGpgGDD+++/b6NGjXK7VCfVjYQAAggggAACCEiAIA7vAwQQQAABBBpYgCBOZvCTTz7Zbr/9dpfhueees7333jtz5sieddZZx7788ks3uLG6XrVv394WLlwYzlx1+eWX26WXXho5onzxhBNOsLvvvttWXHFF++WXX5L2z5kzxzRw8j333JO03a/84x//cHVddtll/Sbr37+/6VzdunWzpZZaygVk/M7OnTu7bmCzZ8+2zTffPAzU+P3+VQEfBX7WXXddU9cyEgIIIIAAAggg4AXoTuUleEUAAQQQQACBvAsMHz48rMOOO+4YLle3oOnGldTKRa1m6iLtu+++YQBHrYL69etnF110kQvAqHx139JAy+nSuHHjwgCOun4p9enTxw488EC3/MEHH9gXX3zhlqP/KBClAI6SupWREEAAAQQQQACBqABBnKgGywgggAACCDSIAD2ZMzFrwGIldUdq2bJlpmyVtvsgjnb88MMPlfbnumHw4MH22muvucMOPfRQ15XqmmuusauuusoFZ9RCR0ldtwYNGuSWU/9R/d966y03vo8CS2r1c/TRR4fZHn744XDZL2iwZiWN86OgDwkBBBBAAAEEEIgKEMSJarCMAAIIIIBAgwswsLEn12DGM2bMcKsdO3b0m7N61Tg1Pv30009+scav//rXv9yxCibdeeedYbcsbVSA5frrr7dOnTq5PDfeeKN7Tf3n4osvtm233dbUEkfj/LRt29atr7322i7rI488knSIWhH5wI5m5FpjjTWS9rOCAAIIIIAAAggQxOE9gAACCCCAAAIFIdCsWTNr3Lixq8usWbNyqpPGr/FJwZLaJAVTJkyY4IrYZJNN7Pfff7dvv/026UetfTbcsHxA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YZtuuqlttdVWuR5e5/lff/11+/TTT23FFVe0Qw45JOvyMx03ZswYe+edd6x58+Z23HHHWaNGfOeWNSoZEUAAAQQQKHIBgjhFfoO5PAQQQAABBGoq8OCDD9ojjzyS0+HbbLNNvQdxTj/9dFuyZImdf/75BRHEGTRokN19991uuvBcgjiZjnv11VetX79+zl3ltW7dOqd7QGYEEEAAAQQQKF4Bvtop3nvLlSGAAAIIIIAAAggggAACCCCAQBEJ0BKniG4ml4IAAggggEB9CcyYMcNatWpVX8VTbkSgV69e1qJFC7dlqaWWiuxhEQEEEEAAAQRKXYAgTqm/A7h+BBBAAAEEshDQuCxlZWVZ5CRLbQU23HBD0w8JAQQQQAABBBBIFSCIkyrCOgIIIIAAAvUskLB4DGxcFwz333+/zZw50/baay9bbrnlbNiwYfbGG2/Y9OnTbbvttrPddtvN1l13XXeq7777zl588UV777337M8//7T11lvP+vbta23bts1YlZ9++smeeOIJe//9912QqUePHrb77rtb586dMx7zxx9/2HPPPWcfffSRffHFF9ahQwfr1q2b7bvvvm5w4kwHjh8/3h566CH78ssv3bVo/J/evXtnyh5uz/W40aNHu4GNVcCJJ55ozZo1c2V5yz333NOZeKvJkyfb+uuvb1tuuaW7hvDEKQsff/yxPfzww67+GjR5iy22cPVfvHixDRkyxOU+6aSTrEkT/jxMoWMVAQQQQACBwhEIZncgIYAAAggggEADCswZc1vi57s6up9Fv01owDPndqrDDjtM0Sb3M2vWrNwO/it306ZN3fE33HBDYs011wzL8+UGwYTEhx9+mBgxYkQiGMC30v4VVlgh8dlnnyWdO2gV5PLttNNOiVVXXbXSMUHQI3H77bcnHeNXgkGDE6uvvnqlY1Sfdu3aJYJghs+a9Kr6+zpHX9daa63Etttu6/atvPLKScdopSbHXXvtteG5gm5sYZne8pZbbkl06dIlzBOtTxBUSqS7V9ddd13a/Msvv3zi1FNPDffNmTMnPB8LCCCAAAIIIFB4AmWqUvCfPwkBBBBAAAEEGkhg7tj/2OwPb3Zna7P/i9akzXoNdObcTnP44YeHs1MFgQFr2bJlbgUEudWKZNGiReFxQdDDzSil1jg//PCD266puefOnet+ND15+/btTdNvT5o0ye1Xy5Pnn38+LKNx48Zudiq/YZNNNrEddtjBHa/ZtGbPnu123XPPPXbsscf6bPbWW2+5fPrTR2UcfPDB1rVrV9cyRa15ggCGy/vKK6/YLrvsEh6ndY1ToxYrQVDJHafxgVQnTS3uUxDEsalTp/pVq+lxQcAlnJ1KYxH52alSLdVSSdetc7722mth/YMgkJ133nlhPV566SWToWb0CoI2bhp0tYpSS55x48aF+bQgg6WXXjppGysIIIAAAgggUDgCBHEK515QEwQQQACBEhGIYxBHwYLqutkELUXsySefTAoCRAMPhx56qD366KPuLqu71H777Rd249F4O88++6ztvffebr+CCeru88knn9gyyywTBma0MxrEOeKII0zBGp1bSfl33HFHmzZtmgsGKRCkOiiA0b17d9eFSkEKBT1Uvk86TgEkBZYU2FFwQ9erchQs+f333123KwWf1P1Kaf78+aZA1+DBg916NIhT0+NUUDZBHHV7uvXWW8N7oi5oQcskV6eglY4FrZdcnX7++WfTurqQKYCm6cs7duzo9ukeqLua/HwiiOMleEUAAQQQQKAwBZhivDDvC7VCAAEEECgVgZiMFfzmm2+6AICCAJl+1LLDt2ZJvX0KcESDBQqQ7LHHHmG2v//972EARxsVuNE4Okoq89dff3XL0X/UKmbAgAFhAEf7NthgAzv33HNdNo2x41vwvPDCCy6Aox39+/dPCuBom4676qqrtOha12jsHqWRI0e6AI6WL7vssjCAo3XNHPXf//7XvWo9mmp6XLSMTMuyvP7668MAjvJpPJztt9/eHfLNN9+4V/3z9ttvuwCOltVCxwdwtK57oECQyiMhgAACCCCAQDwEGLkuHveJWiKAAAIIFJFAckfmeERx1B3Ht3ap6lZowNx0SYMAp3bT0SDEPvXs2dMvhq/B2DXhslq9pCZ1h0o37XmfPn3C7kiff/65O8y3TNGKBjH+9ttvU4tzLVb8xgkTJrguSBr8WEkthdSSKDWttNJKLtikFkjRVNPjomVkWt50000rWSqvbyG0cOHC8NAxY8a4Zdnvv//+4Xa/oO2HHHKIBePs+E28IoAAAggggEABCxDEKeCbQ9UQQAABBIpVIH7D0Q0aNKhGY+L4O6hgR2qKBnxWW2211N0W3V9pZ7BB3YPSJbUs0bELFixws08pjx9fR8uaEau65PP7YIzq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NWrUKKvPAw88gOeff946NxsPPfSQ2cSUKVOsdkMN2WZcdp8SuyQvzsSJE/0eWbVqFf7whz+gqqoKnTt3xtKlS/3u84QEIpGADkNTC4/pPgEO5XHj6HpsJGLgmkmABEiABMKQQN2+pGG4GJpMAiRAAiRAAodCQHLVyFbcsn24lCeeeAInnXQSRHD57LPP8OOPP+LNN9/U24PLFt3mduE33HCDzpdjzml65Uji42eeeQayK5V47UyYMEF7wEg/EYmuueYaaxcp8aL585//rHe6kvtjx47VVdqNKbLVeXS02ilHFRFrJPmyzC+ijWxtfuWVV+q23L/00kutvnLOQgKRSsDRbRxST3kfiaNup4ATqd8EXDcJkAAJhCkBQyVkdIep7TSbBEiABEggxAhUFAIPplRpqwbOqMSExzw7J4WYmXWaI54sl19+OQoL1ULqKQ6HA48++ijOOeccv14i0Fx22WV+11555RVMnToVmzdvxhlnnIEdO3ZY99PS0nQyZfPCscceC8nPIztVmSUjI0M3r732Wtx6663mZb/jU089hbvvvhuyi5YUsU+8gsQjyCyTJ0/GzJkzw0rEeWt8EvatsSFtgIGr1tJ52HyXPJIACZAACZAACUQuAXriRO6758pJgARIgAQCCEgo0ueff45TTz0VPXv2DLgLvavTiSeeCMmbEyjgSGd5TrxdxCPHTES8YcMGPY7k3Zk/fz7OP/98S6SR8C0pItrMmDEDr7/+unVP31BfTC8b82he9z1eddVV2pNn8ODB2jOosrLSEnAkZ46EhknC5vrG8B2PbRIgARIgARIgARIggdAkQE+c0HwvtIoESIAEwpJAuHviBEKXrcdXr16N8vJyDBw4EF26dAnsEvRcPGJk5yrxhpGdpkxBx+ws97ds2YKtW7fq+9nZ2Y1KkGw+X99RwrdkxyyxPSsrS+fsCVfxhp449b1p3iMBEiABEiABEohEAvRNjsS3zjWTAAmQAAk0ikBKSgokxOlgi81mq1fwkfuyY5W5a9XBjl9ff/HqOeKII+rrwnskQAIkQAIkQAIkQAJhSoDhVGH64mg2CZAACZAACZAACZAACZAACZAACZBAZBGgiBNZ75urJQESIAESIAESIAESIAESIAESIAESCFMCFHHC9MXRbBIgARIgARIgARIgARIgARIgARIggcgiQBEnst43V0sCJEAC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YjlWsTSrPtheftUdPdQKAgQIECBAgACB9RIQ4qyXvHoJECBAgAABAgQIECBAgAABAjcgkP6/nx8CBAgQIECAAAECBAgQIECAAIFuFxDidPsIaR8BAgQIECBAgAABAgQIECBAIAkIcdwGBAgQIECAAAECBAgQIECAAIESCAhxSjBImkiAAAECBAgQIECAAAECBAgQEOK4BwgQIECAAAECBAgQIECAAAECJRAQ4pRgkDSRAAECBAgQIECAAAECBAgQICDEcQ8QIECAAAECBAgQIECAAAECBEogIMQpwSBpIgECBAgQIECAAAECBAgQIEBAiOMeIECAAAECBAgQIECAAAECBAiUQECIU4JB0kQCBAgQIECAAAECBAgQIECAgBDHPUCAAAECBAgQIECAAAECBAgQKIGAEKcEg6SJBAgQIECAAAECBAgQIECAAAEhjnuAAAECBAgQIECAAAECBAgQIFACASFOCQZJEwkQIECAAAECBAgQIECAAAECQhz3AAECBAgQIECAAAECBAgQIECgBAJCnBIMkiYSIECAAAECBAgQIECAAAECBIQ47gECBAgQIECAAAECBAgQIECAQAkEhDglGCRNJECAAAECBAgQIECAAAECBAgIcdwDBAgQIECAAAECBAgQIECAAIESCAhxSjBImkiAAAECBAgQIECAAAECBAgQEOK4BwgQIECAAAECBAgQIECAAAECJRAQ4pRgkDSRAAECBAgQIECAAAECBAgQICDEcQ8QIECAAAECBAgQIECAAAECBEogIMQpwSBpIgECBAgQIECAAAECBAgQIEBAiOMeIECAAAECBAgQIECAAAECBAiUQECIU4JB0kQCBAgQIECAAAECBAgQIECAgBDHPUCAAAECBAgQIECAAAECBAgQKIGAEKcEg6SJBAgQIECAAAECBAgQIECAAIH/BUxRxKqWpEeDAAAAAElFTkSuQmCC)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here above we showed the overall schema how deep_memory works. So as you can see, in order to train it you need relevence, queries together with corpus data (data that we want to query). Corpus data was already populated in the previous section, here we will be generating questions and relevance. \n", + "\n", + "1. `questions` - is a text of strings, where each string represents a query\n", + "2. `relevence` - contains links to the ground truth for each question. There might be several docs that contain answer to the given question. Because of this relevenve is `List[List[tuple[str, float]]]`, where outer list represents queries and inner list relevent documents. Tuple contains str, float pair where string represent the id of the source doc (corresponds to the `id` tensor in the dataset), while float corresponds to how much current document is related to the question. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let us generate synthetic questions and relevance:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional, List\n", + "\n", + "from langchain.chains.openai_functions import (\n", + " create_openai_fn_chain,\n", + " create_structured_output_chain,\n", + ")\n", + "from langchain.chat_models import ChatOpenAI\n", + "from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate\n", + "from langchain.schema import HumanMessage, SystemMessage\n", + "\n", + "from pydantic import BaseModel, Field" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# fetch dataset docs and ids if they exist (optional you can also ingest)\n", + "docs = db.vectorstore.dataset.text.data(fetch_chunks=True, aslist=True)[\"value\"]\n", + "ids = db.vectorstore.dataset.id.data(fetch_chunks=True, aslist=True)[\"value\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# If we pass in a model explicitly, we need to make sure it supports the OpenAI function-calling API.\n", + "llm = ChatOpenAI(model=\"gpt-3.5-turbo\", temperature=0)\n", + "\n", + "\n", + "class Questions(BaseModel):\n", + " \"\"\"Identifying information about a person.\"\"\"\n", + "\n", + " question: str = Field(..., description=\"Questions about text\")\n", + "\n", + "\n", + "prompt_msgs = [\n", + " SystemMessage(\n", + " content=\"You are a world class expert for generating questions based on provided context. \\\n", + " You make sure the question can be answered by the text.\"\n", + " ),\n", + " HumanMessagePromptTemplate.from_template(\n", + " \"Use the given text to generate a question from the following input: {input}\"\n", + " ),\n", + " HumanMessage(content=\"Tips: Make sure to answer in the correct format\"),\n", + "]\n", + "prompt = ChatPromptTemplate(messages=prompt_msgs)\n", + "chain = create_structured_output_chain(Questions, llm, prompt, verbose=True)\n", + "\n", + "text = \"# Understanding Hallucinations and Bias ## **Introduction** In this lesson, we'll cover the concept of **hallucinations** in LLMs, highlighting their influence on AI applications and demonstrating how to mitigate them using techniques like the retriever's architectures. We'll also explore **bias** within LLMs with examples.\"\n", + "questions = chain.run(input=text)\n", + "print(questions)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "from tqdm import tqdm\n", + "from langchain.embeddings import OpenAIEmbeddings\n", + "\n", + "\n", + "def generate_queries(docs: List[str], ids: List[str], n: int = 100):\n", + " questions = []\n", + " relevances = []\n", + " pbar = tqdm(total=n)\n", + " while len(questions) < n:\n", + " # 1. randomly draw a piece of text and relevance id\n", + " r = random.randint(0, len(docs) - 1)\n", + " text, label = docs[r], ids[r]\n", + "\n", + " # 2. generate queries and assign and relevance id\n", + " generated_qs = [chain.run(input=text).question]\n", + " questions.extend(generated_qs)\n", + " relevances.extend([[(label, 1)] for _ in generated_qs])\n", + " pbar.update(len(generated_qs))\n", + " if len(questions) % 10 == 0:\n", + " print(f\"q: {len(questions)}\")\n", + " return questions[:n], relevances[:n]\n", + "\n", + "\n", + "chain = create_structured_output_chain(Questions, llm, prompt, verbose=False)\n", + "questions, relevances = generate_queries(docs, ids, n=200)\n", + "\n", + "train_questions, train_relevances = questions[:100], relevances[:100]\n", + "test_questions, test_relevances = questions[100:], relevances[100:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we created 100 training queries as well as 100 queries for testing. Now let us train the deep_memory:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job_id = db.vectorstore.deep_memory.train(\n", + " queries=train_questions,\n", + " relevance=train_relevances,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us track the training progress:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--------------------------------------------------------------\n", + "| 6538e02ecda4691033a51c5b |\n", + "--------------------------------------------------------------\n", + "| status | completed |\n", + "--------------------------------------------------------------\n", + "| progress | eta: 1.4 seconds |\n", + "| | recall@10: 79.00% (+34.00%) |\n", + "--------------------------------------------------------------\n", + "| results | recall@10: 79.00% (+34.00%) |\n", + "--------------------------------------------------------------\n", + "\n" + ] + } + ], + "source": [ + "db.vectorstore.deep_memory.status(\"6538939ca0b69a9ca45c528c\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3. Evaluating deep memory performance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Great we've trained the model! It's showing some substantial improvement in recall, but how can we use it now and evaluate on unseen new data? In this section we will delve into model evaluation and inference part and see how it can be used with LangChain in order to increase retrieval accuracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 3.1 using deepmemory recall@10 metric" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the beginning we can use deep_memory's builtin evaluation method. it can be done easily in a few lines of code:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Embedding queries took 0.81 seconds\n", + "---- Evaluating without model ---- \n", + "Recall@1:\t 9.0%\n", + "Recall@3:\t 19.0%\n", + "Recall@5:\t 24.0%\n", + "Recall@10:\t 42.0%\n", + "Recall@50:\t 93.0%\n", + "Recall@100:\t 98.0%\n", + "---- Evaluating with model ---- \n", + "Recall@1:\t 19.0%\n", + "Recall@3:\t 42.0%\n", + "Recall@5:\t 49.0%\n", + "Recall@10:\t 69.0%\n", + "Recall@50:\t 97.0%\n", + "Recall@100:\t 97.0%\n", + "\n" + ] + } + ], + "source": [ + "recall = db.vectorstore.deep_memory.evaluate(\n", + " queries=test_questions,\n", + " relevance=test_relevances,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is showing quite substatntial improvement on an unseen test dataset too!!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 3.2 DeepMemory + ragas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ragas.metrics import (\n", + " context_recall,\n", + ")\n", + "from ragas.langchain import RagasEvaluatorChain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us convert recall into ground truths:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def convert_relevance_to_ground_truth(docs, relevance):\n", + " ground_truths = []\n", + "\n", + " for rel in relevance:\n", + " ground_truth = []\n", + " for doc_id, _ in rel:\n", + " ground_truth.append(docs[doc_id])\n", + " ground_truths.append(ground_truth)\n", + " return ground_truths" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Evaluating with deep_memory = False\n", + "===================================\n", + "context_recall_score = 0.3763423145\n", + "===================================\n", + "\n", + "Evaluating with deep_memory = True\n", + "===================================\n", + "context_recall_score = 0.5634545323\n", + "===================================\n", + "\n" + ] + } + ], + "source": [ + "ground_truths = convert_relevance_to_ground_truth(docs, test_relevances)\n", + "\n", + "for deep_memory in [False, True]:\n", + " print(\"\\nEvaluating with deep_memory =\", deep_memory)\n", + " print(\"===================================\")\n", + "\n", + " retriever = db.as_retriever()\n", + " retriever.search_kwargs[\"deep_memory\"] = deep_memory\n", + "\n", + " qa_chain = RetrievalQA.from_chain_type(\n", + " llm=OpenAIChat(model=\"gpt-3.5-turbo\"),\n", + " chain_type=\"stuff\",\n", + " retriever=retriever,\n", + " return_source_documents=True,\n", + " )\n", + "\n", + " metrics = {\n", + " \"context_recall_score\": 0,\n", + " }\n", + "\n", + " eval_chains = {m.name: RagasEvaluatorChain(metric=m) for m in [context_recall]}\n", + "\n", + " for question, ground_truth in zip(test_questions, ground_truths):\n", + " result = qa_chain({\"query\": question})\n", + " result[\"ground_truths\"] = ground_truth\n", + " for name, eval_chain in eval_chains.items():\n", + " score_name = f\"{name}_score\"\n", + " metrics[score_name] += eval_chain(result)[score_name]\n", + "\n", + " for metric in metrics:\n", + " metrics[metric] /= len(test_questions)\n", + " print(f\"{metric}: {metrics[metric]}\")\n", + " print(\"===================================\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 3.3 DeepMemory Inference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Alt text](data:image/png;base64,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73//KxmbaEWHDx9ewahfv37RzVUuX3XVVRX2Pffcc6vMz8baCfzwww+hd//+/Wt3sBR7f/PNN9a1a1fr0qWLHXzwwXbIIYfY9ttvbx999FGK3KxCAAEEEEAAAQRSCxBISO3CWgQQKACBxYsXV1tK5fnuu+/s5ptvtm7dutmwYcMqPJ2v9gBFkCHZ6dNPP7WPP/44Vs3uvffeCvnU0oNUmAJqfbDnnnumDKhtvPHGhVkpSo0AAggggAACK0WArg0rhZ2TIoBAtgW23HJL6927d3jYZcuWuYDBjBkzbMKECa55vrpC3H777VavXj279dZbw7yluHDffffZRRddVGXVFXD48MMPq8zDxsIR+P777+399993BV511VXtwgsvtK222soWLVpkq6yySuFUhJIigAACCCCAwEoXIJCw0i8BBUAAgWwIHHrooXbsscemPNTChQvt4osvtiuuuML1Cb/ttttsjz32cD8pdyiBlffff3+1gYTk1gglwFLUVZw6dWpYv6FDh9pJJ50UvmcBAQQQQAABBBDIRICuDZlokRcBBApSoGnTpnbZZZe5YIKvwNFHH22zZs3yb0vmtVOnTq6uam1QXb94H0ho1qxZyfgUc0V//fXXsHprr712uMwCAggggAACCCCQqQCBhEzFyI8AAgUroIECN9tsM1d+DWrnb5STK6Sm3hpk8E9/+pOtv/76tsYaa9gOO+xgp512mn311VfJ2Su9f+utt+zEE0+0rbfe2jToo/qfH3TQQa47hfqpp0ojRoywww47zP71r3/ZggULTANJDho0yA28p8Hxdt99dxs7dmyqXTNat//++4f51b0hXVIT+M8//9xtPuCAA9JlC9fXxMzX+YYbbjDNDnHTTTeZyqeb3E022cQ9MX/ppZfCc6ibxZlnnml9+/Z1rho08uyzz3ZeYaakBc04oSb8u+yyi6277rrWrl0723HHHe3UU08N65e0i+vOoWuhn5kzZ9rll1/uyqProIErzz//fLdN28ePH5+8e/he+/rj6LpmI3mz66+/3pYvX26jR492gyaqbBpUdNddd3UtbzRTh08yVDmiA2U+8MADYdk++eQTn9W91uRaqpuMzvGf//zH+el3Z/XVV3fuuq7z58+vcI7a/I5kUvcKJw3e6JooqKiuUPqcqYxbbLGF+6xNnz49OXv4viYm4c4sIIAAAgggUIwC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BBBAoFyAQAKfBAQQKAmBHkcsMf2QEECgssDkexvZrPeDvg0kBBBAAAEEEEAghgCDLcZAIgsCCCCAAAIIIIAAAggggAACCJQLEEjgk4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUaxM6ZRxmnvZGwWZMSNn+G2ffvJ6xdz7I8Kh1FyUeB5cvMmrQ2a925zNr3L7NVOuZjKSkTAggggAACCCCAAAIIIJD/AgUTSPj5K7Px1y6zSXcnbOHsRAXZzx+r8JY3CFQr0OEP9Wyzo8qs12E0yqkWiwwIIIAAAggggAACCCCAQESgIAIJr12y3F76a/BIOZKatk1Yi3WW2w8f1rd2vStui2RjEQEnoBYJSxeU2ZwvywMH015bbtNeM3v/5oQNHFnP1u5LqxY+KggggAACCCCAAAIIIIBAHIG8DyQ8uN8y++T+5a4uTVZN2CZHLbGueyyxVbuVr4tTSfIg4AWWLTb75oWG9tk9jWzK2AY27fXldku/5bbXmPrW40BaJ3gnXhFAAAEEEEAAAQQQQACBdAJ5HUi4f59l9tlD5QGDDQ9ZYltetMgatazYrSFdxViPQCqB+o3NOg9e6n6mjG1or57Z1BbMKLOHhy6zBo3LrPvetExI5cY6BBBAAAEEEEAAAQQQQMAL5O0j2JfOXR4GEfqdvci2vXohQQR/1XjNikCnQUttryfnW9uNyoNVjx2+zOZ8TaAqK7gcBAEEEEAAAQQQQAABBIpWIC8DCTPeS9hrl5aPe6CuDJufGrRHJyFQBwItOyy3nW5eYA2bmS2em7AXz6bLTB0wc0gEEEAAAQQQQAABBBAoIoG8DCS8fXX5zdwqnZbbVpcuLCJuqpKPAqtusNwGXFj+Ofv4v8vtuwm0SsjH60SZEEAAAQQQQAABBBBAID8E8i6QsPAnC6Z4LA8k9Dx2sZXRZT0/PilFXoqND19irTqXf+4m3UWrhCK/3FQPAQQQQAABBBBAAAEEaiGQd4GE/z33+03cBvsurUXV2BWBzAS67lH+efvqGVokZCZHbgQQQAABBBBAAAEEECglgbwLJMycWM6/+qbLrHFrbuhK6cO4suu69oDfXBFmT07Y4l9Wdmk4PwIIIIAAAggggAACCCCQnwJ5F0iYO708eLBKx99bJuQnHaUqNgGNyeHTvBWfQ/+eVwQQQAABBBBAAAEEEEAAgXKBvAskTH2pPJAw++P6XCMEciqQ+D2OYAtm5fTUnAwBBBBAAAEEEEAAAQQQKBiBvAsktN+yfHTFNXqXT/9YMJIUtOAFGjT9vQpNWv++zBICCCCAAAIIIIAAAggggMDvAnkXSPi9aCwhgAACCCCAAAIIIIAAAggggEC+CRBIyLcrQnkQQAABBBBAAAEEEEAAAQQQyGMBAgl5fHEoGgIIIIAAAggggAACCCCAAAL5JkAgId+uCOVBAAEEEEAAAQQQQAABBBBAII8FCCTk8cWhaAgggAACCCCAAAIIIIAAAgjkmwCBhHy7IpQHAQQQQAABBBBAAAEEEEAAgTwWIJCQxxeHoiGAAAIIIIAAAggggAACCCCQbwIEEvLtilAeBBBAAAEEEEAAAQQQQAABBPJYgEBCHl8cioYAAitX4IEHHrCePXvG+unVq5d9++23WS/wX/7yF3f+m2++OevHru6At956qzu3yhA39e3b1+3zySefuF2++OKL0C/uMeoqXyKRCMui63rddddVeapff/3VNt9883Cfb775psr8Nd1YE+fkc02cONGVc8CAAcmbeI8AAggggAACCGRdoEHWj8gBEUAAgSIR0I3kjBkzYtdmwYIFsfPGzfjzzz+7MtTFsasrg86p+v/000/VZQ23f//997Zo0SJbunSpW6fXTAzDA9XRQrQs//3vf+3EE09Me6ZnnnnGosGDuroGNXFOLrR3btmyZfIm3iOAAAIIIIAAAlkXIJCQdVIOiAACxSawyiqr2IMPPlhttTp16lRtnlLL0LZtWzv66KOtQYP8+9/NZ599Zp9//rltsMEGKS/Lww8/nHI9KxFAAAEEEEAAgVIXyL9vdiVyRfzTo/r169taa61l9erRy6RELj3VLEAB3QRvuummBVjylV/kdu3a2aWXXrryC5JUgkaNGtmSJUvs0UcftTPOOCNpq9ncuXPthRdeqLSeFQgggAACCCCAAAJmBBJy+ClQc9977rnH7rjjDlP/4eXLl7uzN2zY0NSv+Mgjj7TddtvNysrKclgqToUAAtkWUPP5a665xjp06GBDhw61O++8015//XVTV4ktt9zSrVPrBT0Rv/fee+2tt96yJk2a2BZbbGEnn3yyNW3aNGWRnnjiCXfj++WXX1q3bt1s2223tf333z/l34x3333XtaL4+OOPbfHixbbxxhvbkCFDbPvtt6907N9++81effVVe/bZZ23ChAnuCb3yVpWmTZtmY8eOteeee851Zejfv78dc8wxlXZR14wrrrjCND6BXpW8zzrrrGNHHHGEaYwAnfe7776zjTbayPbYYw/bcccdKx1LY1CojLrB13F79+7t9n/77bdNYwQceuihrp6VdkyxYs8997T77rsvbSDhqaeecoGGgQMHunOmOIRbpet6//33u5YNWrHhhhvaoEGDbKeddqq0S02cM7mOlU7ICgQQQAABBBBAoI4ECCTUEWzyYdXPdtiwYTZp0qRwk24c1DJBP2+88Yb70ZfWG2+80ejnGjKxgEDBCWhMAd0c60ZZ/fAVMPBJN72PPPKIXXbZZe7GW0++fdJN6fjx4+2hhx7yq8LX2267zd1o+xUfffSRCxTo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PIqOAAIIFKQA0z+Gl0037z517drVL1b56gMJesJf02GONLCjkloeqCVBp06dXGuDU0891c4++2y37dxzz7XffvvNLUf/UesGtZy4/vrr3UwShx9+uNusQSE/++yzMOvSpUtdlwqt8F0wwo0sIIAAAggggEBBCxBIKOjLR+ERQACBQhTw0z8yRoJmafCpfv36frHK16ZNm7rtDRrUbJijH374wT7//HN3DAUSFIyI/uy3335u26xZs8LWEtEC7bvvvtG3tvnmm7tpKbUy2ipB3S5mz57txk1IHnOhwgF4gwACCCCAAAIFJ0AgoeAuGQVGAAEEECgWgXXWWSesyldffRUuV7UwefJkt3nDDTe0srB1R1V7VNz2xRdfhCvUukHjIER/NIOET9G8ft16663nF8NX3ypBAzf6VhK+W4O6PtQ06BGegAUEEEAAAQQQyCuBmj3OyKsqUBgEEEAAgcIS8PM20CJB0zxqAEONPfDRRx/Fuox+bATNwpCc/E18dL26GETTTz/9FL6NBg3ClZGFaIsJrdbgiqmmplSwQF0eNNbC66+/bhtttJFpHAYlujU4Bv5BAAEEEECgqAQIJBTV5aQyCCCAQAEI1OApegHUqsZFVFeCa665xm6//XY755xzrEOHDuGx1Erhtddes4MPPtjU9eHFF1+0t956y23v06dPmM+3TEg1psGUKVPCfFro3Llz+P75559POWVjmCHmwhprrOFmhXj00Uft/vvvd9NILlmyxNTiYZNNNol5FLIhgAACCCCAQKEI0LWhUK4U5UQAAQSKTSDom08yO+aYY9z0iJrB4aSTTjLdgPt05513uif63bt3dwMcHnXUUa7rgN5rP598K4Hvv//erwpfJ02aFC5rQV0T/HgMDz/8cIVteqMpGzfYYAPbZpttYreS0H6+e8Mjjzxijz32mFbZYYcd5l75BwEEEEAAAQSKS4BAQnFdT2qDAAIIFIAAXRuiF0ljHWgqRiXdhA8YMMA0A8Ly5cttyJAh7ufLL7+0o48+2nUd0HgGt912mzVu3Njto398KwbNpjB16lS3Xt0cLrroInv77bfDfFrQfpq+UUkzMyhw4NO8efNc4EJjI+ic3bp185uqfVVZ1TLhm2++MbVMaNiwoQ0dOrTa/ciAAAIIIIAAAoUnQCCh8K4ZJUYAAQQKW4CuDZWu34gRI+y8885zgye+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AAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUIJMSmIiMCCCCAAAIIIIAAAggggAACCBBI4DOAAAIIIIAAAggggAACCCCAAAKxBQgkxKYiIwIIIIAAAggggAACCCCAAAIIEEjgM4AAAggggAACCCCAAAIIIIAAArEFCCTEpiIjAggggAACCCCAAAIIIIAAAggQSOAzgAACCCCAAAIIIIAAAggggAACsQUaxM5JRgQQQACBrAjcddddduWVV1Y6VoMGDaxFixbWpk0b22233ezggw+2xo0bV8pXKCtGjRplN954oytuo0aNbNy4cda0adO0xf/3v/9tN998s9s+ZMgQu+yyy9LmZQMCCCCAAAIIIIDAyhMgkLDy7DkzAgiUqMCCBQtsxowZVdb+9ddft5EjR5purrfbbrsq8+brxnnz5lWo5/PPP+8CJOnKe88994T5Z86cmS4b6xFAAAEEEEAAAQRWsgCBhJV8ATg9AgiUrsDqq69uY8aMCQEWL15sP//8s40fP95Gjx5tupk+7rjj7LXXXrPVVlstzFeoC4888kjaQMJHH31kX3zxRaFWjXIjgAACCCCAAAIlJUAgoaQuN5VFAIF8ElC3hU033bRSkQYNGmT777+/DR482GbPnm2nnHKKqTtEoSZ1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ZfXq1dpNJCEhQfr27VvU5lifBEiABEiABEiABIJOgIqEoCNnhyRAAiRAAtFI4JFHHpHMzEyZPXu2wBgQrhFwF6GQAAmQAAmQAAmQQLgRoCIh3O4Yx0sCJEACJBCWBJCRw8SzgJvIM888E5bz4KBJgARIgARIgARIgIoE/g6QAAmQAAnkIPDAAw/ooIpY7FICR+Dpp5/WgSvBtVevXqfMVhG4ntkSCZAACZAACZAACQSWABUJgeXJ1kiABEgg7Al07NhRsFECSwABFrFRSIAESIAESIAESCDcCTA0c7jfQY6fBEiABEiABEiABEiABEiABEiABIJIgIqEIMJmVyRAAiRAAiRAAiRAAiRAAiRAAiQQ7gSoSAj3O8jxkwAJkAAJkAAJkAAJkAAJkAAJkEAQCVCREETY7IoESIAESIAESIAESIAESIAESIAEwp0AFQnhfgc5fhIgARIgARIgARIgARIgARIgARIIIgEqEoIIm12RAAmQAAmQAAmQAAmQAAmQAAmQQLgToCIh3O8gx08CJEACJEACJEACJEACJEACJEACQSRARUIQYbMrEiABEiABEiABEiABEiABEiABEgh3AlQkhPsd5PhJgARIgARIgARIgARIgARIgARIIIgEqEgIImx2RQIkQAIkQAIkQAIkQAIkQAIkQALhToCKhHC/gxw/CZAACZAACZAACZAACZAACZAACQSRABUJQYTNrkiABEiABEiABEiABEiABEiABEgg3AlQkRDud5DjJwESIAESIAESIAESIAESIAESIIEgEqAiIYiw2RUJkAAJkAAJkAAJkAAJkAAJkAAJhDsBKhLC/Q5y/CRAAiRAAiRAAiRAAiRAAiRAAiQQRAJUJAQRNrsiARIgARIgARIgARIgARIgARIggXAnQEVCuN9Bjp8ESIAESIAESIAESIAESIAESIAEgkiAioQgwmZXJEACJEACJEACJEACJEACJEACJBDuBKhICPc7yPGTAAmQAAmQAAmQAAmQAAmQAAmQQBAJUJEQRNjsigRIgARIgARIgARIgARIgARIgATCnUBsuE+A4ycBEiCBwhJY8N/SUr6Bo7DVWY8EIobA/hX2iJkLJ0ICJEACJEACJFD8BKhIKH7G7IEESCCECNgsY9m5IFZ2LrCc4GFQCVRvsl5qNP9LUo+Xl/ULegS1b3bmm4DN+h/EdxGeJQES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)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with deep_memory" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The base htype of the 'video_seq' tensor is 'video'.\n" + ] + } + ], + "source": [ + "retriver = db.as_retriever()\n", + "retriver.search_kwargs[\"deep_memory\"] = True\n", + "retriver.search_kwargs[\"k\"] = 10\n", + "\n", + "query = \"Deamination of cytidine to uridine on the minus strand of viral DNA results in catastrophic G-to-A mutations in the viral genome.\"\n", + "qa = RetrievalQA.from_chain_type(\n", + " llm=OpenAIChat(model=\"gpt-4\"), chain_type=\"stuff\", retriever=retriver\n", + ")\n", + "print(qa.run(query))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "without deep_memory" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The text does not provide information on the base htype of the 'video_seq' tensor.\n" + ] + } + ], + "source": [ + "retriver = db.as_retriever()\n", + "retriver.search_kwargs[\"deep_memory\"] = False\n", + "retriver.search_kwargs[\"k\"] = 10\n", + "\n", + "query = \"Deamination of cytidine to uridine on the minus strand of viral DNA results in catastrophic G-to-A mutations in the viral genome.\"\n", + "qa = RetrievalQA.from_chain_type(\n", + " llm=OpenAIChat(model=\"gpt-4\"), chain_type=\"stuff\", retriever=retriver\n", + ")\n", + "qa.run(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 3.4 Cost savings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Deep Memory increases retrieval accuracy without altering your existing workflow. Additionally, by reducing the top_k input into the LLM, you can significantly cut inference costs via lower token usage." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.4" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/libs/langchain/langchain/vectorstores/deeplake.py b/libs/langchain/langchain/vectorstores/deeplake.py index 501b9bbbd5..b6223772ab 100644 --- a/libs/langchain/langchain/vectorstores/deeplake.py +++ b/libs/langchain/langchain/vectorstores/deeplake.py @@ -7,8 +7,8 @@ import numpy as np try: import deeplake + from deeplake import VectorStore as DeepLakeVectorStore from deeplake.core.fast_forwarding import version_compare - from deeplake.core.vectorstore import DeepLakeVectorStore _DEEPLAKE_INSTALLED = True except ImportError: @@ -63,6 +63,7 @@ class DeepLake(VectorStore): verbose: bool = True, exec_option: Optional[str] = None, runtime: Optional[Dict] = None, + index_params: Optional[Dict[str, Union[int, str]]] = None, **kwargs: Any, ) -> None: """Creates an empty DeepLakeVectorStore or loads an existing one. @@ -119,6 +120,23 @@ class DeepLake(VectorStore): Deep Lake's Managed Tensor Database. Not applicable when loading an existing Vector Store. To create a Vector Store in the Managed Tensor Database, set `runtime = {"tensor_db": True}`. + index_params (Optional[Dict[str, Union[int, str]]], optional): Dictionary + containing information about vector index that will be created. Defaults + to None, which will utilize ``DEFAULT_VECTORSTORE_INDEX_PARAMS`` from + ``deeplake.constants``. The specified key-values override the default + ones. + - threshold: The threshold for the dataset size above which an index + will be created for the embedding tensor. When the threshold value + is set to -1, index creation is turned off. Defaults to -1, which + turns off the index. + - distance_metric: This key specifies the method of calculating the + distance between vectors when creating the vector database (VDB) + index. It can either be a string that corresponds to a member of + the DistanceType enumeration, or the string value itself. + - If no value is provided, it defaults to "L2". + - "L2" corresponds to DistanceType.L2_NORM. + - "COS" corresponds to DistanceType.COSINE_SIMILARITY. + - additional_params: Additional parameters for fine-tuning the index. **kwargs: Other optional keyword arguments. Raises: @@ -161,6 +179,7 @@ class DeepLake(VectorStore): exec_option=exec_option, verbose=verbose, runtime=runtime, + index_params=index_params, **kwargs, ) @@ -295,12 +314,13 @@ class DeepLake(VectorStore): embedding: Optional[Union[List[float], np.ndarray]] = None, embedding_function: Optional[Callable] = None, k: int = 4, - distance_metric: str = "L2", + distance_metric: Optional[str] = None, use_maximal_marginal_relevance: bool = False, fetch_k: Optional[int] = 20, filter: Optional[Union[Dict, Callable]] = None, return_score: bool = False, exec_option: Optional[str] = None, + deep_memory: bool = False, **kwargs: Any, ) -> Any[List[Document], List[Tuple[Document, float]]]: """ @@ -312,9 +332,9 @@ class DeepLake(VectorStore): embedding_function (Callable, optional): Function to convert `query` into embedding. k (int): Number of Documents to return. - distance_metric (str): `L2` for Euclidean, `L1` for Nuclear, `max` - for L-infinity distance, `cos` for cosine similarity, 'dot' for dot - product. + distance_metric (Optional[str], optional): `L2` for Euclidean, `L1` for + Nuclear, `max` for L-infinity distance, `cos` for cosine similarity, + 'dot' for dot product. filter (Union[Dict, Callable], optional): Additional filter prior to the embedding search. - ``Dict`` - Key-value search on tensors of htype json, on an @@ -334,6 +354,13 @@ class DeepLake(VectorStore): - ``tensor_db`` - Hosted Managed Tensor Database for storage and query execution. Only for data in Deep Lake Managed Database. Use runtime = {"db_engine": True} during dataset creation. + deep_memory (bool): Whether to use the Deep Memory model for improving + search results. Defaults to False if deep_memory is not specified in + the Vector Store initialization. If True, the distance metric is set + to "deepmemory_distance", which represents the metric with which the + model was trained. The search is performed using the Deep Memory model. + If False, the distance metric is set to "COS" or whatever distance + metric user specifies. **kwargs: Additional keyword arguments. Returns: @@ -386,7 +413,8 @@ class DeepLake(VectorStore): distance_metric=distance_metric, filter=filter, exec_option=exec_option, - return_tensors=["embedding", "metadata", "text"], + return_tensors=["embedding", "metadata", "text", "id"], + deep_memory=deep_memory, ) scores = result["score"] @@ -467,6 +495,13 @@ class DeepLake(VectorStore): - 'tensor_db': Managed Tensor Database for storage and query. Only for data in Deep Lake Managed Database. Use `runtime = {"db_engine": True}` during dataset creation. + deep_memory (bool): Whether to use the Deep Memory model for improving + search results. Defaults to False if deep_memory is not specified + in the Vector Store initialization. If True, the distance metric + is set to "deepmemory_distance", which represents the metric with + which the model was trained. The search is performed using the Deep + Memory model. If False, the distance metric is set to "COS" or + whatever distance metric user specifies. Returns: List[Document]: List of Documents most similar to the query vector. @@ -530,6 +565,13 @@ class DeepLake(VectorStore): distance_metric (str): `L2` for Euclidean, `L1` for Nuclear, `max` for L-infinity distance, `cos` for cosine similarity, 'dot' for dot product. Defaults to `L2`. + deep_memory (bool): Whether to use the Deep Memory model for improving + search results. Defaults to False if deep_memory is not specified + in the Vector Store initialization. If True, the distance metric + is set to "deepmemory_distance", which represents the metric with + which the model was trained. The search is performed using the Deep + Memory model. If False, the distance metric is set to "COS" or + whatever distance metric user specifies. Returns: List[Document]: List of Documents most similar to the query vector. @@ -586,6 +628,13 @@ class DeepLake(VectorStore): data stored in the Deep Lake Managed Database. To store datasets in this database, specify `runtime = {"db_engine": True}` during dataset creation. + deep_memory (bool): Whether to use the Deep Memory model for improving + search results. Defaults to False if deep_memory is not specified + in the Vector Store initialization. If True, the distance metric + is set to "deepmemory_distance", which represents the metric with + which the model was trained. The search is performed using the Deep + Memory model. If False, the distance metric is set to "COS" or + whatever distance metric user specifies. Returns: List[Tuple[Document, float]]: List of documents most similar to the query @@ -641,6 +690,13 @@ class DeepLake(VectorStore): data stored in the Deep Lake Managed Database. To store datasets in this database, specify `runtime = {"db_engine": True}` during dataset creation. + deep_memory (bool): Whether to use the Deep Memory model for improving + search results. Defaults to False if deep_memory is not specified + in the Vector Store initialization. If True, the distance metric + is set to "deepmemory_distance", which represents the metric with + which the model was trained. The search is performed using the Deep + Memory model. If False, the distance metric is set to "COS" or + whatever distance metric user specifies. **kwargs: Additional keyword arguments. Returns: @@ -701,6 +757,13 @@ class DeepLake(VectorStore): for data stored in the Deep Lake Managed Database. To store datasets in this database, specify `runtime = {"db_engine": True}` during dataset creation. + deep_memory (bool): Whether to use the Deep Memory model for improving + search results. Defaults to False if deep_memory is not specified + in the Vector Store initialization. If True, the distance metric + is set to "deepmemory_distance", which represents the metric with + which the model was trained. The search is performed using the Deep + Memory model. If False, the distance metric is set to "COS" or + whatever distance metric user specifies. **kwargs: Additional keyword arguments Returns: diff --git a/libs/langchain/poetry.lock b/libs/langchain/poetry.lock index df5417ef46..246db4ce6c 100644 --- a/libs/langchain/poetry.lock +++ b/libs/langchain/poetry.lock @@ -13,17 +13,17 @@ files = [ [[package]] name = "aioboto3" -version = "11.3.1" +version = "12.0.0" description = "Async boto3 wrapper" optional = true -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "aioboto3-11.3.1-py3-none-any.whl", hash = "sha256:7ece9919d4aceabc4ea05f7c210008baf96c763e36cb3b4334742ff226a3a83e"}, - {file = "aioboto3-11.3.1.tar.gz", hash = "sha256:1b3dd626c98599ee34ff29581c2da119bc408e562be7a61c627ae53fa106eb68"}, + {file = "aioboto3-12.0.0-py3-none-any.whl", hash = "sha256:23895e734f83e34827a38d3a08ccc3f4178cc8d4e3a7b7031a0cbf8efc875555"}, + {file = "aioboto3-12.0.0.tar.gz", hash = "sha256:c2bbb990b4efd2e474a1e8a42a80291faf6434b2dc8678f163208d338b2dba39"}, ] [package.dependencies] -aiobotocore = {version = "2.6.0", extras = ["boto3"]} +aiobotocore = {version = "2.7.0", extras = ["boto3"]} [package.extras] chalice = ["chalice (>=1.24.0)"] @@ -31,25 +31,25 @@ s3cse = ["cryptography (>=2.3.1)"] [[package]] name = "aiobotocore" -version = "2.6.0" +version = "2.7.0" description = "Async client for aws services using botocore and aiohttp" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "aiobotocore-2.6.0-py3-none-any.whl", hash = "sha256:0186e6a843364748cdbbf76ee98e9337c44f71a4e694ad1b110d5c516fbce909"}, - {file = "aiobotocore-2.6.0.tar.gz", hash = "sha256:4805d0140bdfa17bfc2d0ba1243c8cc4273e927201fca5cf2e497c0004a9fab7"}, + {file = "aiobotocore-2.7.0-py3-none-any.whl", hash = "sha256:aec605df77ce4635a0479b50fd849aa6b640900f7b295021ecca192e1140e551"}, + {file = "aiobotocore-2.7.0.tar.gz", hash = "sha256:506591374cc0aee1bdf0ebe290560424a24af176dfe2ea7057fe1df97c4f0467"}, ] [package.dependencies] aiohttp = ">=3.7.4.post0,<4.0.0" aioitertools = ">=0.5.1,<1.0.0" -boto3 = {version = ">=1.28.17,<1.28.18", optional = true, markers = "extra == \"boto3\""} -botocore = ">=1.31.17,<1.31.18" +boto3 = {version = ">=1.28.16,<1.28.65", optional = true, markers = "extra == \"boto3\""} +botocore = ">=1.31.16,<1.31.65" wrapt = ">=1.10.10,<2.0.0" [package.extras] -awscli = ["awscli (>=1.29.17,<1.29.18)"] -boto3 = ["boto3 (>=1.28.17,<1.28.18)"] +awscli = ["awscli (>=1.29.16,<1.29.65)"] +boto3 = ["boto3 (>=1.28.16,<1.28.65)"] [[package]] name = "aiodns" @@ -302,13 +302,13 @@ files = [ [[package]] name = "amazon-textract-caller" -version = "0.1.0" +version = "0.2.1" description = "Amazon Textract Caller tools" optional = true python-versions = ">=3.6" files = [ - {file = "amazon-textract-caller-0.1.0.tar.gz", hash = "sha256:70e0d8d2b9e923d26544c86eb06fda07cfd9ae044b2d32bb43816d57c067ec75"}, - {file = "amazon_textract_caller-0.1.0-py2.py3-none-any.whl", hash = "sha256:b567297b3de7663c67958fc17ef6adf18ba283018595358b795c3d919030eca8"}, + {file = "amazon-textract-caller-0.2.1.tar.gz", hash = "sha256:7a531ba4841fb64718b9430c05796958b426f41a4d674d4996f9e56cd3849f4e"}, + {file = "amazon_textract_caller-0.2.1-py2.py3-none-any.whl", hash = "sha256:ccdeb364e02ce7c2034b69c09209954e995a0ee19f5d3dea79f25171a9565c37"}, ] [package.dependencies] @@ -497,20 +497,21 @@ extras = ["pyaudio (>=0.2.13)"] [[package]] name = "asttokens" -version = "2.4.0" +version = "2.4.1" description = "Annotate AST trees with source code positions" optional = false python-versions = "*" files = [ - {file = "asttokens-2.4.0-py2.py3-none-any.whl", hash = "sha256:cf8fc9e61a86461aa9fb161a14a0841a03c405fa829ac6b202670b3495d2ce69"}, - {file = "asttokens-2.4.0.tar.gz", hash = "sha256:2e0171b991b2c959acc6c49318049236844a5da1d65ba2672c4880c1c894834e"}, + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, ] [package.dependencies] six = ">=1.12.0" [package.extras] -test = ["astroid", "pytest"] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] [[package]] name = "astunparse" @@ -607,13 +608,13 @@ test = ["flake8 (>=5.0,<6.0)", "uvloop (>=0.15.3)"] [[package]] name = "atlassian-python-api" -version = "3.41.2" +version = "3.41.3" description = "Python Atlassian REST API Wrapper" optional = true python-versions = "*" files = [ - {file = "atlassian-python-api-3.41.2.tar.gz", hash = "sha256:a2022977da5a395412ace8e29c2c541312f07d45fc750435dec036af53daceda"}, - {file = "atlassian_python_api-3.41.2-py3-none-any.whl", hash = "sha256:27c2361a22ee8cc69988f67a591488cbfce09e5f284da000011af11944d2bc96"}, + {file = "atlassian-python-api-3.41.3.tar.gz", hash = "sha256:a29aae8f456babe125e3371a0355018e9c1d37190333efc312bd81163bd96ffd"}, + {file = "atlassian_python_api-3.41.3-py3-none-any.whl", hash = "sha256:7661d3ce3c80e887a7e5ec1c61c1e37d3eaacb4857e377b38ef4084d0f067757"}, ] [package.dependencies] @@ -765,13 +766,13 @@ files = [ [[package]] name = "azure-core" -version = "1.29.4" +version = "1.29.5" description = "Microsoft Azure Core Library for Python" optional = true python-versions = ">=3.7" files = [ - {file = "azure-core-1.29.4.tar.gz", hash = "sha256:500b3aa9bf2e90c5ccc88bb105d056114ca0ce7d0ce73afb8bc4d714b2fc7568"}, - {file = "azure_core-1.29.4-py3-none-any.whl", hash = "sha256:b03261bcba22c0b9290faf9999cedd23e849ed2577feee90515694cea6bc74bf"}, + {file = "azure-core-1.29.5.tar.gz", hash = "sha256:52983c89d394c6f881a121e5101c5fa67278ca3b1f339c8fb2ef39230c70e9ac"}, + {file = "azure_core-1.29.5-py3-none-any.whl", hash = "sha256:0fa04b7b1f7d44a4fb8468c4093deb2ea01fdf4faddbf802ed9205615f99d68c"}, ] [package.dependencies] @@ -798,19 +799,19 @@ azure-core = ">=1.23.0,<2.0.0" [[package]] name = "azure-identity" -version = "1.14.1" +version = "1.15.0" description = "Microsoft Azure Identity Library for Python" optional = true python-versions = ">=3.7" files = [ - {file = "azure-identity-1.14.1.zip", hash = "sha256:48e2a9dbdc59b4f095f841d867d9a8cbe4c1cdbbad8251e055561afd47b4a9b8"}, - {file = "azure_identity-1.14.1-py3-none-any.whl", hash = "sha256:3a5bef8e9c3281e864e869739be8d67424bff616cddae96b546ca2a5168d863d"}, + {file = "azure-identity-1.15.0.tar.gz", hash = "sha256:4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8"}, + {file = "azure_identity-1.15.0-py3-none-any.whl", hash = "sha256:a14b1f01c7036f11f148f22cd8c16e05035293d714458d6b44ddf534d93eb912"}, ] [package.dependencies] -azure-core = ">=1.11.0,<2.0.0" +azure-core = ">=1.23.0,<2.0.0" cryptography = ">=2.5" -msal = ">=1.20.0,<2.0.0" +msal = ">=1.24.0,<2.0.0" msal-extensions = ">=0.3.0,<2.0.0" [[package]] @@ -831,17 +832,18 @@ isodate = ">=0.6.0" [[package]] name = "babel" -version = "2.13.0" +version = "2.13.1" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.0-py3-none-any.whl", hash = "sha256:fbfcae1575ff78e26c7449136f1abbefc3c13ce542eeb13d43d50d8b047216ec"}, - {file = "Babel-2.13.0.tar.gz", hash = "sha256:04c3e2d28d2b7681644508f836be388ae49e0cfe91465095340395b60d00f210"}, + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, ] [package.dependencies] pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} +setuptools = {version = "*", markers = "python_version >= \"3.12\""} [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] @@ -929,29 +931,29 @@ pyparsing = ">=2.0.3" [[package]] name = "black" -version = "23.10.0" +version = "23.10.1" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.10.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98"}, - {file = "black-23.10.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd"}, - {file = "black-23.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604"}, - {file = "black-23.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8"}, - {file = "black-23.10.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e"}, - {file = "black-23.10.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699"}, - {file = "black-23.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171"}, - {file = "black-23.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c"}, - {file = "black-23.10.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23"}, - {file = "black-23.10.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b"}, - {file = "black-23.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c"}, - {file = "black-23.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9"}, - {file = "black-23.10.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204"}, - {file = "black-23.10.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a"}, - {file = "black-23.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a"}, - {file = "black-23.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747"}, - {file = "black-23.10.0-py3-none-any.whl", hash = "sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e"}, - {file = "black-23.10.0.tar.gz", hash = "sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd"}, + {file = "black-23.10.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:ec3f8e6234c4e46ff9e16d9ae96f4ef69fa328bb4ad08198c8cee45bb1f08c69"}, + {file = "black-23.10.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:1b917a2aa020ca600483a7b340c165970b26e9029067f019e3755b56e8dd5916"}, + {file = "black-23.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c74de4c77b849e6359c6f01987e94873c707098322b91490d24296f66d067dc"}, + {file = "black-23.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:7b4d10b0f016616a0d93d24a448100adf1699712fb7a4efd0e2c32bbb219b173"}, + {file = "black-23.10.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b15b75fc53a2fbcac8a87d3e20f69874d161beef13954747e053bca7a1ce53a0"}, + {file = "black-23.10.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:e293e4c2f4a992b980032bbd62df07c1bcff82d6964d6c9496f2cd726e246ace"}, + {file = "black-23.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d56124b7a61d092cb52cce34182a5280e160e6aff3137172a68c2c2c4b76bcb"}, + {file = "black-23.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:3f157a8945a7b2d424da3335f7ace89c14a3b0625e6593d21139c2d8214d55ce"}, + {file = "black-23.10.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:cfcce6f0a384d0da692119f2d72d79ed07c7159879d0bb1bb32d2e443382bf3a"}, + {file = "black-23.10.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:33d40f5b06be80c1bbce17b173cda17994fbad096ce60eb22054da021bf933d1"}, + {file = "black-23.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:840015166dbdfbc47992871325799fd2dc0dcf9395e401ada6d88fe11498abad"}, + {file = "black-23.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:037e9b4664cafda5f025a1728c50a9e9aedb99a759c89f760bd83730e76ba884"}, + {file = "black-23.10.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:7cb5936e686e782fddb1c73f8aa6f459e1ad38a6a7b0e54b403f1f05a1507ee9"}, + {file = "black-23.10.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:7670242e90dc129c539e9ca17665e39a146a761e681805c54fbd86015c7c84f7"}, + {file = "black-23.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ed45ac9a613fb52dad3b61c8dea2ec9510bf3108d4db88422bacc7d1ba1243d"}, + {file = "black-23.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:6d23d7822140e3fef190734216cefb262521789367fbdc0b3f22af6744058982"}, + {file = "black-23.10.1-py3-none-any.whl", hash = "sha256:d431e6739f727bb2e0495df64a6c7a5310758e87505f5f8cde9ff6c0f2d7e4fe"}, + {file = "black-23.10.1.tar.gz", hash = "sha256:1f8ce316753428ff68749c65a5f7844631aa18c8679dfd3ca9dc1a289979c258"}, ] [package.dependencies] @@ -1000,38 +1002,41 @@ files = [ [[package]] name = "boto3" -version = "1.28.17" +version = "1.28.64" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.17-py3-none-any.whl", hash = "sha256:bca0526f819e0f19c0f1e6eba3e2d1d6b6a92a45129f98c0d716e5aab6d9444b"}, - {file = "boto3-1.28.17.tar.gz", hash = "sha256:90f7cfb5e1821af95b1fc084bc50e6c47fa3edc99f32de1a2591faa0c546bea7"}, + {file = "boto3-1.28.64-py3-none-any.whl", hash = "sha256:a99150a30c038c73e89662836820a8cce914afab5ea377942a37c484b85f4438"}, + {file = "boto3-1.28.64.tar.gz", hash = "sha256:a5cf93b202568e9d378afdc84be55a6dedf11d30156289fe829e23e6d7dccabb"}, ] [package.dependencies] -botocore = ">=1.31.17,<1.32.0" +botocore = ">=1.31.64,<1.32.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.6.0,<0.7.0" +s3transfer = ">=0.7.0,<0.8.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.17" +version = "1.31.64" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.17-py3-none-any.whl", hash = "sha256:6ac34a1d34aa3750e78b77b8596617e2bab938964694d651939dba2cbde2c12b"}, - {file = "botocore-1.31.17.tar.gz", hash = "sha256:396459065dba4339eb4da4ec8b4e6599728eb89b7caaceea199e26f7d824a41c"}, + {file = "botocore-1.31.64-py3-none-any.whl", hash = "sha256:7b709310343a5b430ec9025b2e17c0bac6b16c05f1ac1d9521dece3f10c71bac"}, + {file = "botocore-1.31.64.tar.gz", hash = "sha256:d8eb4b724ac437343359b318d73de0cfae0fecb24095827e56135b0ad6b44caf"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" -urllib3 = ">=1.25.4,<1.27" +urllib3 = [ + {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, +] [package.extras] crt = ["awscrt (==0.16.26)"] @@ -1193,13 +1198,13 @@ virtualenv = ["virtualenv (>=20.0.35)"] [[package]] name = "cachetools" -version = "5.3.1" +version = "5.3.2" description = "Extensible memoizing collections and decorators" optional = true python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, - {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, + {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, + {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, ] [[package]] @@ -1357,101 +1362,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.0" +version = "3.3.1" 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.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, - {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, + {file = "charset-normalizer-3.3.1.tar.gz", hash = "sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-win32.whl", hash = "sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-win32.whl", hash = "sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-win32.whl", hash = "sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-win32.whl", hash = "sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-win32.whl", hash = "sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-win32.whl", hash = "sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727"}, + {file = "charset_normalizer-3.3.1-py3-none-any.whl", hash = "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708"}, ] [[package]] @@ -1641,13 +1646,13 @@ types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency [[package]] name = "cohere" -version = "4.30" +version = "4.32" description = "" optional = true python-versions = ">=3.7,<4.0" files = [ - {file = "cohere-4.30-py3-none-any.whl", hash = "sha256:98f3c49c8ad5f9b3386085160007d6c16b7fc3c9f78c9611376e55e150929f65"}, - {file = "cohere-4.30.tar.gz", hash = "sha256:9c9ccd68789830e9f5b10c04f1af2a2e01fac98ccfef043f4b2d76095b0ea6f5"}, + {file = "cohere-4.32-py3-none-any.whl", hash = "sha256:b5ab3509a34c20d51b246e38eb64adc839c8bc131c41ed92ec3613998df9a8e0"}, + {file = "cohere-4.32.tar.gz", hash = "sha256:3807747be984f211dce911c1335bd713af2ac2b70f729678381e6ff6e450e681"}, ] [package.dependencies] @@ -1774,34 +1779,34 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.4" +version = "41.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839"}, - {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143"}, - {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397"}, - {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860"}, - {file = "cryptography-41.0.4-cp37-abi3-win32.whl", hash = "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd"}, - {file = "cryptography-41.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311"}, - {file = "cryptography-41.0.4.tar.gz", hash = "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a"}, + {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797"}, + {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20"}, + {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548"}, + {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d"}, + {file = "cryptography-41.0.5-cp37-abi3-win32.whl", hash = "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936"}, + {file = "cryptography-41.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84"}, + {file = "cryptography-41.0.5.tar.gz", hash = "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7"}, ] [package.dependencies] @@ -1830,16 +1835,17 @@ files = [ [[package]] name = "dashvector" -version = "1.0.4" +version = "1.0.5" description = "DashVector Client Python Sdk Library" optional = true -python-versions = ">=3.7.0" +python-versions = ">=3.7,<4.0" files = [ - {file = "dashvector-1.0.4-py3-none-any.whl", hash = "sha256:70c797952717bab5f089ee2eda1dc079f663a4487bcdb1f0cb3d0b70ee123ab9"}, + {file = "dashvector-1.0.5-py3-none-any.whl", hash = "sha256:a79e5bdb0d6447706cbf3645d9f1d07fa8e280d74842491aaa54e74258def2d6"}, + {file = "dashvector-1.0.5.tar.gz", hash = "sha256:2ee9a8c26699b9d978e7d84ff1cd92fa7ea5411c557ef5fb2a3fea02bd9999c4"}, ] [package.dependencies] -aiohttp = ">=3.1.0" +aiohttp = ">=3.1.0,<4.0.0" grpcio = [ {version = ">=1.49.1", markers = "python_version >= \"3.11\""}, {version = ">=1.22.0", markers = "python_version < \"3.11\""}, @@ -1902,12 +1908,12 @@ files = [ [[package]] name = "deeplake" -version = "3.7.1" +version = "3.8.3" description = "Activeloop Deep Lake" optional = true python-versions = "*" files = [ - {file = "deeplake-3.7.1.tar.gz", hash = "sha256:11ef339ac58d307f42ecb5549d77af11673a7251b4034a692ab206d977006c7a"}, + {file = "deeplake-3.8.3.tar.gz", hash = "sha256:db6ea8b50549bab35579c2a6d70888356162d9aa89c18b55c16a9f5aeaf4a5fe"}, ] [package.dependencies] @@ -1915,8 +1921,9 @@ aioboto3 = {version = ">=10.4.0", markers = "python_version >= \"3.7\" and sys_p boto3 = "*" click = "*" humbug = ">=0.3.1" +libdeeplake = "0.0.84" +lz4 = "*" nest_asyncio = {version = "*", markers = "python_version >= \"3.7\" and sys_platform != \"win32\""} -numcodecs = "*" numpy = "*" pathos = "*" pillow = "*" @@ -1924,12 +1931,12 @@ pyjwt = "*" tqdm = "*" [package.extras] -all = ["IPython", "av (>=8.1.0)", "azure-cli", "azure-identity", "azure-storage-blob", "flask", "google-api-python-client (>=2.31.0,<2.32.0)", "google-auth (>=2.0.1,<2.1.0)", "google-auth-oauthlib (>=0.4.5,<0.5.0)", "google-cloud-storage (>=1.42.0,<1.43.0)", "laspy", "libdeeplake (==0.0.78)", "nibabel", "oauth2client (>=4.1.3,<4.2.0)", "pydicom"] +all = ["IPython", "av (>=8.1.0)", "azure-cli", "azure-identity", "azure-storage-blob", "flask", "google-api-python-client (>=2.31.0,<2.32.0)", "google-auth (>=2.0.1,<2.1.0)", "google-auth-oauthlib (>=0.4.5,<0.5.0)", "google-cloud-storage (>=1.42.0,<1.43.0)", "laspy", "libdeeplake (==0.0.84)", "nibabel", "oauth2client (>=4.1.3,<4.2.0)", "pydicom"] audio = ["av (>=8.1.0)"] av = ["av (>=8.1.0)"] azure = ["azure-cli", "azure-identity", "azure-storage-blob"] dicom = ["nibabel", "pydicom"] -enterprise = ["libdeeplake (==0.0.78)", "pyjwt"] +enterprise = ["libdeeplake (==0.0.84)", "pyjwt"] gcp = ["google-auth (>=2.0.1,<2.1.0)", "google-auth-oauthlib (>=0.4.5,<0.5.0)", "google-cloud-storage (>=1.42.0,<1.43.0)"] gdrive = ["google-api-python-client (>=2.31.0,<2.32.0)", "google-auth (>=2.0.1,<2.1.0)", "google-auth-oauthlib (>=0.4.5,<0.5.0)", "oauth2client (>=4.1.3,<4.2.0)"] medical = ["nibabel", "pydicom"] @@ -2379,19 +2386,19 @@ sgmllib3k = "*" [[package]] name = "filelock" -version = "3.12.4" +version = "3.13.0" description = "A platform independent file lock." optional = true python-versions = ">=3.8" files = [ - {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"}, - {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"}, + {file = "filelock-3.13.0-py3-none-any.whl", hash = "sha256:a552f4fde758f4eab33191e9548f671970f8b06d436d31388c9aa1e5861a710f"}, + {file = "filelock-3.13.0.tar.gz", hash = "sha256:63c6052c82a1a24c873a549fbd39a26982e8f35a3016da231ead11a5be9dad44"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] -typing = ["typing-extensions (>=4.7.1)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] [[package]] name = "fiona" @@ -2550,13 +2557,13 @@ files = [ [[package]] name = "fsspec" -version = "2023.9.2" +version = "2023.10.0" description = "File-system specification" optional = true python-versions = ">=3.8" files = [ - {file = "fsspec-2023.9.2-py3-none-any.whl", hash = "sha256:603dbc52c75b84da501b9b2ec8c11e1f61c25984c4a0dda1f129ef391fbfc9b4"}, - {file = "fsspec-2023.9.2.tar.gz", hash = "sha256:80bfb8c70cc27b2178cc62a935ecf242fc6e8c3fb801f9c571fc01b1e715ba7d"}, + {file = "fsspec-2023.10.0-py3-none-any.whl", hash = "sha256:346a8f024efeb749d2a5fca7ba8854474b1ff9af7c3faaf636a4548781136529"}, + {file = "fsspec-2023.10.0.tar.gz", hash = "sha256:330c66757591df346ad3091a53bd907e15348c2ba17d63fd54f5c39c4457d2a5"}, ] [package.extras] @@ -2650,13 +2657,13 @@ shapely = ">=1.7.1" [[package]] name = "gitdb" -version = "4.0.10" +version = "4.0.11" description = "Git Object Database" optional = true python-versions = ">=3.7" files = [ - {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, - {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, ] [package.dependencies] @@ -2664,13 +2671,13 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.38" +version = "3.1.40" description = "GitPython is a Python library used to interact with Git repositories" optional = true python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.38-py3-none-any.whl", hash = "sha256:9e98b672ffcb081c2c8d5aa630d4251544fb040fb158863054242f24a2a2ba30"}, - {file = "GitPython-3.1.38.tar.gz", hash = "sha256:4d683e8957c8998b58ddb937e3e6cd167215a180e1ffd4da769ab81c620a89fe"}, + {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, + {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, ] [package.dependencies] @@ -2944,7 +2951,7 @@ files = [ {file = "greenlet-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0b72b802496cccbd9b31acea72b6f87e7771ccfd7f7927437d592e5c92ed703c"}, {file = "greenlet-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:527cd90ba3d8d7ae7dceb06fda619895768a46a1b4e423bdb24c1969823b8362"}, {file = "greenlet-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:37f60b3a42d8b5499be910d1267b24355c495064f271cfe74bf28b17b099133c"}, - {file = "greenlet-3.0.0-cp311-universal2-macosx_10_9_universal2.whl", hash = "sha256:c3692ecf3fe754c8c0f2c95ff19626584459eab110eaab66413b1e7425cd84e9"}, + {file = "greenlet-3.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1482fba7fbed96ea7842b5a7fc11d61727e8be75a077e603e8ab49d24e234383"}, {file = "greenlet-3.0.0-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:be557119bf467d37a8099d91fbf11b2de5eb1fd5fc5b91598407574848dc910f"}, {file = "greenlet-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73b2f1922a39d5d59cc0e597987300df3396b148a9bd10b76a058a2f2772fc04"}, {file = "greenlet-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1e22c22f7826096ad503e9bb681b05b8c1f5a8138469b255eb91f26a76634f2"}, @@ -2954,7 +2961,6 @@ files = [ {file = "greenlet-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:952256c2bc5b4ee8df8dfc54fc4de330970bf5d79253c863fb5e6761f00dda35"}, {file = "greenlet-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:269d06fa0f9624455ce08ae0179430eea61085e3cf6457f05982b37fd2cefe17"}, {file = "greenlet-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9adbd8ecf097e34ada8efde9b6fec4dd2a903b1e98037adf72d12993a1c80b51"}, - {file = "greenlet-3.0.0-cp312-universal2-macosx_10_9_universal2.whl", hash = "sha256:553d6fb2324e7f4f0899e5ad2c427a4579ed4873f42124beba763f16032959af"}, {file = "greenlet-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6b5ce7f40f0e2f8b88c28e6691ca6806814157ff05e794cdd161be928550f4c"}, {file = "greenlet-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf94aa539e97a8411b5ea52fc6ccd8371be9550c4041011a091eb8b3ca1d810"}, {file = "greenlet-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80dcd3c938cbcac986c5c92779db8e8ce51a89a849c135172c88ecbdc8c056b7"}, @@ -3434,13 +3440,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.25.2" +version = "6.26.0" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.25.2-py3-none-any.whl", hash = "sha256:2e2ee359baba19f10251b99415bb39de1e97d04e1fab385646f24f0596510b77"}, - {file = "ipykernel-6.25.2.tar.gz", hash = "sha256:f468ddd1f17acb48c8ce67fcfa49ba6d46d4f9ac0438c1f441be7c3d1372230b"}, + {file = "ipykernel-6.26.0-py3-none-any.whl", hash = "sha256:3ba3dc97424b87b31bb46586b5167b3161b32d7820b9201a9e698c71e271602c"}, + {file = "ipykernel-6.26.0.tar.gz", hash = "sha256:553856658eb8430bbe9653ea041a41bff63e9606fc4628873fc92a6cf3abd404"}, ] [package.dependencies] @@ -3862,13 +3868,13 @@ qtconsole = "*" [[package]] name = "jupyter-client" -version = "8.4.0" +version = "8.5.0" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.4.0-py3-none-any.whl", hash = "sha256:6a2a950ec23a8f62f9e4c66acec7f0ea6c7d1f80ba0992e747b10c56ce2e6dbe"}, - {file = "jupyter_client-8.4.0.tar.gz", hash = "sha256:dc1b857d5d7d76ac101766c6e9b646bf18742721126e72e5d484c75a993cada2"}, + {file = "jupyter_client-8.5.0-py3-none-any.whl", hash = "sha256:c3877aac7257ec68d79b5c622ce986bd2a992ca42f6ddc9b4dd1da50e89f7028"}, + {file = "jupyter_client-8.5.0.tar.gz", hash = "sha256:e8754066510ce456358df363f97eae64b50860f30dc1fe8c6771440db3be9a63"}, ] [package.dependencies] @@ -3969,13 +3975,13 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.8.0" +version = "2.9.1" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.8.0-py3-none-any.whl", hash = "sha256:c57270faa6530393ae69783a2d2f1874c718b9f109080581ea076b05713249fa"}, - {file = "jupyter_server-2.8.0.tar.gz", hash = "sha256:b11e2ba80667c75f55630faf8ac3d5809f8734f9006d65cce117c46a0a516ab8"}, + {file = "jupyter_server-2.9.1-py3-none-any.whl", hash = "sha256:21ad1a3d455d5a79ce4bef5201925cd17510c17898cf9d54e3ccfb6b12734948"}, + {file = "jupyter_server-2.9.1.tar.gz", hash = "sha256:9ba71be4b9c16e479e4c50c929f8ac4b1015baf90237a08681397a98c76c7e5e"}, ] [package.dependencies] @@ -4141,32 +4147,33 @@ tests = ["pandas (>=1.4)", "pytest", "pytest-asyncio", "pytest-mock"] [[package]] name = "langkit" -version = "0.0.20" +version = "0.0.22" description = "A collection of text metric udfs for whylogs profiling and monitoring in WhyLabs" optional = true -python-versions = ">=3.8,<4.0" +python-versions = ">=3.8,<4" files = [ - {file = "langkit-0.0.20-py3-none-any.whl", hash = "sha256:72deb73566cefc70bdfcac0972a24cc2a339c11331a8410a43974bd2ba7b1e7d"}, - {file = "langkit-0.0.20.tar.gz", hash = "sha256:71054f7eb1fba95e00f292564e9115febab94c026883b2b9cc8c0745c9cdd403"}, + {file = "langkit-0.0.22-py3-none-any.whl", hash = "sha256:9f0f0a5311648f08adbb250dcd49ad761b1e3ee0834d860b8660f931f8b7d771"}, + {file = "langkit-0.0.22.tar.gz", hash = "sha256:7a94a8c24e1838da913f999a0ad699971cdf7c31c179e6a8e6ba69b0f6e8570f"}, ] [package.dependencies] pandas = "*" textstat = ">=0.7.3,<0.8.0" -whylogs = "1.2.6" +whylogs = ">=1.3.9,<2.0.0" +xformers = {version = "*", markers = "python_full_version >= \"3.8.0\" and python_version < \"4\" and sys_platform == \"!macos\""} [package.extras] -all = ["datasets (>=2.12.0,<3.0.0)", "evaluate (>=0.4.0,<0.5.0)", "faiss-cpu (>=1.7.1,<2.0.0)", "nltk (>=3.8.1,<4.0.0)", "openai (>=0.27.6,<0.28.0)", "sentence-transformers (>=2.2.2,<3.0.0)", "torch"] +all = ["datasets (>=2.12.0,<3.0.0)", "evaluate (>=0.4.0,<0.5.0)", "faiss-cpu (>=1.7.1,<2.0.0)", "ipywidgets (>=8.1.1,<9.0.0)", "nltk (>=3.8.1,<4.0.0)", "numpy", "openai (>=0.27.6,<0.28.0)", "sentence-transformers (>=2.2.2,<3.0.0)", "torch"] [[package]] name = "langsmith" -version = "0.0.52" +version = "0.0.53" 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.52-py3-none-any.whl", hash = "sha256:d02a0ade5a53b36143084e57003ed38ccbdf5fc15a5a0eb14f8989ceaee0b807"}, - {file = "langsmith-0.0.52.tar.gz", hash = "sha256:1dc29082d257deea1859cb22c53d9481ca5c4a37f3af40c0f9d300fb8adc91db"}, + {file = "langsmith-0.0.53-py3-none-any.whl", hash = "sha256:a090b1c7d7968fb8d2476ddd608a5171f0e812a82b1bca29ca136cdea375a74e"}, + {file = "langsmith-0.0.53.tar.gz", hash = "sha256:a426a1d39843207a5dd3d72787b5304376541eb818509ee7909bbb696b072488"}, ] [package.dependencies] @@ -4175,13 +4182,13 @@ requests = ">=2,<3" [[package]] name = "lark" -version = "1.1.7" +version = "1.1.8" description = "a modern parsing library" optional = false python-versions = ">=3.6" files = [ - {file = "lark-1.1.7-py3-none-any.whl", hash = "sha256:9e5dc5bbf93fa1840083707285262514a0ef8a6613874af7ea1cec60468d6e92"}, - {file = "lark-1.1.7.tar.gz", hash = "sha256:be7437bf1f37ab08b355f29ff2571d77d777113d0a8c4352b0c513dced6c5a1e"}, + {file = "lark-1.1.8-py3-none-any.whl", hash = "sha256:7d2c221a66a8165f3f81aacb958d26033d40d972fdb70213ab0a2e0627e29c86"}, + {file = "lark-1.1.8.tar.gz", hash = "sha256:7ef424db57f59c1ffd6f0d4c2b705119927f566b68c0fe1942dddcc0e44391a5"}, ] [package.extras] @@ -4227,34 +4234,33 @@ files = [ [[package]] name = "libdeeplake" -version = "0.0.60" +version = "0.0.84" description = "C++ backend for Deep Lake" optional = true python-versions = "*" files = [ - {file = "libdeeplake-0.0.60-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:077c663370834831343b512cb4d2b166634f1aaea31e31f86721e257ce0ed1dd"}, - {file = "libdeeplake-0.0.60-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6b152970a9719f10fb4656409a19cab1b3721a4c2ff9d36b8acb883992dbe7c"}, - {file = "libdeeplake-0.0.60-cp310-cp310-manylinux2010_x86_64.whl", hash = "sha256:e54901b4ffd6b606ad5829354788626972b7a7aa7a9dea055bb987cd06544ea3"}, - {file = "libdeeplake-0.0.60-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:010f172e87027fb81b8eaaec35bda898783fe618632f44dd716166aa6d3bf3f6"}, - {file = "libdeeplake-0.0.60-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d18b4b77939af29d927afa5e9d4652603821b5a48c7959ad648caf5b2509efd"}, - {file = "libdeeplake-0.0.60-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1c424719292da9abf4f531b21181b8dcb6a77c10db6d8d559da708b6053745c9"}, - {file = "libdeeplake-0.0.60-cp311-cp311-manylinux2010_x86_64.whl", hash = "sha256:27ebe8638429dcdfb650f942128e9aa9944ad68332b5a5dad8d943eeb9905d24"}, - {file = "libdeeplake-0.0.60-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9f3841343806372905c42ea30c89b553f79530cdaa24d5e7753cbd45fa8444f8"}, - {file = "libdeeplake-0.0.60-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:afdbf256de09b362c3fb198e33547dff157583762814f7973d4c01357506cfd7"}, - {file = "libdeeplake-0.0.60-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:aee8a0f1d9521cb964efc39bee6e4cfbc18935501e0a0969dd43fe90ccd3e440"}, - {file = "libdeeplake-0.0.60-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:7bf53919c17318eff53ab5f46514fe7bf86d32bfd0e7b73ab0e47e57279fb58f"}, - {file = "libdeeplake-0.0.60-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:ad570eacbdc79533cc9fbc005903a7af2e037a7a743e60ed5d1486c7daade737"}, - {file = "libdeeplake-0.0.60-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:957123ca007ce552f08646ceaf386e60703d9aa1f299e76f71d4b922c8ccbf4f"}, - {file = "libdeeplake-0.0.60-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1ea962a884eea30d092ed379dd83f3c6a162268180b55d6afa8778970ea99863"}, - {file = "libdeeplake-0.0.60-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c330c1ca89c057cdabca9b6261ecc051ebad5f658d17c140a211a8842bd34ce5"}, - {file = "libdeeplake-0.0.60-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:397a4da31581472fc9c7444b91ee4619f29d9b18371554514a2de857f5bad8a8"}, - {file = "libdeeplake-0.0.60-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf33e027abed9d123e6fccb822fd128ea9d9d5833600aac82a7e0280df0c190e"}, - {file = "libdeeplake-0.0.60-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5844475365631984453b563e3e7c69d65d96d91e44e8e0762f1877befcac58b5"}, - {file = "libdeeplake-0.0.60-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:753ac3840852b6009056ad725afd48c460a431470b3cccac3f717e423e2c7c1c"}, - {file = "libdeeplake-0.0.60-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:6f50fa21ca263084783b313a71ffb26ea7d614b9ca5e16398be1f9a1dbe0a775"}, -] - -[package.dependencies] + {file = "libdeeplake-0.0.84-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b24e7d025ce29b0e1505c8b952f2e7eda454461fefc9bad61ddc804d1b081c80"}, + {file = "libdeeplake-0.0.84-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc120ec1cb4fe3f49bfbf02e0a5e8e15129329083ab74f1d618cfe71867eeb61"}, + {file = "libdeeplake-0.0.84-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d94c419063d6e96c4defc5fcdce2a9e143a668bb9292105a2abb8040fbef519e"}, + {file = "libdeeplake-0.0.84-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:65e6eab3b1920acef9fbfd5ecb11c4521c38e66bff0b3f02a0760c7d5722e242"}, + {file = "libdeeplake-0.0.84-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a3a2acf2deef3a72bcde1856a025b13bd594267e84ada91bc79a8881606f29a"}, + {file = "libdeeplake-0.0.84-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69cea8d6d5e736a1a655c191d9192d47c93543f68fc08703a3660b327b2ea8af"}, + {file = "libdeeplake-0.0.84-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d4be0dc25d01d07fb3e3cb61d8ff287520fa21f7eeb5190cb8ac38bc32e24a13"}, + {file = "libdeeplake-0.0.84-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:74798f43084827025e783cedee6e480699cf8c00b89730fc98d39fae8a48bba7"}, + {file = "libdeeplake-0.0.84-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6b9b489254ae2ed18a59eb3ebb9b0229dbd68dfbff695ed61a8b7707cbeae188"}, + {file = "libdeeplake-0.0.84-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:f6dfd25181d80fedcb57f93a3e14ba15918b19e30e6758c8868ec452ec4c3d31"}, + {file = "libdeeplake-0.0.84-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bb2f2a0b9c292b342e33e87c9f08f8eed8bc4c0a1b2d16d44a48fc1553a77860"}, + {file = "libdeeplake-0.0.84-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c61696a92b0e07c2ecec5faebb5f78a3f1aae54b12bd84ca553a2d8b9dfdc539"}, + {file = "libdeeplake-0.0.84-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7983b44e2efb541ecaa0960abe2f15eabf1f2567ff2b6c6042b261c5b3399a65"}, + {file = "libdeeplake-0.0.84-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:6cd70f8955dd63247cbc56cf7128d948184a0ebf080b46476142bc701a1fc090"}, + {file = "libdeeplake-0.0.84-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:553a22bc3c887fdfa5a73a049f72594170e3e0098c0801f7112e64861f25faf2"}, + {file = "libdeeplake-0.0.84-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5b8bc4243c26132bfc87c5dec9c64d42bb9e330a0055a2d8c965daaa0b19927"}, + {file = "libdeeplake-0.0.84-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8bded8b6b3d9055bcb21ba34a2dc8384d84ba61042f8f030ab765f93709029ae"}, + {file = "libdeeplake-0.0.84-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:301dab8e7894bc02431173a4d084271a1e451758f3e99b7029d48b5333c0d849"}, +] + +[package.dependencies] +dill = "*" numpy = "*" [[package]] @@ -4290,35 +4296,35 @@ tests = ["matplotlib (>=3.3.0)", "packaging (>=20.0)", "pytest", "pytest-cov", " [[package]] name = "llvmlite" -version = "0.41.0" +version = "0.41.1" description = "lightweight wrapper around basic LLVM functionality" optional = true python-versions = ">=3.8" files = [ - {file = "llvmlite-0.41.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acc81c1279f858e5eab460844cc381e30d6666bc8eea04724b54d4eeb1fd1e54"}, - {file = "llvmlite-0.41.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:013000a11df84a8b5e4f7fbf2513896ca48441c527d9ae8e375da92bc5575d08"}, - {file = "llvmlite-0.41.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b5df30581eb8dbdee0e17a1217debb1d7dcd61a092a09726afff441dad5a67"}, - {file = "llvmlite-0.41.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe265129ecd18957d3653cfb17df1632fa2c57fd0bac1960bc20a8c3ca961197"}, - {file = "llvmlite-0.41.0-cp310-cp310-win32.whl", hash = "sha256:6e477d23afbdddb3dde789d29a771e23bcfa1b12485156370dba9df05d529d94"}, - {file = "llvmlite-0.41.0-cp310-cp310-win_amd64.whl", hash = "sha256:93ce07a0a6d98ff2fcc34e7d2d315d8d09f6a737539e089f1a8cbe4a3a0313bf"}, - {file = "llvmlite-0.41.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dabfb1a28d26b8c01228f59aec90a61324203dda6b1465c596d577d6380545e8"}, - {file = "llvmlite-0.41.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:741bb2ab7712c4763483189f0684163fb3ac44087c617698c50654c7d7ab6a24"}, - {file = "llvmlite-0.41.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7b7022f1e2f652722ddd5697987f1aeaf0c9a64f2ee324e03f6e060b28a1bbd"}, - {file = "llvmlite-0.41.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70feadac822f8840f2db6cbb662f1b349fe5d375d8ceb9c907f3919e005dc705"}, - {file = "llvmlite-0.41.0-cp311-cp311-win_amd64.whl", hash = "sha256:21191c6a9fb4a86d71ec72debbaf39db49590a950c8a2a4ac792c41d16b0a61a"}, - {file = "llvmlite-0.41.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0d94e531c763340344198f2c31af6af7b665e9cd2b354e31afa5cf4abfce0a8e"}, - {file = "llvmlite-0.41.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8997264291e822689f7d6df4716638f35ff586bef5b8be40e2ba77d6bd9405c"}, - {file = "llvmlite-0.41.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de31585b867e8d9bae0c15f03e8bf541afcff66ffa5f61e401a738274702bdcd"}, - {file = "llvmlite-0.41.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57c0a3fd031936461f9f24f4cace80a86c9ba09d8b02fa87c209607aae2463cb"}, - {file = "llvmlite-0.41.0-cp38-cp38-win32.whl", hash = "sha256:0c79cb7e88403d6c64385bf1e63797af0884caf1f4afa3c8c4bbef1920e28148"}, - {file = "llvmlite-0.41.0-cp38-cp38-win_amd64.whl", hash = "sha256:6c40e290d930b09bbebe0d05c750b8a9e20af147e8cec8d62aa42e874f46dbfa"}, - {file = "llvmlite-0.41.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:24b3f7e258ea7c07ebf9f70c772e25619de8d207192254beb7644b818a97440b"}, - {file = "llvmlite-0.41.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:876cd5f53cfe51d3a5cf7952dc1a25bd6158f5795739b1f8159c3591b32ed3cb"}, - {file = "llvmlite-0.41.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8218d307bd89535207fea1cc1ef5498afcb6d0203153dba214058715fecdb699"}, - {file = "llvmlite-0.41.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27d9d11c8dcdb8a8e14e92d0be5bba60f15bdf2fc116b8d27cab40221093a1b0"}, - {file = "llvmlite-0.41.0-cp39-cp39-win32.whl", hash = "sha256:a4af8722ad6cb0dd2d5454ebc5a7bf90867df5f3fcb0787396a3261052caefda"}, - {file = "llvmlite-0.41.0-cp39-cp39-win_amd64.whl", hash = "sha256:f150e127d6bc0e74633b8ba210776b0b6fdc82af6dfebf0794318ea97634acd0"}, - {file = "llvmlite-0.41.0.tar.gz", hash = "sha256:7d41db345d76d2dfa31871178ce0d8e9fd8aa015aa1b7d4dab84b5cb393901e0"}, + {file = "llvmlite-0.41.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1e1029d47ee66d3a0c4d6088641882f75b93db82bd0e6178f7bd744ebce42b9"}, + {file = "llvmlite-0.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:150d0bc275a8ac664a705135e639178883293cf08c1a38de3bbaa2f693a0a867"}, + {file = "llvmlite-0.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eee5cf17ec2b4198b509272cf300ee6577229d237c98cc6e63861b08463ddc6"}, + {file = "llvmlite-0.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd0338da625346538f1173a17cabf21d1e315cf387ca21b294ff209d176e244"}, + {file = "llvmlite-0.41.1-cp310-cp310-win32.whl", hash = "sha256:fa1469901a2e100c17eb8fe2678e34bd4255a3576d1a543421356e9c14d6e2ae"}, + {file = "llvmlite-0.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:2b76acee82ea0e9304be6be9d4b3840208d050ea0dcad75b1635fa06e949a0ae"}, + {file = "llvmlite-0.41.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:210e458723436b2469d61b54b453474e09e12a94453c97ea3fbb0742ba5a83d8"}, + {file = "llvmlite-0.41.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:855f280e781d49e0640aef4c4af586831ade8f1a6c4df483fb901cbe1a48d127"}, + {file = "llvmlite-0.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b67340c62c93a11fae482910dc29163a50dff3dfa88bc874872d28ee604a83be"}, + {file = "llvmlite-0.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2181bb63ef3c607e6403813421b46982c3ac6bfc1f11fa16a13eaafb46f578e6"}, + {file = "llvmlite-0.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:9564c19b31a0434f01d2025b06b44c7ed422f51e719ab5d24ff03b7560066c9a"}, + {file = "llvmlite-0.41.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5940bc901fb0325970415dbede82c0b7f3e35c2d5fd1d5e0047134c2c46b3281"}, + {file = "llvmlite-0.41.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8b0a9a47c28f67a269bb62f6256e63cef28d3c5f13cbae4fab587c3ad506778b"}, + {file = "llvmlite-0.41.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8afdfa6da33f0b4226af8e64cfc2b28986e005528fbf944d0a24a72acfc9432"}, + {file = "llvmlite-0.41.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8454c1133ef701e8c050a59edd85d238ee18bb9a0eb95faf2fca8b909ee3c89a"}, + {file = "llvmlite-0.41.1-cp38-cp38-win32.whl", hash = "sha256:2d92c51e6e9394d503033ffe3292f5bef1566ab73029ec853861f60ad5c925d0"}, + {file = "llvmlite-0.41.1-cp38-cp38-win_amd64.whl", hash = "sha256:df75594e5a4702b032684d5481db3af990b69c249ccb1d32687b8501f0689432"}, + {file = "llvmlite-0.41.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:04725975e5b2af416d685ea0769f4ecc33f97be541e301054c9f741003085802"}, + {file = "llvmlite-0.41.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bf14aa0eb22b58c231243dccf7e7f42f7beec48970f2549b3a6acc737d1a4ba4"}, + {file = "llvmlite-0.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92c32356f669e036eb01016e883b22add883c60739bc1ebee3a1cc0249a50828"}, + {file = "llvmlite-0.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24091a6b31242bcdd56ae2dbea40007f462260bc9bdf947953acc39dffd54f8f"}, + {file = "llvmlite-0.41.1-cp39-cp39-win32.whl", hash = "sha256:880cb57ca49e862e1cd077104375b9d1dfdc0622596dfa22105f470d7bacb309"}, + {file = "llvmlite-0.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:92f093986ab92e71c9ffe334c002f96defc7986efda18397d0f08534f3ebdc4d"}, + {file = "llvmlite-0.41.1.tar.gz", hash = "sha256:f19f767a018e6ec89608e1f6b13348fa2fcde657151137cb64e56d48598a92db"}, ] [[package]] @@ -4599,16 +4605,6 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -4761,29 +4757,29 @@ files = [ [[package]] name = "momento" -version = "1.10.2" +version = "1.12.0" description = "SDK for Momento" optional = true python-versions = ">=3.7,<4.0" files = [ - {file = "momento-1.10.2-py3-none-any.whl", hash = "sha256:c7f00e391d26036a0a549cced3a8bb35d8681fd6c86138fee7694b620347ec33"}, - {file = "momento-1.10.2.tar.gz", hash = "sha256:9fbb2492c8e9be4e108f260b615c1edff8a78613d9462e6bf06a961c2745da47"}, + {file = "momento-1.12.0-py3-none-any.whl", hash = "sha256:1dcb3ebadba67bc5e49337c433119d3857ff2e1e36627a8fcdadcc5db9a2f785"}, + {file = "momento-1.12.0.tar.gz", hash = "sha256:31918c4e56b8db2f632a465c3a7df656666b8dab9efdcd49c61f3451d7bc481d"}, ] [package.dependencies] grpcio = ">=1.46.0,<2.0.0" -momento-wire-types = ">=0.84.0,<0.85.0" +momento-wire-types = ">=0.86.0,<0.87.0" pyjwt = ">=2.4.0,<3.0.0" [[package]] name = "momento-wire-types" -version = "0.84.2" +version = "0.86.0" description = "Momento Client Proto Generated Files" optional = true python-versions = ">=3.7,<4.0" files = [ - {file = "momento_wire_types-0.84.2-py3-none-any.whl", hash = "sha256:1b260556f1220bc3d5b3ffd7491a7d6de6654fef87e8a17f2b7cae53e9e30a23"}, - {file = "momento_wire_types-0.84.2.tar.gz", hash = "sha256:0560180af916cc588598ac0ee0fe04872ad30f428971c81e2d54b146a9f6d5fc"}, + {file = "momento_wire_types-0.86.0-py3-none-any.whl", hash = "sha256:1079f61f3a0aa90865870b116a8699289e6f03b969a349265abdd605b073251c"}, + {file = "momento_wire_types-0.86.0.tar.gz", hash = "sha256:7695a448382fbfda8ad7a51c307b34a2ef3d81d883f77b71891c27a4c25aed18"}, ] [package.dependencies] @@ -5334,12 +5330,12 @@ six = ">=1.16.0" [[package]] name = "neo4j" -version = "5.13.0" +version = "5.14.0" description = "Neo4j Bolt driver for Python" optional = true python-versions = ">=3.7" files = [ - {file = "neo4j-5.13.0.tar.gz", hash = "sha256:44e60e2b4946340a60b5ba13710d599615f7432612af2bdefc29f44169004de5"}, + {file = "neo4j-5.14.0.tar.gz", hash = "sha256:6040efca47126c01385f09e550fb7d7671b1853a1e1c34908aa3713cebd285da"}, ] [package.dependencies] @@ -5348,6 +5344,7 @@ pytz = "*" [package.extras] numpy = ["numpy (>=1.7.0,<2.0.0)"] pandas = ["numpy (>=1.7.0,<2.0.0)", "pandas (>=1.1.0,<3.0.0)"] +pyarrow = ["pyarrow (>=1.0.0)"] [[package]] name = "nest-asyncio" @@ -5512,73 +5509,38 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numba" -version = "0.58.0" +version = "0.58.1" description = "compiling Python code using LLVM" optional = true python-versions = ">=3.8" files = [ - {file = "numba-0.58.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f146c11af62ad25021d93fccf48715a96d1ea76d43c1c3bc97dca561c6a2693"}, - {file = "numba-0.58.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8059ee491651885f89655f08856a107aa610e3355b373f3b7437f1da96f09703"}, - {file = "numba-0.58.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8bd9edd27ab29e80bcf4083f9955c4a8871075a13a370b3bef99f81e184541fa"}, - {file = "numba-0.58.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ee9f5fd962e0ada0e68df67a6ff881f95b45e0ae7cb96141e913337040d490b"}, - {file = "numba-0.58.0-cp310-cp310-win_amd64.whl", hash = "sha256:398ab539257df8e980ec2f9cdfae836bb965fadc2dd30db3fcfbf3aefa542836"}, - {file = "numba-0.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e61a1fa0ab7d290f0a43d8523b372f96765db6ceb6a691660c17e9ed609cb470"}, - {file = "numba-0.58.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a9b69cc6259131791822c5eb893b03cd9372f4aae669d020500565b6d5d80bc"}, - {file = "numba-0.58.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e7b42b23c36cf08fcfe1a8f2acf3a0af95b41f9ee07fc81b28d7b9b5ada85d8c"}, - {file = "numba-0.58.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0d7a5e81e4047a23986f816b48ac46616ceb4eadbff6bbe739944d36b3bdbfe7"}, - {file = "numba-0.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:0ce322178ff7006b7f50dad25b042ef64c6393f2fafafa79c0498d789b1aac27"}, - {file = "numba-0.58.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f3934eab4eb1c07c8f067e99350b99f70b2ca77d5aa3911d365643171f771157"}, - {file = "numba-0.58.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cee5f22f7fbb2ef445e422aeafe5d38bf71a52c8bb34d22c1e145afa4034d6b"}, - {file = "numba-0.58.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:121bf98a2b02e0611af3bfab3995fed990db58c4bfc6c225332ccdaf37e312e7"}, - {file = "numba-0.58.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0734614d3e92eb01f848b8595be116f9c8ad997f8cf77672f3ba53c511f1429d"}, - {file = "numba-0.58.0-cp38-cp38-win_amd64.whl", hash = "sha256:48bcaae337ee450e38bf3796b4e1a166909c339f1757b6110e6adcf42c1e6c3e"}, - {file = "numba-0.58.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a5f99806d5c9671dc927a8a489bc0c88e79be51e9775d6a3c68dbfdf585cd7e9"}, - {file = "numba-0.58.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9dade55ee5f1b8c5e3e0db95449fdc5b7b4244c1a7fa133bd664cbfc1027bafe"}, - {file = "numba-0.58.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7e182f3296dfcbafcd23b9263baeb350ad5adcacd081f1b3ec927a9fb325cca8"}, - {file = "numba-0.58.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f80aee7889e82ab9c4770e02b21ca4e3ca15cc8c829c173fc27b77ab0529b5cb"}, - {file = "numba-0.58.0-cp39-cp39-win_amd64.whl", hash = "sha256:477f429bb593dd3fc8d84b44f199e8e30268a7cfeb96c8464cb393d401de4f45"}, - {file = "numba-0.58.0.tar.gz", hash = "sha256:e5d5a318dc65a101ef846d7fd93f3cf2f7942494019e8342e51238b360739125"}, + {file = "numba-0.58.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:07f2fa7e7144aa6f275f27260e73ce0d808d3c62b30cff8906ad1dec12d87bbe"}, + {file = "numba-0.58.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7bf1ddd4f7b9c2306de0384bf3854cac3edd7b4d8dffae2ec1b925e4c436233f"}, + {file = "numba-0.58.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bc2d904d0319d7a5857bd65062340bed627f5bfe9ae4a495aef342f072880d50"}, + {file = "numba-0.58.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4e79b6cc0d2bf064a955934a2e02bf676bc7995ab2db929dbbc62e4c16551be6"}, + {file = "numba-0.58.1-cp310-cp310-win_amd64.whl", hash = "sha256:81fe5b51532478149b5081311b0fd4206959174e660c372b94ed5364cfb37c82"}, + {file = "numba-0.58.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bcecd3fb9df36554b342140a4d77d938a549be635d64caf8bd9ef6c47a47f8aa"}, + {file = "numba-0.58.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1eaa744f518bbd60e1f7ccddfb8002b3d06bd865b94a5d7eac25028efe0e0ff"}, + {file = "numba-0.58.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bf68df9c307fb0aa81cacd33faccd6e419496fdc621e83f1efce35cdc5e79cac"}, + {file = "numba-0.58.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:55a01e1881120e86d54efdff1be08381886fe9f04fc3006af309c602a72bc44d"}, + {file = "numba-0.58.1-cp311-cp311-win_amd64.whl", hash = "sha256:811305d5dc40ae43c3ace5b192c670c358a89a4d2ae4f86d1665003798ea7a1a"}, + {file = "numba-0.58.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ea5bfcf7d641d351c6a80e8e1826eb4a145d619870016eeaf20bbd71ef5caa22"}, + {file = "numba-0.58.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e63d6aacaae1ba4ef3695f1c2122b30fa3d8ba039c8f517784668075856d79e2"}, + {file = "numba-0.58.1-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6fe7a9d8e3bd996fbe5eac0683227ccef26cba98dae6e5cee2c1894d4b9f16c1"}, + {file = "numba-0.58.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:898af055b03f09d33a587e9425500e5be84fc90cd2f80b3fb71c6a4a17a7e354"}, + {file = "numba-0.58.1-cp38-cp38-win_amd64.whl", hash = "sha256:d3e2fe81fe9a59fcd99cc572002101119059d64d31eb6324995ee8b0f144a306"}, + {file = "numba-0.58.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c765aef472a9406a97ea9782116335ad4f9ef5c9f93fc05fd44aab0db486954"}, + {file = "numba-0.58.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9e9356e943617f5e35a74bf56ff6e7cc83e6b1865d5e13cee535d79bf2cae954"}, + {file = "numba-0.58.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:240e7a1ae80eb6b14061dc91263b99dc8d6af9ea45d310751b780888097c1aaa"}, + {file = "numba-0.58.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:45698b995914003f890ad839cfc909eeb9c74921849c712a05405d1a79c50f68"}, + {file = "numba-0.58.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd3dda77955be03ff366eebbfdb39919ce7c2620d86c906203bed92124989032"}, + {file = "numba-0.58.1.tar.gz", hash = "sha256:487ded0633efccd9ca3a46364b40006dbdaca0f95e99b8b83e778d1195ebcbaa"}, ] [package.dependencies] importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} llvmlite = "==0.41.*" -numpy = ">=1.21,<1.26" - -[[package]] -name = "numcodecs" -version = "0.12.0" -description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." -optional = true -python-versions = ">=3.8" -files = [ - {file = "numcodecs-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e03960dd507e00bc102ff4ca2f14fa40b0cfc2ba7279752d31558d0787431a53"}, - {file = "numcodecs-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:68b3a18a93a96cba0a1d367ae76c02a74f29f93790e1c8b0423eacc4ce5d421a"}, - {file = "numcodecs-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a265db9177bd4a19939651b68722b72044bc92bb0b646e2a0d55835c0acb9d5"}, - {file = "numcodecs-0.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:3b5a0be940093d81eb49b0adba62615d3b973174d8167dbd63cc6d392e157bf6"}, - {file = "numcodecs-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f16787a674d1badd55f827b01bbc62b3ef2adecbed59a7db7139a328f0744e4a"}, - {file = "numcodecs-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98dbc61366e2974a1bdc28e08ed790c74d39c9cb40ce3f487ae6e6a76da843dd"}, - {file = "numcodecs-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd746cd6e7af4925bd2d3e902b5027147d71590cdc8e9e2ad999014fc2405c3b"}, - {file = "numcodecs-0.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:eae479f65b75af0e75a20049bf83beff154c4662a233695b4f7848d5eee0ef2d"}, - {file = "numcodecs-0.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1f679b148bfdc9341686814485d03ad652ea551a90debadbbf9da3fb4cc003"}, - {file = "numcodecs-0.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa78ffc79a94aa78234821639c253219d8a26455f020c760ad1b331144363849"}, - {file = "numcodecs-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01f5457c0c81a556812240a2318c6022ca5c6f66fe2a51f619bdf8b0c855b5f2"}, - {file = "numcodecs-0.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:e9fc2f2abcb09c301c8e1db16e4d5dc9faf93be8c46d88ac3974e023f0a3533b"}, - {file = "numcodecs-0.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c2cedb3d6dd1238b033657da0b710689a9600813bfece28fd7c158328c0d4d"}, - {file = "numcodecs-0.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:182458355f5cad297575f9a16e804fe345c22c7a1b796ee9a0a8bce5a9f66c60"}, - {file = "numcodecs-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fe66c7a2b016e772a60dc8d68479958ae8c9ce306bcc318ee3d2ca883930e94"}, - {file = "numcodecs-0.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:488ba767d956f8dbf794c4c30df1983a385f048a4f1bc670dd0761b8fe7fd7a3"}, - {file = "numcodecs-0.12.0.tar.gz", hash = "sha256:6388e5f4e94d18a7165fbd1c9d3637673b74157cff8bc644005f9e2a4c717d6e"}, -] - -[package.dependencies] -numpy = ">=1.7" - -[package.extras] -docs = ["mock", "numpydoc", "sphinx (<7.0.0)", "sphinx-issues"] -msgpack = ["msgpack"] -test = ["coverage", "flake8", "pytest", "pytest-cov"] -zfpy = ["zfpy (>=1.0.0)"] +numpy = ">=1.22,<1.27" [[package]] name = "numexpr" @@ -5917,61 +5879,61 @@ tests = ["pytest", "pytest-cov", "pytest-pep8"] [[package]] name = "orjson" -version = "3.9.9" +version = "3.9.10" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = true python-versions = ">=3.8" files = [ - {file = "orjson-3.9.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f28090060a31f4d11221f9ba48b2273b0d04b702f4dcaa197c38c64ce639cc51"}, - {file = "orjson-3.9.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8038ba245d0c0a6337cfb6747ea0c51fe18b0cf1a4bc943d530fd66799fae33d"}, - {file = "orjson-3.9.9-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:543b36df56db195739c70d645ecd43e49b44d5ead5f8f645d2782af118249b37"}, - {file = "orjson-3.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e7877256b5092f1e4e48fc0f1004728dc6901e7a4ffaa4acb0a9578610aa4ce"}, - {file = "orjson-3.9.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12b83e0d8ba4ca88b894c3e00efc59fe6d53d9ffb5dbbb79d437a466fc1a513d"}, - {file = "orjson-3.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef06431f021453a47a9abb7f7853f04f031d31fbdfe1cc83e3c6aadde502cce"}, - {file = "orjson-3.9.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0a1a4d9e64597e550428ba091e51a4bcddc7a335c8f9297effbfa67078972b5c"}, - {file = "orjson-3.9.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:879d2d1f6085c9c0831cec6716c63aaa89e41d8e036cabb19a315498c173fcc6"}, - {file = "orjson-3.9.9-cp310-none-win32.whl", hash = "sha256:d3f56e41bc79d30fdf077073072f2377d2ebf0b946b01f2009ab58b08907bc28"}, - {file = "orjson-3.9.9-cp310-none-win_amd64.whl", hash = "sha256:ab7bae2b8bf17620ed381e4101aeeb64b3ba2a45fc74c7617c633a923cb0f169"}, - {file = "orjson-3.9.9-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:31d676bc236f6e919d100fb85d0a99812cff1ebffaa58106eaaec9399693e227"}, - {file = "orjson-3.9.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:678ffb5c0a6b1518b149cc328c610615d70d9297e351e12c01d0beed5d65360f"}, - {file = "orjson-3.9.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71b0cc21f2c324747bc77c35161e0438e3b5e72db6d3b515310457aba743f7f"}, - {file = "orjson-3.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae72621f216d1d990468291b1ec153e1b46e0ed188a86d54e0941f3dabd09ee8"}, - {file = "orjson-3.9.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:512e5a41af008e76451f5a344941d61f48dddcf7d7ddd3073deb555de64596a6"}, - {file = "orjson-3.9.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f89dc338a12f4357f5bf1b098d3dea6072fb0b643fd35fec556f4941b31ae27"}, - {file = "orjson-3.9.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:957a45fb201c61b78bcf655a16afbe8a36c2c27f18a998bd6b5d8a35e358d4ad"}, - {file = "orjson-3.9.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1c01cf4b8e00c7e98a0a7cf606a30a26c32adf2560be2d7d5d6766d6f474b31"}, - {file = "orjson-3.9.9-cp311-none-win32.whl", hash = "sha256:397a185e5dd7f8ebe88a063fe13e34d61d394ebb8c70a443cee7661b9c89bda7"}, - {file = "orjson-3.9.9-cp311-none-win_amd64.whl", hash = "sha256:24301f2d99d670ded4fb5e2f87643bc7428a54ba49176e38deb2887e42fe82fb"}, - {file = "orjson-3.9.9-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bd55ea5cce3addc03f8fb0705be0cfed63b048acc4f20914ce5e1375b15a293b"}, - {file = "orjson-3.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b28c1a65cd13fff5958ab8b350f0921121691464a7a1752936b06ed25c0c7b6e"}, - {file = "orjson-3.9.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b97a67c47840467ccf116136450c50b6ed4e16a8919c81a4b4faef71e0a2b3f4"}, - {file = "orjson-3.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75b805549cbbcb963e9c9068f1a05abd0ea4c34edc81f8d8ef2edb7e139e5b0f"}, - {file = "orjson-3.9.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5424ecbafe57b2de30d3b5736c5d5835064d522185516a372eea069b92786ba6"}, - {file = "orjson-3.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d2cd6ef4726ef1b8c63e30d8287225a383dbd1de3424d287b37c1906d8d2855"}, - {file = "orjson-3.9.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c959550e0705dc9f59de8fca1a316da0d9b115991806b217c82931ac81d75f74"}, - {file = "orjson-3.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ece2d8ed4c34903e7f1b64fb1e448a00e919a4cdb104fc713ad34b055b665fca"}, - {file = "orjson-3.9.9-cp312-none-win_amd64.whl", hash = "sha256:f708ca623287186e5876256cb30599308bce9b2757f90d917b7186de54ce6547"}, - {file = "orjson-3.9.9-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:335406231f9247f985df045f0c0c8f6b6d5d6b3ff17b41a57c1e8ef1a31b4d04"}, - {file = "orjson-3.9.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d9b5440a5d215d9e1cfd4aee35fd4101a8b8ceb8329f549c16e3894ed9f18b5"}, - {file = "orjson-3.9.9-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e98ca450cb4fb176dd572ce28c6623de6923752c70556be4ef79764505320acb"}, - {file = "orjson-3.9.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3bf6ca6bce22eb89dd0650ef49c77341440def966abcb7a2d01de8453df083a"}, - {file = "orjson-3.9.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb50d869b3c97c7c5187eda3759e8eb15deb1271d694bc5d6ba7040db9e29036"}, - {file = "orjson-3.9.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fcf06c69ccc78e32d9f28aa382ab2ab08bf54b696dbe00ee566808fdf05da7d"}, - {file = "orjson-3.9.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9a4402e7df1b5c9a4c71c7892e1c8f43f642371d13c73242bda5964be6231f95"}, - {file = "orjson-3.9.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b20becf50d4aec7114dc902b58d85c6431b3a59b04caa977e6ce67b6fee0e159"}, - {file = "orjson-3.9.9-cp38-none-win32.whl", hash = "sha256:1f352117eccac268a59fedac884b0518347f5e2b55b9f650c2463dd1e732eb61"}, - {file = "orjson-3.9.9-cp38-none-win_amd64.whl", hash = "sha256:c4eb31a8e8a5e1d9af5aa9e247c2a52ad5cf7e968aaa9aaefdff98cfcc7f2e37"}, - {file = "orjson-3.9.9-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4a308aeac326c2bafbca9abbae1e1fcf682b06e78a54dad0347b760525838d85"}, - {file = "orjson-3.9.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e159b97f5676dcdac0d0f75ec856ef5851707f61d262851eb41a30e8fadad7c9"}, - {file = "orjson-3.9.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f692e7aabad92fa0fff5b13a846fb586b02109475652207ec96733a085019d80"}, - {file = "orjson-3.9.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cffb77cf0cd3cbf20eb603f932e0dde51b45134bdd2d439c9f57924581bb395b"}, - {file = "orjson-3.9.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c63eca397127ebf46b59c9c1fb77b30dd7a8fc808ac385e7a58a7e64bae6e106"}, - {file = "orjson-3.9.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f0c024a75e8ba5d9101facb4fb5a028cdabe3cdfe081534f2a9de0d5062af2"}, - {file = "orjson-3.9.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8cba20c9815c2a003b8ca4429b0ad4aa87cb6649af41365821249f0fd397148e"}, - {file = "orjson-3.9.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:906cac73b7818c20cf0f6a7dde5a6f009c52aecc318416c7af5ea37f15ca7e66"}, - {file = "orjson-3.9.9-cp39-none-win32.whl", hash = "sha256:50232572dd300c49f134838c8e7e0917f29a91f97dbd608d23f2895248464b7f"}, - {file = "orjson-3.9.9-cp39-none-win_amd64.whl", hash = "sha256:920814e02e3dd7af12f0262bbc18b9fe353f75a0d0c237f6a67d270da1a1bb44"}, - {file = "orjson-3.9.9.tar.gz", hash = "sha256:02e693843c2959befdd82d1ebae8b05ed12d1cb821605d5f9fe9f98ca5c9fd2b"}, + {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]] @@ -6361,13 +6323,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pooch" -version = "1.7.0" +version = "1.8.0" description = "\"Pooch manages your Python library's sample data files: it automatically downloads and stores them in a local directory, with support for versioning and corruption checks.\"" optional = true python-versions = ">=3.7" files = [ - {file = "pooch-1.7.0-py3-none-any.whl", hash = "sha256:74258224fc33d58f53113cf955e8d51bf01386b91492927d0d1b6b341a765ad7"}, - {file = "pooch-1.7.0.tar.gz", hash = "sha256:f174a1041b6447f0eef8860f76d17f60ed2f857dc0efa387a7f08228af05d998"}, + {file = "pooch-1.8.0-py3-none-any.whl", hash = "sha256:1bfba436d9e2ad5199ccad3583cca8c241b8736b5bb23fe67c213d52650dbb66"}, + {file = "pooch-1.8.0.tar.gz", hash = "sha256:f59981fd5b9b5d032dcde8f4a11eaa492c2ac6343fae3596a2fdae35fc54b0a0"}, ] [package.dependencies] @@ -7281,23 +7243,24 @@ image = ["Pillow (>=8.0.0)"] [[package]] name = "pypdfium2" -version = "4.21.0" +version = "4.22.0" description = "Python bindings to PDFium" optional = true python-versions = ">= 3.6" files = [ - {file = "pypdfium2-4.21.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:db6d471439bf2be7160860807b31d93dcac7037234443b2caf009be45951b6af"}, - {file = "pypdfium2-4.21.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7a08147c4863d7d7a10d7b3bb3c6ff4caf88500f9ec009fa40794ed58cb6d73f"}, - {file = "pypdfium2-4.21.0-py3-none-manylinux_2_17_aarch64.whl", hash = "sha256:df13206a301534cc3503d615de46afeb3d6bb84c2c11023edcf021f3d34fc5e5"}, - {file = "pypdfium2-4.21.0-py3-none-manylinux_2_17_armv7l.whl", hash = "sha256:b4a73d574b76a256555fb6fb49ba2e9e84c8775f7af61d09132e1bfb4d847967"}, - {file = "pypdfium2-4.21.0-py3-none-manylinux_2_17_i686.whl", hash = "sha256:55698aa3b00793c30126c1a034ac171b4dbb9cc58a135792d9c149c51d78f553"}, - {file = "pypdfium2-4.21.0-py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:d681eee3f6da6239cc596e2b2bac6cb7c0abf3a0cbd3d49dcfecc0df40f3f482"}, - {file = "pypdfium2-4.21.0-py3-none-musllinux_1_1_i686.whl", hash = "sha256:3a4e13793a636dbb44a0b355ca71b6a8c94f86e9d5ef2fc9ac44f65800803e1f"}, - {file = "pypdfium2-4.21.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:de28c5f613c8a4066f39f12b34d397bcca83bf0d671e184132b6876e3ce0137b"}, - {file = "pypdfium2-4.21.0-py3-none-win32.whl", hash = "sha256:a26f8d99fddd0efbf7f1f0f80e861538d0c28df0ad0c48aac7114a615928d4ef"}, - {file = "pypdfium2-4.21.0-py3-none-win_amd64.whl", hash = "sha256:09506a4233a1ae5846610ec619764b679a2a63985acfa62bf02bde20a799028b"}, - {file = "pypdfium2-4.21.0-py3-none-win_arm64.whl", hash = "sha256:66f8dd99ec64dd151c51a32f64318f660097372e6bec27914a1b915632fedfcd"}, - {file = "pypdfium2-4.21.0.tar.gz", hash = "sha256:514dcd4552bea1886d93ae34bc5f611a7af358104af2774c1d7822778f539335"}, + {file = "pypdfium2-4.22.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:398e4173b9bd2b9cce509b2ed655bbf2bf7b76f408ecf6c099e189996a28bbae"}, + {file = "pypdfium2-4.22.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9aa3f3357014c1a9e1a45706eca4c214b79b9253447605992c1ede4422e343d9"}, + {file = "pypdfium2-4.22.0-py3-none-manylinux_2_17_aarch64.whl", hash = "sha256:5335b128fa7764655e8d9f7349fe8c48293a3f61b4272709e15327a85b72ee90"}, + {file = "pypdfium2-4.22.0-py3-none-manylinux_2_17_armv7l.whl", hash = "sha256:5e039a2d6283a5cae7b2b8c1454b7bec08025515b640e2ffd99452d4a85e73f9"}, + {file = "pypdfium2-4.22.0-py3-none-manylinux_2_17_i686.whl", hash = "sha256:5d618ba82bbad8ca8a93a0e3dc6d1a5f1d0698a34049de85dd51a4b6b398e696"}, + {file = "pypdfium2-4.22.0-py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:5e928c6b37315ef686d3e427f9b30b2f58f1e98bb0622471874c1dde39337f03"}, + {file = "pypdfium2-4.22.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:a8afd323889edbdc864881dba833f96c550a0be78a0ddd35040e10adfbce0aa2"}, + {file = "pypdfium2-4.22.0-py3-none-musllinux_1_1_i686.whl", hash = "sha256:f6bcedc51327d335ed471f5b8c27a6d6bfad20249f3d79bc79bfe469d93fbe7a"}, + {file = "pypdfium2-4.22.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:9101be6fd7f749ab8def0bc5b93f93ec4c45ce0634b9ddcf2cc921d8e08bb763"}, + {file = "pypdfium2-4.22.0-py3-none-win32.whl", hash = "sha256:3970154748fc0ee48bb22ffc15a5d66054b6ca553180bb84d743ee8192413549"}, + {file = "pypdfium2-4.22.0-py3-none-win_amd64.whl", hash = "sha256:02399c25c1f3d30fa80de616dffc0becd885f4b8a03e7dfae3afb553b49644e3"}, + {file = "pypdfium2-4.22.0-py3-none-win_arm64.whl", hash = "sha256:caddf0de2d25e0572a3ddbb7b6c6d60ad9c68290fab593e7a2609f06a88d6fdf"}, + {file = "pypdfium2-4.22.0.tar.gz", hash = "sha256:c29d09b59ed65c5f27d81af9c985c89da7b10c0ac3775dfb2474a94a6d6dc850"}, ] [[package]] @@ -7376,6 +7339,21 @@ files = [ [package.dependencies] tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +[[package]] +name = "pyre-extensions" +version = "0.0.23" +description = "Type system extensions for use with the pyre type checker" +optional = true +python-versions = "*" +files = [ + {file = "pyre-extensions-0.0.23.tar.gz", hash = "sha256:df019263900af45e83e41fb9e889824e8b7bcdb9cb67fe2957bb80104eadcbc7"}, + {file = "pyre_extensions-0.0.23-py3-none-any.whl", hash = "sha256:e945fdf4113172cec517c5daeca56f61f6632fd5b8d8165f1253c8865c87e62b"}, +] + +[package.dependencies] +typing-extensions = "*" +typing-inspect = "*" + [[package]] name = "pyreadline3" version = "3.4.1" @@ -7436,13 +7414,13 @@ Pillow = ">=8.0.0" [[package]] name = "pytest" -version = "7.4.2" +version = "7.4.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, ] [package.dependencies] @@ -7509,13 +7487,13 @@ python-dotenv = ">=0.9.1" [[package]] name = "pytest-mock" -version = "3.11.1" +version = "3.12.0" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, - {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, + {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"}, + {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"}, ] [package.dependencies] @@ -7729,7 +7707,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -7737,15 +7714,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -7762,7 +7732,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -7770,7 +7739,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -7883,13 +7851,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qdrant-client" -version = "1.6.3" +version = "1.6.4" description = "Client library for the Qdrant vector search engine" optional = true python-versions = ">=3.8,<3.13" files = [ - {file = "qdrant_client-1.6.3-py3-none-any.whl", hash = "sha256:c52401c4057d68ff7dc9c6542bf5636c99aa0e617322d556ba618846a49c83d8"}, - {file = "qdrant_client-1.6.3.tar.gz", hash = "sha256:228dc246242b911e5d7f5f961dd6eda348c4992d0eb4b6e7785801edb2ac2fa6"}, + {file = "qdrant_client-1.6.4-py3-none-any.whl", hash = "sha256:db4696978d6a62d78ff60f70b912383f1e467bda3053f732b01ddb5f93281b10"}, + {file = "qdrant_client-1.6.4.tar.gz", hash = "sha256:bbd65f383b6a55a9ccf4e301250fa925179340dd90cfde9b93ce4230fd68867b"}, ] [package.dependencies] @@ -7932,13 +7900,13 @@ test = ["flaky", "pytest", "pytest-qt"] [[package]] name = "qtpy" -version = "2.4.0" +version = "2.4.1" description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." optional = false python-versions = ">=3.7" files = [ - {file = "QtPy-2.4.0-py3-none-any.whl", hash = "sha256:4d4f045a41e09ac9fa57fcb47ef05781aa5af294a0a646acc1b729d14225e741"}, - {file = "QtPy-2.4.0.tar.gz", hash = "sha256:db2d508167aa6106781565c8da5c6f1487debacba33519cedc35fa8997d424d4"}, + {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"}, + {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"}, ] [package.dependencies] @@ -8556,39 +8524,39 @@ requests = ">=2.25.1,<3.0.0" [[package]] name = "ruff" -version = "0.1.0" +version = "0.1.3" description = "An extremely fast Python linter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.1.0-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:87114e254dee35e069e1b922d85d4b21a5b61aec759849f393e1dbb308a00439"}, - {file = "ruff-0.1.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:764f36d2982cc4a703e69fb73a280b7c539fd74b50c9ee531a4e3fe88152f521"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65f4b7fb539e5cf0f71e9bd74f8ddab74cabdd673c6fb7f17a4dcfd29f126255"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:299fff467a0f163baa282266b310589b21400de0a42d8f68553422fa6bf7ee01"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d412678bf205787263bb702c984012a4f97e460944c072fd7cfa2bd084857c4"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a5391b49b1669b540924640587d8d24128e45be17d1a916b1801d6645e831581"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee8cd57f454cdd77bbcf1e11ff4e0046fb6547cac1922cc6e3583ce4b9c326d1"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa7aeed7bc23861a2b38319b636737bf11cfa55d2109620b49cf995663d3e888"}, - {file = "ruff-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04cd4298b43b16824d9a37800e4c145ba75c29c43ce0d74cad1d66d7ae0a4c5"}, - {file = "ruff-0.1.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7186ccf54707801d91e6314a016d1c7895e21d2e4cd614500d55870ed983aa9f"}, - {file = "ruff-0.1.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d88adfd93849bc62449518228581d132e2023e30ebd2da097f73059900d8dce3"}, - {file = "ruff-0.1.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ad2ccdb3bad5a61013c76a9c1240fdfadf2c7103a2aeebd7bcbbed61f363138f"}, - {file = "ruff-0.1.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b77f6cfa72c6eb19b5cac967cc49762ae14d036db033f7d97a72912770fd8e1c"}, - {file = "ruff-0.1.0-py3-none-win32.whl", hash = "sha256:480bd704e8af1afe3fd444cc52e3c900b936e6ca0baf4fb0281124330b6ceba2"}, - {file = "ruff-0.1.0-py3-none-win_amd64.whl", hash = "sha256:a76ba81860f7ee1f2d5651983f87beb835def94425022dc5f0803108f1b8bfa2"}, - {file = "ruff-0.1.0-py3-none-win_arm64.whl", hash = "sha256:45abdbdab22509a2c6052ecf7050b3f5c7d6b7898dc07e82869401b531d46da4"}, - {file = "ruff-0.1.0.tar.gz", hash = "sha256:ad6b13824714b19c5f8225871cf532afb994470eecb74631cd3500fe817e6b3f"}, + {file = "ruff-0.1.3-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:b46d43d51f7061652eeadb426a9e3caa1e0002470229ab2fc19de8a7b0766901"}, + {file = "ruff-0.1.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:b8afeb9abd26b4029c72adc9921b8363374f4e7edb78385ffaa80278313a15f9"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca3cf365bf32e9ba7e6db3f48a4d3e2c446cd19ebee04f05338bc3910114528b"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4874c165f96c14a00590dcc727a04dca0cfd110334c24b039458c06cf78a672e"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eec2dd31eed114e48ea42dbffc443e9b7221976554a504767ceaee3dd38edeb8"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dc3ec4edb3b73f21b4aa51337e16674c752f1d76a4a543af56d7d04e97769613"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e3de9ed2e39160800281848ff4670e1698037ca039bda7b9274f849258d26ce"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c595193881922cc0556a90f3af99b1c5681f0c552e7a2a189956141d8666fe8"}, + {file = "ruff-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f75e670d529aa2288cd00fc0e9b9287603d95e1536d7a7e0cafe00f75e0dd9d"}, + {file = "ruff-0.1.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:76dd49f6cd945d82d9d4a9a6622c54a994689d8d7b22fa1322983389b4892e20"}, + {file = "ruff-0.1.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:918b454bc4f8874a616f0d725590277c42949431ceb303950e87fef7a7d94cb3"}, + {file = "ruff-0.1.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d8859605e729cd5e53aa38275568dbbdb4fe882d2ea2714c5453b678dca83784"}, + {file = "ruff-0.1.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0b6c55f5ef8d9dd05b230bb6ab80bc4381ecb60ae56db0330f660ea240cb0d4a"}, + {file = "ruff-0.1.3-py3-none-win32.whl", hash = "sha256:3e7afcbdcfbe3399c34e0f6370c30f6e529193c731b885316c5a09c9e4317eef"}, + {file = "ruff-0.1.3-py3-none-win_amd64.whl", hash = "sha256:7a18df6638cec4a5bd75350639b2bb2a2366e01222825562c7346674bdceb7ea"}, + {file = "ruff-0.1.3-py3-none-win_arm64.whl", hash = "sha256:12fd53696c83a194a2db7f9a46337ce06445fb9aa7d25ea6f293cf75b21aca9f"}, + {file = "ruff-0.1.3.tar.gz", hash = "sha256:3ba6145369a151401d5db79f0a47d50e470384d0d89d0d6f7fab0b589ad07c34"}, ] [[package]] name = "s3transfer" -version = "0.6.2" +version = "0.7.0" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.2-py3-none-any.whl", hash = "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084"}, - {file = "s3transfer-0.6.2.tar.gz", hash = "sha256:cab66d3380cca3e70939ef2255d01cd8aece6a4907a9528740f668c4b0611861"}, + {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, + {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, ] [package.dependencies] @@ -8718,32 +8686,37 @@ torch = ["safetensors[numpy]", "torch (>=1.10)"] [[package]] name = "scikit-learn" -version = "1.3.1" +version = "1.3.2" description = "A set of python modules for machine learning and data mining" optional = true python-versions = ">=3.8" files = [ - {file = "scikit-learn-1.3.1.tar.gz", hash = "sha256:1a231cced3ee3fa04756b4a7ab532dc9417acd581a330adff5f2c01ac2831fcf"}, - {file = "scikit_learn-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3153612ff8d36fa4e35ef8b897167119213698ea78f3fd130b4068e6f8d2da5a"}, - {file = "scikit_learn-1.3.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:6bb9490fdb8e7e00f1354621689187bef3cab289c9b869688f805bf724434755"}, - {file = "scikit_learn-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7135a03af71138669f19bc96e7d0cc8081aed4b3565cc3b131135d65fc642ba"}, - {file = "scikit_learn-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d8dee8c1f40eeba49a85fe378bdf70a07bb64aba1a08fda1e0f48d27edfc3e6"}, - {file = "scikit_learn-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:4d379f2b34096105a96bd857b88601dffe7389bd55750f6f29aaa37bc6272eb5"}, - {file = "scikit_learn-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14e8775eba072ab10866a7e0596bc9906873e22c4c370a651223372eb62de180"}, - {file = "scikit_learn-1.3.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:58b0c2490eff8355dc26e884487bf8edaccf2ba48d09b194fb2f3a026dd64f9d"}, - {file = "scikit_learn-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f66eddfda9d45dd6cadcd706b65669ce1df84b8549875691b1f403730bdef217"}, - {file = "scikit_learn-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6448c37741145b241eeac617028ba6ec2119e1339b1385c9720dae31367f2be"}, - {file = "scikit_learn-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c413c2c850241998168bbb3bd1bb59ff03b1195a53864f0b80ab092071af6028"}, - {file = "scikit_learn-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:52b77cc08bd555969ec5150788ed50276f5ef83abb72e6f469c5b91a0009bbca"}, - {file = "scikit_learn-1.3.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a683394bc3f80b7c312c27f9b14ebea7766b1f0a34faf1a2e9158d80e860ec26"}, - {file = "scikit_learn-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15d964d9eb181c79c190d3dbc2fff7338786bf017e9039571418a1d53dab236"}, - {file = "scikit_learn-1.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ce9233cdf0cdcf0858a5849d306490bf6de71fa7603a3835124e386e62f2311"}, - {file = "scikit_learn-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:1ec668ce003a5b3d12d020d2cde0abd64b262ac5f098b5c84cf9657deb9996a8"}, - {file = "scikit_learn-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccbbedae99325628c1d1cbe3916b7ef58a1ce949672d8d39c8b190e10219fd32"}, - {file = "scikit_learn-1.3.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:845f81c7ceb4ea6bac64ab1c9f2ce8bef0a84d0f21f3bece2126adcc213dfecd"}, - {file = "scikit_learn-1.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8454d57a22d856f1fbf3091bd86f9ebd4bff89088819886dc0c72f47a6c30652"}, - {file = "scikit_learn-1.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d993fb70a1d78c9798b8f2f28705bfbfcd546b661f9e2e67aa85f81052b9c53"}, - {file = "scikit_learn-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:66f7bb1fec37d65f4ef85953e1df5d3c98a0f0141d394dcdaead5a6de9170347"}, + {file = "scikit-learn-1.3.2.tar.gz", hash = "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05"}, + {file = "scikit_learn-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1"}, + {file = "scikit_learn-1.3.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a"}, + {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c"}, + {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161"}, + {file = "scikit_learn-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c"}, + {file = "scikit_learn-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66"}, + {file = "scikit_learn-1.3.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157"}, + {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb"}, + {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433"}, + {file = "scikit_learn-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b"}, + {file = "scikit_learn-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028"}, + {file = "scikit_learn-1.3.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5"}, + {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525"}, + {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c"}, + {file = "scikit_learn-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107"}, + {file = "scikit_learn-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93"}, + {file = "scikit_learn-1.3.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073"}, + {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d"}, + {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf"}, + {file = "scikit_learn-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0"}, + {file = "scikit_learn-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03"}, + {file = "scikit_learn-1.3.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e"}, + {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a"}, + {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9"}, + {file = "scikit_learn-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0"}, ] [package.dependencies] @@ -9345,13 +9318,13 @@ mpmath = ">=0.19" [[package]] name = "syrupy" -version = "4.5.0" +version = "4.6.0" description = "Pytest Snapshot Test Utility" optional = false python-versions = ">=3.8.1,<4" files = [ - {file = "syrupy-4.5.0-py3-none-any.whl", hash = "sha256:ea6a237ef374bacebbdb4049f73bf48e3dda76eabd4621a6d104d43077529de6"}, - {file = "syrupy-4.5.0.tar.gz", hash = "sha256:6e01fccb4cd5ad37ce54e8c265cde068fa9c37b7a0946c603c328e8a38a7330d"}, + {file = "syrupy-4.6.0-py3-none-any.whl", hash = "sha256:747aae1bcf3cb3249e33b1e6d81097874d23615982d5686ebe637875b0775a1b"}, + {file = "syrupy-4.6.0.tar.gz", hash = "sha256:231b1f5d00f1f85048ba81676c79448076189c4aef4d33f21ae32f3b4c565a54"}, ] [package.dependencies] @@ -9991,18 +9964,18 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.11.2" +version = "5.12.0" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.11.2-py3-none-any.whl", hash = "sha256:98277f247f18b2c5cabaf4af369187754f4fb0e85911d473f72329db8a7f4fae"}, - {file = "traitlets-5.11.2.tar.gz", hash = "sha256:7564b5bf8d38c40fa45498072bf4dc5e8346eb087bbf1e2ae2d8774f6a0f078e"}, + {file = "traitlets-5.12.0-py3-none-any.whl", hash = "sha256:81539f07f7aebcde2e4b5ab76727f53eabf18ad155c6ed7979a681411602fa47"}, + {file = "traitlets-5.12.0.tar.gz", hash = "sha256:833273bf645d8ce31dcb613c56999e2e055b1ffe6d09168a164bcd91c36d5d35"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.5.1)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "transformers" @@ -10107,13 +10080,13 @@ files = [ [[package]] name = "types-protobuf" -version = "4.24.0.2" +version = "4.24.0.3" description = "Typing stubs for protobuf" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "types-protobuf-4.24.0.2.tar.gz", hash = "sha256:598bb2290b9b0ea65f4f63569a09deaa4475edd7bb0d8589057a38deb0b19f4f"}, - {file = "types_protobuf-4.24.0.2-py3-none-any.whl", hash = "sha256:b86b0deefd1cb1582d355be4fd7a2a807cf49c993d9744d3c9fbe1cbf1e6b044"}, + {file = "types-protobuf-4.24.0.3.tar.gz", hash = "sha256:048ca006a08ac0563ff04a86ddcdda6f8877b024f5ff89ed6180510b017c3a91"}, + {file = "types_protobuf-4.24.0.3-py3-none-any.whl", hash = "sha256:6652be32c647a855cd9c01e6c556ecdc94988188c4de89942ad13e906537aaee"}, ] [[package]] @@ -10165,13 +10138,13 @@ files = [ [[package]] name = "types-redis" -version = "4.6.0.7" +version = "4.6.0.8" description = "Typing stubs for redis" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "types-redis-4.6.0.7.tar.gz", hash = "sha256:28c4153ddb5c9d4f10def44a2454673c361d2d5fc3cd867cf3bb1520f3f59a38"}, - {file = "types_redis-4.6.0.7-py3-none-any.whl", hash = "sha256:05b1bf92879b25df20433fa1af07784a0d7928c616dc2ebf9087618db77ccbd0"}, + {file = "types-redis-4.6.0.8.tar.gz", hash = "sha256:1abb2859bbf9b171a22ef69d1ece0e35ef93e642fba97538497add884ad75b5e"}, + {file = "types_redis-4.6.0.8-py3-none-any.whl", hash = "sha256:4839923b4cce77bbf987290ca83710f8218529eebe1d2c3a0f067416c86847f5"}, ] [package.dependencies] @@ -10417,13 +10390,13 @@ files = [ [[package]] name = "weaviate-client" -version = "3.24.2" +version = "3.25.1" description = "A python native Weaviate client" optional = true python-versions = ">=3.8" files = [ - {file = "weaviate-client-3.24.2.tar.gz", hash = "sha256:6914c48c9a7e5ad0be9399271f9cb85d6f59ab77476c6d4e56a3925bf149edaa"}, - {file = "weaviate_client-3.24.2-py3-none-any.whl", hash = "sha256:bc50ca5fcebcd48de0d00f66700b0cf7c31a97c4cd3d29b4036d77c5d1d9479b"}, + {file = "weaviate-client-3.25.1.tar.gz", hash = "sha256:cfa6435e365bae734d875013124baa14cada7e36af4f2d82def5a15b44374978"}, + {file = "weaviate_client-3.25.1-py3-none-any.whl", hash = "sha256:94680aff46c3ad2748a7c6530c6466c6aee6d03b5b69c0c814f987f2fdefae36"}, ] [package.dependencies] @@ -10478,92 +10451,94 @@ test = ["websockets"] [[package]] name = "websockets" -version = "11.0.3" +version = "12.0" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac"}, - {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d"}, - {file = "websockets-11.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526"}, - {file = "websockets-11.0.3-cp310-cp310-win32.whl", hash = "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69"}, - {file = "websockets-11.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd"}, - {file = "websockets-11.0.3-cp311-cp311-win32.whl", hash = "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c"}, - {file = "websockets-11.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8"}, - {file = "websockets-11.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af"}, - {file = "websockets-11.0.3-cp37-cp37m-win32.whl", hash = "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f"}, - {file = "websockets-11.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788"}, - {file = "websockets-11.0.3-cp38-cp38-win32.whl", hash = "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74"}, - {file = "websockets-11.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311"}, - {file = "websockets-11.0.3-cp39-cp39-win32.whl", hash = "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128"}, - {file = "websockets-11.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602"}, - {file = "websockets-11.0.3-py3-none-any.whl", hash = "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6"}, - {file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, ] [[package]] name = "werkzeug" -version = "3.0.0" +version = "3.0.1" description = "The comprehensive WSGI web application library." optional = true python-versions = ">=3.8" files = [ - {file = "werkzeug-3.0.0-py3-none-any.whl", hash = "sha256:cbb2600f7eabe51dbc0502f58be0b3e1b96b893b05695ea2b35b43d4de2d9962"}, - {file = "werkzeug-3.0.0.tar.gz", hash = "sha256:3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0"}, + {file = "werkzeug-3.0.1-py3-none-any.whl", hash = "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10"}, + {file = "werkzeug-3.0.1.tar.gz", hash = "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc"}, ] [package.dependencies] @@ -10613,13 +10588,13 @@ urllib3 = ">=1.25.3" [[package]] name = "whylogs" -version = "1.2.6" +version = "1.3.11" description = "Profile and monitor your ML data pipeline end-to-end" optional = true python-versions = ">=3.7.1,<4" files = [ - {file = "whylogs-1.2.6-py3-none-any.whl", hash = "sha256:9b71d8468396b303539b69003f93d8f5cdad03ad0112df12a697bf662c1baf34"}, - {file = "whylogs-1.2.6.tar.gz", hash = "sha256:e65ef4e6bbd2bfb7302787d71733f53345c4bc0f6ec9e34481178ff4a867a143"}, + {file = "whylogs-1.3.11-py3-none-any.whl", hash = "sha256:9011b2fc2023974d337633b627955d4ab2f53b796e1fc4a27c7530c3d394a315"}, + {file = "whylogs-1.3.11.tar.gz", hash = "sha256:fa83af0fb84d0868d032d871ce2db83398aea9f3b220c6a5937dd1e03f3d4abb"}, ] [package.dependencies] @@ -10628,18 +10603,20 @@ protobuf = ">=3.19.4" requests = ">=2.27,<3.0" types-requests = ">=2.30.0.0,<3.0.0.0" typing-extensions = {version = ">=3.10", markers = "python_version < \"4\""} -whylabs-client = ">=0.5.1,<1" +whylabs-client = ">=0.5.6,<0.6.0" whylogs-sketching = ">=3.4.1.dev3" [package.extras] -all = ["Pillow (>=9.2.0,<10.0.0)", "boto3 (>=1.22.13,<2.0.0)", "fugue (>=0.8.1,<0.9.0)", "google-cloud-storage (>=2.5.0,<3.0.0)", "ipython", "mlflow-skinny (>=1.26.1,<2.0.0)", "numpy", "numpy (>=1.23.2)", "pandas", "pyarrow (>=8.0.0,<13)", "pybars3 (>=0.9,<0.10)", "pyspark (>=3.0.0,<4.0.0)", "scikit-learn (>=1.0.2,<2.0.0)", "scikit-learn (>=1.1.2,<2)", "scipy (>=1.5)", "scipy (>=1.9.2)"] +all = ["Pillow (>=9.2.0,<10.0.0)", "boto3 (>=1.22.13,<2.0.0)", "faster-fifo (>=1.4.5,<2.0.0)", "fugue (>=0.8.1,<0.9.0)", "google-cloud-storage (>=2.5.0,<3.0.0)", "ipython", "mlflow-skinny (<2.0.1)", "mlflow-skinny (>=2.5.0,<3.0.0)", "numpy", "numpy (>=1.23.2)", "orjson (>=3.8.10,<4.0.0)", "pandas", "pyarrow (>=8.0.0,<13)", "pybars3 (>=0.9,<0.10)", "pyspark (>=3.0.0,<4.0.0)", "scikit-learn (>=1.0.2,<2.0.0)", "scikit-learn (>=1.1.2,<2)", "scipy (>=1.5)", "scipy (>=1.9.2)"] datasets = ["pandas"] docs = ["furo (>=2022.3.4,<2023.0.0)", "ipython_genutils (>=0.2.0,<0.3.0)", "myst-parser[sphinx] (>=0.17.2,<0.18.0)", "nbconvert (>=7.0.0,<8.0.0)", "nbsphinx (>=0.8.9,<0.9.0)", "sphinx", "sphinx-autoapi", "sphinx-autobuild (>=2021.3.14,<2022.0.0)", "sphinx-copybutton (>=0.5.0,<0.6.0)", "sphinx-inline-tabs", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] embeddings = ["numpy", "numpy (>=1.23.2)", "scikit-learn (>=1.0.2,<2.0.0)", "scikit-learn (>=1.1.2,<2)"] fugue = ["fugue (>=0.8.1,<0.9.0)"] gcs = ["google-cloud-storage (>=2.5.0,<3.0.0)"] -image = ["Pillow (>=9.2.0,<10.0.0)"] -mlflow = ["mlflow-skinny (>=1.26.1,<2.0.0)"] +image = ["Pillow (>=9.2.0,<10.0.0)", "numpy", "numpy (>=1.23.2)"] +mlflow = ["mlflow-skinny (<2.0.1)", "mlflow-skinny (>=2.5.0,<3.0.0)"] +proc = ["faster-fifo (>=1.4.5,<2.0.0)", "orjson (>=3.8.10,<4.0.0)", "pandas"] +proc-mp = ["orjson (>=3.8.10,<4.0.0)", "pandas"] s3 = ["boto3 (>=1.22.13,<2.0.0)"] spark = ["pyarrow (>=8.0.0,<13)", "pyspark (>=3.0.0,<4.0.0)"] viz = ["Pillow (>=9.2.0,<10.0.0)", "ipython", "numpy", "numpy (>=1.23.2)", "pybars3 (>=0.9,<0.10)", "scipy (>=1.5)", "scipy (>=1.9.2)"] @@ -10858,6 +10835,29 @@ orjson = ">=3.8.1,<4.0.0" python-dotenv = ">=0.21,<2.0" requests = ">=2.28.1,<3.0.0" +[[package]] +name = "xformers" +version = "0.0.16" +description = "XFormers: A collection of composable Transformer building blocks." +optional = true +python-versions = ">=3.7" +files = [ + {file = "xformers-0.0.16-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:a64a77663258b696bef3986488cd7df4f35e320355a7fe0bf86e8eff41726f0e"}, + {file = "xformers-0.0.16-cp310-cp310-win_amd64.whl", hash = "sha256:302294fa8ae34c2a4602fd13ef7aceb71111e02b4e373c6366580a5159fec8e8"}, + {file = "xformers-0.0.16-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:4f4ff62e7a8d66d6ab96c70f7f6c75e0e48a22e0484cf03b4506312c5e6e1806"}, + {file = "xformers-0.0.16-cp37-cp37m-win_amd64.whl", hash = "sha256:e7263225564593abfbdfa3638fa3171be7214787bf47c5f476beb48369353d78"}, + {file = "xformers-0.0.16-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:a8b34e99b7cd6928a446bb02fd54665bfe8e7c3ec796c41a739b656e7c5f2473"}, + {file = "xformers-0.0.16-cp38-cp38-win_amd64.whl", hash = "sha256:07efbf5188fb1ef05cd16c93e4a6d9ac4992a1e5296fd432aeeb151ea24b40d0"}, + {file = "xformers-0.0.16-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:d1538e14fe7759ddc3c7a51c94a4d7a9395d63e7b9baa5e14f1d4c0b04242c12"}, + {file = "xformers-0.0.16-cp39-cp39-win_amd64.whl", hash = "sha256:ca67b6f25de878e4c816849cc7e6fa46bb675a429f151b1b66e4b10769ba7173"}, + {file = "xformers-0.0.16.tar.gz", hash = "sha256:92c7f0556a68f4486492691b3f567140ee192b563d904185b6669b1f8bb8ae53"}, +] + +[package.dependencies] +numpy = "*" +pyre-extensions = "0.0.23" +torch = "1.13.1" + [[package]] name = "xmltodict" version = "0.13.0" @@ -11030,7 +11030,7 @@ cffi = {version = ">=1.11", markers = "platform_python_implementation == \"PyPy\ cffi = ["cffi (>=1.11)"] [extras] -all = ["O365", "aleph-alpha-client", "amadeus", "arxiv", "atlassian-python-api", "awadb", "azure-ai-formrecognizer", "azure-ai-vision", "azure-cognitiveservices-speech", "azure-cosmos", "azure-identity", "beautifulsoup4", "clarifai", "clickhouse-connect", "cohere", "deeplake", "docarray", "duckduckgo-search", "elasticsearch", "esprima", "faiss-cpu", "google-api-python-client", "google-auth", "google-search-results", "gptcache", "html2text", "huggingface_hub", "jinja2", "jq", "lancedb", "langkit", "lark", "libdeeplake", "librosa", "lxml", "manifest-ml", "marqo", "momento", "nebula3-python", "neo4j", "networkx", "nlpcloud", "nltk", "nomic", "openai", "openlm", "opensearch-py", "pdfminer-six", "pexpect", "pgvector", "pinecone-client", "pinecone-text", "psycopg2-binary", "pymongo", "pyowm", "pypdf", "pytesseract", "python-arango", "pyvespa", "qdrant-client", "rdflib", "redis", "requests-toolbelt", "sentence-transformers", "singlestoredb", "tensorflow-text", "tigrisdb", "tiktoken", "torch", "transformers", "weaviate-client", "wikipedia", "wolframalpha"] +all = ["O365", "aleph-alpha-client", "amadeus", "arxiv", "atlassian-python-api", "awadb", "azure-ai-formrecognizer", "azure-ai-vision", "azure-cognitiveservices-speech", "azure-cosmos", "azure-identity", "beautifulsoup4", "clarifai", "clickhouse-connect", "cohere", "deeplake", "docarray", "duckduckgo-search", "elasticsearch", "esprima", "faiss-cpu", "google-api-python-client", "google-auth", "google-search-results", "gptcache", "html2text", "huggingface_hub", "jinja2", "jq", "lancedb", "langkit", "lark", "librosa", "lxml", "manifest-ml", "marqo", "momento", "nebula3-python", "neo4j", "networkx", "nlpcloud", "nltk", "nomic", "openai", "openlm", "opensearch-py", "pdfminer-six", "pexpect", "pgvector", "pinecone-client", "pinecone-text", "psycopg2-binary", "pymongo", "pyowm", "pypdf", "pytesseract", "python-arango", "pyvespa", "qdrant-client", "rdflib", "redis", "requests-toolbelt", "sentence-transformers", "singlestoredb", "tensorflow-text", "tigrisdb", "tiktoken", "torch", "transformers", "weaviate-client", "wikipedia", "wolframalpha"] azure = ["azure-ai-formrecognizer", "azure-ai-vision", "azure-cognitiveservices-speech", "azure-core", "azure-cosmos", "azure-identity", "azure-search-documents", "openai"] clarifai = ["clarifai"] cli = ["typer"] @@ -11047,4 +11047,4 @@ text-helpers = ["chardet"] [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<4.0" -content-hash = "9c51b76da3193141637264aee28a68f6102a719730c1cb20943b725ef69ca874" +content-hash = "1da427450c9a9c6b20082b98e6a1371d9cc0fb48da2e45831070587c27449b40" diff --git a/libs/langchain/pyproject.toml b/libs/langchain/pyproject.toml index 740997255c..21e1928963 100644 --- a/libs/langchain/pyproject.toml +++ b/libs/langchain/pyproject.toml @@ -57,8 +57,7 @@ arxiv = {version = "^1.4", optional = true} pypdf = {version = "^3.4.0", optional = true} networkx = {version=">=2.6.3, <4", optional = true} aleph-alpha-client = {version="^2.15.0", optional = true} -deeplake = {version = "^3.6.8", optional = true} -libdeeplake = {version = "^0.0.60", optional = true} +deeplake = {version = "^3.8.3", optional = true} pgvector = {version = "^0.1.6", optional = true} psycopg2-binary = {version = "^2.9.5", optional = true} pyowm = {version = "^3.3.0", optional = true} @@ -268,7 +267,6 @@ all = [ "nomic", "aleph-alpha-client", "deeplake", - "libdeeplake", "pgvector", "psycopg2-binary", "pyowm",