From e8c388261a862246306fcec82095275f0a522d50 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Tue, 16 Apr 2024 15:03:01 -0400 Subject: [PATCH 01/11] uploading rag demo Signed-off-by: Francisco Javier Arceo --- module_4_rag/Dockerfile | 37 +++++++++ module_4_rag/README.md | 64 +++++++++++++++ module_4_rag/app.py | 99 +++++++++++++++++++++++ module_4_rag/batch_score_documents.py | 45 +++++++++++ module_4_rag/docker-compose.yml | 14 ++++ module_4_rag/generate_random_questions.py | 40 +++++++++ module_4_rag/pull_states.py | 85 +++++++++++++++++++ module_4_rag/pyproject.toml | 21 +++++ module_4_rag/run.py | 10 +++ 9 files changed, 415 insertions(+) create mode 100644 module_4_rag/Dockerfile create mode 100644 module_4_rag/README.md create mode 100644 module_4_rag/app.py create mode 100644 module_4_rag/batch_score_documents.py create mode 100644 module_4_rag/docker-compose.yml create mode 100644 module_4_rag/generate_random_questions.py create mode 100644 module_4_rag/pull_states.py create mode 100644 module_4_rag/pyproject.toml create mode 100644 module_4_rag/run.py diff --git a/module_4_rag/Dockerfile b/module_4_rag/Dockerfile new file mode 100644 index 0000000..4a1ef29 --- /dev/null +++ b/module_4_rag/Dockerfile @@ -0,0 +1,37 @@ +FROM python:3.9 + +# Set environment varibles +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +# Set work directory +WORKDIR /code + + +# Install dependencies +RUN LIBMEMCACHED=/opt/local +RUN apt-get update && apt-get install -y \ + libmemcached11 \ + libmemcachedutil2 \ + libmemcached-dev \ + libz-dev \ + curl \ + gettext + +ENV PYTHONHASHSEED=random \ + PIP_NO_CACHE_DIR=off \ + PIP_DISABLE_PIP_VERSION_CHECK=on \ + PIP_DEFAULT_TIMEOUT=100 \ + # Poetry's configuration: \ + POETRY_NO_INTERACTION=1 \ + POETRY_VIRTUALENVS_CREATE=false \ + POETRY_CACHE_DIR='/var/cache/pypoetry' \ + POETRY_HOME='/usr/local' \ + POETRY_VERSION=1.4.1 + +RUN curl -sSL https://install.python-poetry.org | python3 - --version $POETRY_VERSION + +COPY pyproject.toml poetry.lock /code/ +RUN poetry install --no-interaction --no-ansi --no-root + +COPY . ./code/ diff --git a/module_4_rag/README.md b/module_4_rag/README.md new file mode 100644 index 0000000..816629a --- /dev/null +++ b/module_4_rag/README.md @@ -0,0 +1,64 @@ +This is a demo to show how you can use Feast to do RAG + +## Installation via PyEnv and Poetry + +This demo assumes you have Pyenv (2.3.10) and Poetry (1.4.1) installed on your machine as well as Python 3.9. + +```bash +pyenv local 3.9 +poetry shell +poetry install +``` +## Setting up the data and Feast + +To fetch the data simply run +```bash +python pull_states.py +``` +Which will output a file called `city_wikipedia_summaries.csv`. + +Then run +```bash +python batch_score_documents.py +``` + +# Overview + +The overview is relatively simple, the goal is to define an architecture +to support the following: + +```mermaid +flowchart TD; + A[Pull Data] --> B[Batch Score Embeddings]; + B[Batch Score Embeddings] --> C[Materialize Online]; + C[Materialize Online] --> D[Retrieval Augmented Generation]; + D[Retrieval Augmented Generation] --> E[Store User Interaction]; + E[Store User Interaction] --> F[Update Training Labels]; + F[Update Training Labels] --> H[Fine Tuning]; + H[Fine Tuning] -. Backpropagate .-> B[Batch Score Embeddings]; +``` + + +A simple example of the user experience: + +``` +Q: Can you tell me about Chicago? +A: Here's some wikipedia facts about Chicago... +``` + +# Limitations +A common issue with RAG and LLMs is hallucination. There are two common +approaches: + +1. Prompt engineering +- This approach is the most obvious but is susceptible to prompt injection + +2. Build a Classifier to return the "I don't know" response +- This approach is less obvious, requires another model, more training data, +and fine tuning + +We can, in fact, use both approaches to further attempt to minimize the +likelihood of prompt injection. + +This demo will display both. + diff --git a/module_4_rag/app.py b/module_4_rag/app.py new file mode 100644 index 0000000..3dbe591 --- /dev/null +++ b/module_4_rag/app.py @@ -0,0 +1,99 @@ +from flask import ( + Flask, + jsonify, + request, + render_template, +) +from flasgger import Swagger +from datetime import datetime +from get_features import ( + get_onboarding_features, + get_onboarding_score, + get_daily_features, + get_daily_score, +) +from ml import make_risk_decision + +app = Flask(__name__) +swagger = Swagger(app) + + +@app.route("/") +def onboarding_page(): + return render_template("index.html") + + +@app.route("/home") +def home_page(): + return render_template("home.html") + + +@app.route("/onboarding-risk-features/", methods=["POST"]) +def onboarding_features(): + """Example endpoint returning features by id + This is using docstrings for specifications. + --- + parameters: + - name: state + type: string + in: query + required: true + default: NJ + + - name: ssn + type: string + in: query + required: true + default: 123-45-6789 + + - name: dl + type: string + in: query + required: true + default: some-dl-number + + - name: dob + type: string + in: query + required: true + default: 12-23-2000 + responses: + 200: + description: A JSON of features + schema: + id: OnboardingFeatures + properties: + is_gt_18_years_old: + type: array + items: + schema: + id: value + type: number + is_valid_state: + type: array + items: + schema: + id: value + type: number + is_previously_seen_ssn: + type: array + items: + schema: + id: value + type: number + is_previously_seen_dl: + type: array + items: + schema: + id: value + type: number + """ + r = request.args + feature_vector = get_onboarding_features( + r.get("state"), r.get("ssn"), r.get("dl"), r.get("dob") + ) + return jsonify(feature_vector) + + +if __name__ == "__main__": + app.run(debug=True) diff --git a/module_4_rag/batch_score_documents.py b/module_4_rag/batch_score_documents.py new file mode 100644 index 0000000..53a45c4 --- /dev/null +++ b/module_4_rag/batch_score_documents.py @@ -0,0 +1,45 @@ +import os +import pandas as pd +from transformers import AutoTokenizer, AutoModel +import torch +import torch.nn.functional as F + +INPUT_FILENAME = "city_wikipedia_summaries.csv" +EXPORT_FILENAME = "city_wikipedia_summaries_with_embeddings.csv" +TOKENIZER = 'sentence-transformers/all-MiniLM-L6-v2' +MODEL = 'sentence-transformers/all-MiniLM-L6-v2' + +def mean_pooling(model_output, attention_mask): + token_embeddings = model_output[0] #First element of model_output contains all token embeddings + input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() + return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9) + +def run_model(sentences, tokenizer, model): + encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt') + # Compute token embeddings + with torch.no_grad(): + model_output = model(**encoded_input) + + sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask']) + sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1) + return sentence_embeddings + +def score_data() -> None: + if EXPORT_FILENAME not in os.listdir(): + print("scored data not found...generating embeddings...") + df = pd.read_csv(INPUT_FILENAME) + tokenizer = AutoTokenizer.from_pretrained(TOKENIZER) + model = AutoModel.from_pretrained(MODEL) + embeddings = run_model(df['Wiki Summary'].tolist(), tokenizer, model) + print(embeddings) + print('shape = ', df.shape) + df['Embeddings'] = list(embeddings.detach().cpu().numpy()) + print("embeddings generated...") + print(df.head()) + df.to_csv(EXPORT_FILENAME, index=False) + print("...data exported. job complete") + else: + print("scored data found...skipping generating embeddings.") + +if __name__ == '__main__': + score_data() diff --git a/module_4_rag/docker-compose.yml b/module_4_rag/docker-compose.yml new file mode 100644 index 0000000..038554f --- /dev/null +++ b/module_4_rag/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3.9' + +services: + web: + env_file: + - .env + build: . + command: + - /bin/bash + - -c + - python3 /code/run.py + + volumes: + - .:/code diff --git a/module_4_rag/generate_random_questions.py b/module_4_rag/generate_random_questions.py new file mode 100644 index 0000000..ac241f3 --- /dev/null +++ b/module_4_rag/generate_random_questions.py @@ -0,0 +1,40 @@ +import csv +import random + +topics = ["science", "history", "technology", "mathematics", "geography", "literature", "sports", "art", "music", "cinema"] + +# Define a pattern for generating questions +question_patterns = [ + "What are the key principles of {}?", + "Who are the most influential figures in {}?", + "How has {} evolved over the years?", + "What are some common misconceptions about {}?", + "Can you explain the theory of {}?", + "What role does {} play in modern society?", + "How does {} affect our daily lives?", + "What are the future prospects of {}?", + "What are the major challenges in {} today?", + "How can one get started with {}?" +] + +# Generate a list of 50 random questions +questions = [] +for _ in range(50): + topic = random.choice(topics) + pattern = random.choice(question_patterns) + question = pattern.format(topic) + questions.append([question]) + + +def main(): + # Define the file path + file_path = './random_questions.csv' + + # Write the questions to a CSV file + with open(file_path, 'w', newline='') as file: + writer = csv.writer(file) + writer.writerow(["Question"]) # Writing header + writer.writerows(questions) + +if __name__ == "__main__": + main() diff --git a/module_4_rag/pull_states.py b/module_4_rag/pull_states.py new file mode 100644 index 0000000..f356d7e --- /dev/null +++ b/module_4_rag/pull_states.py @@ -0,0 +1,85 @@ +import os +from typing import Dict, List +import wikipedia as wiki +import pandas as pd + +EXPORT_FILENAME = "city_wikipedia_summaries.csv" +CITIES = [ + "New York, New York", + "Los Angeles, California", + "Chicago, Illinois", + "Houston, Texas", + "Phoenix, Arizona", + "Philadelphia, Pennsylvania", + "San Antonio, Texas", + "San Diego, California", + "Dallas, Texas", + "San Jose, California", + "Austin, Texas", + "Jacksonville, Florida", + "Fort Worth, Texas", + "Columbus, Ohio", + "Charlotte, North Carolina", + "San Francisco, California", + "Indianapolis, Indiana", + "Seattle, Washington", + "Denver, Colorado", + "Washington, D.C.", + "Boston, Massachusetts", + "El Paso, Texas", + "Nashville, Tennessee", + "Detroit, Michigan", + "Oklahoma City, Oklahoma", + "Portland, Oregon", + "Las Vegas, Nevada", + "Memphis, Tennessee", + "Louisville, Kentucky", + "Baltimore, Maryland", + "Milwaukee, Wisconsin", + "Albuquerque, New Mexico", + "Tucson, Arizona", + "Fresno, California", + "Mesa, Arizona", + "Sacramento, California", + "Atlanta, Georgia", + "Kansas City, Missouri", + "Colorado Springs, Colorado", + "Miami, Florida", + "Raleigh, North Carolina", + "Omaha, Nebraska", + "Long Beach, California", + "Virginia Beach, Virginia", + "Oakland, California", + "Minneapolis, Minnesota", + "Tulsa, Oklahoma", + "Arlington, Texas", + "Tampa, Florida", + "New Orleans, Louisiana" +] + +def get_wikipedia_summary(cities: List[str]) -> Dict[str, str]: + city_summaries = {} + for city in cities: + try: + city_summaries[city] = wiki.summary(city) + except: + print(f"error retrieving {city}") + + return city_summaries + + +def write_data(output_dict: Dict[str, str]) -> None: + df = pd.DataFrame([output_dict]).T.reset_index() + df.columns = ['State', 'Wiki Summary'] + df.to_csv(EXPORT_FILENAME, index=False) + +def pull_state_data() -> None: + if EXPORT_FILENAME not in os.listdir(): + print("data not found pullling wikipedia state summaries...") + city_summary_output = get_wikipedia_summary(CITIES) + write_data(city_summary_output) + else: + print("data already present...skipping download") + +if __name__ == "__main__": + pull_state_data() diff --git a/module_4_rag/pyproject.toml b/module_4_rag/pyproject.toml new file mode 100644 index 0000000..a305ece --- /dev/null +++ b/module_4_rag/pyproject.toml @@ -0,0 +1,21 @@ +[tool.poetry] +name = "feast-rag" +version = "0.1.0" +description = "a demo using feast to do Retrieval Augmented Generation (RAG)" +authors = ["franciscojavierarceo"] +readme = "README.md" +packages = [{include = "feast_rag"}] + +[tool.poetry.dependencies] +python = "^3.9" +feast = "^0.35.0" +torch = "^2.2.0" +flasgger = "^0.9.7.1" +wikipedia = "^1.4.0" +lxml = "^5.1.0" +sentence-transformers = "^2.3.1" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/module_4_rag/run.py b/module_4_rag/run.py new file mode 100644 index 0000000..01035d4 --- /dev/null +++ b/module_4_rag/run.py @@ -0,0 +1,10 @@ +import os +from pull_states import pull_state_data +from batch_score_documents import score_data + +def main(): + pull_state_data() + score_data() + +if __name__ == '__main__': + main() From c3a0117c6f2ebf40c9cac0d13c5eba1f4e2bac96 Mon Sep 17 00:00:00 2001 From: cmuhao Date: Tue, 16 Apr 2024 22:22:59 -0700 Subject: [PATCH 02/11] add notebook Signed-off-by: cmuhao --- .gitignore | 3 +- module_4_rag/.gitignore | 1 + module_4_rag/.python-version | 1 + module_4_rag/batch_score_documents.py | 8 +- module_4_rag/feature_repo/entities.py | 3 + module_4_rag/feature_repo/feature_store.yaml | 20 + module_4_rag/feature_repo/features.py | 28 + module_4_rag/feature_repo/module_1.ipynb | 354 ++ module_4_rag/poetry.lock | 3370 ++++++++++++++++++ module_4_rag/pyproject.toml | 2 +- 10 files changed, 3785 insertions(+), 5 deletions(-) create mode 100644 module_4_rag/.gitignore create mode 100644 module_4_rag/.python-version create mode 100644 module_4_rag/feature_repo/entities.py create mode 100644 module_4_rag/feature_repo/feature_store.yaml create mode 100644 module_4_rag/feature_repo/features.py create mode 100644 module_4_rag/feature_repo/module_1.ipynb create mode 100644 module_4_rag/poetry.lock diff --git a/.gitignore b/.gitignore index 2853b55..ad641bf 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ terraform.tfstate.backup .vscode/* **/derby.log **/metastore_db/* -.env \ No newline at end of file +.env +.idea \ No newline at end of file diff --git a/module_4_rag/.gitignore b/module_4_rag/.gitignore new file mode 100644 index 0000000..07f43b8 --- /dev/null +++ b/module_4_rag/.gitignore @@ -0,0 +1 @@ +data/* \ No newline at end of file diff --git a/module_4_rag/.python-version b/module_4_rag/.python-version new file mode 100644 index 0000000..bd28b9c --- /dev/null +++ b/module_4_rag/.python-version @@ -0,0 +1 @@ +3.9 diff --git a/module_4_rag/batch_score_documents.py b/module_4_rag/batch_score_documents.py index 53a45c4..996d933 100644 --- a/module_4_rag/batch_score_documents.py +++ b/module_4_rag/batch_score_documents.py @@ -4,8 +4,8 @@ import torch import torch.nn.functional as F -INPUT_FILENAME = "city_wikipedia_summaries.csv" -EXPORT_FILENAME = "city_wikipedia_summaries_with_embeddings.csv" +INPUT_FILENAME = "./data/city_wikipedia_summaries.csv" +EXPORT_FILENAME = "./data/city_wikipedia_summaries_with_embeddings.parquet" TOKENIZER = 'sentence-transformers/all-MiniLM-L6-v2' MODEL = 'sentence-transformers/all-MiniLM-L6-v2' @@ -35,8 +35,10 @@ def score_data() -> None: print('shape = ', df.shape) df['Embeddings'] = list(embeddings.detach().cpu().numpy()) print("embeddings generated...") + df['event_timestamp'] = pd.to_datetime('today') + df["item_id"] = df.index print(df.head()) - df.to_csv(EXPORT_FILENAME, index=False) + df.to_parquet(EXPORT_FILENAME, index=False) print("...data exported. job complete") else: print("scored data found...skipping generating embeddings.") diff --git a/module_4_rag/feature_repo/entities.py b/module_4_rag/feature_repo/entities.py new file mode 100644 index 0000000..7d2797e --- /dev/null +++ b/module_4_rag/feature_repo/entities.py @@ -0,0 +1,3 @@ +from feast import Entity + +item = Entity(name="item_id") diff --git a/module_4_rag/feature_repo/feature_store.yaml b/module_4_rag/feature_repo/feature_store.yaml new file mode 100644 index 0000000..709f901 --- /dev/null +++ b/module_4_rag/feature_repo/feature_store.yaml @@ -0,0 +1,20 @@ +project: feast_demo_local +provider: local +registry: + registry_type: sql + path: postgresql://@localhost:5432/feast +online_store: + type: postgres + pgvector_enabled: true + vector_len: 384 + host: 127.0.0.1 + port: 5432 + database: feast + user: "" + password: "" + + +offline_store: + type: file +entity_key_serialization_version: 2 + diff --git a/module_4_rag/feature_repo/features.py b/module_4_rag/feature_repo/features.py new file mode 100644 index 0000000..37ff6ff --- /dev/null +++ b/module_4_rag/feature_repo/features.py @@ -0,0 +1,28 @@ +from datetime import timedelta + +from feast import ( + FeatureView, + Field, FileSource, +) +from feast.data_format import ParquetFormat +from feast.types import Float32, Array +from entities import item + + +parquet_file_path = "../data/city_wikipedia_summaries_with_embeddings.parquet" + +source = FileSource( + file_format=ParquetFormat(), + path=parquet_file_path, + timestamp_field="event_timestamp", +) + +city_embeddings_feature_view = FeatureView( + name="city_embeddings", + entities=[item], + schema=[ + Field(name="Embeddings", dtype=Array(Float32)), + ], + source=source, + ttl=timedelta(hours=2), +) diff --git a/module_4_rag/feature_repo/module_1.ipynb b/module_4_rag/feature_repo/module_1.ipynb new file mode 100644 index 0000000..a2c12f2 --- /dev/null +++ b/module_4_rag/feature_repo/module_1.ipynb @@ -0,0 +1,354 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Module 1: Use Postgres (Pgvector) vector database as an online store for retrieving documents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Overview\n", + "In this notebook, we explore how to use Feast to retrieve documents from a Postgres (Pgvector) vector database. We will use the `city_embeddings` feature table that we created in the previous notebook. We will use the `retrieve_online_documents` method to retrieve the top-k documents that are closest to the query vector.\n", + "\n", + "If you haven't already, look at the [README](../README.md) for setup instructions prior to starting this notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Setup the feature store" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Apply feature repository\n", + "We first run `feast apply` to register the data sources + features and setup Redis." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\r\n", + " warnings.warn(\r\n", + "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \r\n", + "In a future release, Dask DataFrame will use a new implementation that\r\n", + "contains several improvements including a logical query planning.\r\n", + "The user-facing DataFrame API will remain unchanged.\r\n", + "\r\n", + "The new implementation is already available and can be enabled by\r\n", + "installing the dask-expr library:\r\n", + "\r\n", + " $ pip install dask-expr\r\n", + "\r\n", + "and turning the query planning option on:\r\n", + "\r\n", + " >>> import dask\r\n", + " >>> dask.config.set({'dataframe.query-planning': True})\r\n", + " >>> import dask.dataframe as dd\r\n", + "\r\n", + "API documentation for the new implementation is available at\r\n", + "https://docs.dask.org/en/stable/dask-expr-api.html\r\n", + "\r\n", + "Any feedback can be reported on the Dask issue tracker\r\n", + "https://github.com/dask/dask/issues \r\n", + "\r\n", + "To disable this warning in the future, set dask config:\r\n", + "\r\n", + " # via Python\r\n", + " >>> dask.config.set({'dataframe.query-planning-warning': False})\r\n", + "\r\n", + " # via CLI\r\n", + " dask config set dataframe.query-planning-warning False\r\n", + "\r\n", + "\r\n", + " import dask.dataframe as dd\r\n", + "Deploying infrastructure for \u001B[1m\u001B[32mcity_embeddings\u001B[0m\r\n" + ] + } + ], + "source": [ + "!feast apply" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# 2. Materialize training data\n", + "The datasets are prepared in the data directory. You can get them locally by running the commands in README.md. We will materialize the training data into the online store." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\r\n", + " warnings.warn(\r\n", + "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \r\n", + "In a future release, Dask DataFrame will use a new implementation that\r\n", + "contains several improvements including a logical query planning.\r\n", + "The user-facing DataFrame API will remain unchanged.\r\n", + "\r\n", + "The new implementation is already available and can be enabled by\r\n", + "installing the dask-expr library:\r\n", + "\r\n", + " $ pip install dask-expr\r\n", + "\r\n", + "and turning the query planning option on:\r\n", + "\r\n", + " >>> import dask\r\n", + " >>> dask.config.set({'dataframe.query-planning': True})\r\n", + " >>> import dask.dataframe as dd\r\n", + "\r\n", + "API documentation for the new implementation is available at\r\n", + "https://docs.dask.org/en/stable/dask-expr-api.html\r\n", + "\r\n", + "Any feedback can be reported on the Dask issue tracker\r\n", + "https://github.com/dask/dask/issues \r\n", + "\r\n", + "To disable this warning in the future, set dask config:\r\n", + "\r\n", + " # via Python\r\n", + " >>> dask.config.set({'dataframe.query-planning-warning': False})\r\n", + "\r\n", + " # via CLI\r\n", + " dask config set dataframe.query-planning-warning False\r\n", + "\r\n", + "\r\n", + " import dask.dataframe as dd\r\n", + "Materializing \u001B[1m\u001B[32m1\u001B[0m feature views from \u001B[1m\u001B[32m2024-03-31 17:00:00-07:00\u001B[0m to \u001B[1m\u001B[32m2024-04-16 17:00:00-07:00\u001B[0m into the \u001B[1m\u001B[32mpostgres\u001B[0m online store.\r\n", + "\r\n", + "\u001B[1m\u001B[32mcity_embeddings\u001B[0m:\r\n", + "100%|██████████████████████████████████████████████████████████████| 49/49 [00:00<00:00, 956.19it/s]\r\n" + ] + } + ], + "source": [ + "!feast materialize 2024-04-01T00:00:00 2024-04-17T00:00:00" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we instantiate a Feast `FeatureStore` object to push data to" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \n", + "In a future release, Dask DataFrame will use a new implementation that\n", + "contains several improvements including a logical query planning.\n", + "The user-facing DataFrame API will remain unchanged.\n", + "\n", + "The new implementation is already available and can be enabled by\n", + "installing the dask-expr library:\n", + "\n", + " $ pip install dask-expr\n", + "\n", + "and turning the query planning option on:\n", + "\n", + " >>> import dask\n", + " >>> dask.config.set({'dataframe.query-planning': True})\n", + " >>> import dask.dataframe as dd\n", + "\n", + "API documentation for the new implementation is available at\n", + "https://docs.dask.org/en/stable/dask-expr-api.html\n", + "\n", + "Any feedback can be reported on the Dask issue tracker\n", + "https://github.com/dask/dask/issues \n", + "\n", + "To disable this warning in the future, set dask config:\n", + "\n", + " # via Python\n", + " >>> dask.config.set({'dataframe.query-planning-warning': False})\n", + "\n", + " # via CLI\n", + " dask config set dataframe.query-planning-warning False\n", + "\n", + "\n", + " import dask.dataframe as dd\n" + ] + } + ], + "source": [ + "from feast import FeatureStore\n", + "store = FeatureStore(repo_path=\".\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Prepare a query vector" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "from batch_score_documents import run_model, TOKENIZER, MODEL\n", + "from transformers import AutoTokenizer, AutoModel" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.07801833748817444, -0.02972417138516903, 0.012690403498709202, 0.08342994004487991, -0.07765800505876541, 0.019601989537477493, -0.015240228734910488, -0.008848312310874462, -0.040954213589429855, 0.0025382512249052525, 0.033096734434366226, -0.046222101897001266, 0.05860760435461998, -0.0568450428545475, -0.05276476591825485, 0.0008733967551961541, 0.0573134645819664, -0.05047149211168289, 0.1344185769557953, -0.07026461511850357, -0.012536157853901386, 0.0014152592048048973, 0.03534318506717682, 0.024096962064504623, 0.05246112868189812, 0.020924478769302368, 0.025234023109078407, 0.0519547164440155, -0.039378199726343155, -0.028298156335949898, -0.02180365100502968, 0.04103993624448776, 0.07427085936069489, -0.05584770813584328, -0.0056844125501811504, -0.019990745931863785, 0.030951738357543945, -0.05062446370720863, 0.014741722494363785, 0.04260324314236641, -0.042490728199481964, -0.03377283364534378, 0.04507656395435333, 0.03705034777522087, -0.019746845588088036, -0.056894805282354355, -0.009197551757097244, 0.0432242825627327, 0.039562687277793884, 0.009903769008815289, 0.01241956278681755, 0.10459619760513306, -0.05103137716650963, 0.06966476887464523, 0.07505859434604645, -0.04240266978740692, 0.01701846532523632, -0.03750495985150337, -0.054746296256780624, 0.0182594396173954, -0.012896361760795116, 0.04274599254131317, -0.019398674368858337, 0.009013266302645206, 0.014471234753727913, 0.06649964302778244, 0.008245548233389854, -0.028129680082201958, 0.003965297248214483, -0.07583525031805038, 0.08911711722612381, -0.0015677005285397172, -0.02182438038289547, 0.009041466750204563, 0.09342417120933533, -0.0706704705953598, -6.411851791199297e-05, -0.008567560464143753, 0.007213858887553215, 0.017243850976228714, -0.007712843827903271, -0.014170649461448193, -0.06195932626724243, 0.0028950050473213196, -0.08561848104000092, -0.006338762119412422, 0.021296678110957146, 0.053037408739328384, -0.001364336465485394, -0.002476662164554, -0.007682856172323227, 0.08198735862970352, -0.06873174756765366, -0.03858479857444763, -0.049135707318782806, 0.06852905452251434, -0.06103356555104256, -0.036411698907613754, -0.006557854823768139, 0.03009471669793129, 0.002019936917349696, -0.00010870185360545292, 0.07710562646389008, 0.025387680158019066, 0.0009156420128419995, -0.04377828165888786, 0.01065537054091692, 0.007469665724784136, -0.03740379959344864, -0.014080684632062912, 0.05310516804456711, -0.06749620288610458, -0.053242605179548264, 0.08061722666025162, 0.02061639353632927, 0.0001176815276267007, 0.06245463341474533, 0.016253599897027016, 0.052639469504356384, -0.024744976311922073, -0.030349019914865494, -0.04416344314813614, -0.0769074410200119, 0.08859003335237503, 0.024769281968474388, 0.014561351388692856, -0.06356833875179291, -5.705649377509759e-33, -0.06456535309553146, -0.1016070544719696, 0.06309573352336884, 0.07219024002552032, -0.09207630157470703, -0.049228034913539886, 0.021137187257409096, -0.10578685253858566, -0.05286998301744461, -0.05111454054713249, 0.0469074510037899, -0.06117412820458412, 0.0339399017393589, 0.0004974030307494104, 0.10590977221727371, -0.044354259967803955, -0.06721671670675278, 0.06536784023046494, -0.09154384583234787, -0.048457901924848557, 0.029953187331557274, 0.08078416436910629, -0.00024029790074564517, -0.0902462974190712, -0.058329153805971146, 0.007747629191726446, -0.01003243587911129, -0.03624315559864044, 0.03419674187898636, -0.005228803958743811, 0.015385909005999565, -0.016559993848204613, 0.07591874897480011, 0.03000662662088871, 0.035483840852975845, 0.04152686148881912, 0.04580167308449745, 0.012906593270599842, 0.00046234589535743, 0.062181223183870316, -0.09973206371068954, -0.00535804545506835, 0.024861454963684082, 0.05790933594107628, 0.030130719766020775, 0.0012853712541982532, -0.013569572940468788, -0.011862647719681263, -0.04452794790267944, -0.015595197677612305, 0.03933044150471687, -0.03277968987822533, -0.027693554759025574, 0.020017970353364944, 0.029961641877889633, 0.05409591272473335, 0.008051865734159946, -0.03742986544966698, 0.04847348481416702, 0.08966079354286194, -0.08925940841436386, 0.08563001453876495, 0.026953527703881264, -0.017407136037945747, 0.07889477163553238, -0.00330939469859004, 0.01642327941954136, 0.044870372861623764, 0.038156554102897644, 0.09313244372606277, 0.03933331370353699, 0.015708137303590775, 0.033201929181814194, 0.0066472371108829975, -0.01334573794156313, 0.07778702676296234, 0.07326165586709976, 0.04715342819690704, -0.011854764074087143, 0.048978861421346664, -0.04906925931572914, -0.047365352511405945, -0.057076893746852875, 0.027544574812054634, 0.09837957471609116, 0.013657073490321636, -0.03188484162092209, -0.03604546934366226, 0.016496896743774414, 0.00464057270437479, -0.011817664839327335, 0.05207153037190437, 0.026201622560620308, -0.007980862632393837, -0.06751339882612228, 3.4811626024548785e-33, -0.024179214611649513, -0.03442179411649704, 0.036609068512916565, -0.006544083822518587, -0.05538516119122505, -0.050731487572193146, 0.07519624382257462, 0.06881291419267654, 0.018306830897927284, -0.04784656688570976, -0.022632751613855362, -0.06805568188428879, 0.10169850289821625, -0.05231175944209099, 0.07785804569721222, 0.0361756794154644, 0.06857603043317795, -0.005667194724082947, -0.13218310475349426, 0.007104182615876198, -0.1339254528284073, -0.02523181587457657, -0.009480513632297516, 0.04022514075040817, -0.015926437452435493, -0.022156698629260063, -0.12536856532096863, -0.08784068375825882, -0.0802261009812355, -0.07575732469558716, 0.06334906816482544, -0.0752229169011116, -0.050206784158945084, 0.06962698698043823, -0.05181929096579552, 0.053249772638082504, 0.06303039193153381, -0.0071123153902590275, 0.028421849012374878, 0.06876292824745178, -0.006002248264849186, -0.012959819287061691, 0.0062925242818892, 0.08840963989496231, -0.015931595116853714, 0.09986289590597153, 0.006054670549929142, 0.05062229186296463, -0.021414808928966522, -0.012274649925529957, -0.04938894510269165, -0.01637115329504013, -0.09142754971981049, 0.05818070098757744, -0.006439460441470146, 0.042874306440353394, 0.015727540478110313, 0.0819028988480568, -0.0014139035483822227, -0.01970433071255684, 0.04451270401477814, 0.021125735715031624, 0.02288842760026455, 0.05101419612765312, 0.012825817801058292, 0.016781359910964966, -0.02216975949704647, -0.01764294132590294, 0.01915784366428852, -0.014603574760258198, 0.08485425263643265, 0.04511084407567978, -0.04835175350308418, -0.06153305619955063, 0.017427291721105576, 0.03947916999459267, 0.03766325116157532, 0.09129785746335983, 0.02054939605295658, 0.034065935760736465, -0.0031973524019122124, 0.03708754852414131, -0.0861574187874794, -0.04701957106590271, -0.060160450637340546, 0.030250826850533485, 0.02679312229156494, -0.040530577301979065, 0.06642504781484604, -0.015116401948034763, -0.07978353649377823, 0.03694821521639824, -0.08966337144374847, -0.15687212347984314, -0.056372202932834625, -1.9592286903957756e-08, -0.047816380858421326, 0.042460475116968155, -0.06115005165338516, 0.020119454711675644, 0.02028248831629753, 0.05098811909556389, 0.08137453347444534, 0.11335574835538864, -0.026579322293400764, 0.03825395181775093, 0.02473323419690132, -0.03123103640973568, -0.06278723478317261, -0.049794986844062805, -0.055130716413259506, -0.06971192359924316, -0.015822652727365494, 0.08279895782470703, 0.0027329535223543644, -0.1174812763929367, 0.0020566354505717754, -0.010167213156819344, -0.057345468550920486, 0.015829581767320633, -0.039744287729263306, -0.005296017043292522, 0.024359652772545815, -0.010927926748991013, 0.015765801072120667, 0.045185938477516174, 0.055428341031074524, -0.04472818970680237, -0.17569200694561005, -0.02548862434923649, 0.03431904315948486, -0.05847177281975746, -0.054736554622650146, 0.04503115266561508, 0.014799157157540321, -0.08725292235612869, -0.016895325854420662, 0.06513069570064545, -0.014137022197246552, 0.022250333800911903, 0.023893989622592926, -0.00975710991770029, 0.015478317625820637, 0.0044577764347195625, 0.033764127641916275, -0.041090093553066254, -0.04944945126771927, -0.06135516241192818, 0.028508879244327545, -0.012162184342741966, 0.0029868942219763994, -0.047052256762981415, 0.062173232436180115, -0.035780541598796844, -0.03985874727368355, -0.05135627090930939, 0.0775933563709259, 0.013610008172690868, 0.06700531393289566, 0.06444095075130463]\n" + ] + } + ], + "source": [ + "question = \"the most populous city in the U.S. state of Texas?\"\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(TOKENIZER)\n", + "model = AutoModel.from_pretrained(MODEL)\n", + "query_embedding = run_model(question, tokenizer, model)\n", + "query = query_embedding.detach().cpu().numpy().tolist()[0]\n", + "print(query)" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "# Retrieve the top-k documents" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Embeddings : [[0.11749927699565887, -0.04684491828083992, 0.074561707675457, 0.10036394000053406, -0.02789139188826084, 0.004901227541267872, -0.025490708649158478, -0.014385512098670006, -0.03353535756468773, -0.03694501891732216, 0.019829893484711647, -0.08767078071832657, 0.15164919197559357, -0.05422529578208923, 0.04684631526470184, -0.016555113717913628, 0.06950949877500534, 0.012052210047841072, 0.024535944685339928, -0.0060577718541026115, 0.06979842483997345, 0.026241665706038475, -0.06335429847240448, 0.03742428496479988, -0.006074287462979555, 0.12012293934822083, 0.012978488579392433, 0.019200358539819717, -0.09065929055213928, -0.010197900235652924, 0.046665437519550323, 0.07225364446640015, 0.07100000977516174, -0.08593559265136719, 0.05330311879515648, 0.004392698407173157, -0.06441846489906311, -0.006751690525561571, -0.04681907594203949, -0.006416881922632456, 0.0013941957149654627, -0.014143028296530247, 0.03822663053870201, 0.06176742911338806, -0.07114912569522858, -0.06869634985923767, 0.023103320971131325, 0.017941536381840706, 0.04543396458029747, -0.003846831852570176, -0.006298447027802467, 0.04135259613394737, 0.03142368793487549, 0.059807322919368744, 0.0027939684223383665, -0.010763526894152164, -0.01526960264891386, 0.021293316036462784, 0.014713623560965061, -0.01951569877564907, -0.012679428793489933, -0.046083226799964905, 0.020521333441138268, -0.01550274807959795, 0.00899930763989687, 0.07635846734046936, -0.02821502462029457, -0.02116866037249565, 0.04579779505729675, -0.08746904879808426, 0.07579099386930466, -0.0026315602008253336, -0.021190708503127098, 0.04639966040849686, 0.11584736406803131, -0.004722608719021082, 0.03807824105024338, -0.008432984352111816, -0.06269132345914841, 0.033780377358198166, 0.010498360730707645, -0.04720931872725487, -0.05267438292503357, -0.09110666811466217, -0.10725008696317673, -0.06415090709924698, 0.03612256795167923, 0.03143369033932686, -0.020167799666523933, 0.03701704740524292, -0.017262401059269905, 0.0684085264801979, -0.058458346873521805, -0.07113922387361526, 0.09735991805791855, 0.003146713599562645, -0.07869425415992737, -0.0440203920006752, 0.018143530935049057, 0.02249395288527012, 0.027600392699241638, -0.026889359578490257, 0.028707388788461685, 0.07705868035554886, 0.10244245082139969, -0.06309869885444641, -0.01154290046542883, -0.009791369549930096, -0.03711015731096268, -0.038788292557001114, 0.049837663769721985, -0.04931922256946564, -0.012459300458431244, 0.04696429520845413, 0.04174819961190224, 0.070229671895504, 0.06802497059106827, 0.01821114495396614, 0.018153393641114235, -0.0023667162749916315, 0.03611695393919945, -0.030793042853474617, -0.04765204340219498, 0.0017187651246786118, 0.10731911659240723, -0.0014752444112673402, -0.13421441614627838, -2.1588829863484657e-33, -0.11735869199037552, -0.02727390080690384, 0.012979614548385143, 0.022615285590291023, -0.041619788855314255, -0.01927032694220543, -0.02232659049332142, -0.00839410163462162, 0.012217069044709206, -0.04900732263922691, 0.04629648104310036, 0.05606415867805481, 0.04693273454904556, 0.048979755491018295, 0.10588003695011139, -0.05331561714410782, -0.015047404915094376, -0.033745333552360535, -0.022007597610354424, -0.014778360724449158, -0.024108896031975746, -0.03541431576013565, -0.01940123550593853, 0.0008004573173820972, -0.08957581222057343, 0.08470030128955841, -0.004999587778002024, -0.021122220903635025, 0.0605558305978775, -0.0037110960111021996, -0.06870313733816147, 0.02203388512134552, 0.10891969501972198, -0.013062838464975357, 0.021517816931009293, -0.0035001265350729227, 0.00044258407433517277, -0.0033845503348857164, -0.032929230481386185, 0.03419949486851692, -0.12468685954809189, 0.02728654071688652, -0.03658629208803177, 0.0062593864277005196, 0.022481128573417664, 0.019314875826239586, -0.0032050402369350195, -0.011589311994612217, -0.019010959193110466, 0.014523262158036232, 0.07006651163101196, -0.054914992302656174, 0.01242269016802311, -0.021287260577082634, 0.022597109898924828, 0.06195758283138275, -0.03862821310758591, -0.026994911953806877, -0.0013452088460326195, 0.033970437943935394, -0.04091078042984009, 0.03369394317269325, 0.03220393881201744, 0.03767672926187515, 0.05298908054828644, 0.06925726681947708, 0.06519123911857605, 0.059456147253513336, 0.029546089470386505, 0.0728830024600029, 0.010236803442239761, 0.07094284147024155, 0.029794322326779366, 0.019826361909508705, -0.01423713006079197, 0.03157419338822365, 0.00889563374221325, -0.0114641934633255, 0.017643103376030922, 0.07218773663043976, -0.007698675151914358, 0.033402204513549805, -0.06450118124485016, -0.03132760897278786, 0.08943087607622147, -0.016201285645365715, -0.03538915142416954, 0.0339173823595047, 0.01659158244729042, -0.011765778064727783, 0.052562013268470764, 0.005110282450914383, 0.0010674302466213703, 0.06568385660648346, -0.0761270523071289, 1.3933608411456749e-33, 0.0009253066382370889, -0.08035185933113098, 0.021005259826779366, 0.01279155071824789, 0.017389284446835518, -0.012598567642271519, 0.07392681390047073, 0.03542575240135193, -0.00678551010787487, -0.08230569958686829, -0.05081082507967949, -0.03972111642360687, 0.008916412480175495, -0.055083561688661575, 0.012490999884903431, 0.046758029609918594, 0.047956433147192, 0.000841215718537569, -0.09051639586687088, 0.026546481996774673, -0.10587587207555771, 0.016274303197860718, -0.07532799988985062, -0.057392194867134094, -0.001697041210718453, -0.02615753747522831, -0.08573239296674728, 0.007093202322721481, -0.009812992066144943, 0.0059440117329359055, -0.0915243998169899, 0.0043739755637943745, -0.06659617274999619, 0.00023749038518872112, -0.016416752710938454, 0.027138840407133102, -0.0018410267075523734, -0.03729409724473953, 0.06756874918937683, 0.017979232594370842, -0.030627429485321045, 0.03571843355894089, 0.04044914245605469, -0.05168215185403824, -0.006584961898624897, 0.08455103635787964, 0.09588535130023956, 0.02825082093477249, -0.05815998837351799, -0.014993187971413136, -0.010946402326226234, -0.04573942348361015, -0.11304665356874466, 0.05365119129419327, -0.038412753492593765, -0.002871329430490732, -0.009341246448457241, 0.10030493885278702, -0.031042642891407013, -0.019354380667209625, 0.0004125670820940286, -0.0007719398709014058, 0.09847064316272736, 0.023863879963755608, -0.025697963312268257, 0.02437741495668888, 0.025297367945313454, -0.05756767466664314, -0.040450673550367355, 0.025564342737197876, 0.028172887861728668, -0.0029736191499978304, -0.0665455162525177, -0.0576401986181736, 0.021328864619135857, 0.09964409470558167, 0.010494464077055454, 0.07944424450397491, -0.02641637995839119, -0.010853635147213936, 0.0034789391793310642, 0.08805618435144424, -0.09555229544639587, -0.027953583747148514, 0.03557375818490982, 0.07804333418607712, -0.05295033007860184, 0.043670881539583206, 0.03206954523921013, 0.012246176600456238, -0.10244423151016235, 0.005418527405709028, -0.1327744871377945, -0.05309426411986351, -0.07330143451690674, -4.644808981879578e-08, -0.06450624763965607, 0.024119151756167412, -0.07194093614816666, 0.033693838864564896, 0.13507509231567383, 0.13180622458457947, 0.05551670864224434, 0.04497965797781944, 0.009016617201268673, 0.05985432490706444, 0.03754103183746338, -0.0447244830429554, -0.0740557461977005, -0.037813812494277954, -0.09472808986902237, 0.04429461061954498, -0.05627050623297691, -0.006502519361674786, -0.003369016805663705, -0.04041304439306259, -0.06678348779678345, 0.0051789721474051476, -0.052771832793951035, 0.05788276717066765, -0.012315365485846996, -0.046666428446769714, 0.004011842887848616, 0.02137860655784607, 0.030087687075138092, -0.05046994984149933, 0.04225831478834152, -0.03473357483744621, -0.1598803699016571, -0.04670379310846329, 0.026452666148543358, -0.10197827965021133, 0.022245166823267937, 0.06653784215450287, 0.02565297856926918, 0.06364096701145172, -0.018878169357776642, -0.008384596556425095, -0.017159799113869667, -0.035177577286958694, -0.020360833033919334, 0.0019360436126589775, -0.05431096628308296, 0.025217294692993164, 0.005906396545469761, 0.02939896285533905, -0.02391386218369007, -0.09292323142290115, -0.015012769959867, 0.008888348005712032, 0.0570496991276741, -0.03264027088880539, 0.08929869532585144, -0.04854343459010124, -0.03315092623233795, 0.029655855149030685, -0.02528601884841919, -0.017414361238479614, 0.0321027971804142, 0.039058443158864975], [0.10331051051616669, -0.07676679641008377, 0.04462852329015732, 0.08021443337202072, -0.05351116880774498, 0.005698204040527344, -0.05440784618258476, 0.04601375013589859, -0.03462834283709526, -0.07392653822898865, 0.0522584430873394, 0.02368549071252346, 0.09067568928003311, -0.06237998232245445, 0.02410109154880047, 0.006168494466692209, 0.03190910443663597, 0.009539336897432804, -0.028488988056778908, -0.02267671562731266, 0.09337331354618073, -0.055280741304159164, -0.05473731458187103, -0.01975906454026699, 0.017720043659210205, 0.040230706334114075, -0.020040327683091164, -0.033438798040151596, -0.0795409083366394, 0.01570550911128521, 0.03418699651956558, 0.047492433339357376, 0.04017673060297966, -0.016825802624225616, 0.014013564214110374, -0.014820379205048084, -0.03144967183470726, 0.013162312097847462, 0.040420595556497574, 0.012820563279092312, -0.024819066748023033, -0.04387754574418068, 0.05846838280558586, 0.06642544269561768, -0.035549987107515335, -0.08463059365749359, -0.00042474482324905694, 0.027333209291100502, 0.07404281198978424, -0.04053667560219765, 0.009552833624184132, 0.076789490878582, 0.002252038801088929, 0.028407329693436623, 0.017153097316622734, -0.038921378552913666, 0.009500805288553238, 0.012428867630660534, -0.022668754681944847, -0.017223693430423737, -0.021368402987718582, 0.057022448629140854, 0.015266109257936478, -0.039043232798576355, -0.07307662069797516, 0.050958309322595596, 0.030760347843170166, -0.0600537545979023, 0.018778743222355843, -0.0723862275481224, 0.07840563356876373, 0.011015571653842926, -0.021207552403211594, 0.049671366810798645, 0.10778632014989853, -0.023844381794333458, 0.035239771008491516, 0.07035961002111435, -0.013240911066532135, -0.011642856523394585, 0.04533189907670021, 0.03697344660758972, -0.11386046558618546, -0.07553944736719131, -0.15270361304283142, -0.018226640298962593, -0.03737008199095726, 0.045229487121105194, 0.0007506260881200433, -0.018041811883449554, 0.06504639983177185, 0.03144799917936325, -0.10954160243272781, -0.10738150030374527, 0.13930831849575043, 0.06204458698630333, -0.09926486760377884, -0.0347372405230999, -0.004604031331837177, -0.015538091771304607, 0.021594056859612465, 0.004683373030275106, -0.0063517093658447266, 0.010801705531775951, 0.07792841643095016, -0.012220469303429127, -0.04405515640974045, 0.005511843133717775, -0.057228103280067444, -0.051467206329107285, 0.093075692653656, -0.05880353972315788, -0.028999920934438705, 0.05876193568110466, 0.007591032423079014, 0.026665104553103447, 0.03153247758746147, -0.05337504670023918, 0.03779562935233116, -0.09649711847305298, -0.026061851531267166, -0.03088366612792015, -0.03969842940568924, 0.017427418380975723, 0.05684369429945946, 0.002518854569643736, -0.06276379525661469, -2.0867386736056787e-33, -0.04391661658883095, -0.07563015073537827, 0.009133857674896717, 0.017166726291179657, -0.06620938330888748, -0.0503690131008625, 0.012596432119607925, -0.05982870236039162, 0.0027576745487749577, -0.029722031205892563, 0.027648236602544785, 0.0031523031648248434, 0.034868329763412476, -0.012535315938293934, 0.08612681925296783, 0.007981225848197937, -0.046025414019823074, -0.011055168695747852, -0.020676391199231148, -0.06484035402536392, -0.013890908099710941, -0.0025176883209496737, 0.02051563560962677, -0.06336773186922073, -0.036557748913764954, 0.03636118397116661, -0.07441388070583344, -0.046714406460523605, -0.02059175819158554, -0.011695639230310917, -0.10995755344629288, -0.024104870855808258, 0.097081758081913, 0.03226326406002045, 0.03045407496392727, -0.033308226615190506, 0.03990059345960617, 0.018012845888733864, -0.04174208268523216, 0.003600242780521512, -0.04683617502450943, 0.06494197994470596, -0.0269573125988245, 0.02866203710436821, 0.07913592457771301, 0.03081035427749157, 0.003436909057199955, 0.011421363800764084, -0.02924053743481636, -0.07447626441717148, 0.09607291221618652, -0.025704752653837204, 0.050055645406246185, -0.02644922211766243, 0.004042467102408409, 0.0317777581512928, 0.0038234670646488667, -0.03039737045764923, 0.024811210110783577, 0.12182707339525223, -0.08409561216831207, 0.005762482061982155, 0.025205111131072044, 0.02487976849079132, 0.04486233741044998, 0.0068103233352303505, 0.01931614615023136, 0.11814720928668976, -0.02936437353491783, 0.07588185369968414, 0.026423893868923187, -0.049529291689395905, 0.06123148277401924, 0.02182760089635849, 0.03450331464409828, -0.028617653995752335, 0.035406824201345444, 0.03734695538878441, -0.047207221388816833, 0.03879037871956825, 0.024722419679164886, 0.025558430701494217, 0.020973404869437218, 0.03850189596414566, 0.07455627620220184, -0.044103022664785385, 0.01613634079694748, 0.006007217802107334, -0.02155369147658348, -0.037056226283311844, -0.062379006296396255, 0.07525509595870972, 0.055451661348342896, 0.05236397311091423, 0.040192823857069016, -9.426353484091234e-34, -0.03637831658124924, -0.051907360553741455, 0.04856778681278229, -0.05725143104791641, -0.024386877194046974, -0.044092267751693726, 0.09381633251905441, -0.029993178322911263, -0.0030174434650689363, -0.07819853723049164, -0.07676231861114502, -0.02261270582675934, 0.028997182846069336, -0.06145840510725975, 0.0031029076781123877, 0.0036302884109318256, -0.00785570777952671, 0.007383706979453564, -0.13788872957229614, 0.07382552325725555, -0.05208449438214302, 0.02073391154408455, -0.01228058710694313, 0.021948235109448433, 0.07203274965286255, -0.022037608548998833, -0.056802913546562195, 0.0009453981183469296, -0.02144419401884079, 0.020031193271279335, 0.024152880534529686, -0.008272870443761349, -0.0159528199583292, 0.044012539088726044, -4.079512655152939e-05, 0.013061239384114742, 0.014660916291177273, -0.03423278406262398, 0.06256286054849625, 0.011297265067696571, 0.009315217845141888, 0.033603377640247345, 0.03684663772583008, -0.040490370243787766, -0.0267629511654377, 0.07919536530971527, 0.07947143167257309, 0.0009094149572774768, -0.061920084059238434, -0.04677439108490944, -0.030411161482334137, -0.024920212104916573, -0.08064541965723038, 0.05981258302927017, -0.07002998888492584, 0.03632117062807083, 0.02983582578599453, 0.0829337015748024, 0.029316511005163193, -0.0230630524456501, -0.03355468064546585, -0.0007939631468616426, 0.055992744863033295, 0.040662284940481186, -0.022757692262530327, -0.01730244979262352, 0.05073518306016922, -0.045434873551130295, -0.019017120823264122, -0.043729446828365326, -0.03932960331439972, 0.015522775240242481, -0.06450066715478897, 0.01296135876327753, 0.05136873945593834, 0.09069471806287766, -0.016517398878932, 0.0734264999628067, -0.027500895783305168, 0.06596570461988449, 0.003147663315758109, 0.048661671578884125, -0.09457903355360031, -0.09554070979356766, 0.04700878635048866, 0.059318140149116516, -0.051983051002025604, 0.06198004633188248, 0.03580159693956375, -0.039614662528038025, -0.07806045562028885, -0.004564489237964153, -0.09403438866138458, -0.02245713584125042, -0.022319912910461426, -5.360929833386763e-08, -0.027041159570217133, 0.09500405937433243, -0.00885707139968872, 0.06403651833534241, 0.032831571996212006, 0.02816218137741089, 0.03130489960312843, 0.07699041813611984, -0.006205273326486349, 0.03686976060271263, -0.0035430514253675938, -0.009556521661579609, -0.09004775434732437, -0.061549797654151917, -0.11513242870569229, -0.06034677475690842, -0.11029954254627228, -0.01871279813349247, 0.0018805541330948472, -0.030120955780148506, 0.007194702047854662, -0.07524652034044266, -0.10343952476978302, 0.007047621998935938, -0.020713381469249725, -0.04571079462766647, 0.01424648892134428, 0.056544624269008636, 0.00022138845815788954, 0.026383904740214348, 0.116036556661129, -0.09139249473810196, -0.1556224822998047, 0.007270175497978926, 0.08876193314790726, -0.07553884387016296, 0.07017125189304352, 0.013147140853106976, 0.05257280915975571, -0.006699622143059969, -0.011253020726144314, 0.040383897721767426, -0.008787150494754314, -0.05065607652068138, -0.005260122939944267, -0.012216638773679733, -0.01657884567975998, 0.035974349826574326, 0.07825075089931488, 0.09855543822050095, 0.02233605459332466, -0.0626956969499588, -0.02550097182393074, -0.04142352566123009, 0.09897702187299728, -0.061636462807655334, 0.03376517817378044, 0.0008465087739750743, 0.016745612025260925, -0.027870606631040573, -0.025691978633403778, 0.039361681789159775, 0.050182878971099854, 0.07090042531490326], [0.11634305864572525, -0.10321833193302155, -0.007189923897385597, 0.06054242327809334, -0.011092515662312508, 0.008888869546353817, -0.012909846380352974, 0.019102297723293304, -0.04098448157310486, -0.037729691714048386, -0.027977826073765755, 0.0353659950196743, 0.13618184626102448, -0.02067447081208229, 0.0038423400837928057, -0.0651339590549469, 0.05769791454076767, -0.04073723405599594, 0.06008503586053848, -0.006888522766530514, 0.012933759018778801, -0.0736369863152504, -0.021633297204971313, -0.0894172266125679, -0.04663727432489395, 0.023937780410051346, 0.00020877517818007618, 0.021651145070791245, -0.08914417773485184, 0.004642942454665899, -0.004277986008673906, 0.10236808657646179, -0.027143102139234543, -0.017563657835125923, -0.02927396632730961, 0.06552392989397049, -0.022684849798679352, 0.03587312251329422, 0.028600674122571945, -0.00011912188347196206, 0.0014841393567621708, -0.07621059566736221, 0.05600668489933014, -0.015091462060809135, -0.006106847431510687, -0.08980677276849747, -0.01889166235923767, 0.027821719646453857, 0.1162354052066803, -0.02956310659646988, 0.0028604010585695505, 0.0948241725564003, 0.015074390918016434, 0.08431674540042877, 0.014123247005045414, -0.012907179072499275, 0.02972230687737465, 0.03902226686477661, -0.07236318290233612, 0.02151038683950901, -0.06272643804550171, 0.0003269300505053252, 0.01059903297573328, -0.05653905123472214, -0.03587447479367256, 0.05409163609147072, 0.0020082006230950356, 0.011958504095673561, -0.0329730324447155, -0.06608514487743378, 0.04413757100701332, -0.0025174864567816257, -0.07787992060184479, 0.07192662358283997, 0.10019515454769135, 0.02539791725575924, 0.04016440361738205, -0.006924023851752281, 0.005925080738961697, 0.04081990569829941, -0.03304620087146759, 0.021206721663475037, -0.06485887616872787, -0.05201338976621628, -0.11545782536268234, -0.00801850575953722, 0.012861297465860844, -0.006095332093536854, -0.016472330316901207, 0.0058835409581661224, 0.06178133189678192, 0.09412389993667603, -0.06327200680971146, -0.019518742337822914, 0.06615566462278366, 0.024986354634165764, -0.059936586767435074, -0.03233719989657402, 0.004648788366466761, -0.04932575300335884, -0.028288649395108223, -0.012720693834125996, 0.02692382223904133, 0.05466010794043541, 0.01738874614238739, -0.007208314258605242, -0.024267826229333878, 0.009864699095487595, -0.06831816583871841, -0.055211227387189865, 0.06146666780114174, -0.02202630043029785, -0.04086703807115555, -0.0210438072681427, -0.02340015023946762, 0.017423097044229507, 0.03068532422184944, -0.05786578357219696, 0.04791866987943649, -0.05597405508160591, -0.018911534920334816, 0.04077770560979843, 0.016362937167286873, 0.059432998299598694, 0.06770279258489609, -0.005518815480172634, -0.03877989202737808, -3.8525956747696895e-33, -0.1337270885705948, 0.001012894557788968, 0.03974046930670738, 0.021452704444527626, -0.07663615047931671, -0.0498632974922657, 0.017822982743382454, -0.02128567174077034, -4.734064714284614e-05, -0.010782117955386639, -0.042328719049692154, 0.09506185352802277, 0.025139544159173965, 0.05306873470544815, 0.05406158044934273, -0.06833197921514511, 0.03489414602518082, -0.02629990689456463, -0.04384368658065796, -0.015669291839003563, 0.034520965069532394, -0.0013516645412892103, 0.02120133861899376, -0.05431106686592102, 0.013346433639526367, 0.0673346146941185, -0.015487014316022396, 0.05636169761419296, 0.05866707116365433, -0.006376099772751331, -0.11707364022731781, -0.013991751708090305, 0.07255817949771881, 0.02153550647199154, 0.03307328373193741, -0.0233885757625103, 0.027623789384961128, 0.03279649838805199, -0.0691627562046051, -0.002109368797391653, -0.08114180713891983, 0.002096959389746189, -0.04174213483929634, -0.01546625979244709, 0.0036050984635949135, 0.026141183450818062, 0.006218935828655958, -0.02092091739177704, -0.0469009131193161, 0.013603090308606625, 0.07198671251535416, 0.00527279544621706, 0.031756483018398285, 0.02240552008152008, -0.07020461559295654, 0.023433424532413483, -0.002824752125889063, -0.08813190460205078, 0.02565416321158409, 0.07466182857751846, -0.1184200569987297, -0.04860341176390648, -0.024335704743862152, 0.01428957935422659, 0.10196445882320404, 0.021237779408693314, 0.027897339314222336, 0.07381123304367065, 0.03207793086767197, 0.13156715035438538, 0.022680535912513733, 0.011099663563072681, 0.08376941084861755, 0.02295740321278572, 0.1006849929690361, 0.04584816098213196, -0.04752732813358307, 0.09606143832206726, -0.006546863354742527, 0.033346988260746, -0.03939469903707504, 0.05584152042865753, -0.026171935722231865, 0.01685541309416294, 0.13590843975543976, -0.016731370240449905, 0.0053167459554970264, -0.005495900753885508, -0.04047994315624237, -0.061979029327631, -0.005767766386270523, 0.09655506163835526, 0.07965542376041412, 0.03254152461886406, -0.016139553859829903, 4.952533105811959e-34, -0.007802362088114023, -0.04790643975138664, 0.01824960857629776, -0.005397023167461157, -0.01801365800201893, -0.0015343648847192526, 0.1463852822780609, -0.02064872905611992, -0.019301680848002434, -0.036317043006420135, -0.07882848381996155, -0.022393688559532166, 0.01706908643245697, -0.0865662470459938, 0.012805863283574581, -0.020480738952755928, 0.014182521030306816, 0.030507126823067665, -0.1322702020406723, -0.013075750321149826, -0.04606737568974495, -0.002968201646581292, 0.0027524768374860287, -0.006147999316453934, 0.0015425594756379724, -0.034277550876140594, -0.08691025525331497, -0.03901840001344681, -0.05995279923081398, 0.048140738159418106, 0.00847644917666912, -0.008051052689552307, 0.025824107229709625, 0.0886959508061409, 0.021597549319267273, 0.01843535713851452, 0.02108466438949108, 0.0018915103282779455, 0.07094748318195343, 0.015023194253444672, 0.012037004344165325, -0.021114153787493706, -0.0091589679941535, -0.00033312858431600034, 0.008502992801368237, 0.01642298698425293, 0.00264121126383543, 0.0025563130620867014, -0.027517056092619896, 0.012167287059128284, 0.00586564838886261, 0.00569115998223424, -0.0660431906580925, 0.020013339817523956, -0.043728653341531754, 0.027768004685640335, 0.07248293608427048, 0.02650085650384426, 0.026530282571911812, 0.0047976309433579445, 0.030451849102973938, 0.025542911142110825, 0.029734887182712555, 0.06251499056816101, 0.05304361507296562, -0.06486289948225021, -0.001436406746506691, -0.1435907930135727, -0.04016046226024628, -0.01902950555086136, 0.04518653824925423, 0.05946821719408035, -0.011116944253444672, -0.03292161226272583, 0.03208693116903305, 0.0724915862083435, 0.06185712292790413, 0.12229830771684647, -0.020529812201857567, 0.11314670741558075, 0.0860629677772522, 0.008945933543145657, -0.06281288713216782, -0.0234488807618618, -0.04965777322649956, 0.04881681501865387, -0.02734999731183052, -0.0193110890686512, 0.015421513468027115, -0.05676528811454773, -0.10513850301504135, 0.025526199489831924, -0.14217595756053925, -0.058782242238521576, -0.03432648256421089, -4.606698666975717e-08, -0.05532163381576538, 0.036070749163627625, -0.0936923548579216, -0.034402985125780106, 0.01258263923227787, 0.06608672440052032, -0.031595610082149506, 0.07117749750614166, -0.020761892199516296, 0.04364870861172676, 0.06944156438112259, -0.034030284732580185, -0.08598154038190842, -0.028704453259706497, -0.07845199108123779, -0.015822872519493103, -0.050939787179231644, -0.05809103325009346, -0.020059870555996895, -0.006340240593999624, -0.04450039938092232, -0.02598443441092968, -0.10489711165428162, 0.048238180577754974, -0.018998397514224052, -0.08187401294708252, -0.04273638874292374, 0.022272516041994095, 0.020087847486138344, 0.03881067782640457, 0.039810750633478165, -0.07885555177927017, -0.09733181446790695, 0.019218821078538895, 0.05567796528339386, -0.047517579048871994, 0.08648350089788437, 0.056817490607500076, 0.042295731604099274, 0.07148952037096024, 0.015922481194138527, 4.9233814934268594e-05, 0.006363036576658487, -0.05094635859131813, 0.01348098460584879, -0.03840893879532814, -0.08650396764278412, -0.011939928866922855, 0.010110230185091496, 0.0798916220664978, -0.00011506042210385203, -0.018978942185640335, -0.01327336486428976, -0.0663352757692337, -0.012223249301314354, -0.0681992918252945, -0.03853427618741989, -0.05774924159049988, -0.005615982227027416, -0.0023417130578309298, 0.017137639224529266, 0.03344760462641716, 0.08827316015958786, 0.10068315267562866]]\n", + "distance : [0.9355663657188416, 0.9424622058868408, 0.9833430647850037]\n" + ] + } + ], + "source": [ + "features = store.retrieve_online_documents(\n", + " feature=\"city_embeddings:Embeddings\",\n", + " query=query,\n", + " top_k=3\n", + ").to_dict()\n", + "\n", + "def print_online_features(features):\n", + " for key, value in sorted(features.items()):\n", + " print(key, \" : \", value)\n", + "\n", + "print_online_features(features)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "You can see the top 3 document embeddings as well as its distance are returned" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + } + } + ], + "metadata": { + "interpreter": { + "hash": "7d634b9af180bcb32a446a43848522733ff8f5bbf0cc46dba1a83bede04bf237" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('python-3.8')", + "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.8.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/module_4_rag/poetry.lock b/module_4_rag/poetry.lock new file mode 100644 index 0000000..9fa706c --- /dev/null +++ b/module_4_rag/poetry.lock @@ -0,0 +1,3370 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.6.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] + +[[package]] +name = "anyio" +version = "4.3.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = "*" +files = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "blinker" +version = "1.7.0" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.8" +files = [ + {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"}, + {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"}, +] + +[[package]] +name = "bowler" +version = "0.9.0" +description = "Safe code refactoring for modern Python projects" +optional = false +python-versions = ">=3.6" +files = [ + {file = "bowler-0.9.0-py3-none-any.whl", hash = "sha256:0351839e9917765be694aa52c99ea784dc1286c9bdd6fd066b810097fc273e1b"}, + {file = "bowler-0.9.0.tar.gz", hash = "sha256:cdb85ce2e7bd545802a15d755d1daf2b6a125429355c50d2019a9f35d63e45db"}, +] + +[package.dependencies] +attrs = "*" +click = "*" +fissix = "*" +moreorless = ">=0.2.0" +volatile = "*" + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "cloudpickle" +version = "3.0.0" +description = "Pickler class to extend the standard pickle.Pickler functionality" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7"}, + {file = "cloudpickle-3.0.0.tar.gz", hash = "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dask" +version = "2024.2.1" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.9" +files = [ + {file = "dask-2024.2.1-py3-none-any.whl", hash = "sha256:a13fcdeead3bab3576495023f83097adcffe2f03c371c241b5a1f0b232b35b38"}, + {file = "dask-2024.2.1.tar.gz", hash = "sha256:9504a1e9f5d8e5403fae931f9f1660d41f510f48895ccefce856ec6a4c2198d8"}, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=1.5.0" +fsspec = ">=2021.09.0" +importlib-metadata = ">=4.13.0" +packaging = ">=20.0" +partd = ">=1.2.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.21)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=7.0)", "pyarrow-hotfix"] +dataframe = ["dask[array]", "pandas (>=1.3)"] +diagnostics = ["bokeh (>=2.4.2)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2024.2.1)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "dill" +version = "0.3.8" +description = "serialize all of Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] + +[[package]] +name = "exceptiongroup" +version = "1.2.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fastapi" +version = "0.110.1" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi-0.110.1-py3-none-any.whl", hash = "sha256:5df913203c482f820d31f48e635e022f8cbfe7350e4830ef05a3163925b1addc"}, + {file = "fastapi-0.110.1.tar.gz", hash = "sha256:6feac43ec359dfe4f45b2c18ec8c94edb8dc2dfc461d417d9e626590c071baad"}, +] + +[package.dependencies] +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.37.2,<0.38.0" +typing-extensions = ">=4.8.0" + +[package.extras] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] + +[[package]] +name = "feast" +version = "0.36.1.dev89+g1bad023e.d20240417" +description = "Python SDK for Feast" +optional = false +python-versions = ">=3.9.0" +files = [] +develop = false + +[package.dependencies] +bowler = "*" +click = ">=7.0.0,<9.0.0" +colorama = ">=0.3.9,<1" +dask = ">=2021.1.0,<2024.3.0" +dill = ">=0.3.0,<0.4.0" +fastapi = ">=0.68.0" +gunicorn = {version = "*", markers = "platform_system != \"Windows\""} +importlib_metadata = ">=6.8.0,<7" +importlib-resources = ">=6.0.0,<7" +Jinja2 = ">=2,<4" +jsonschema = "*" +mmh3 = "*" +mypy-protobuf = ">=3.1" +numpy = ">=1.22,<1.25" +pandas = ">=1.4.3,<3" +protobuf = ">=4.24.0,<5.0.0" +pyarrow = ">=4" +pydantic = ">=2.0.0" +pygments = ">=2.12.0,<3" +PyYAML = ">=5.4.0,<7" +requests = "*" +SQLAlchemy = {version = ">1", extras = ["mypy"]} +tabulate = ">=0.8.0,<1" +tenacity = ">=7,<9" +toml = ">=0.10.0,<1" +tqdm = ">=4,<5" +typeguard = ">=4.0.0" +uvicorn = {version = ">=0.14.0,<1", extras = ["standard"]} + +[package.extras] +aws = ["boto3 (>=1.17.0,<2)", "docker (>=5.0.2)", "fsspec (<=2024.1.0)"] +azure = ["SQLAlchemy (>=1.4.19)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "pymssql", "pyodbc (>=4.0.30)"] +bytewax = ["bytewax (==0.15.1)", "docker (>=5.0.2)", "kubernetes (<=20.13.0)"] +cassandra = ["cassandra-driver (>=3.24.0,<4)"] +ci = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "bytewax (==0.15.1)", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great_expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] +dev = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "bytewax (==0.15.1)", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great_expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] +docs = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "bytewax (==0.15.1)", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great_expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] +duckdb = ["ibis-framework[duckdb]"] +gcp = ["fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)"] +ge = ["great_expectations (>=0.15.41)"] +grpcio = ["grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)"] +hazelcast = ["hazelcast-python-client (>=5.1)"] +hbase = ["happybase (>=1.2.0,<3)"] +ibis = ["ibis-framework", "ibis-substrait"] +k8s = ["kubernetes (<=20.13.0)"] +mysql = ["pymysql", "types-PyMySQL"] +postgres = ["psycopg2-binary (>=2.8.3,<3)"] +redis = ["hiredis (>=2.0.0,<3)", "redis (>=4.2.2,<5)"] +rockset = ["rockset (>=1.0.3)"] +snowflake = ["snowflake-connector-python[pandas] (>=3.7,<4)"] +spark = ["pyspark (>=3.0.0,<4)"] +trino = ["regex", "trino (>=0.305.0,<0.400.0)"] + +[package.source] +type = "directory" +url = "../../feast" + +[[package]] +name = "filelock" +version = "3.13.4" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.13.4-py3-none-any.whl", hash = "sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f"}, + {file = "filelock-3.13.4.tar.gz", hash = "sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] + +[[package]] +name = "fissix" +version = "21.11.13" +description = "Monkeypatches to override default behavior of lib2to3." +optional = false +python-versions = ">=3.6" +files = [ + {file = "fissix-21.11.13-py3-none-any.whl", hash = "sha256:55cd7541944bd15cfd8b0b2117fd63b84dcce5e3780ff7f77894059a87e5243a"}, + {file = "fissix-21.11.13.tar.gz", hash = "sha256:496a51b86afb4c64cf15cfed38a0f3a371f300b298c962c881e33620f076a514"}, +] + +[package.dependencies] +appdirs = "*" + +[[package]] +name = "flasgger" +version = "0.9.7.1" +description = "Extract swagger specs from your flask project" +optional = false +python-versions = "*" +files = [ + {file = "flasgger-0.9.7.1.tar.gz", hash = "sha256:ca098e10bfbb12f047acc6299cc70a33851943a746e550d86e65e60d4df245fb"}, +] + +[package.dependencies] +Flask = ">=0.10" +jsonschema = ">=3.0.1" +mistune = "*" +packaging = "*" +PyYAML = ">=3.0" +six = ">=1.10.0" + +[[package]] +name = "flask" +version = "3.0.3" +description = "A simple framework for building complex web applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "flask-3.0.3-py3-none-any.whl", hash = "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3"}, + {file = "flask-3.0.3.tar.gz", hash = "sha256:ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842"}, +] + +[package.dependencies] +blinker = ">=1.6.2" +click = ">=8.1.3" +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=3.0.0" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + +[[package]] +name = "fsspec" +version = "2024.3.1" +description = "File-system specification" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fsspec-2024.3.1-py3-none-any.whl", hash = "sha256:918d18d41bf73f0e2b261824baeb1b124bcf771767e3a26425cd7dec3332f512"}, + {file = "fsspec-2024.3.1.tar.gz", hash = "sha256:f39780e282d7d117ffb42bb96992f8a90795e4d0fb0f661a70ca39fe9c43ded9"}, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +devel = ["pytest", "pytest-cov"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +tqdm = ["tqdm"] + +[[package]] +name = "greenlet" +version = "3.0.3" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "gunicorn" +version = "22.0.0" +description = "WSGI HTTP Server for UNIX" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gunicorn-22.0.0-py3-none-any.whl", hash = "sha256:350679f91b24062c86e386e198a15438d53a7a8207235a78ba1b53df4c4378d9"}, + {file = "gunicorn-22.0.0.tar.gz", hash = "sha256:4a0b436239ff76fb33f11c07a16482c521a7e09c1ce3cc293c2330afe01bec63"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +eventlet = ["eventlet (>=0.24.1,!=0.36.0)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +testing = ["coverage", "eventlet", "gevent", "pytest", "pytest-cov"] +tornado = ["tornado (>=0.2)"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httptools" +version = "0.6.1" +description = "A collection of framework independent HTTP protocol utils." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, + {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, + {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, + {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, + {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, +] + +[package.extras] +test = ["Cython (>=0.29.24,<0.30.0)"] + +[[package]] +name = "huggingface-hub" +version = "0.22.2" +description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "huggingface_hub-0.22.2-py3-none-any.whl", hash = "sha256:3429e25f38ccb834d310804a3b711e7e4953db5a9e420cc147a5e194ca90fd17"}, + {file = "huggingface_hub-0.22.2.tar.gz", hash = "sha256:32e9a9a6843c92f253ff9ca16b9985def4d80a93fb357af5353f770ef74a81be"}, +] + +[package.dependencies] +filelock = "*" +fsspec = ">=2023.5.0" +packaging = ">=20.9" +pyyaml = ">=5.1" +requests = "*" +tqdm = ">=4.42.1" +typing-extensions = ">=3.7.4.3" + +[package.extras] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.3.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +cli = ["InquirerPy (==0.3.4)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.3.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] +hf-transfer = ["hf-transfer (>=0.1.4)"] +inference = ["aiohttp", "minijinja (>=1.0)"] +quality = ["mypy (==1.5.1)", "ruff (>=0.3.0)"] +tensorflow = ["graphviz", "pydot", "tensorflow"] +tensorflow-testing = ["keras (<3.0)", "tensorflow"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "minijinja (>=1.0)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] +torch = ["safetensors", "torch"] +typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "importlib-metadata" +version = "6.11.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + +[[package]] +name = "importlib-resources" +version = "6.4.0" +description = "Read resources from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_resources-6.4.0-py3-none-any.whl", hash = "sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c"}, + {file = "importlib_resources-6.4.0.tar.gz", hash = "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145"}, +] + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["jaraco.test (>=5.4)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +description = "Safely pass data to untrusted environments and back." +optional = false +python-versions = ">=3.8" +files = [ + {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, + {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, +] + +[[package]] +name = "jinja2" +version = "3.1.3" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "joblib" +version = "1.4.0" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joblib-1.4.0-py3-none-any.whl", hash = "sha256:42942470d4062537be4d54c83511186da1fc14ba354961a2114da91efa9a4ed7"}, + {file = "joblib-1.4.0.tar.gz", hash = "sha256:1eb0dc091919cd384490de890cb5dfd538410a6d4b3b54eef09fb8c50b409b1c"}, +] + +[[package]] +name = "jsonschema" +version = "4.21.1" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, +] + +[[package]] +name = "lxml" +version = "5.2.1" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +optional = false +python-versions = ">=3.6" +files = [ + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1"}, + {file = "lxml-5.2.1-cp310-cp310-win32.whl", hash = "sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5"}, + {file = "lxml-5.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534"}, + {file = "lxml-5.2.1-cp311-cp311-win32.whl", hash = "sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be"}, + {file = "lxml-5.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4"}, + {file = "lxml-5.2.1-cp312-cp312-win32.whl", hash = "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134"}, + {file = "lxml-5.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a"}, + {file = "lxml-5.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_s390x.whl", hash = "sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461"}, + {file = "lxml-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0"}, + {file = "lxml-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289"}, + {file = "lxml-5.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, + {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637"}, + {file = "lxml-5.2.1-cp38-cp38-win32.whl", hash = "sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da"}, + {file = "lxml-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188"}, + {file = "lxml-5.2.1-cp39-cp39-win32.whl", hash = "sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708"}, + {file = "lxml-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704"}, + {file = "lxml-5.2.1.tar.gz", hash = "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306"}, +] + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] +html5 = ["html5lib"] +htmlsoup = ["BeautifulSoup4"] +source = ["Cython (>=3.0.10)"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mistune" +version = "3.0.2" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, +] + +[[package]] +name = "mmh3" +version = "4.1.0" +description = "Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions." +optional = false +python-versions = "*" +files = [ + {file = "mmh3-4.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be5ac76a8b0cd8095784e51e4c1c9c318c19edcd1709a06eb14979c8d850c31a"}, + {file = "mmh3-4.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98a49121afdfab67cd80e912b36404139d7deceb6773a83620137aaa0da5714c"}, + {file = "mmh3-4.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5259ac0535874366e7d1a5423ef746e0d36a9e3c14509ce6511614bdc5a7ef5b"}, + {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5950827ca0453a2be357696da509ab39646044e3fa15cad364eb65d78797437"}, + {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1dd0f652ae99585b9dd26de458e5f08571522f0402155809fd1dc8852a613a39"}, + {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99d25548070942fab1e4a6f04d1626d67e66d0b81ed6571ecfca511f3edf07e6"}, + {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53db8d9bad3cb66c8f35cbc894f336273f63489ce4ac416634932e3cbe79eb5b"}, + {file = "mmh3-4.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75da0f615eb55295a437264cc0b736753f830b09d102aa4c2a7d719bc445ec05"}, + {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b926b07fd678ea84b3a2afc1fa22ce50aeb627839c44382f3d0291e945621e1a"}, + {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c5b053334f9b0af8559d6da9dc72cef0a65b325ebb3e630c680012323c950bb6"}, + {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bf33dc43cd6de2cb86e0aa73a1cc6530f557854bbbe5d59f41ef6de2e353d7b"}, + {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fa7eacd2b830727ba3dd65a365bed8a5c992ecd0c8348cf39a05cc77d22f4970"}, + {file = "mmh3-4.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:42dfd6742b9e3eec599f85270617debfa0bbb913c545bb980c8a4fa7b2d047da"}, + {file = "mmh3-4.1.0-cp310-cp310-win32.whl", hash = "sha256:2974ad343f0d39dcc88e93ee6afa96cedc35a9883bc067febd7ff736e207fa47"}, + {file = "mmh3-4.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:74699a8984ded645c1a24d6078351a056f5a5f1fe5838870412a68ac5e28d865"}, + {file = "mmh3-4.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f0dc874cedc23d46fc488a987faa6ad08ffa79e44fb08e3cd4d4cf2877c00a00"}, + {file = "mmh3-4.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3280a463855b0eae64b681cd5b9ddd9464b73f81151e87bb7c91a811d25619e6"}, + {file = "mmh3-4.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:97ac57c6c3301769e757d444fa7c973ceb002cb66534b39cbab5e38de61cd896"}, + {file = "mmh3-4.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a7b6502cdb4dbd880244818ab363c8770a48cdccecf6d729ade0241b736b5ec0"}, + {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52ba2da04671a9621580ddabf72f06f0e72c1c9c3b7b608849b58b11080d8f14"}, + {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a5fef4c4ecc782e6e43fbeab09cff1bac82c998a1773d3a5ee6a3605cde343e"}, + {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5135358a7e00991f73b88cdc8eda5203bf9de22120d10a834c5761dbeb07dd13"}, + {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cff9ae76a54f7c6fe0167c9c4028c12c1f6de52d68a31d11b6790bb2ae685560"}, + {file = "mmh3-4.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f02576a4d106d7830ca90278868bf0983554dd69183b7bbe09f2fcd51cf54f"}, + {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:073d57425a23721730d3ff5485e2da489dd3c90b04e86243dd7211f889898106"}, + {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:71e32ddec7f573a1a0feb8d2cf2af474c50ec21e7a8263026e8d3b4b629805db"}, + {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7cbb20b29d57e76a58b40fd8b13a9130db495a12d678d651b459bf61c0714cea"}, + {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:a42ad267e131d7847076bb7e31050f6c4378cd38e8f1bf7a0edd32f30224d5c9"}, + {file = "mmh3-4.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4a013979fc9390abadc445ea2527426a0e7a4495c19b74589204f9b71bcaafeb"}, + {file = "mmh3-4.1.0-cp311-cp311-win32.whl", hash = "sha256:1d3b1cdad7c71b7b88966301789a478af142bddcb3a2bee563f7a7d40519a00f"}, + {file = "mmh3-4.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0dc6dc32eb03727467da8e17deffe004fbb65e8b5ee2b502d36250d7a3f4e2ec"}, + {file = "mmh3-4.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9ae3a5c1b32dda121c7dc26f9597ef7b01b4c56a98319a7fe86c35b8bc459ae6"}, + {file = "mmh3-4.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c"}, + {file = "mmh3-4.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d6af3e2287644b2b08b5924ed3a88c97b87b44ad08e79ca9f93d3470a54a41c5"}, + {file = "mmh3-4.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d82eb4defa245e02bb0b0dc4f1e7ee284f8d212633389c91f7fba99ba993f0a2"}, + {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba245e94b8d54765e14c2d7b6214e832557e7856d5183bc522e17884cab2f45d"}, + {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb04e2feeabaad6231e89cd43b3d01a4403579aa792c9ab6fdeef45cc58d4ec0"}, + {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e3b1a27def545ce11e36158ba5d5390cdbc300cfe456a942cc89d649cf7e3b2"}, + {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce0ab79ff736d7044e5e9b3bfe73958a55f79a4ae672e6213e92492ad5e734d5"}, + {file = "mmh3-4.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b02268be6e0a8eeb8a924d7db85f28e47344f35c438c1e149878bb1c47b1cd3"}, + {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:deb887f5fcdaf57cf646b1e062d56b06ef2f23421c80885fce18b37143cba828"}, + {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99dd564e9e2b512eb117bd0cbf0f79a50c45d961c2a02402787d581cec5448d5"}, + {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:08373082dfaa38fe97aa78753d1efd21a1969e51079056ff552e687764eafdfe"}, + {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:54b9c6a2ea571b714e4fe28d3e4e2db37abfd03c787a58074ea21ee9a8fd1740"}, + {file = "mmh3-4.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a7b1edf24c69e3513f879722b97ca85e52f9032f24a52284746877f6a7304086"}, + {file = "mmh3-4.1.0-cp312-cp312-win32.whl", hash = "sha256:411da64b951f635e1e2284b71d81a5a83580cea24994b328f8910d40bed67276"}, + {file = "mmh3-4.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:bebc3ecb6ba18292e3d40c8712482b4477abd6981c2ebf0e60869bd90f8ac3a9"}, + {file = "mmh3-4.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:168473dd608ade6a8d2ba069600b35199a9af837d96177d3088ca91f2b3798e3"}, + {file = "mmh3-4.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:372f4b7e1dcde175507640679a2a8790185bb71f3640fc28a4690f73da986a3b"}, + {file = "mmh3-4.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:438584b97f6fe13e944faf590c90fc127682b57ae969f73334040d9fa1c7ffa5"}, + {file = "mmh3-4.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6e27931b232fc676675fac8641c6ec6b596daa64d82170e8597f5a5b8bdcd3b6"}, + {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:571a92bad859d7b0330e47cfd1850b76c39b615a8d8e7aa5853c1f971fd0c4b1"}, + {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a69d6afe3190fa08f9e3a58e5145549f71f1f3fff27bd0800313426929c7068"}, + {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afb127be0be946b7630220908dbea0cee0d9d3c583fa9114a07156f98566dc28"}, + {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:940d86522f36348ef1a494cbf7248ab3f4a1638b84b59e6c9e90408bd11ad729"}, + {file = "mmh3-4.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3dcccc4935686619a8e3d1f7b6e97e3bd89a4a796247930ee97d35ea1a39341"}, + {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc"}, + {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bcb1b8b951a2c0b0fb8a5426c62a22557e2ffc52539e0a7cc46eb667b5d606a9"}, + {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6477a05d5e5ab3168e82e8b106e316210ac954134f46ec529356607900aea82a"}, + {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:da5892287e5bea6977364b15712a2573c16d134bc5fdcdd4cf460006cf849278"}, + {file = "mmh3-4.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:99180d7fd2327a6fffbaff270f760576839dc6ee66d045fa3a450f3490fda7f5"}, + {file = "mmh3-4.1.0-cp38-cp38-win32.whl", hash = "sha256:9b0d4f3949913a9f9a8fb1bb4cc6ecd52879730aab5ff8c5a3d8f5b593594b73"}, + {file = "mmh3-4.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:598c352da1d945108aee0c3c3cfdd0e9b3edef74108f53b49d481d3990402169"}, + {file = "mmh3-4.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:475d6d1445dd080f18f0f766277e1237fa2914e5fe3307a3b2a3044f30892103"}, + {file = "mmh3-4.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5ca07c41e6a2880991431ac717c2a049056fff497651a76e26fc22224e8b5732"}, + {file = "mmh3-4.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ebe052fef4bbe30c0548d12ee46d09f1b69035ca5208a7075e55adfe091be44"}, + {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaefd42e85afb70f2b855a011f7b4d8a3c7e19c3f2681fa13118e4d8627378c5"}, + {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0ae43caae5a47afe1b63a1ae3f0986dde54b5fb2d6c29786adbfb8edc9edfb"}, + {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6218666f74c8c013c221e7f5f8a693ac9cf68e5ac9a03f2373b32d77c48904de"}, + {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac59294a536ba447b5037f62d8367d7d93b696f80671c2c45645fa9f1109413c"}, + {file = "mmh3-4.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:086844830fcd1e5c84fec7017ea1ee8491487cfc877847d96f86f68881569d2e"}, + {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e42b38fad664f56f77f6fbca22d08450f2464baa68acdbf24841bf900eb98e87"}, + {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d08b790a63a9a1cde3b5d7d733ed97d4eb884bfbc92f075a091652d6bfd7709a"}, + {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:73ea4cc55e8aea28c86799ecacebca09e5f86500414870a8abaedfcbaf74d288"}, + {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f90938ff137130e47bcec8dc1f4ceb02f10178c766e2ef58a9f657ff1f62d124"}, + {file = "mmh3-4.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:aa1f13e94b8631c8cd53259250556edcf1de71738936b60febba95750d9632bd"}, + {file = "mmh3-4.1.0-cp39-cp39-win32.whl", hash = "sha256:a3b680b471c181490cf82da2142029edb4298e1bdfcb67c76922dedef789868d"}, + {file = "mmh3-4.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:fefef92e9c544a8dbc08f77a8d1b6d48006a750c4375bbcd5ff8199d761e263b"}, + {file = "mmh3-4.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:8e2c1f6a2b41723a4f82bd5a762a777836d29d664fc0095f17910bea0adfd4a6"}, + {file = "mmh3-4.1.0.tar.gz", hash = "sha256:a1cf25348b9acd229dda464a094d6170f47d2850a1fcb762a3b6172d2ce6ca4a"}, +] + +[package.extras] +test = ["mypy (>=1.0)", "pytest (>=7.0.0)"] + +[[package]] +name = "moreorless" +version = "0.4.0" +description = "Python diff wrapper" +optional = false +python-versions = ">=3.6" +files = [ + {file = "moreorless-0.4.0-py2.py3-none-any.whl", hash = "sha256:17f1fbef60fd21c84ee085a929fe3acefcaddca30df5dd09c024e9939a9e6a00"}, + {file = "moreorless-0.4.0.tar.gz", hash = "sha256:85e19972c1a0b3a49f8543914f57bd83f6e1b10df144d5b97b8c5e9744d9c08c"}, +] + +[package.dependencies] +click = "*" + +[[package]] +name = "mpmath" +version = "1.3.0" +description = "Python library for arbitrary-precision floating-point arithmetic" +optional = false +python-versions = "*" +files = [ + {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, + {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, +] + +[package.extras] +develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] +docs = ["sphinx"] +gmpy = ["gmpy2 (>=2.1.0a4)"] +tests = ["pytest (>=4.6)"] + +[[package]] +name = "mypy" +version = "1.9.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, + {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, + {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, + {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, + {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, + {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, + {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, + {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, + {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, + {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, + {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, + {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, + {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, + {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, + {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, + {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, + {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, + {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "mypy-protobuf" +version = "3.6.0" +description = "Generate mypy stub files from protobuf specs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-protobuf-3.6.0.tar.gz", hash = "sha256:02f242eb3409f66889f2b1a3aa58356ec4d909cdd0f93115622e9e70366eca3c"}, + {file = "mypy_protobuf-3.6.0-py3-none-any.whl", hash = "sha256:56176e4d569070e7350ea620262478b49b7efceba4103d468448f1d21492fd6c"}, +] + +[package.dependencies] +protobuf = ">=4.25.3" +types-protobuf = ">=4.24" + +[[package]] +name = "networkx" +version = "3.2.1" +description = "Python package for creating and manipulating graphs and networks" +optional = false +python-versions = ">=3.9" +files = [ + {file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"}, + {file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"}, +] + +[package.extras] +default = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"] +developer = ["changelist (==0.4)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"] +doc = ["nb2plots (>=0.7)", "nbconvert (<7.9)", "numpydoc (>=1.6)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.11)", "sympy (>=1.10)"] +test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] + +[[package]] +name = "numpy" +version = "1.24.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, + {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, + {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, + {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, + {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, + {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, + {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, + {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, + {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, + {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.1.3.1" +description = "CUBLAS native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"}, + {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"}, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.1.105" +description = "CUDA profiling tools runtime libs." +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"}, + {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"}, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.1.105" +description = "NVRTC native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"}, + {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"}, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.1.105" +description = "CUDA Runtime native Libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"}, + {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"}, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "8.9.2.26" +description = "cuDNN runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl", hash = "sha256:5ccb288774fdfb07a7e7025ffec286971c06d8d7b4fb162525334616d7629ff9"}, +] + +[package.dependencies] +nvidia-cublas-cu12 = "*" + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.0.2.54" +description = "CUFFT native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"}, + {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"}, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.2.106" +description = "CURAND native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"}, + {file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"}, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.4.5.107" +description = "CUDA solver native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"}, + {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"}, +] + +[package.dependencies] +nvidia-cublas-cu12 = "*" +nvidia-cusparse-cu12 = "*" +nvidia-nvjitlink-cu12 = "*" + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.1.0.106" +description = "CUSPARSE native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"}, + {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"}, +] + +[package.dependencies] +nvidia-nvjitlink-cu12 = "*" + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.19.3" +description = "NVIDIA Collective Communication Library (NCCL) Runtime" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl", hash = "sha256:a9734707a2c96443331c1e48c717024aa6678a0e2a4cb66b2c364d18cee6b48d"}, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.4.127" +description = "Nvidia JIT LTO Library" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57"}, + {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:fd9020c501d27d135f983c6d3e244b197a7ccad769e34df53a42e276b0e25fa1"}, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.1.105" +description = "NVIDIA Tools Extension" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"}, + {file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"}, +] + +[[package]] +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] + +[[package]] +name = "pandas" +version = "2.1.0" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:40dd20439ff94f1b2ed55b393ecee9cb6f3b08104c2c40b0cb7186a2f0046242"}, + {file = "pandas-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4f38e4fedeba580285eaac7ede4f686c6701a9e618d8a857b138a126d067f2f"}, + {file = "pandas-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e6a0fe052cf27ceb29be9429428b4918f3740e37ff185658f40d8702f0b3e09"}, + {file = "pandas-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d81e1813191070440d4c7a413cb673052b3b4a984ffd86b8dd468c45742d3cc"}, + {file = "pandas-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eb20252720b1cc1b7d0b2879ffc7e0542dd568f24d7c4b2347cb035206936421"}, + {file = "pandas-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:38f74ef7ebc0ffb43b3d633e23d74882bce7e27bfa09607f3c5d3e03ffd9a4a5"}, + {file = "pandas-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cda72cc8c4761c8f1d97b169661f23a86b16fdb240bdc341173aee17e4d6cedd"}, + {file = "pandas-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d97daeac0db8c993420b10da4f5f5b39b01fc9ca689a17844e07c0a35ac96b4b"}, + {file = "pandas-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c58b1113892e0c8078f006a167cc210a92bdae23322bb4614f2f0b7a4b510f"}, + {file = "pandas-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:629124923bcf798965b054a540f9ccdfd60f71361255c81fa1ecd94a904b9dd3"}, + {file = "pandas-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:70cf866af3ab346a10debba8ea78077cf3a8cd14bd5e4bed3d41555a3280041c"}, + {file = "pandas-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d53c8c1001f6a192ff1de1efe03b31a423d0eee2e9e855e69d004308e046e694"}, + {file = "pandas-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86f100b3876b8c6d1a2c66207288ead435dc71041ee4aea789e55ef0e06408cb"}, + {file = "pandas-2.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28f330845ad21c11db51e02d8d69acc9035edfd1116926ff7245c7215db57957"}, + {file = "pandas-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9a6ccf0963db88f9b12df6720e55f337447aea217f426a22d71f4213a3099a6"}, + {file = "pandas-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99e678180bc59b0c9443314297bddce4ad35727a1a2656dbe585fd78710b3b9"}, + {file = "pandas-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b31da36d376d50a1a492efb18097b9101bdbd8b3fbb3f49006e02d4495d4c644"}, + {file = "pandas-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0164b85937707ec7f70b34a6c3a578dbf0f50787f910f21ca3b26a7fd3363437"}, + {file = "pandas-2.1.0.tar.gz", hash = "sha256:62c24c7fc59e42b775ce0679cfa7b14a5f9bfb7643cfbe708c960699e05fb918"}, +] + +[package.dependencies] +numpy = {version = ">=1.23.2", markers = "python_version >= \"3.11\""} +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.1" + +[package.extras] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.8.0)"] + +[[package]] +name = "pandas" +version = "2.2.2" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "partd" +version = "1.4.1" +description = "Appendable key-value storage" +optional = false +python-versions = ">=3.7" +files = [ + {file = "partd-1.4.1-py3-none-any.whl", hash = "sha256:27e766663d36c161e2827aa3e28541c992f0b9527d3cca047e13fb3acdb989e6"}, + {file = "partd-1.4.1.tar.gz", hash = "sha256:56c25dd49e6fea5727e731203c466c6e092f308d8f0024e199d02f6aa2167f67"}, +] + +[package.dependencies] +locket = "*" +toolz = "*" + +[package.extras] +complete = ["blosc", "numpy (>=1.9.0)", "pandas (>=0.19.0)", "pyzmq"] + +[[package]] +name = "pillow" +version = "10.3.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "protobuf" +version = "4.25.3" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, +] + +[[package]] +name = "pyarrow" +version = "15.0.2" +description = "Python library for Apache Arrow" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyarrow-15.0.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:88b340f0a1d05b5ccc3d2d986279045655b1fe8e41aba6ca44ea28da0d1455d8"}, + {file = "pyarrow-15.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eaa8f96cecf32da508e6c7f69bb8401f03745c050c1dd42ec2596f2e98deecac"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23c6753ed4f6adb8461e7c383e418391b8d8453c5d67e17f416c3a5d5709afbd"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f639c059035011db8c0497e541a8a45d98a58dbe34dc8fadd0ef128f2cee46e5"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:290e36a59a0993e9a5224ed2fb3e53375770f07379a0ea03ee2fce2e6d30b423"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:06c2bb2a98bc792f040bef31ad3e9be6a63d0cb39189227c08a7d955db96816e"}, + {file = "pyarrow-15.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:f7a197f3670606a960ddc12adbe8075cea5f707ad7bf0dffa09637fdbb89f76c"}, + {file = "pyarrow-15.0.2-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5f8bc839ea36b1f99984c78e06e7a06054693dc2af8920f6fb416b5bca9944e4"}, + {file = "pyarrow-15.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f5e81dfb4e519baa6b4c80410421528c214427e77ca0ea9461eb4097c328fa33"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4f240852b302a7af4646c8bfe9950c4691a419847001178662a98915fd7ee7"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e7d9cfb5a1e648e172428c7a42b744610956f3b70f524aa3a6c02a448ba853e"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2d4f905209de70c0eb5b2de6763104d5a9a37430f137678edfb9a675bac9cd98"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90adb99e8ce5f36fbecbbc422e7dcbcbed07d985eed6062e459e23f9e71fd197"}, + {file = "pyarrow-15.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:b116e7fd7889294cbd24eb90cd9bdd3850be3738d61297855a71ac3b8124ee38"}, + {file = "pyarrow-15.0.2-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:25335e6f1f07fdaa026a61c758ee7d19ce824a866b27bba744348fa73bb5a440"}, + {file = "pyarrow-15.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:90f19e976d9c3d8e73c80be84ddbe2f830b6304e4c576349d9360e335cd627fc"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a22366249bf5fd40ddacc4f03cd3160f2d7c247692945afb1899bab8a140ddfb"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2a335198f886b07e4b5ea16d08ee06557e07db54a8400cc0d03c7f6a22f785f"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e6d459c0c22f0b9c810a3917a1de3ee704b021a5fb8b3bacf968eece6df098f"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:033b7cad32198754d93465dcfb71d0ba7cb7cd5c9afd7052cab7214676eec38b"}, + {file = "pyarrow-15.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:29850d050379d6e8b5a693098f4de7fd6a2bea4365bfd073d7c57c57b95041ee"}, + {file = "pyarrow-15.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:7167107d7fb6dcadb375b4b691b7e316f4368f39f6f45405a05535d7ad5e5058"}, + {file = "pyarrow-15.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e85241b44cc3d365ef950432a1b3bd44ac54626f37b2e3a0cc89c20e45dfd8bf"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:248723e4ed3255fcd73edcecc209744d58a9ca852e4cf3d2577811b6d4b59818"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff3bdfe6f1b81ca5b73b70a8d482d37a766433823e0c21e22d1d7dde76ca33f"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:f3d77463dee7e9f284ef42d341689b459a63ff2e75cee2b9302058d0d98fe142"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:8c1faf2482fb89766e79745670cbca04e7018497d85be9242d5350cba21357e1"}, + {file = "pyarrow-15.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:28f3016958a8e45a1069303a4a4f6a7d4910643fc08adb1e2e4a7ff056272ad3"}, + {file = "pyarrow-15.0.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:89722cb64286ab3d4daf168386f6968c126057b8c7ec3ef96302e81d8cdb8ae4"}, + {file = "pyarrow-15.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd0ba387705044b3ac77b1b317165c0498299b08261d8122c96051024f953cd5"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad2459bf1f22b6a5cdcc27ebfd99307d5526b62d217b984b9f5c974651398832"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58922e4bfece8b02abf7159f1f53a8f4d9f8e08f2d988109126c17c3bb261f22"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:adccc81d3dc0478ea0b498807b39a8d41628fa9210729b2f718b78cb997c7c91"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:8bd2baa5fe531571847983f36a30ddbf65261ef23e496862ece83bdceb70420d"}, + {file = "pyarrow-15.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6669799a1d4ca9da9c7e06ef48368320f5856f36f9a4dd31a11839dda3f6cc8c"}, + {file = "pyarrow-15.0.2.tar.gz", hash = "sha256:9c9bc803cb3b7bfacc1e96ffbfd923601065d9d3f911179d81e72d99fd74a3d9"}, +] + +[package.dependencies] +numpy = ">=1.16.6,<2" + +[[package]] +name = "pydantic" +version = "2.7.0" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.7.0-py3-none-any.whl", hash = "sha256:9dee74a271705f14f9a1567671d144a851c675b072736f0a7b2608fd9e495352"}, + {file = "pydantic-2.7.0.tar.gz", hash = "sha256:b5ecdd42262ca2462e2624793551e80911a1e989f462910bb81aef974b4bb383"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +pydantic-core = "2.18.1" +typing-extensions = ">=4.6.1" + +[package.extras] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.18.1" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ee9cf33e7fe14243f5ca6977658eb7d1042caaa66847daacbd2117adb258b226"}, + {file = "pydantic_core-2.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b7bbb97d82659ac8b37450c60ff2e9f97e4eb0f8a8a3645a5568b9334b08b50"}, + {file = "pydantic_core-2.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df4249b579e75094f7e9bb4bd28231acf55e308bf686b952f43100a5a0be394c"}, + {file = "pydantic_core-2.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d0491006a6ad20507aec2be72e7831a42efc93193d2402018007ff827dc62926"}, + {file = "pydantic_core-2.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ae80f72bb7a3e397ab37b53a2b49c62cc5496412e71bc4f1277620a7ce3f52b"}, + {file = "pydantic_core-2.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:58aca931bef83217fca7a390e0486ae327c4af9c3e941adb75f8772f8eeb03a1"}, + {file = "pydantic_core-2.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1be91ad664fc9245404a789d60cba1e91c26b1454ba136d2a1bf0c2ac0c0505a"}, + {file = "pydantic_core-2.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:667880321e916a8920ef49f5d50e7983792cf59f3b6079f3c9dac2b88a311d17"}, + {file = "pydantic_core-2.18.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f7054fdc556f5421f01e39cbb767d5ec5c1139ea98c3e5b350e02e62201740c7"}, + {file = "pydantic_core-2.18.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:030e4f9516f9947f38179249778709a460a3adb516bf39b5eb9066fcfe43d0e6"}, + {file = "pydantic_core-2.18.1-cp310-none-win32.whl", hash = "sha256:2e91711e36e229978d92642bfc3546333a9127ecebb3f2761372e096395fc649"}, + {file = "pydantic_core-2.18.1-cp310-none-win_amd64.whl", hash = "sha256:9a29726f91c6cb390b3c2338f0df5cd3e216ad7a938762d11c994bb37552edb0"}, + {file = "pydantic_core-2.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9ece8a49696669d483d206b4474c367852c44815fca23ac4e48b72b339807f80"}, + {file = "pydantic_core-2.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a5d83efc109ceddb99abd2c1316298ced2adb4570410defe766851a804fcd5b"}, + {file = "pydantic_core-2.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7973c381283783cd1043a8c8f61ea5ce7a3a58b0369f0ee0ee975eaf2f2a1b"}, + {file = "pydantic_core-2.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:54c7375c62190a7845091f521add19b0f026bcf6ae674bdb89f296972272e86d"}, + {file = "pydantic_core-2.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd63cec4e26e790b70544ae5cc48d11b515b09e05fdd5eff12e3195f54b8a586"}, + {file = "pydantic_core-2.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:561cf62c8a3498406495cfc49eee086ed2bb186d08bcc65812b75fda42c38294"}, + {file = "pydantic_core-2.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68717c38a68e37af87c4da20e08f3e27d7e4212e99e96c3d875fbf3f4812abfc"}, + {file = "pydantic_core-2.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d5728e93d28a3c63ee513d9ffbac9c5989de8c76e049dbcb5bfe4b923a9739d"}, + {file = "pydantic_core-2.18.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f0f17814c505f07806e22b28856c59ac80cee7dd0fbb152aed273e116378f519"}, + {file = "pydantic_core-2.18.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d816f44a51ba5175394bc6c7879ca0bd2be560b2c9e9f3411ef3a4cbe644c2e9"}, + {file = "pydantic_core-2.18.1-cp311-none-win32.whl", hash = "sha256:09f03dfc0ef8c22622eaa8608caa4a1e189cfb83ce847045eca34f690895eccb"}, + {file = "pydantic_core-2.18.1-cp311-none-win_amd64.whl", hash = "sha256:27f1009dc292f3b7ca77feb3571c537276b9aad5dd4efb471ac88a8bd09024e9"}, + {file = "pydantic_core-2.18.1-cp311-none-win_arm64.whl", hash = "sha256:48dd883db92e92519201f2b01cafa881e5f7125666141a49ffba8b9facc072b0"}, + {file = "pydantic_core-2.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b6b0e4912030c6f28bcb72b9ebe4989d6dc2eebcd2a9cdc35fefc38052dd4fe8"}, + {file = "pydantic_core-2.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3202a429fe825b699c57892d4371c74cc3456d8d71b7f35d6028c96dfecad31"}, + {file = "pydantic_core-2.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3982b0a32d0a88b3907e4b0dc36809fda477f0757c59a505d4e9b455f384b8b"}, + {file = "pydantic_core-2.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25595ac311f20e5324d1941909b0d12933f1fd2171075fcff763e90f43e92a0d"}, + {file = "pydantic_core-2.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14fe73881cf8e4cbdaded8ca0aa671635b597e42447fec7060d0868b52d074e6"}, + {file = "pydantic_core-2.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca976884ce34070799e4dfc6fbd68cb1d181db1eefe4a3a94798ddfb34b8867f"}, + {file = "pydantic_core-2.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684d840d2c9ec5de9cb397fcb3f36d5ebb6fa0d94734f9886032dd796c1ead06"}, + {file = "pydantic_core-2.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:54764c083bbe0264f0f746cefcded6cb08fbbaaf1ad1d78fb8a4c30cff999a90"}, + {file = "pydantic_core-2.18.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:201713f2f462e5c015b343e86e68bd8a530a4f76609b33d8f0ec65d2b921712a"}, + {file = "pydantic_core-2.18.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd1a9edb9dd9d79fbeac1ea1f9a8dd527a6113b18d2e9bcc0d541d308dae639b"}, + {file = "pydantic_core-2.18.1-cp312-none-win32.whl", hash = "sha256:d5e6b7155b8197b329dc787356cfd2684c9d6a6b1a197f6bbf45f5555a98d411"}, + {file = "pydantic_core-2.18.1-cp312-none-win_amd64.whl", hash = "sha256:9376d83d686ec62e8b19c0ac3bf8d28d8a5981d0df290196fb6ef24d8a26f0d6"}, + {file = "pydantic_core-2.18.1-cp312-none-win_arm64.whl", hash = "sha256:c562b49c96906b4029b5685075fe1ebd3b5cc2601dfa0b9e16c2c09d6cbce048"}, + {file = "pydantic_core-2.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3e352f0191d99fe617371096845070dee295444979efb8f27ad941227de6ad09"}, + {file = "pydantic_core-2.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0295d52b012cbe0d3059b1dba99159c3be55e632aae1999ab74ae2bd86a33d7"}, + {file = "pydantic_core-2.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56823a92075780582d1ffd4489a2e61d56fd3ebb4b40b713d63f96dd92d28144"}, + {file = "pydantic_core-2.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd3f79e17b56741b5177bcc36307750d50ea0698df6aa82f69c7db32d968c1c2"}, + {file = "pydantic_core-2.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38a5024de321d672a132b1834a66eeb7931959c59964b777e8f32dbe9523f6b1"}, + {file = "pydantic_core-2.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2ce426ee691319d4767748c8e0895cfc56593d725594e415f274059bcf3cb76"}, + {file = "pydantic_core-2.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2adaeea59849ec0939af5c5d476935f2bab4b7f0335b0110f0f069a41024278e"}, + {file = "pydantic_core-2.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9b6431559676a1079eac0f52d6d0721fb8e3c5ba43c37bc537c8c83724031feb"}, + {file = "pydantic_core-2.18.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:85233abb44bc18d16e72dc05bf13848a36f363f83757541f1a97db2f8d58cfd9"}, + {file = "pydantic_core-2.18.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:641a018af4fe48be57a2b3d7a1f0f5dbca07c1d00951d3d7463f0ac9dac66622"}, + {file = "pydantic_core-2.18.1-cp38-none-win32.whl", hash = "sha256:63d7523cd95d2fde0d28dc42968ac731b5bb1e516cc56b93a50ab293f4daeaad"}, + {file = "pydantic_core-2.18.1-cp38-none-win_amd64.whl", hash = "sha256:907a4d7720abfcb1c81619863efd47c8a85d26a257a2dbebdb87c3b847df0278"}, + {file = "pydantic_core-2.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:aad17e462f42ddbef5984d70c40bfc4146c322a2da79715932cd8976317054de"}, + {file = "pydantic_core-2.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:94b9769ba435b598b547c762184bcfc4783d0d4c7771b04a3b45775c3589ca44"}, + {file = "pydantic_core-2.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80e0e57cc704a52fb1b48f16d5b2c8818da087dbee6f98d9bf19546930dc64b5"}, + {file = "pydantic_core-2.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76b86e24039c35280ceee6dce7e62945eb93a5175d43689ba98360ab31eebc4a"}, + {file = "pydantic_core-2.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a05db5013ec0ca4a32cc6433f53faa2a014ec364031408540ba858c2172bb0"}, + {file = "pydantic_core-2.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:250ae39445cb5475e483a36b1061af1bc233de3e9ad0f4f76a71b66231b07f88"}, + {file = "pydantic_core-2.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a32204489259786a923e02990249c65b0f17235073149d0033efcebe80095570"}, + {file = "pydantic_core-2.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6395a4435fa26519fd96fdccb77e9d00ddae9dd6c742309bd0b5610609ad7fb2"}, + {file = "pydantic_core-2.18.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2533ad2883f001efa72f3d0e733fb846710c3af6dcdd544fe5bf14fa5fe2d7db"}, + {file = "pydantic_core-2.18.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b560b72ed4816aee52783c66854d96157fd8175631f01ef58e894cc57c84f0f6"}, + {file = "pydantic_core-2.18.1-cp39-none-win32.whl", hash = "sha256:582cf2cead97c9e382a7f4d3b744cf0ef1a6e815e44d3aa81af3ad98762f5a9b"}, + {file = "pydantic_core-2.18.1-cp39-none-win_amd64.whl", hash = "sha256:ca71d501629d1fa50ea7fa3b08ba884fe10cefc559f5c6c8dfe9036c16e8ae89"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e178e5b66a06ec5bf51668ec0d4ac8cfb2bdcb553b2c207d58148340efd00143"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:72722ce529a76a4637a60be18bd789d8fb871e84472490ed7ddff62d5fed620d"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fe0c1ce5b129455e43f941f7a46f61f3d3861e571f2905d55cdbb8b5c6f5e2c"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4284c621f06a72ce2cb55f74ea3150113d926a6eb78ab38340c08f770eb9b4d"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a0c3e718f4e064efde68092d9d974e39572c14e56726ecfaeebbe6544521f47"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2027493cc44c23b598cfaf200936110433d9caa84e2c6cf487a83999638a96ac"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:76909849d1a6bffa5a07742294f3fa1d357dc917cb1fe7b470afbc3a7579d539"}, + {file = "pydantic_core-2.18.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ee7ccc7fb7e921d767f853b47814c3048c7de536663e82fbc37f5eb0d532224b"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee2794111c188548a4547eccc73a6a8527fe2af6cf25e1a4ebda2fd01cdd2e60"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a139fe9f298dc097349fb4f28c8b81cc7a202dbfba66af0e14be5cfca4ef7ce5"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d074b07a10c391fc5bbdcb37b2f16f20fcd9e51e10d01652ab298c0d07908ee2"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c69567ddbac186e8c0aadc1f324a60a564cfe25e43ef2ce81bcc4b8c3abffbae"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:baf1c7b78cddb5af00971ad5294a4583188bda1495b13760d9f03c9483bb6203"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2684a94fdfd1b146ff10689c6e4e815f6a01141781c493b97342cdc5b06f4d5d"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:73c1bc8a86a5c9e8721a088df234265317692d0b5cd9e86e975ce3bc3db62a59"}, + {file = "pydantic_core-2.18.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e60defc3c15defb70bb38dd605ff7e0fae5f6c9c7cbfe0ad7868582cb7e844a6"}, + {file = "pydantic_core-2.18.1.tar.gz", hash = "sha256:de9d3e8717560eb05e28739d1b35e4eac2e458553a52a301e51352a7ffc86a35"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pygments" +version = "2.17.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, +] + +[package.extras] +plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "referencing" +version = "0.34.0" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, + {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + +[[package]] +name = "regex" +version = "2024.4.16" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.7" +files = [ + {file = "regex-2024.4.16-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb83cc090eac63c006871fd24db5e30a1f282faa46328572661c0a24a2323a08"}, + {file = "regex-2024.4.16-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c91e1763696c0eb66340c4df98623c2d4e77d0746b8f8f2bee2c6883fd1fe18"}, + {file = "regex-2024.4.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:10188fe732dec829c7acca7422cdd1bf57d853c7199d5a9e96bb4d40db239c73"}, + {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:956b58d692f235cfbf5b4f3abd6d99bf102f161ccfe20d2fd0904f51c72c4c66"}, + {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a70b51f55fd954d1f194271695821dd62054d949efd6368d8be64edd37f55c86"}, + {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c02fcd2bf45162280613d2e4a1ca3ac558ff921ae4e308ecb307650d3a6ee51"}, + {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ed75ea6892a56896d78f11006161eea52c45a14994794bcfa1654430984b22"}, + {file = "regex-2024.4.16-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd727ad276bb91928879f3aa6396c9a1d34e5e180dce40578421a691eeb77f47"}, + {file = "regex-2024.4.16-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7cbc5d9e8a1781e7be17da67b92580d6ce4dcef5819c1b1b89f49d9678cc278c"}, + {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:78fddb22b9ef810b63ef341c9fcf6455232d97cfe03938cbc29e2672c436670e"}, + {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:445ca8d3c5a01309633a0c9db57150312a181146315693273e35d936472df912"}, + {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:95399831a206211d6bc40224af1c635cb8790ddd5c7493e0bd03b85711076a53"}, + {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7731728b6568fc286d86745f27f07266de49603a6fdc4d19c87e8c247be452af"}, + {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4facc913e10bdba42ec0aee76d029aedda628161a7ce4116b16680a0413f658a"}, + {file = "regex-2024.4.16-cp310-cp310-win32.whl", hash = "sha256:911742856ce98d879acbea33fcc03c1d8dc1106234c5e7d068932c945db209c0"}, + {file = "regex-2024.4.16-cp310-cp310-win_amd64.whl", hash = "sha256:e0a2df336d1135a0b3a67f3bbf78a75f69562c1199ed9935372b82215cddd6e2"}, + {file = "regex-2024.4.16-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1210365faba7c2150451eb78ec5687871c796b0f1fa701bfd2a4a25420482d26"}, + {file = "regex-2024.4.16-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9ab40412f8cd6f615bfedea40c8bf0407d41bf83b96f6fc9ff34976d6b7037fd"}, + {file = "regex-2024.4.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fd80d1280d473500d8086d104962a82d77bfbf2b118053824b7be28cd5a79ea5"}, + {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bb966fdd9217e53abf824f437a5a2d643a38d4fd5fd0ca711b9da683d452969"}, + {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20b7a68444f536365af42a75ccecb7ab41a896a04acf58432db9e206f4e525d6"}, + {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b74586dd0b039c62416034f811d7ee62810174bb70dffcca6439f5236249eb09"}, + {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c8290b44d8b0af4e77048646c10c6e3aa583c1ca67f3b5ffb6e06cf0c6f0f89"}, + {file = "regex-2024.4.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2d80a6749724b37853ece57988b39c4e79d2b5fe2869a86e8aeae3bbeef9eb0"}, + {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3a1018e97aeb24e4f939afcd88211ace472ba566efc5bdf53fd8fd7f41fa7170"}, + {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8d015604ee6204e76569d2f44e5a210728fa917115bef0d102f4107e622b08d5"}, + {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:3d5ac5234fb5053850d79dd8eb1015cb0d7d9ed951fa37aa9e6249a19aa4f336"}, + {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:0a38d151e2cdd66d16dab550c22f9521ba79761423b87c01dae0a6e9add79c0d"}, + {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:159dc4e59a159cb8e4e8f8961eb1fa5d58f93cb1acd1701d8aff38d45e1a84a6"}, + {file = "regex-2024.4.16-cp311-cp311-win32.whl", hash = "sha256:ba2336d6548dee3117520545cfe44dc28a250aa091f8281d28804aa8d707d93d"}, + {file = "regex-2024.4.16-cp311-cp311-win_amd64.whl", hash = "sha256:8f83b6fd3dc3ba94d2b22717f9c8b8512354fd95221ac661784df2769ea9bba9"}, + {file = "regex-2024.4.16-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:80b696e8972b81edf0af2a259e1b2a4a661f818fae22e5fa4fa1a995fb4a40fd"}, + {file = "regex-2024.4.16-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d61ae114d2a2311f61d90c2ef1358518e8f05eafda76eaf9c772a077e0b465ec"}, + {file = "regex-2024.4.16-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ba6745440b9a27336443b0c285d705ce73adb9ec90e2f2004c64d95ab5a7598"}, + {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295004b2dd37b0835ea5c14a33e00e8cfa3c4add4d587b77287825f3418d310"}, + {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4aba818dcc7263852aabb172ec27b71d2abca02a593b95fa79351b2774eb1d2b"}, + {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0800631e565c47520aaa04ae38b96abc5196fe8b4aa9bd864445bd2b5848a7a"}, + {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08dea89f859c3df48a440dbdcd7b7155bc675f2fa2ec8c521d02dc69e877db70"}, + {file = "regex-2024.4.16-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eeaa0b5328b785abc344acc6241cffde50dc394a0644a968add75fcefe15b9d4"}, + {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4e819a806420bc010489f4e741b3036071aba209f2e0989d4750b08b12a9343f"}, + {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:c2d0e7cbb6341e830adcbfa2479fdeebbfbb328f11edd6b5675674e7a1e37730"}, + {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:91797b98f5e34b6a49f54be33f72e2fb658018ae532be2f79f7c63b4ae225145"}, + {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:d2da13568eff02b30fd54fccd1e042a70fe920d816616fda4bf54ec705668d81"}, + {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:370c68dc5570b394cbaadff50e64d705f64debed30573e5c313c360689b6aadc"}, + {file = "regex-2024.4.16-cp312-cp312-win32.whl", hash = "sha256:904c883cf10a975b02ab3478bce652f0f5346a2c28d0a8521d97bb23c323cc8b"}, + {file = "regex-2024.4.16-cp312-cp312-win_amd64.whl", hash = "sha256:785c071c982dce54d44ea0b79cd6dfafddeccdd98cfa5f7b86ef69b381b457d9"}, + {file = "regex-2024.4.16-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e2f142b45c6fed48166faeb4303b4b58c9fcd827da63f4cf0a123c3480ae11fb"}, + {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87ab229332ceb127a165612d839ab87795972102cb9830e5f12b8c9a5c1b508"}, + {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81500ed5af2090b4a9157a59dbc89873a25c33db1bb9a8cf123837dcc9765047"}, + {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b340cccad138ecb363324aa26893963dcabb02bb25e440ebdf42e30963f1a4e0"}, + {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c72608e70f053643437bd2be0608f7f1c46d4022e4104d76826f0839199347a"}, + {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01fe2305e6232ef3e8f40bfc0f0f3a04def9aab514910fa4203bafbc0bb4682"}, + {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:03576e3a423d19dda13e55598f0fd507b5d660d42c51b02df4e0d97824fdcae3"}, + {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:549c3584993772e25f02d0656ac48abdda73169fe347263948cf2b1cead622f3"}, + {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:34422d5a69a60b7e9a07a690094e824b66f5ddc662a5fc600d65b7c174a05f04"}, + {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:5f580c651a72b75c39e311343fe6875d6f58cf51c471a97f15a938d9fe4e0d37"}, + {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3399dd8a7495bbb2bacd59b84840eef9057826c664472e86c91d675d007137f5"}, + {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8d1f86f3f4e2388aa3310b50694ac44daefbd1681def26b4519bd050a398dc5a"}, + {file = "regex-2024.4.16-cp37-cp37m-win32.whl", hash = "sha256:dd5acc0a7d38fdc7a3a6fd3ad14c880819008ecb3379626e56b163165162cc46"}, + {file = "regex-2024.4.16-cp37-cp37m-win_amd64.whl", hash = "sha256:ba8122e3bb94ecda29a8de4cf889f600171424ea586847aa92c334772d200331"}, + {file = "regex-2024.4.16-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:743deffdf3b3481da32e8a96887e2aa945ec6685af1cfe2bcc292638c9ba2f48"}, + {file = "regex-2024.4.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7571f19f4a3fd00af9341c7801d1ad1967fc9c3f5e62402683047e7166b9f2b4"}, + {file = "regex-2024.4.16-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df79012ebf6f4efb8d307b1328226aef24ca446b3ff8d0e30202d7ebcb977a8c"}, + {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e757d475953269fbf4b441207bb7dbdd1c43180711b6208e129b637792ac0b93"}, + {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4313ab9bf6a81206c8ac28fdfcddc0435299dc88cad12cc6305fd0e78b81f9e4"}, + {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d83c2bc678453646f1a18f8db1e927a2d3f4935031b9ad8a76e56760461105dd"}, + {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9df1bfef97db938469ef0a7354b2d591a2d438bc497b2c489471bec0e6baf7c4"}, + {file = "regex-2024.4.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62120ed0de69b3649cc68e2965376048793f466c5a6c4370fb27c16c1beac22d"}, + {file = "regex-2024.4.16-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c2ef6f7990b6e8758fe48ad08f7e2f66c8f11dc66e24093304b87cae9037bb4a"}, + {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8fc6976a3395fe4d1fbeb984adaa8ec652a1e12f36b56ec8c236e5117b585427"}, + {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:03e68f44340528111067cecf12721c3df4811c67268b897fbe695c95f860ac42"}, + {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ec7e0043b91115f427998febaa2beb82c82df708168b35ece3accb610b91fac1"}, + {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c21fc21a4c7480479d12fd8e679b699f744f76bb05f53a1d14182b31f55aac76"}, + {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:12f6a3f2f58bb7344751919a1876ee1b976fe08b9ffccb4bbea66f26af6017b9"}, + {file = "regex-2024.4.16-cp38-cp38-win32.whl", hash = "sha256:479595a4fbe9ed8f8f72c59717e8cf222da2e4c07b6ae5b65411e6302af9708e"}, + {file = "regex-2024.4.16-cp38-cp38-win_amd64.whl", hash = "sha256:0534b034fba6101611968fae8e856c1698da97ce2efb5c2b895fc8b9e23a5834"}, + {file = "regex-2024.4.16-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7ccdd1c4a3472a7533b0a7aa9ee34c9a2bef859ba86deec07aff2ad7e0c3b94"}, + {file = "regex-2024.4.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6f2f017c5be19984fbbf55f8af6caba25e62c71293213f044da3ada7091a4455"}, + {file = "regex-2024.4.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:803b8905b52de78b173d3c1e83df0efb929621e7b7c5766c0843704d5332682f"}, + {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:684008ec44ad275832a5a152f6e764bbe1914bea10968017b6feaecdad5736e0"}, + {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65436dce9fdc0aeeb0a0effe0839cb3d6a05f45aa45a4d9f9c60989beca78b9c"}, + {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea355eb43b11764cf799dda62c658c4d2fdb16af41f59bb1ccfec517b60bcb07"}, + {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c1165f3809ce7774f05cb74e5408cd3aa93ee8573ae959a97a53db3ca3180d"}, + {file = "regex-2024.4.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cccc79a9be9b64c881f18305a7c715ba199e471a3973faeb7ba84172abb3f317"}, + {file = "regex-2024.4.16-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00169caa125f35d1bca6045d65a662af0202704489fada95346cfa092ec23f39"}, + {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6cc38067209354e16c5609b66285af17a2863a47585bcf75285cab33d4c3b8df"}, + {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:23cff1b267038501b179ccbbd74a821ac4a7192a1852d1d558e562b507d46013"}, + {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:b9d320b3bf82a39f248769fc7f188e00f93526cc0fe739cfa197868633d44701"}, + {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:89ec7f2c08937421bbbb8b48c54096fa4f88347946d4747021ad85f1b3021b3c"}, + {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4918fd5f8b43aa7ec031e0fef1ee02deb80b6afd49c85f0790be1dc4ce34cb50"}, + {file = "regex-2024.4.16-cp39-cp39-win32.whl", hash = "sha256:684e52023aec43bdf0250e843e1fdd6febbe831bd9d52da72333fa201aaa2335"}, + {file = "regex-2024.4.16-cp39-cp39-win_amd64.whl", hash = "sha256:e697e1c0238133589e00c244a8b676bc2cfc3ab4961318d902040d099fec7483"}, + {file = "regex-2024.4.16.tar.gz", hash = "sha256:fa454d26f2e87ad661c4f0c5a5fe4cf6aab1e307d1b94f16ffdfcb089ba685c0"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rpds-py" +version = "0.18.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, +] + +[[package]] +name = "safetensors" +version = "0.4.3" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "safetensors-0.4.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:dcf5705cab159ce0130cd56057f5f3425023c407e170bca60b4868048bae64fd"}, + {file = "safetensors-0.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bb4f8c5d0358a31e9a08daeebb68f5e161cdd4018855426d3f0c23bb51087055"}, + {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70a5319ef409e7f88686a46607cbc3c428271069d8b770076feaf913664a07ac"}, + {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fb9c65bd82f9ef3ce4970dc19ee86be5f6f93d032159acf35e663c6bea02b237"}, + {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edb5698a7bc282089f64c96c477846950358a46ede85a1c040e0230344fdde10"}, + {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efcc860be094b8d19ac61b452ec635c7acb9afa77beb218b1d7784c6d41fe8ad"}, + {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d88b33980222085dd6001ae2cad87c6068e0991d4f5ccf44975d216db3b57376"}, + {file = "safetensors-0.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5fc6775529fb9f0ce2266edd3e5d3f10aab068e49f765e11f6f2a63b5367021d"}, + {file = "safetensors-0.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9c6ad011c1b4e3acff058d6b090f1da8e55a332fbf84695cf3100c649cc452d1"}, + {file = "safetensors-0.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c496c5401c1b9c46d41a7688e8ff5b0310a3b9bae31ce0f0ae870e1ea2b8caf"}, + {file = "safetensors-0.4.3-cp310-none-win32.whl", hash = "sha256:38e2a8666178224a51cca61d3cb4c88704f696eac8f72a49a598a93bbd8a4af9"}, + {file = "safetensors-0.4.3-cp310-none-win_amd64.whl", hash = "sha256:393e6e391467d1b2b829c77e47d726f3b9b93630e6a045b1d1fca67dc78bf632"}, + {file = "safetensors-0.4.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:22f3b5d65e440cec0de8edaa672efa888030802e11c09b3d6203bff60ebff05a"}, + {file = "safetensors-0.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c4fa560ebd4522adddb71dcd25d09bf211b5634003f015a4b815b7647d62ebe"}, + {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9afd5358719f1b2cf425fad638fc3c887997d6782da317096877e5b15b2ce93"}, + {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d8c5093206ef4b198600ae484230402af6713dab1bd5b8e231905d754022bec7"}, + {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0b2104df1579d6ba9052c0ae0e3137c9698b2d85b0645507e6fd1813b70931a"}, + {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8cf18888606dad030455d18f6c381720e57fc6a4170ee1966adb7ebc98d4d6a3"}, + {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bf4f9d6323d9f86eef5567eabd88f070691cf031d4c0df27a40d3b4aaee755b"}, + {file = "safetensors-0.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:585c9ae13a205807b63bef8a37994f30c917ff800ab8a1ca9c9b5d73024f97ee"}, + {file = "safetensors-0.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faefeb3b81bdfb4e5a55b9bbdf3d8d8753f65506e1d67d03f5c851a6c87150e9"}, + {file = "safetensors-0.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:befdf0167ad626f22f6aac6163477fcefa342224a22f11fdd05abb3995c1783c"}, + {file = "safetensors-0.4.3-cp311-none-win32.whl", hash = "sha256:a7cef55929dcbef24af3eb40bedec35d82c3c2fa46338bb13ecf3c5720af8a61"}, + {file = "safetensors-0.4.3-cp311-none-win_amd64.whl", hash = "sha256:840b7ac0eff5633e1d053cc9db12fdf56b566e9403b4950b2dc85393d9b88d67"}, + {file = "safetensors-0.4.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:22d21760dc6ebae42e9c058d75aa9907d9f35e38f896e3c69ba0e7b213033856"}, + {file = "safetensors-0.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d22c1a10dff3f64d0d68abb8298a3fd88ccff79f408a3e15b3e7f637ef5c980"}, + {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1648568667f820b8c48317c7006221dc40aced1869908c187f493838a1362bc"}, + {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:446e9fe52c051aeab12aac63d1017e0f68a02a92a027b901c4f8e931b24e5397"}, + {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fef5d70683643618244a4f5221053567ca3e77c2531e42ad48ae05fae909f542"}, + {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a1f4430cc0c9d6afa01214a4b3919d0a029637df8e09675ceef1ca3f0dfa0df"}, + {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d603846a8585b9432a0fd415db1d4c57c0f860eb4aea21f92559ff9902bae4d"}, + {file = "safetensors-0.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a844cdb5d7cbc22f5f16c7e2a0271170750763c4db08381b7f696dbd2c78a361"}, + {file = "safetensors-0.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:88887f69f7a00cf02b954cdc3034ffb383b2303bc0ab481d4716e2da51ddc10e"}, + {file = "safetensors-0.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ee463219d9ec6c2be1d331ab13a8e0cd50d2f32240a81d498266d77d07b7e71e"}, + {file = "safetensors-0.4.3-cp312-none-win32.whl", hash = "sha256:d0dd4a1db09db2dba0f94d15addc7e7cd3a7b0d393aa4c7518c39ae7374623c3"}, + {file = "safetensors-0.4.3-cp312-none-win_amd64.whl", hash = "sha256:d14d30c25897b2bf19b6fb5ff7e26cc40006ad53fd4a88244fdf26517d852dd7"}, + {file = "safetensors-0.4.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d1456f814655b224d4bf6e7915c51ce74e389b413be791203092b7ff78c936dd"}, + {file = "safetensors-0.4.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:455d538aa1aae4a8b279344a08136d3f16334247907b18a5c3c7fa88ef0d3c46"}, + {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf476bca34e1340ee3294ef13e2c625833f83d096cfdf69a5342475602004f95"}, + {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:02ef3a24face643456020536591fbd3c717c5abaa2737ec428ccbbc86dffa7a4"}, + {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7de32d0d34b6623bb56ca278f90db081f85fb9c5d327e3c18fd23ac64f465768"}, + {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a0deb16a1d3ea90c244ceb42d2c6c276059616be21a19ac7101aa97da448faf"}, + {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c59d51f182c729f47e841510b70b967b0752039f79f1de23bcdd86462a9b09ee"}, + {file = "safetensors-0.4.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1f598b713cc1a4eb31d3b3203557ac308acf21c8f41104cdd74bf640c6e538e3"}, + {file = "safetensors-0.4.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5757e4688f20df083e233b47de43845d1adb7e17b6cf7da5f8444416fc53828d"}, + {file = "safetensors-0.4.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fe746d03ed8d193674a26105e4f0fe6c726f5bb602ffc695b409eaf02f04763d"}, + {file = "safetensors-0.4.3-cp37-none-win32.whl", hash = "sha256:0d5ffc6a80f715c30af253e0e288ad1cd97a3d0086c9c87995e5093ebc075e50"}, + {file = "safetensors-0.4.3-cp37-none-win_amd64.whl", hash = "sha256:a11c374eb63a9c16c5ed146457241182f310902bd2a9c18255781bb832b6748b"}, + {file = "safetensors-0.4.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1e31be7945f66be23f4ec1682bb47faa3df34cb89fc68527de6554d3c4258a4"}, + {file = "safetensors-0.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:03a4447c784917c9bf01d8f2ac5080bc15c41692202cd5f406afba16629e84d6"}, + {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d244bcafeb1bc06d47cfee71727e775bca88a8efda77a13e7306aae3813fa7e4"}, + {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53c4879b9c6bd7cd25d114ee0ef95420e2812e676314300624594940a8d6a91f"}, + {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74707624b81f1b7f2b93f5619d4a9f00934d5948005a03f2c1845ffbfff42212"}, + {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d52c958dc210265157573f81d34adf54e255bc2b59ded6218500c9b15a750eb"}, + {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f9568f380f513a60139971169c4a358b8731509cc19112369902eddb33faa4d"}, + {file = "safetensors-0.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d9cd8e1560dfc514b6d7859247dc6a86ad2f83151a62c577428d5102d872721"}, + {file = "safetensors-0.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:89f9f17b0dacb913ed87d57afbc8aad85ea42c1085bd5de2f20d83d13e9fc4b2"}, + {file = "safetensors-0.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1139eb436fd201c133d03c81209d39ac57e129f5e74e34bb9ab60f8d9b726270"}, + {file = "safetensors-0.4.3-cp38-none-win32.whl", hash = "sha256:d9c289f140a9ae4853fc2236a2ffc9a9f2d5eae0cb673167e0f1b8c18c0961ac"}, + {file = "safetensors-0.4.3-cp38-none-win_amd64.whl", hash = "sha256:622afd28968ef3e9786562d352659a37de4481a4070f4ebac883f98c5836563e"}, + {file = "safetensors-0.4.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8651c7299cbd8b4161a36cd6a322fa07d39cd23535b144d02f1c1972d0c62f3c"}, + {file = "safetensors-0.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e375d975159ac534c7161269de24ddcd490df2157b55c1a6eeace6cbb56903f0"}, + {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:084fc436e317f83f7071fc6a62ca1c513b2103db325cd09952914b50f51cf78f"}, + {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:41a727a7f5e6ad9f1db6951adee21bbdadc632363d79dc434876369a17de6ad6"}, + {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7dbbde64b6c534548696808a0e01276d28ea5773bc9a2dfb97a88cd3dffe3df"}, + {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbae3b4b9d997971431c346edbfe6e41e98424a097860ee872721e176040a893"}, + {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01e4b22e3284cd866edeabe4f4d896229495da457229408d2e1e4810c5187121"}, + {file = "safetensors-0.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dd37306546b58d3043eb044c8103a02792cc024b51d1dd16bd3dd1f334cb3ed"}, + {file = "safetensors-0.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8815b5e1dac85fc534a97fd339e12404db557878c090f90442247e87c8aeaea"}, + {file = "safetensors-0.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e011cc162503c19f4b1fd63dfcddf73739c7a243a17dac09b78e57a00983ab35"}, + {file = "safetensors-0.4.3-cp39-none-win32.whl", hash = "sha256:01feb3089e5932d7e662eda77c3ecc389f97c0883c4a12b5cfdc32b589a811c3"}, + {file = "safetensors-0.4.3-cp39-none-win_amd64.whl", hash = "sha256:3f9cdca09052f585e62328c1c2923c70f46814715c795be65f0b93f57ec98a02"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1b89381517891a7bb7d1405d828b2bf5d75528299f8231e9346b8eba092227f9"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:cd6fff9e56df398abc5866b19a32124815b656613c1c5ec0f9350906fd798aac"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:840caf38d86aa7014fe37ade5d0d84e23dcfbc798b8078015831996ecbc206a3"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9650713b2cfa9537a2baf7dd9fee458b24a0aaaa6cafcea8bdd5fb2b8efdc34"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4119532cd10dba04b423e0f86aecb96cfa5a602238c0aa012f70c3a40c44b50"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e066e8861eef6387b7c772344d1fe1f9a72800e04ee9a54239d460c400c72aab"}, + {file = "safetensors-0.4.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:90964917f5b0fa0fa07e9a051fbef100250c04d150b7026ccbf87a34a54012e0"}, + {file = "safetensors-0.4.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c41e1893d1206aa7054029681778d9a58b3529d4c807002c156d58426c225173"}, + {file = "safetensors-0.4.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae7613a119a71a497d012ccc83775c308b9c1dab454806291427f84397d852fd"}, + {file = "safetensors-0.4.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9bac020faba7f5dc481e881b14b6425265feabb5bfc552551d21189c0eddc3"}, + {file = "safetensors-0.4.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:420a98f593ff9930f5822560d14c395ccbc57342ddff3b463bc0b3d6b1951550"}, + {file = "safetensors-0.4.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f5e6883af9a68c0028f70a4c19d5a6ab6238a379be36ad300a22318316c00cb0"}, + {file = "safetensors-0.4.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:cdd0a3b5da66e7f377474599814dbf5cbf135ff059cc73694de129b58a5e8a2c"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9bfb92f82574d9e58401d79c70c716985dc049b635fef6eecbb024c79b2c46ad"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3615a96dd2dcc30eb66d82bc76cda2565f4f7bfa89fcb0e31ba3cea8a1a9ecbb"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:868ad1b6fc41209ab6bd12f63923e8baeb1a086814cb2e81a65ed3d497e0cf8f"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7ffba80aa49bd09195145a7fd233a7781173b422eeb995096f2b30591639517"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0acbe31340ab150423347e5b9cc595867d814244ac14218932a5cf1dd38eb39"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19bbdf95de2cf64f25cd614c5236c8b06eb2cfa47cbf64311f4b5d80224623a3"}, + {file = "safetensors-0.4.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b852e47eb08475c2c1bd8131207b405793bfc20d6f45aff893d3baaad449ed14"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5d07cbca5b99babb692d76d8151bec46f461f8ad8daafbfd96b2fca40cadae65"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1ab6527a20586d94291c96e00a668fa03f86189b8a9defa2cdd34a1a01acc7d5"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02318f01e332cc23ffb4f6716e05a492c5f18b1d13e343c49265149396284a44"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec4b52ce9a396260eb9731eb6aea41a7320de22ed73a1042c2230af0212758ce"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:018b691383026a2436a22b648873ed11444a364324e7088b99cd2503dd828400"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:309b10dbcab63269ecbf0e2ca10ce59223bb756ca5d431ce9c9eeabd446569da"}, + {file = "safetensors-0.4.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b277482120df46e27a58082df06a15aebda4481e30a1c21eefd0921ae7e03f65"}, + {file = "safetensors-0.4.3.tar.gz", hash = "sha256:2f85fc50c4e07a21e95c24e07460fe6f7e2859d0ce88092838352b798ce711c2"}, +] + +[package.extras] +all = ["safetensors[jax]", "safetensors[numpy]", "safetensors[paddlepaddle]", "safetensors[pinned-tf]", "safetensors[quality]", "safetensors[testing]", "safetensors[torch]"] +dev = ["safetensors[all]"] +jax = ["flax (>=0.6.3)", "jax (>=0.3.25)", "jaxlib (>=0.3.25)", "safetensors[numpy]"] +mlx = ["mlx (>=0.0.9)"] +numpy = ["numpy (>=1.21.6)"] +paddlepaddle = ["paddlepaddle (>=2.4.1)", "safetensors[numpy]"] +pinned-tf = ["safetensors[numpy]", "tensorflow (==2.11.0)"] +quality = ["black (==22.3)", "click (==8.0.4)", "flake8 (>=3.8.3)", "isort (>=5.5.4)"] +tensorflow = ["safetensors[numpy]", "tensorflow (>=2.11.0)"] +testing = ["h5py (>=3.7.0)", "huggingface-hub (>=0.12.1)", "hypothesis (>=6.70.2)", "pytest (>=7.2.0)", "pytest-benchmark (>=4.0.0)", "safetensors[numpy]", "setuptools-rust (>=1.5.2)"] +torch = ["safetensors[numpy]", "torch (>=1.10)"] + +[[package]] +name = "scikit-learn" +version = "1.4.2" +description = "A set of python modules for machine learning and data mining" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scikit-learn-1.4.2.tar.gz", hash = "sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959"}, + {file = "scikit_learn-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8539a41b3d6d1af82eb629f9c57f37428ff1481c1e34dddb3b9d7af8ede67ac5"}, + {file = "scikit_learn-1.4.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:68b8404841f944a4a1459b07198fa2edd41a82f189b44f3e1d55c104dbc2e40c"}, + {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81bf5d8bbe87643103334032dd82f7419bc8c8d02a763643a6b9a5c7288c5054"}, + {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f0ea5d0f693cb247a073d21a4123bdf4172e470e6d163c12b74cbb1536cf38"}, + {file = "scikit_learn-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:87440e2e188c87db80ea4023440923dccbd56fbc2d557b18ced00fef79da0727"}, + {file = "scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc"}, + {file = "scikit_learn-1.4.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b"}, + {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0203c368058ab92efc6168a1507d388d41469c873e96ec220ca8e74079bf62e"}, + {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae"}, + {file = "scikit_learn-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904"}, + {file = "scikit_learn-1.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90378e1747949f90c8f385898fff35d73193dfcaec3dd75d6b542f90c4e89755"}, + {file = "scikit_learn-1.4.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ff4effe5a1d4e8fed260a83a163f7dbf4f6087b54528d8880bab1d1377bd78be"}, + {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:671e2f0c3f2c15409dae4f282a3a619601fa824d2c820e5b608d9d775f91780c"}, + {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d36d0bc983336bbc1be22f9b686b50c964f593c8a9a913a792442af9bf4f5e68"}, + {file = "scikit_learn-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928"}, + {file = "scikit_learn-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68"}, + {file = "scikit_learn-1.4.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256"}, + {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d"}, + {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8"}, + {file = "scikit_learn-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361"}, +] + +[package.dependencies] +joblib = ">=1.2.0" +numpy = ">=1.19.5" +scipy = ">=1.6.0" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] + +[[package]] +name = "scipy" +version = "1.13.0" +description = "Fundamental algorithms for scientific computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, + {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, + {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, + {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, + {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, + {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, + {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, + {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, + {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, + {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, + {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<2.3" + +[package.extras] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] +test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "sentence-transformers" +version = "2.6.1" +description = "Multilingual text embeddings" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "sentence-transformers-2.6.1.tar.gz", hash = "sha256:633ad6b70e390ea335de8689652a5d6c21a323b79ed19519c2f392451088487f"}, + {file = "sentence_transformers-2.6.1-py3-none-any.whl", hash = "sha256:a887e17696b513f99a709ce1f37fd547f53857aebe863785ede546c303b09ea0"}, +] + +[package.dependencies] +huggingface-hub = ">=0.15.1" +numpy = "*" +Pillow = "*" +scikit-learn = "*" +scipy = "*" +torch = ">=1.11.0" +tqdm = "*" +transformers = ">=4.32.0,<5.0.0" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.29" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c142852ae192e9fe5aad5c350ea6befe9db14370b34047e1f0f7cf99e63c63b"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99a1e69d4e26f71e750e9ad6fdc8614fbddb67cfe2173a3628a2566034e223c7"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ef3fbccb4058355053c51b82fd3501a6e13dd808c8d8cd2561e610c5456013c"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d6753305936eddc8ed190e006b7bb33a8f50b9854823485eed3a886857ab8d1"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0f3ca96af060a5250a8ad5a63699180bc780c2edf8abf96c58af175921df847a"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c4520047006b1d3f0d89e0532978c0688219857eb2fee7c48052560ae76aca1e"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-win32.whl", hash = "sha256:b2a0e3cf0caac2085ff172c3faacd1e00c376e6884b5bc4dd5b6b84623e29e4f"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-win_amd64.whl", hash = "sha256:01d10638a37460616708062a40c7b55f73e4d35eaa146781c683e0fa7f6c43fb"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:308ef9cb41d099099fffc9d35781638986870b29f744382904bf9c7dadd08513"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:296195df68326a48385e7a96e877bc19aa210e485fa381c5246bc0234c36c78e"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a13b917b4ffe5a0a31b83d051d60477819ddf18276852ea68037a144a506efb9"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f6d971255d9ddbd3189e2e79d743ff4845c07f0633adfd1de3f63d930dbe673"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:61405ea2d563407d316c63a7b5271ae5d274a2a9fbcd01b0aa5503635699fa1e"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de7202ffe4d4a8c1e3cde1c03e01c1a3772c92858837e8f3879b497158e4cb44"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-win32.whl", hash = "sha256:b5d7ed79df55a731749ce65ec20d666d82b185fa4898430b17cb90c892741520"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-win_amd64.whl", hash = "sha256:205f5a2b39d7c380cbc3b5dcc8f2762fb5bcb716838e2d26ccbc54330775b003"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d96710d834a6fb31e21381c6d7b76ec729bd08c75a25a5184b1089141356171f"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:52de4736404e53c5c6a91ef2698c01e52333988ebdc218f14c833237a0804f1b"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c7b02525ede2a164c5fa5014915ba3591730f2cc831f5be9ff3b7fd3e30958e"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dfefdb3e54cd15f5d56fd5ae32f1da2d95d78319c1f6dfb9bcd0eb15d603d5d"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a88913000da9205b13f6f195f0813b6ffd8a0c0c2bd58d499e00a30eb508870c"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fecd5089c4be1bcc37c35e9aa678938d2888845a134dd016de457b942cf5a758"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-win32.whl", hash = "sha256:8197d6f7a3d2b468861ebb4c9f998b9df9e358d6e1cf9c2a01061cb9b6cf4e41"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-win_amd64.whl", hash = "sha256:9b19836ccca0d321e237560e475fd99c3d8655d03da80c845c4da20dda31b6e1"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:87a1d53a5382cdbbf4b7619f107cc862c1b0a4feb29000922db72e5a66a5ffc0"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a0732dffe32333211801b28339d2a0babc1971bc90a983e3035e7b0d6f06b93"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90453597a753322d6aa770c5935887ab1fc49cc4c4fdd436901308383d698b4b"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ea311d4ee9a8fa67f139c088ae9f905fcf0277d6cd75c310a21a88bf85e130f5"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5f20cb0a63a3e0ec4e169aa8890e32b949c8145983afa13a708bc4b0a1f30e03"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-win32.whl", hash = "sha256:e5bbe55e8552019c6463709b39634a5fc55e080d0827e2a3a11e18eb73f5cdbd"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-win_amd64.whl", hash = "sha256:c2f9c762a2735600654c654bf48dad388b888f8ce387b095806480e6e4ff6907"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7e614d7a25a43a9f54fcce4675c12761b248547f3d41b195e8010ca7297c369c"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:471fcb39c6adf37f820350c28aac4a7df9d3940c6548b624a642852e727ea586"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988569c8732f54ad3234cf9c561364221a9e943b78dc7a4aaf35ccc2265f1930"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dddaae9b81c88083e6437de95c41e86823d150f4ee94bf24e158a4526cbead01"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:334184d1ab8f4c87f9652b048af3f7abea1c809dfe526fb0435348a6fef3d380"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:38b624e5cf02a69b113c8047cf7f66b5dfe4a2ca07ff8b8716da4f1b3ae81567"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-win32.whl", hash = "sha256:bab41acf151cd68bc2b466deae5deeb9e8ae9c50ad113444151ad965d5bf685b"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-win_amd64.whl", hash = "sha256:52c8011088305476691b8750c60e03b87910a123cfd9ad48576d6414b6ec2a1d"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3071ad498896907a5ef756206b9dc750f8e57352113c19272bdfdc429c7bd7de"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dba622396a3170974f81bad49aacebd243455ec3cc70615aeaef9e9613b5bca5"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b184e3de58009cc0bf32e20f137f1ec75a32470f5fede06c58f6c355ed42a72"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c37f1050feb91f3d6c32f864d8e114ff5545a4a7afe56778d76a9aec62638ba"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bda7ce59b06d0f09afe22c56714c65c957b1068dee3d5e74d743edec7daba552"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:25664e18bef6dc45015b08f99c63952a53a0a61f61f2e48a9e70cec27e55f699"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-win32.whl", hash = "sha256:77d29cb6c34b14af8a484e831ab530c0f7188f8efed1c6a833a2c674bf3c26ec"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-win_amd64.whl", hash = "sha256:04c487305ab035a9548f573763915189fc0fe0824d9ba28433196f8436f1449c"}, + {file = "SQLAlchemy-2.0.29-py3-none-any.whl", hash = "sha256:dc4ee2d4ee43251905f88637d5281a8d52e916a021384ec10758826f5cbae305"}, + {file = "SQLAlchemy-2.0.29.tar.gz", hash = "sha256:bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""} +typing-extensions = ">=4.6.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3_binary"] + +[[package]] +name = "starlette" +version = "0.37.2" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, + {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + +[[package]] +name = "sympy" +version = "1.12" +description = "Computer algebra system (CAS) in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"}, + {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"}, +] + +[package.dependencies] +mpmath = ">=0.19" + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "tenacity" +version = "8.2.3" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + +[[package]] +name = "threadpoolctl" +version = "3.4.0" +description = "threadpoolctl" +optional = false +python-versions = ">=3.8" +files = [ + {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, + {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, +] + +[[package]] +name = "tokenizers" +version = "0.15.2" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tokenizers-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:52f6130c9cbf70544287575a985bf44ae1bda2da7e8c24e97716080593638012"}, + {file = "tokenizers-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:054c1cc9c6d68f7ffa4e810b3d5131e0ba511b6e4be34157aa08ee54c2f8d9ee"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9b9b070fdad06e347563b88c278995735292ded1132f8657084989a4c84a6d5"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea621a7eef4b70e1f7a4e84dd989ae3f0eeb50fc8690254eacc08acb623e82f1"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf7fd9a5141634fa3aa8d6b7be362e6ae1b4cda60da81388fa533e0b552c98fd"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44f2a832cd0825295f7179eaf173381dc45230f9227ec4b44378322d900447c9"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b9ec69247a23747669ec4b0ca10f8e3dfb3545d550258129bd62291aabe8605"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b6a4c78da863ff26dbd5ad9a8ecc33d8a8d97b535172601cf00aee9d7ce9ce"}, + {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5ab2a4d21dcf76af60e05af8063138849eb1d6553a0d059f6534357bce8ba364"}, + {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a47acfac7e511f6bbfcf2d3fb8c26979c780a91e06fb5b9a43831b2c0153d024"}, + {file = "tokenizers-0.15.2-cp310-none-win32.whl", hash = "sha256:064ff87bb6acdbd693666de9a4b692add41308a2c0ec0770d6385737117215f2"}, + {file = "tokenizers-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3b919afe4df7eb6ac7cafd2bd14fb507d3f408db7a68c43117f579c984a73843"}, + {file = "tokenizers-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:89cd1cb93e4b12ff39bb2d626ad77e35209de9309a71e4d3d4672667b4b256e7"}, + {file = "tokenizers-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cfed5c64e5be23d7ee0f0e98081a25c2a46b0b77ce99a4f0605b1ec43dd481fa"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a907d76dcfda37023ba203ab4ceeb21bc5683436ebefbd895a0841fd52f6f6f2"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20ea60479de6fc7b8ae756b4b097572372d7e4032e2521c1bbf3d90c90a99ff0"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:48e2b9335be2bc0171df9281385c2ed06a15f5cf121c44094338306ab7b33f2c"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:112a1dd436d2cc06e6ffdc0b06d55ac019a35a63afd26475205cb4b1bf0bfbff"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4620cca5c2817177ee8706f860364cc3a8845bc1e291aaf661fb899e5d1c45b0"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccd73a82751c523b3fc31ff8194702e4af4db21dc20e55b30ecc2079c5d43cb7"}, + {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:107089f135b4ae7817affe6264f8c7a5c5b4fd9a90f9439ed495f54fcea56fb4"}, + {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0ff110ecc57b7aa4a594396525a3451ad70988e517237fe91c540997c4e50e29"}, + {file = "tokenizers-0.15.2-cp311-none-win32.whl", hash = "sha256:6d76f00f5c32da36c61f41c58346a4fa7f0a61be02f4301fd30ad59834977cc3"}, + {file = "tokenizers-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:cc90102ed17271cf0a1262babe5939e0134b3890345d11a19c3145184b706055"}, + {file = "tokenizers-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f86593c18d2e6248e72fb91c77d413a815153b8ea4e31f7cd443bdf28e467670"}, + {file = "tokenizers-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0774bccc6608eca23eb9d620196687c8b2360624619623cf4ba9dc9bd53e8b51"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d0222c5b7c9b26c0b4822a82f6a7011de0a9d3060e1da176f66274b70f846b98"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3835738be1de66624fff2f4f6f6684775da4e9c00bde053be7564cbf3545cc66"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0143e7d9dcd811855c1ce1ab9bf5d96d29bf5e528fd6c7824d0465741e8c10fd"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db35825f6d54215f6b6009a7ff3eedee0848c99a6271c870d2826fbbedf31a38"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f5e64b0389a2be47091d8cc53c87859783b837ea1a06edd9d8e04004df55a5c"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0480c452217edd35eca56fafe2029fb4d368b7c0475f8dfa3c5c9c400a7456"}, + {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a33ab881c8fe70474980577e033d0bc9a27b7ab8272896e500708b212995d834"}, + {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a308a607ca9de2c64c1b9ba79ec9a403969715a1b8ba5f998a676826f1a7039d"}, + {file = "tokenizers-0.15.2-cp312-none-win32.whl", hash = "sha256:b8fcfa81bcb9447df582c5bc96a031e6df4da2a774b8080d4f02c0c16b42be0b"}, + {file = "tokenizers-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:38d7ab43c6825abfc0b661d95f39c7f8af2449364f01d331f3b51c94dcff7221"}, + {file = "tokenizers-0.15.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:38bfb0204ff3246ca4d5e726e8cc8403bfc931090151e6eede54d0e0cf162ef0"}, + {file = "tokenizers-0.15.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c861d35e8286a53e06e9e28d030b5a05bcbf5ac9d7229e561e53c352a85b1fc"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:936bf3842db5b2048eaa53dade907b1160f318e7c90c74bfab86f1e47720bdd6"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:620beacc3373277700d0e27718aa8b25f7b383eb8001fba94ee00aeea1459d89"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2735ecbbf37e52db4ea970e539fd2d450d213517b77745114f92867f3fc246eb"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:473c83c5e2359bb81b0b6fde870b41b2764fcdd36d997485e07e72cc3a62264a"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968fa1fb3c27398b28a4eca1cbd1e19355c4d3a6007f7398d48826bbe3a0f728"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:865c60ae6eaebdde7da66191ee9b7db52e542ed8ee9d2c653b6d190a9351b980"}, + {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7c0d8b52664ab2d4a8d6686eb5effc68b78608a9008f086a122a7b2996befbab"}, + {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f33dfbdec3784093a9aebb3680d1f91336c56d86cc70ddf88708251da1fe9064"}, + {file = "tokenizers-0.15.2-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d44ba80988ff9424e33e0a49445072ac7029d8c0e1601ad25a0ca5f41ed0c1d6"}, + {file = "tokenizers-0.15.2-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:dce74266919b892f82b1b86025a613956ea0ea62a4843d4c4237be2c5498ed3a"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0ef06b9707baeb98b316577acb04f4852239d856b93e9ec3a299622f6084e4be"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73e2e74bbb07910da0d37c326869f34113137b23eadad3fc00856e6b3d9930c"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eeb12daf02a59e29f578a865f55d87cd103ce62bd8a3a5874f8fdeaa82e336b"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ba9f6895af58487ca4f54e8a664a322f16c26bbb442effd01087eba391a719e"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccec77aa7150e38eec6878a493bf8c263ff1fa8a62404e16c6203c64c1f16a26"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f40604f5042ff210ba82743dda2b6aa3e55aa12df4e9f2378ee01a17e2855e"}, + {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5645938a42d78c4885086767c70923abad047163d809c16da75d6b290cb30bbe"}, + {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:05a77cbfebe28a61ab5c3891f9939cc24798b63fa236d84e5f29f3a85a200c00"}, + {file = "tokenizers-0.15.2-cp37-none-win32.whl", hash = "sha256:361abdc068e8afe9c5b818769a48624687fb6aaed49636ee39bec4e95e1a215b"}, + {file = "tokenizers-0.15.2-cp37-none-win_amd64.whl", hash = "sha256:7ef789f83eb0f9baeb4d09a86cd639c0a5518528f9992f38b28e819df397eb06"}, + {file = "tokenizers-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4fe1f74a902bee74a3b25aff180fbfbf4f8b444ab37c4d496af7afd13a784ed2"}, + {file = "tokenizers-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c4b89038a684f40a6b15d6b09f49650ac64d951ad0f2a3ea9169687bbf2a8ba"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d05a1b06f986d41aed5f2de464c003004b2df8aaf66f2b7628254bcbfb72a438"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508711a108684111ec8af89d3a9e9e08755247eda27d0ba5e3c50e9da1600f6d"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:daa348f02d15160cb35439098ac96e3a53bacf35885072611cd9e5be7d333daa"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:494fdbe5932d3416de2a85fc2470b797e6f3226c12845cadf054dd906afd0442"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2d60f5246f4da9373f75ff18d64c69cbf60c3bca597290cea01059c336d2470"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93268e788825f52de4c7bdcb6ebc1fcd4a5442c02e730faa9b6b08f23ead0e24"}, + {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6fc7083ab404019fc9acafe78662c192673c1e696bd598d16dc005bd663a5cf9"}, + {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:41e39b41e5531d6b2122a77532dbea60e171ef87a3820b5a3888daa847df4153"}, + {file = "tokenizers-0.15.2-cp38-none-win32.whl", hash = "sha256:06cd0487b1cbfabefb2cc52fbd6b1f8d4c37799bd6c6e1641281adaa6b2504a7"}, + {file = "tokenizers-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:5179c271aa5de9c71712e31cb5a79e436ecd0d7532a408fa42a8dbfa4bc23fd9"}, + {file = "tokenizers-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82f8652a74cc107052328b87ea8b34291c0f55b96d8fb261b3880216a9f9e48e"}, + {file = "tokenizers-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02458bee6f5f3139f1ebbb6d042b283af712c0981f5bc50edf771d6b762d5e4f"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c9a09cd26cca2e1c349f91aa665309ddb48d71636370749414fbf67bc83c5343"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158be8ea8554e5ed69acc1ce3fbb23a06060bd4bbb09029431ad6b9a466a7121"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ddba9a2b0c8c81633eca0bb2e1aa5b3a15362b1277f1ae64176d0f6eba78ab1"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ef5dd1d39797044642dbe53eb2bc56435308432e9c7907728da74c69ee2adca"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:454c203164e07a860dbeb3b1f4a733be52b0edbb4dd2e5bd75023ffa8b49403a"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cf6b7f1d4dc59af960e6ffdc4faffe6460bbfa8dce27a58bf75755ffdb2526d"}, + {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2ef09bbc16519f6c25d0c7fc0c6a33a6f62923e263c9d7cca4e58b8c61572afb"}, + {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c9a2ebdd2ad4ec7a68e7615086e633857c85e2f18025bd05d2a4399e6c5f7169"}, + {file = "tokenizers-0.15.2-cp39-none-win32.whl", hash = "sha256:918fbb0eab96fe08e72a8c2b5461e9cce95585d82a58688e7f01c2bd546c79d0"}, + {file = "tokenizers-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:524e60da0135e106b254bd71f0659be9f89d83f006ea9093ce4d1fab498c6d0d"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6a9b648a58281c4672212fab04e60648fde574877d0139cd4b4f93fe28ca8944"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7c7d18b733be6bbca8a55084027f7be428c947ddf871c500ee603e375013ffba"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:13ca3611de8d9ddfbc4dc39ef54ab1d2d4aaa114ac8727dfdc6a6ec4be017378"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:237d1bf3361cf2e6463e6c140628e6406766e8b27274f5fcc62c747ae3c6f094"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67a0fe1e49e60c664915e9fb6b0cb19bac082ab1f309188230e4b2920230edb3"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4e022fe65e99230b8fd89ebdfea138c24421f91c1a4f4781a8f5016fd5cdfb4d"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d857be2df69763362ac699f8b251a8cd3fac9d21893de129bc788f8baaef2693"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:708bb3e4283177236309e698da5fcd0879ce8fd37457d7c266d16b550bcbbd18"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c35e09e9899b72a76e762f9854e8750213f67567787d45f37ce06daf57ca78"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1257f4394be0d3b00de8c9e840ca5601d0a4a8438361ce9c2b05c7d25f6057b"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02272fe48280e0293a04245ca5d919b2c94a48b408b55e858feae9618138aeda"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dc3ad9ebc76eabe8b1d7c04d38be884b8f9d60c0cdc09b0aa4e3bcf746de0388"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:32e16bdeffa7c4f46bf2152172ca511808b952701d13e7c18833c0b73cb5c23f"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fb16ba563d59003028b678d2361a27f7e4ae0ab29c7a80690efa20d829c81fdb"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2277c36d2d6cdb7876c274547921a42425b6810d38354327dd65a8009acf870c"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cf75d32e8d250781940d07f7eece253f2fe9ecdb1dc7ba6e3833fa17b82fcbc"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b3b31884dc8e9b21508bb76da80ebf7308fdb947a17affce815665d5c4d028"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10122d8d8e30afb43bb1fe21a3619f62c3e2574bff2699cf8af8b0b6c5dc4a3"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d88b96ff0fe8e91f6ef01ba50b0d71db5017fa4e3b1d99681cec89a85faf7bf7"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:37aaec5a52e959892870a7c47cef80c53797c0db9149d458460f4f31e2fb250e"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2ea752f2b0fe96eb6e2f3adbbf4d72aaa1272079b0dfa1145507bd6a5d537e6"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b19a808d8799fda23504a5cd31d2f58e6f52f140380082b352f877017d6342b"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c86e5e068ac8b19204419ed8ca90f9d25db20578f5881e337d203b314f4104"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de19c4dc503c612847edf833c82e9f73cd79926a384af9d801dcf93f110cea4e"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea09acd2fe3324174063d61ad620dec3bcf042b495515f27f638270a7d466e8b"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cf27fd43472e07b57cf420eee1e814549203d56de00b5af8659cb99885472f1f"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7ca22bd897537a0080521445d91a58886c8c04084a6a19e6c78c586e0cfa92a5"}, + {file = "tokenizers-0.15.2.tar.gz", hash = "sha256:e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91"}, +] + +[package.dependencies] +huggingface_hub = ">=0.16.4,<1.0" + +[package.extras] +dev = ["tokenizers[testing]"] +docs = ["setuptools_rust", "sphinx", "sphinx_rtd_theme"] +testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "toolz" +version = "0.12.1" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, +] + +[[package]] +name = "torch" +version = "2.2.2" +description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "torch-2.2.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:bc889d311a855dd2dfd164daf8cc903a6b7273a747189cebafdd89106e4ad585"}, + {file = "torch-2.2.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:15dffa4cc3261fa73d02f0ed25f5fa49ecc9e12bf1ae0a4c1e7a88bbfaad9030"}, + {file = "torch-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:11e8fe261233aeabd67696d6b993eeb0896faa175c6b41b9a6c9f0334bdad1c5"}, + {file = "torch-2.2.2-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:b2e2200b245bd9f263a0d41b6a2dab69c4aca635a01b30cca78064b0ef5b109e"}, + {file = "torch-2.2.2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:877b3e6593b5e00b35bbe111b7057464e76a7dd186a287280d941b564b0563c2"}, + {file = "torch-2.2.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:ad4c03b786e074f46606f4151c0a1e3740268bcf29fbd2fdf6666d66341c1dcb"}, + {file = "torch-2.2.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:32827fa1fbe5da8851686256b4cd94cc7b11be962862c2293811c94eea9457bf"}, + {file = "torch-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:f9ef0a648310435511e76905f9b89612e45ef2c8b023bee294f5e6f7e73a3e7c"}, + {file = "torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:95b9b44f3bcebd8b6cd8d37ec802048c872d9c567ba52c894bba90863a439059"}, + {file = "torch-2.2.2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:49aa4126ede714c5aeef7ae92969b4b0bbe67f19665106463c39f22e0a1860d1"}, + {file = "torch-2.2.2-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:cf12cdb66c9c940227ad647bc9cf5dba7e8640772ae10dfe7569a0c1e2a28aca"}, + {file = "torch-2.2.2-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:89ddac2a8c1fb6569b90890955de0c34e1724f87431cacff4c1979b5f769203c"}, + {file = "torch-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:451331406b760f4b1ab298ddd536486ab3cfb1312614cfe0532133535be60bea"}, + {file = "torch-2.2.2-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:eb4d6e9d3663e26cd27dc3ad266b34445a16b54908e74725adb241aa56987533"}, + {file = "torch-2.2.2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:bf9558da7d2bf7463390b3b2a61a6a3dbb0b45b161ee1dd5ec640bf579d479fc"}, + {file = "torch-2.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cd2bf7697c9e95fb5d97cc1d525486d8cf11a084c6af1345c2c2c22a6b0029d0"}, + {file = "torch-2.2.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:b421448d194496e1114d87a8b8d6506bce949544e513742b097e2ab8f7efef32"}, + {file = "torch-2.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:3dbcd563a9b792161640c0cffe17e3270d85e8f4243b1f1ed19cca43d28d235b"}, + {file = "torch-2.2.2-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:31f4310210e7dda49f1fb52b0ec9e59382cfcb938693f6d5378f25b43d7c1d29"}, + {file = "torch-2.2.2-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c795feb7e8ce2e0ef63f75f8e1ab52e7fd5e1a4d7d0c31367ade1e3de35c9e95"}, + {file = "torch-2.2.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a6e5770d68158d07456bfcb5318b173886f579fdfbf747543901ce718ea94782"}, + {file = "torch-2.2.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:67dcd726edff108e2cd6c51ff0e416fd260c869904de95750e80051358680d24"}, + {file = "torch-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:539d5ef6c4ce15bd3bd47a7b4a6e7c10d49d4d21c0baaa87c7d2ef8698632dfb"}, + {file = "torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:dff696de90d6f6d1e8200e9892861fd4677306d0ef604cb18f2134186f719f82"}, + {file = "torch-2.2.2-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:3a4dd910663fd7a124c056c878a52c2b0be4a5a424188058fe97109d4436ee42"}, +] + +[package.dependencies] +filelock = "*" +fsspec = "*" +jinja2 = "*" +networkx = "*" +nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cudnn-cu12 = {version = "8.9.2.26", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nccl-cu12 = {version = "2.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +sympy = "*" +triton = {version = "2.2.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""} +typing-extensions = ">=4.8.0" + +[package.extras] +opt-einsum = ["opt-einsum (>=3.3)"] +optree = ["optree (>=0.9.1)"] + +[[package]] +name = "tqdm" +version = "4.66.2" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "transformers" +version = "4.39.3" +description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "transformers-4.39.3-py3-none-any.whl", hash = "sha256:7838034a12cca3168247f9d2d1dba6724c9de3ae0f73a108258c6b8fc5912601"}, + {file = "transformers-4.39.3.tar.gz", hash = "sha256:2586e5ff4150f122716fc40f5530e92871befc051848fbe82600969c535b762d"}, +] + +[package.dependencies] +filelock = "*" +huggingface-hub = ">=0.19.3,<1.0" +numpy = ">=1.17" +packaging = ">=20.0" +pyyaml = ">=5.1" +regex = "!=2019.12.17" +requests = "*" +safetensors = ">=0.4.1" +tokenizers = ">=0.14,<0.19" +tqdm = ">=4.27" + +[package.extras] +accelerate = ["accelerate (>=0.21.0)"] +agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] +all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision"] +audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +codecarbon = ["codecarbon (==1.2.0)"] +deepspeed = ["accelerate (>=0.21.0)", "deepspeed (>=0.9.3)"] +deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] +dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.14,<0.19)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +docs = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "hf-doc-builder", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision"] +docs-specific = ["hf-doc-builder"] +flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)"] +flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +ftfy = ["ftfy"] +integrations = ["optuna", "ray[tune] (>=2.7.0)", "sigopt"] +ja = ["fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "rhoknp (>=1.1.0,<1.3.1)", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)"] +modelcreation = ["cookiecutter (==1.7.3)"] +natten = ["natten (>=0.14.6,<0.15.0)"] +onnx = ["onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "tf2onnx"] +onnxruntime = ["onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)"] +optuna = ["optuna"] +quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "ruff (==0.1.5)", "urllib3 (<2.0.0)"] +ray = ["ray[tune] (>=2.7.0)"] +retrieval = ["datasets (!=2.5.0)", "faiss-cpu"] +sagemaker = ["sagemaker (>=2.31.0)"] +sentencepiece = ["protobuf", "sentencepiece (>=0.1.91,!=0.1.92)"] +serving = ["fastapi", "pydantic", "starlette", "uvicorn"] +sigopt = ["sigopt"] +sklearn = ["scikit-learn"] +speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] +testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "tensorboard", "timeout-decorator"] +tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] +tf-cpu = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] +tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +timm = ["timm"] +tokenizers = ["tokenizers (>=0.14,<0.19)"] +torch = ["accelerate (>=0.21.0)", "torch"] +torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] +torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"] +torchhub = ["filelock", "huggingface-hub (>=0.19.3,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.14,<0.19)", "torch", "tqdm (>=4.27)"] +video = ["av (==9.2.0)", "decord (==0.6.0)"] +vision = ["Pillow (>=10.0.1,<=15.0)"] + +[[package]] +name = "triton" +version = "2.2.0" +description = "A language and compiler for custom Deep Learning operations" +optional = false +python-versions = "*" +files = [ + {file = "triton-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2294514340cfe4e8f4f9e5c66c702744c4a117d25e618bd08469d0bfed1e2e5"}, + {file = "triton-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da58a152bddb62cafa9a857dd2bc1f886dbf9f9c90a2b5da82157cd2b34392b0"}, + {file = "triton-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af58716e721460a61886668b205963dc4d1e4ac20508cc3f623aef0d70283d5"}, + {file = "triton-2.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8fe46d3ab94a8103e291bd44c741cc294b91d1d81c1a2888254cbf7ff846dab"}, + {file = "triton-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ce26093e539d727e7cf6f6f0d932b1ab0574dc02567e684377630d86723ace"}, + {file = "triton-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:227cc6f357c5efcb357f3867ac2a8e7ecea2298cd4606a8ba1e931d1d5a947df"}, +] + +[package.dependencies] +filelock = "*" + +[package.extras] +build = ["cmake (>=3.20)", "lit"] +tests = ["autopep8", "flake8", "isort", "numpy", "pytest", "scipy (>=1.7.1)", "torch"] +tutorials = ["matplotlib", "pandas", "tabulate", "torch"] + +[[package]] +name = "typeguard" +version = "4.2.1" +description = "Run-time type checker for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typeguard-4.2.1-py3-none-any.whl", hash = "sha256:7da3bd46e61f03e0852f8d251dcbdc2a336aa495d7daff01e092b55327796eb8"}, + {file = "typeguard-4.2.1.tar.gz", hash = "sha256:c556a1b95948230510070ca53fa0341fb0964611bd05d598d87fb52115d65fee"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=4.10.0", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=7)", "mypy (>=1.2.0)", "pytest (>=7)"] + +[[package]] +name = "types-protobuf" +version = "4.25.0.20240417" +description = "Typing stubs for protobuf" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-protobuf-4.25.0.20240417.tar.gz", hash = "sha256:c34eff17b9b3a0adb6830622f0f302484e4c089f533a46e3f147568313544352"}, + {file = "types_protobuf-4.25.0.20240417-py3-none-any.whl", hash = "sha256:e9b613227c2127e3d4881d75d93c93b4d6fd97b5f6a099a0b654a05351c8685d"}, +] + +[[package]] +name = "typing-extensions" +version = "4.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[package]] +name = "tzdata" +version = "2024.1" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, +] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "uvicorn" +version = "0.29.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, + {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} +h11 = ">=0.8" +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[[package]] +name = "uvloop" +version = "0.19.0" +description = "Fast implementation of asyncio event loop on top of libuv" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, + {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, +] + +[package.extras] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] + +[[package]] +name = "volatile" +version = "2.1.0" +description = "A small extension for the tempfile module." +optional = false +python-versions = "*" +files = [ + {file = "volatile-2.1.0.tar.gz", hash = "sha256:9be36ad508e3354e016c115de0397dc2203b9800a73d9d177ca9d37a8d3a31d3"}, +] + +[[package]] +name = "watchfiles" +version = "0.21.0" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, + {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, + {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, + {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, + {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, + {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, + {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, + {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, + {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, + {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, + {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, + {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, + {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, + {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, + {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, + {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, + {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, + {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, + {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, + {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, + {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, + {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, + {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "websockets" +version = "12.0" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, +] + +[[package]] +name = "werkzeug" +version = "3.0.2" +description = "The comprehensive WSGI web application library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "werkzeug-3.0.2-py3-none-any.whl", hash = "sha256:3aac3f5da756f93030740bc235d3e09449efcf65f2f55e3602e1d851b8f48795"}, + {file = "werkzeug-3.0.2.tar.gz", hash = "sha256:e39b645a6ac92822588e7b39a692e7828724ceae0b0d702ef96701f90e70128d"}, +] + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + +[[package]] +name = "wikipedia" +version = "1.4.0" +description = "Wikipedia API for Python" +optional = false +python-versions = "*" +files = [ + {file = "wikipedia-1.4.0.tar.gz", hash = "sha256:db0fad1829fdd441b1852306e9856398204dc0786d2996dd2e0c8bb8e26133b2"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +requests = ">=2.0.0,<3.0.0" + +[[package]] +name = "zipp" +version = "3.18.1" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, + {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "a4f2760d038e3817c678f15fbf0823b6129be4869684613a85ef021e4bf0ba26" diff --git a/module_4_rag/pyproject.toml b/module_4_rag/pyproject.toml index a305ece..9d1cedf 100644 --- a/module_4_rag/pyproject.toml +++ b/module_4_rag/pyproject.toml @@ -8,7 +8,7 @@ packages = [{include = "feast_rag"}] [tool.poetry.dependencies] python = "^3.9" -feast = "^0.35.0" +feast = "^0.37.0" torch = "^2.2.0" flasgger = "^0.9.7.1" wikipedia = "^1.4.0" From 099883ae84b69a4e94b0daccdec37599f9c40da6 Mon Sep 17 00:00:00 2001 From: cmuhao Date: Tue, 16 Apr 2024 22:31:34 -0700 Subject: [PATCH 03/11] update name Signed-off-by: cmuhao --- .../{module_1.ipynb => module_4.ipynb} | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) rename module_4_rag/feature_repo/{module_1.ipynb => module_4.ipynb} (80%) diff --git a/module_4_rag/feature_repo/module_1.ipynb b/module_4_rag/feature_repo/module_4.ipynb similarity index 80% rename from module_4_rag/feature_repo/module_1.ipynb rename to module_4_rag/feature_repo/module_4.ipynb index a2c12f2..d864e70 100644 --- a/module_4_rag/feature_repo/module_1.ipynb +++ b/module_4_rag/feature_repo/module_4.ipynb @@ -247,27 +247,21 @@ }, { "cell_type": "code", - "execution_count": 4, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.07801833748817444, -0.02972417138516903, 0.012690403498709202, 0.08342994004487991, -0.07765800505876541, 0.019601989537477493, -0.015240228734910488, -0.008848312310874462, -0.040954213589429855, 0.0025382512249052525, 0.033096734434366226, -0.046222101897001266, 0.05860760435461998, -0.0568450428545475, -0.05276476591825485, 0.0008733967551961541, 0.0573134645819664, -0.05047149211168289, 0.1344185769557953, -0.07026461511850357, -0.012536157853901386, 0.0014152592048048973, 0.03534318506717682, 0.024096962064504623, 0.05246112868189812, 0.020924478769302368, 0.025234023109078407, 0.0519547164440155, -0.039378199726343155, -0.028298156335949898, -0.02180365100502968, 0.04103993624448776, 0.07427085936069489, -0.05584770813584328, -0.0056844125501811504, -0.019990745931863785, 0.030951738357543945, -0.05062446370720863, 0.014741722494363785, 0.04260324314236641, -0.042490728199481964, -0.03377283364534378, 0.04507656395435333, 0.03705034777522087, -0.019746845588088036, -0.056894805282354355, -0.009197551757097244, 0.0432242825627327, 0.039562687277793884, 0.009903769008815289, 0.01241956278681755, 0.10459619760513306, -0.05103137716650963, 0.06966476887464523, 0.07505859434604645, -0.04240266978740692, 0.01701846532523632, -0.03750495985150337, -0.054746296256780624, 0.0182594396173954, -0.012896361760795116, 0.04274599254131317, -0.019398674368858337, 0.009013266302645206, 0.014471234753727913, 0.06649964302778244, 0.008245548233389854, -0.028129680082201958, 0.003965297248214483, -0.07583525031805038, 0.08911711722612381, -0.0015677005285397172, -0.02182438038289547, 0.009041466750204563, 0.09342417120933533, -0.0706704705953598, -6.411851791199297e-05, -0.008567560464143753, 0.007213858887553215, 0.017243850976228714, -0.007712843827903271, -0.014170649461448193, -0.06195932626724243, 0.0028950050473213196, -0.08561848104000092, -0.006338762119412422, 0.021296678110957146, 0.053037408739328384, -0.001364336465485394, -0.002476662164554, -0.007682856172323227, 0.08198735862970352, -0.06873174756765366, -0.03858479857444763, -0.049135707318782806, 0.06852905452251434, -0.06103356555104256, -0.036411698907613754, -0.006557854823768139, 0.03009471669793129, 0.002019936917349696, -0.00010870185360545292, 0.07710562646389008, 0.025387680158019066, 0.0009156420128419995, -0.04377828165888786, 0.01065537054091692, 0.007469665724784136, -0.03740379959344864, -0.014080684632062912, 0.05310516804456711, -0.06749620288610458, -0.053242605179548264, 0.08061722666025162, 0.02061639353632927, 0.0001176815276267007, 0.06245463341474533, 0.016253599897027016, 0.052639469504356384, -0.024744976311922073, -0.030349019914865494, -0.04416344314813614, -0.0769074410200119, 0.08859003335237503, 0.024769281968474388, 0.014561351388692856, -0.06356833875179291, -5.705649377509759e-33, -0.06456535309553146, -0.1016070544719696, 0.06309573352336884, 0.07219024002552032, -0.09207630157470703, -0.049228034913539886, 0.021137187257409096, -0.10578685253858566, -0.05286998301744461, -0.05111454054713249, 0.0469074510037899, -0.06117412820458412, 0.0339399017393589, 0.0004974030307494104, 0.10590977221727371, -0.044354259967803955, -0.06721671670675278, 0.06536784023046494, -0.09154384583234787, -0.048457901924848557, 0.029953187331557274, 0.08078416436910629, -0.00024029790074564517, -0.0902462974190712, -0.058329153805971146, 0.007747629191726446, -0.01003243587911129, -0.03624315559864044, 0.03419674187898636, -0.005228803958743811, 0.015385909005999565, -0.016559993848204613, 0.07591874897480011, 0.03000662662088871, 0.035483840852975845, 0.04152686148881912, 0.04580167308449745, 0.012906593270599842, 0.00046234589535743, 0.062181223183870316, -0.09973206371068954, -0.00535804545506835, 0.024861454963684082, 0.05790933594107628, 0.030130719766020775, 0.0012853712541982532, -0.013569572940468788, -0.011862647719681263, -0.04452794790267944, -0.015595197677612305, 0.03933044150471687, -0.03277968987822533, -0.027693554759025574, 0.020017970353364944, 0.029961641877889633, 0.05409591272473335, 0.008051865734159946, -0.03742986544966698, 0.04847348481416702, 0.08966079354286194, -0.08925940841436386, 0.08563001453876495, 0.026953527703881264, -0.017407136037945747, 0.07889477163553238, -0.00330939469859004, 0.01642327941954136, 0.044870372861623764, 0.038156554102897644, 0.09313244372606277, 0.03933331370353699, 0.015708137303590775, 0.033201929181814194, 0.0066472371108829975, -0.01334573794156313, 0.07778702676296234, 0.07326165586709976, 0.04715342819690704, -0.011854764074087143, 0.048978861421346664, -0.04906925931572914, -0.047365352511405945, -0.057076893746852875, 0.027544574812054634, 0.09837957471609116, 0.013657073490321636, -0.03188484162092209, -0.03604546934366226, 0.016496896743774414, 0.00464057270437479, -0.011817664839327335, 0.05207153037190437, 0.026201622560620308, -0.007980862632393837, -0.06751339882612228, 3.4811626024548785e-33, -0.024179214611649513, -0.03442179411649704, 0.036609068512916565, -0.006544083822518587, -0.05538516119122505, -0.050731487572193146, 0.07519624382257462, 0.06881291419267654, 0.018306830897927284, -0.04784656688570976, -0.022632751613855362, -0.06805568188428879, 0.10169850289821625, -0.05231175944209099, 0.07785804569721222, 0.0361756794154644, 0.06857603043317795, -0.005667194724082947, -0.13218310475349426, 0.007104182615876198, -0.1339254528284073, -0.02523181587457657, -0.009480513632297516, 0.04022514075040817, -0.015926437452435493, -0.022156698629260063, -0.12536856532096863, -0.08784068375825882, -0.0802261009812355, -0.07575732469558716, 0.06334906816482544, -0.0752229169011116, -0.050206784158945084, 0.06962698698043823, -0.05181929096579552, 0.053249772638082504, 0.06303039193153381, -0.0071123153902590275, 0.028421849012374878, 0.06876292824745178, -0.006002248264849186, -0.012959819287061691, 0.0062925242818892, 0.08840963989496231, -0.015931595116853714, 0.09986289590597153, 0.006054670549929142, 0.05062229186296463, -0.021414808928966522, -0.012274649925529957, -0.04938894510269165, -0.01637115329504013, -0.09142754971981049, 0.05818070098757744, -0.006439460441470146, 0.042874306440353394, 0.015727540478110313, 0.0819028988480568, -0.0014139035483822227, -0.01970433071255684, 0.04451270401477814, 0.021125735715031624, 0.02288842760026455, 0.05101419612765312, 0.012825817801058292, 0.016781359910964966, -0.02216975949704647, -0.01764294132590294, 0.01915784366428852, -0.014603574760258198, 0.08485425263643265, 0.04511084407567978, -0.04835175350308418, -0.06153305619955063, 0.017427291721105576, 0.03947916999459267, 0.03766325116157532, 0.09129785746335983, 0.02054939605295658, 0.034065935760736465, -0.0031973524019122124, 0.03708754852414131, -0.0861574187874794, -0.04701957106590271, -0.060160450637340546, 0.030250826850533485, 0.02679312229156494, -0.040530577301979065, 0.06642504781484604, -0.015116401948034763, -0.07978353649377823, 0.03694821521639824, -0.08966337144374847, -0.15687212347984314, -0.056372202932834625, -1.9592286903957756e-08, -0.047816380858421326, 0.042460475116968155, -0.06115005165338516, 0.020119454711675644, 0.02028248831629753, 0.05098811909556389, 0.08137453347444534, 0.11335574835538864, -0.026579322293400764, 0.03825395181775093, 0.02473323419690132, -0.03123103640973568, -0.06278723478317261, -0.049794986844062805, -0.055130716413259506, -0.06971192359924316, -0.015822652727365494, 0.08279895782470703, 0.0027329535223543644, -0.1174812763929367, 0.0020566354505717754, -0.010167213156819344, -0.057345468550920486, 0.015829581767320633, -0.039744287729263306, -0.005296017043292522, 0.024359652772545815, -0.010927926748991013, 0.015765801072120667, 0.045185938477516174, 0.055428341031074524, -0.04472818970680237, -0.17569200694561005, -0.02548862434923649, 0.03431904315948486, -0.05847177281975746, -0.054736554622650146, 0.04503115266561508, 0.014799157157540321, -0.08725292235612869, -0.016895325854420662, 0.06513069570064545, -0.014137022197246552, 0.022250333800911903, 0.023893989622592926, -0.00975710991770029, 0.015478317625820637, 0.0044577764347195625, 0.033764127641916275, -0.041090093553066254, -0.04944945126771927, -0.06135516241192818, 0.028508879244327545, -0.012162184342741966, 0.0029868942219763994, -0.047052256762981415, 0.062173232436180115, -0.035780541598796844, -0.03985874727368355, -0.05135627090930939, 0.0775933563709259, 0.013610008172690868, 0.06700531393289566, 0.06444095075130463]\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "question = \"the most populous city in the U.S. state of Texas?\"\n", "\n", "tokenizer = AutoTokenizer.from_pretrained(TOKENIZER)\n", "model = AutoModel.from_pretrained(MODEL)\n", "query_embedding = run_model(question, tokenizer, model)\n", - "query = query_embedding.detach().cpu().numpy().tolist()[0]\n", - "print(query)" + "query = query_embedding.detach().cpu().numpy().tolist()[0]" ], "metadata": { - "collapsed": false + "collapsed": false, + "pycharm": { + "is_executing": true + } } }, { From 7055939aecb7f1b687e6c665047d8a167de72458 Mon Sep 17 00:00:00 2001 From: Hao Xu Date: Tue, 16 Apr 2024 22:39:27 -0700 Subject: [PATCH 04/11] update python version Signed-off-by: Hao Xu --- .github/workflows/feast_apply_aws.yml | 2 +- .github/workflows/feast_apply_gcp.yml | 2 +- .github/workflows/feast_plan_aws.yml | 2 +- .github/workflows/feast_plan_gcp.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/feast_apply_aws.yml b/.github/workflows/feast_apply_aws.yml index 7ad9b27..b76bd05 100644 --- a/.github/workflows/feast_apply_aws.yml +++ b/.github/workflows/feast_apply_aws.yml @@ -13,7 +13,7 @@ jobs: id: setup-python uses: actions/setup-python@v2 with: - python-version: "3.7" + python-version: "3.9" architecture: x64 - name: Set up AWS SDK uses: aws-actions/configure-aws-credentials@v1 diff --git a/.github/workflows/feast_apply_gcp.yml b/.github/workflows/feast_apply_gcp.yml index 02928cc..491b5a1 100644 --- a/.github/workflows/feast_apply_gcp.yml +++ b/.github/workflows/feast_apply_gcp.yml @@ -13,7 +13,7 @@ jobs: id: setup-python uses: actions/setup-python@v2 with: - python-version: "3.7" + python-version: "3.9" architecture: x64 - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v0 diff --git a/.github/workflows/feast_plan_aws.yml b/.github/workflows/feast_plan_aws.yml index 9f75352..52eb14a 100644 --- a/.github/workflows/feast_plan_aws.yml +++ b/.github/workflows/feast_plan_aws.yml @@ -10,7 +10,7 @@ jobs: id: setup-python uses: actions/setup-python@v2 with: - python-version: "3.7" + python-version: "3.9" architecture: x64 - name: Set up AWS SDK uses: aws-actions/configure-aws-credentials@v1 diff --git a/.github/workflows/feast_plan_gcp.yml b/.github/workflows/feast_plan_gcp.yml index a77e7b2..0ba4869 100644 --- a/.github/workflows/feast_plan_gcp.yml +++ b/.github/workflows/feast_plan_gcp.yml @@ -10,7 +10,7 @@ jobs: id: setup-python uses: actions/setup-python@v2 with: - python-version: "3.7" + python-version: "3.9" architecture: x64 - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v0 From 064dce0e982c918b39578d3fa49efb3ff4c824e8 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Wed, 1 May 2024 23:26:47 -0400 Subject: [PATCH 05/11] updated data extraction and readme --- module_4_rag/README.md | 10 +++ module_4_rag/batch_score_documents.py | 2 +- module_4_rag/poetry.lock | 111 ++++++++++++++++++++++---- module_4_rag/pull_states.py | 3 +- module_4_rag/pyproject.toml | 1 + 5 files changed, 109 insertions(+), 18 deletions(-) diff --git a/module_4_rag/README.md b/module_4_rag/README.md index 816629a..0b54b82 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -21,6 +21,16 @@ Then run ```bash python batch_score_documents.py ``` +Which will output data to `city_wikipedia_summaries_with_embeddings.parquet` + +## Feast + +To get started, make sure to have Feast installed and PostGreSQL. + +First run +```bash +feast apply +``` # Overview diff --git a/module_4_rag/batch_score_documents.py b/module_4_rag/batch_score_documents.py index 996d933..bafe616 100644 --- a/module_4_rag/batch_score_documents.py +++ b/module_4_rag/batch_score_documents.py @@ -1,4 +1,4 @@ -import os +import os import pandas as pd from transformers import AutoTokenizer, AutoModel import torch diff --git a/module_4_rag/poetry.lock b/module_4_rag/poetry.lock index 9fa706c..a54fe48 100644 --- a/module_4_rag/poetry.lock +++ b/module_4_rag/poetry.lock @@ -275,7 +275,9 @@ click = ">=8.1" cloudpickle = ">=1.5.0" fsspec = ">=2021.09.0" importlib-metadata = ">=4.13.0" +numpy = {version = ">=1.21", optional = true, markers = "extra == \"array\""} packaging = ">=20.0" +pandas = {version = ">=1.3", optional = true, markers = "extra == \"dataframe\""} partd = ">=1.2.0" pyyaml = ">=5.3.1" toolz = ">=0.10.0" @@ -338,22 +340,24 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" [[package]] name = "feast" -version = "0.36.1.dev89+g1bad023e.d20240417" +version = "0.37.1" description = "Python SDK for Feast" optional = false python-versions = ">=3.9.0" -files = [] -develop = false +files = [ + {file = "feast-0.37.1-py2.py3-none-any.whl", hash = "sha256:2cfe893efdb2ed91490381c41303ba69295711828580e56767628d80c7447239"}, + {file = "feast-0.37.1.tar.gz", hash = "sha256:d1f2ebca8a7bbe17e22dd5a7694ce671db51193846ad2ad90da2004ae9af6cda"}, +] [package.dependencies] bowler = "*" click = ">=7.0.0,<9.0.0" colorama = ">=0.3.9,<1" -dask = ">=2021.1.0,<2024.3.0" +dask = {version = ">=2021.1.0", extras = ["dataframe"]} dill = ">=0.3.0,<0.4.0" fastapi = ">=0.68.0" gunicorn = {version = "*", markers = "platform_system != \"Windows\""} -importlib_metadata = ">=6.8.0,<7" +importlib-metadata = ">=6.8.0,<7" importlib-resources = ">=6.0.0,<7" Jinja2 = ">=2,<4" jsonschema = "*" @@ -378,14 +382,13 @@ uvicorn = {version = ">=0.14.0,<1", extras = ["standard"]} [package.extras] aws = ["boto3 (>=1.17.0,<2)", "docker (>=5.0.2)", "fsspec (<=2024.1.0)"] azure = ["SQLAlchemy (>=1.4.19)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "pymssql", "pyodbc (>=4.0.30)"] -bytewax = ["bytewax (==0.15.1)", "docker (>=5.0.2)", "kubernetes (<=20.13.0)"] cassandra = ["cassandra-driver (>=3.24.0,<4)"] -ci = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "bytewax (==0.15.1)", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great_expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] -dev = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "bytewax (==0.15.1)", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great_expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] -docs = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "bytewax (==0.15.1)", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great_expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] +ci = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great-expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] +dev = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great-expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] +docs = ["SQLAlchemy (>=1.4.19)", "Sphinx (>4.0.0,<7)", "assertpy (==1.1)", "azure-identity (>=1.6.1)", "azure-storage-blob (>=0.37.0)", "boto3 (>=1.17.0,<2)", "build", "cassandra-driver (>=3.24.0,<4)", "cryptography (>=35.0,<43)", "docker (>=5.0.2)", "firebase-admin (>=5.2.0,<6)", "fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)", "great-expectations (>=0.15.41)", "grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-testing (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)", "happybase (>=1.2.0,<3)", "hazelcast-python-client (>=5.1)", "hiredis (>=2.0.0,<3)", "httpx (>=0.23.3)", "ibis-framework", "ibis-framework[duckdb]", "ibis-substrait", "kubernetes (<=20.13.0)", "minio (==7.1.0)", "mock (==2.0.0)", "moto (<5)", "mypy (>=1.4.1)", "pip-tools", "pre-commit (<3.3.2)", "psutil (==5.9.0)", "psycopg2-binary (>=2.8.3,<3)", "py (>=1.11.0)", "pybindgen", "pymssql", "pymysql", "pyodbc (>=4.0.30)", "pyspark (>=3.0.0,<4)", "pytest (>=6.0.0,<8)", "pytest-benchmark (>=3.4.1,<4)", "pytest-cov", "pytest-env", "pytest-lazy-fixture (==0.6.3)", "pytest-mock (==1.10.4)", "pytest-ordering (>=0.6.0,<0.7.0)", "pytest-timeout (==1.4.2)", "pytest-xdist", "redis (>=4.2.2,<5)", "regex", "rockset (>=1.0.3)", "ruff (>=0.3.3)", "snowflake-connector-python[pandas] (>=3.7,<4)", "testcontainers (==4.3.3)", "trino (>=0.305.0,<0.400.0)", "types-PyMySQL", "types-PyYAML", "types-protobuf (>=3.19.22,<3.20.0)", "types-python-dateutil", "types-pytz", "types-redis", "types-requests (<2.31.0)", "types-setuptools", "types-tabulate", "urllib3 (>=1.25.4,<3)", "virtualenv (<20.24.2)", "virtualenv (==20.23.0)"] duckdb = ["ibis-framework[duckdb]"] gcp = ["fsspec (<=2024.1.0)", "google-api-core (>=1.23.0,<3)", "google-cloud-bigquery-storage (>=2.0.0,<3)", "google-cloud-bigquery[pandas] (>=2,<3.13.0)", "google-cloud-bigtable (>=2.11.0,<3)", "google-cloud-datastore (>=2.1.0,<3)", "google-cloud-storage (>=1.34.0,<3)", "googleapis-common-protos (>=1.52.0,<2)"] -ge = ["great_expectations (>=0.15.41)"] +ge = ["great-expectations (>=0.15.41)"] grpcio = ["grpcio (>=1.56.2,<2)", "grpcio-health-checking (>=1.56.2,<2)", "grpcio-reflection (>=1.56.2,<2)", "grpcio-tools (>=1.56.2,<2)"] hazelcast = ["hazelcast-python-client (>=5.1)"] hbase = ["happybase (>=1.2.0,<3)"] @@ -399,10 +402,6 @@ snowflake = ["snowflake-connector-python[pandas] (>=3.7,<4)"] spark = ["pyspark (>=3.0.0,<4)"] trino = ["regex", "trino (>=0.305.0,<0.400.0)"] -[package.source] -type = "directory" -url = "../../feast" - [[package]] name = "filelock" version = "3.13.4" @@ -926,7 +925,6 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -1735,6 +1733,87 @@ files = [ {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] +[[package]] +name = "psycopg2-binary" +version = "2.9.9" +description = "psycopg2 - Python-PostgreSQL Database Adapter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "psycopg2-binary-2.9.9.tar.gz", hash = "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c2470da5418b76232f02a2fcd2229537bb2d5a7096674ce61859c3229f2eb202"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6af2a6d4b7ee9615cbb162b0738f6e1fd1f5c3eda7e5da17861eacf4c717ea7"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75723c3c0fbbf34350b46a3199eb50638ab22a0228f93fb472ef4d9becc2382b"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83791a65b51ad6ee6cf0845634859d69a038ea9b03d7b26e703f94c7e93dbcf9"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0ef4854e82c09e84cc63084a9e4ccd6d9b154f1dbdd283efb92ecd0b5e2b8c84"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1184ab8f113e8d660ce49a56390ca181f2981066acc27cf637d5c1e10ce46e"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d2997c458c690ec2bc6b0b7ecbafd02b029b7b4283078d3b32a852a7ce3ddd98"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b58b4710c7f4161b5e9dcbe73bb7c62d65670a87df7bcce9e1faaad43e715245"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0c009475ee389757e6e34611d75f6e4f05f0cf5ebb76c6037508318e1a1e0d7e"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8dbf6d1bc73f1d04ec1734bae3b4fb0ee3cb2a493d35ede9badbeb901fb40f6f"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-win32.whl", hash = "sha256:3f78fd71c4f43a13d342be74ebbc0666fe1f555b8837eb113cb7416856c79682"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:876801744b0dee379e4e3c38b76fc89f88834bb15bf92ee07d94acd06ec890a0"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ee825e70b1a209475622f7f7b776785bd68f34af6e7a46e2e42f27b659b5bc26"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1ea665f8ce695bcc37a90ee52de7a7980be5161375d42a0b6c6abedbf0d81f0f"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:143072318f793f53819048fdfe30c321890af0c3ec7cb1dfc9cc87aa88241de2"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c332c8d69fb64979ebf76613c66b985414927a40f8defa16cf1bc028b7b0a7b0"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7fc5a5acafb7d6ccca13bfa8c90f8c51f13d8fb87d95656d3950f0158d3ce53"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977646e05232579d2e7b9c59e21dbe5261f403a88417f6a6512e70d3f8a046be"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b6356793b84728d9d50ead16ab43c187673831e9d4019013f1402c41b1db9b27"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc7bb56d04601d443f24094e9e31ae6deec9ccb23581f75343feebaf30423359"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:77853062a2c45be16fd6b8d6de2a99278ee1d985a7bd8b103e97e41c034006d2"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:78151aa3ec21dccd5cdef6c74c3e73386dcdfaf19bced944169697d7ac7482fc"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e6f98446430fdf41bd36d4faa6cb409f5140c1c2cf58ce0bbdaf16af7d3f119"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c77e3d1862452565875eb31bdb45ac62502feabbd53429fdc39a1cc341d681ba"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8359bf4791968c5a78c56103702000105501adb557f3cf772b2c207284273984"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275ff571376626195ab95a746e6a04c7df8ea34638b99fc11160de91f2fef503"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f9b5571d33660d5009a8b3c25dc1db560206e2d2f89d3df1cb32d72c0d117d52"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:420f9bbf47a02616e8554e825208cb947969451978dceb77f95ad09c37791dae"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4154ad09dac630a0f13f37b583eae260c6aa885d67dfbccb5b02c33f31a6d420"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a148c5d507bb9b4f2030a2025c545fccb0e1ef317393eaba42e7eabd28eb6041"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:68fc1f1ba168724771e38bee37d940d2865cb0f562380a1fb1ffb428b75cb692"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:281309265596e388ef483250db3640e5f414168c5a67e9c665cafce9492eda2f"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:60989127da422b74a04345096c10d416c2b41bd7bf2a380eb541059e4e999980"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:246b123cc54bb5361588acc54218c8c9fb73068bf227a4a531d8ed56fa3ca7d6"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34eccd14566f8fe14b2b95bb13b11572f7c7d5c36da61caf414d23b91fcc5d94"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18d0ef97766055fec15b5de2c06dd8e7654705ce3e5e5eed3b6651a1d2a9a152"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3f82c171b4ccd83bbaf35aa05e44e690113bd4f3b7b6cc54d2219b132f3ae55"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ead20f7913a9c1e894aebe47cccf9dc834e1618b7aa96155d2091a626e59c972"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ca49a8119c6cbd77375ae303b0cfd8c11f011abbbd64601167ecca18a87e7cdd"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:323ba25b92454adb36fa425dc5cf6f8f19f78948cbad2e7bc6cdf7b0d7982e59"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:1236ed0952fbd919c100bc839eaa4a39ebc397ed1c08a97fc45fee2a595aa1b3"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:729177eaf0aefca0994ce4cffe96ad3c75e377c7b6f4efa59ebf003b6d398716"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-win32.whl", hash = "sha256:804d99b24ad523a1fe18cc707bf741670332f7c7412e9d49cb5eab67e886b9b5"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:a6cdcc3ede532f4a4b96000b6362099591ab4a3e913d70bcbac2b56c872446f7"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:72dffbd8b4194858d0941062a9766f8297e8868e1dd07a7b36212aaa90f49472"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:30dcc86377618a4c8f3b72418df92e77be4254d8f89f14b8e8f57d6d43603c0f"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31a34c508c003a4347d389a9e6fcc2307cc2150eb516462a7a17512130de109e"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15208be1c50b99203fe88d15695f22a5bed95ab3f84354c494bcb1d08557df67"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1873aade94b74715be2246321c8650cabf5a0d098a95bab81145ffffa4c13876"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a58c98a7e9c021f357348867f537017057c2ed7f77337fd914d0bedb35dace7"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4686818798f9194d03c9129a4d9a702d9e113a89cb03bffe08c6cf799e053291"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ebdc36bea43063116f0486869652cb2ed7032dbc59fbcb4445c4862b5c1ecf7f"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ca08decd2697fdea0aea364b370b1249d47336aec935f87b8bbfd7da5b2ee9c1"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac05fb791acf5e1a3e39402641827780fe44d27e72567a000412c648a85ba860"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-win32.whl", hash = "sha256:9dba73be7305b399924709b91682299794887cbbd88e38226ed9f6712eabee90"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:f7ae5d65ccfbebdfa761585228eb4d0df3a8b15cfb53bd953e713e09fbb12957"}, +] + [[package]] name = "pyarrow" version = "15.0.2" @@ -3367,4 +3446,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "a4f2760d038e3817c678f15fbf0823b6129be4869684613a85ef021e4bf0ba26" +content-hash = "1e4223d03b49a6c7c37e57de170442b5c1f59f65eb78b0e5cf96c311f4d41cc2" diff --git a/module_4_rag/pull_states.py b/module_4_rag/pull_states.py index f356d7e..2c68c0c 100644 --- a/module_4_rag/pull_states.py +++ b/module_4_rag/pull_states.py @@ -3,7 +3,7 @@ import wikipedia as wiki import pandas as pd -EXPORT_FILENAME = "city_wikipedia_summaries.csv" +EXPORT_FILENAME = "./data/city_wikipedia_summaries.csv" CITIES = [ "New York, New York", "Los Angeles, California", @@ -78,6 +78,7 @@ def pull_state_data() -> None: print("data not found pullling wikipedia state summaries...") city_summary_output = get_wikipedia_summary(CITIES) write_data(city_summary_output) + print(f"...data exported to {EXPORT_FILENAME}") else: print("data already present...skipping download") diff --git a/module_4_rag/pyproject.toml b/module_4_rag/pyproject.toml index 9d1cedf..e9cb780 100644 --- a/module_4_rag/pyproject.toml +++ b/module_4_rag/pyproject.toml @@ -14,6 +14,7 @@ flasgger = "^0.9.7.1" wikipedia = "^1.4.0" lxml = "^5.1.0" sentence-transformers = "^2.3.1" +psycopg2-binary = "^2.9.9" [build-system] From 031967c7314890dd5a2b986961eb06b5c83b17c7 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Fri, 10 May 2024 09:19:26 -0400 Subject: [PATCH 06/11] still modfiying --- module_4_rag/README.md | 4 +- module_4_rag/app.py | 74 +--- .../data/city_wikipedia_summaries.csv | 256 +++++++++++++ ...ikipedia_summaries_with_embeddings.parquet | Bin 0 -> 190566 bytes module_4_rag/feature_repo/feature_store.yaml | 2 +- module_4_rag/feature_repo/features.py | 2 +- module_4_rag/feature_repo/module_4.ipynb | 348 ------------------ 7 files changed, 273 insertions(+), 413 deletions(-) create mode 100644 module_4_rag/feature_repo/data/city_wikipedia_summaries.csv create mode 100644 module_4_rag/feature_repo/data/city_wikipedia_summaries_with_embeddings.parquet delete mode 100644 module_4_rag/feature_repo/module_4.ipynb diff --git a/module_4_rag/README.md b/module_4_rag/README.md index 0b54b82..77c319b 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -21,8 +21,10 @@ Then run ```bash python batch_score_documents.py ``` -Which will output data to `city_wikipedia_summaries_with_embeddings.parquet` +Which will output data to `data/city_wikipedia_summaries_with_embeddings.parquet` +Next we'll need to do some Feast work and move the data into a repo created by +Feast. ## Feast To get started, make sure to have Feast installed and PostGreSQL. diff --git a/module_4_rag/app.py b/module_4_rag/app.py index 3dbe591..d3d3675 100644 --- a/module_4_rag/app.py +++ b/module_4_rag/app.py @@ -6,30 +6,13 @@ ) from flasgger import Swagger from datetime import datetime -from get_features import ( - get_onboarding_features, - get_onboarding_score, - get_daily_features, - get_daily_score, -) -from ml import make_risk_decision app = Flask(__name__) swagger = Swagger(app) -@app.route("/") -def onboarding_page(): - return render_template("index.html") - - -@app.route("/home") -def home_page(): - return render_template("home.html") - - -@app.route("/onboarding-risk-features/", methods=["POST"]) -def onboarding_features(): +@app.route("/get_documents") +def get_documents(): """Example endpoint returning features by id This is using docstrings for specifications. --- @@ -39,29 +22,11 @@ def onboarding_features(): in: query required: true default: NJ - - - name: ssn - type: string - in: query - required: true - default: 123-45-6789 - - - name: dl - type: string - in: query - required: true - default: some-dl-number - - - name: dob - type: string - in: query - required: true - default: 12-23-2000 responses: 200: - description: A JSON of features + description: A JSON of documents schema: - id: OnboardingFeatures + id: Document ID properties: is_gt_18_years_old: type: array @@ -69,30 +34,15 @@ def onboarding_features(): schema: id: value type: number - is_valid_state: - type: array - items: - schema: - id: value - type: number - is_previously_seen_ssn: - type: array - items: - schema: - id: value - type: number - is_previously_seen_dl: - type: array - items: - schema: - id: value - type: number """ - r = request.args - feature_vector = get_onboarding_features( - r.get("state"), r.get("ssn"), r.get("dl"), r.get("dob") - ) - return jsonify(feature_vector) + question = request.form["question"] + documents = store.get_online_documents(query) + return render_template("documents.html", documents=documents) + + +@app.route("/") +def home(): + return render_template("home.html") if __name__ == "__main__": diff --git a/module_4_rag/feature_repo/data/city_wikipedia_summaries.csv b/module_4_rag/feature_repo/data/city_wikipedia_summaries.csv new file mode 100644 index 0000000..99910fe --- /dev/null +++ b/module_4_rag/feature_repo/data/city_wikipedia_summaries.csv @@ -0,0 +1,256 @@ +State,Wiki Summary +"New York, New York","New York, often called New York City or simply NYC, is the most populous city in the United States, located at the southern tip of New York State on one of the world's largest natural harbors. The city comprises five boroughs, each of which is coextensive with a respective county. New York is a global center of finance and commerce, culture and technology, entertainment and media, academics and scientific output, and the arts and fashion, and, as home to the headquarters of the United Nations, is an important center for international diplomacy. New York City is the epicenter of the world's principal metropolitan economy. +With an estimated population in 2022 of 8,335,897 distributed over 300.46 square miles (778.2 km2), the city is the most densely populated major city in the United States. New York has more than double the population of Los Angeles, the nation's second-most populous city. New York is the geographical and demographic center of both the Northeast megalopolis and the New York metropolitan area, the largest metropolitan area in the U.S. by both population and urban area. With more than 20.1 million people in its metropolitan statistical area and 23.5 million in its combined statistical area as of 2020, New York City is one of the world's most populous megacities. The city and its metropolitan area are the premier gateway for legal immigration to the United States. As many as 800 languages are spoken in New York, making it the most linguistically diverse city in the world. In 2021, the city was home to nearly 3.1 million residents born outside the U.S., the largest foreign-born population of any city in the world. +New York City traces its origins to Fort Amsterdam and a trading post founded on the southern tip of Manhattan Island by Dutch colonists in approximately 1624. The settlement was named New Amsterdam (Dutch: Nieuw Amsterdam) in 1626 and was chartered as a city in 1653. The city came under English control in 1664 and was temporarily renamed New York after King Charles II granted the lands to his brother, the Duke of York. before being permanently renamed New York in November 1674. New York City was the capital of the United States from 1785 until 1790. The modern city was formed by the 1898 consolidation of its five boroughs: Manhattan, Brooklyn, Queens, The Bronx, and Staten Island, and has been the largest U.S. city ever since. +Anchored by Wall Street in the Financial District of Lower Manhattan, New York City has been called both the world's premier financial and fintech center and the most economically powerful city in the world. As of 2022, the New York metropolitan area is the largest metropolitan economy in the world with a gross metropolitan product of over US$2.16 trillion. If the New York metropolitan area were its own country, it would have the tenth-largest economy in the world. The city is home to the world's two largest stock exchanges by market capitalization of their listed companies: the New York Stock Exchange and Nasdaq. New York City is an established safe haven for global investors. As of 2023, New York City is the most expensive city in the world for expatriates to live. New York City is home to the highest number of billionaires, individuals of ultra-high net worth (greater than US$30 million), and millionaires of any city in the world. + +" +"Los Angeles, California","Los Angeles, often referred to by its initials L.A., is the most populous city in the U.S. state of California. With roughly 3.9 million residents within the city limits as of 2020, Los Angeles is the second-most populous city in the United States, behind only New York City; it is also the commercial, financial and cultural center of Southern California. Los Angeles has an ethnically and culturally diverse population, and is the principal city of a metropolitan area of 13.2 million people. Greater Los Angeles, which includes the Los Angeles and Riverside–San Bernardino metropolitan areas, is a sprawling metropolis of over 18 million residents. +The majority of the city proper lies in a basin in Southern California adjacent to the Pacific Ocean in the west and extending partly through the Santa Monica Mountains and north into the San Fernando Valley, with the city bordering the San Gabriel Valley to its east. It covers about 469 square miles (1,210 km2), and is the county seat of Los Angeles County, which is the most populous county in the United States with an estimated 9.86 million residents as of 2022. It is the fourth-most visited city in the U.S. with over 2.7 million visitors as of 2022. +The area that became Los Angeles was originally inhabited by the indigenous Tongva people and later claimed by Juan Rodríguez Cabrillo for Spain in 1542. The city was founded on September 4, 1781, under Spanish governor Felipe de Neve, on the village of Yaanga. It became a part of Mexico in 1821 following the Mexican War of Independence. In 1848, at the end of the Mexican–American War, Los Angeles and the rest of California were purchased as part of the Treaty of Guadalupe Hidalgo and became part of the United States. Los Angeles was incorporated as a municipality on April 4, 1850, five months before California achieved statehood. The discovery of oil in the 1890s brought rapid growth to the city. The city was further expanded with the completion of the Los Angeles Aqueduct in 1913, which delivers water from Eastern California. +Los Angeles has a diverse economy with a broad range of industries. Los Angeles is best known as the home of the Hollywood film industry, the world's largest by revenue; the city was an important site in the history of film. It also has one of the busiest container ports in the Americas. In 2018, the Los Angeles metropolitan area had a gross metropolitan product of over $1.0 trillion, making it the city with the third-largest GDP in the world, after New York and Tokyo. Los Angeles hosted the Summer Olympics in 1932 and 1984, and will also host in 2028. Despite a business exodus from Downtown Los Angeles since the COVID-19 pandemic, the city's urban core is evolving as a cultural center with the world's largest showcase of architecture designed by Frank Gehry. More recently, statewide droughts in California have strained both the city's and Los Angeles County's water security. + +" +"Chicago, Illinois","Chicago is the most populous city in the U.S. state of Illinois and in the Midwestern United States. With a population of 2,746,388 in the 2020 census, it is the third-most populous city in the United States after New York City and Los Angeles. As the seat of Cook County, the second-most populous county in the U.S., Chicago is the center of the Chicago metropolitan area, often colloquially called ""Chicagoland"" and home to 9.6 million residents. +Located on the shore of Lake Michigan, Chicago was incorporated as a city in 1837 near a portage between the Great Lakes and the Mississippi River watershed. It grew rapidly in the mid-19th century. In 1871, the Great Chicago Fire destroyed several square miles and left more than 100,000 homeless, but Chicago's population continued to grow. Chicago made noted contributions to urban planning and architecture, such as the Chicago School, the development of the City Beautiful Movement, and the steel-framed skyscraper. +Chicago is an international hub for finance, culture, commerce, industry, education, technology, telecommunications, and transportation. It has the largest and most diverse derivatives market in the world, generating 20% of all volume in commodities and financial futures alone. O'Hare International Airport is routinely ranked among the world's top six busiest airports by passenger traffic, and the region is also the nation's railroad hub. The Chicago area has one of the highest gross domestic products (GDP) of any urban region in the world, generating $689 billion in 2018. Chicago's economy is diverse, with no single industry employing more than 14% of the workforce. +Chicago is a major destination for tourism, including visitors to its cultural institutions, and Lake Michigan beaches. Chicago's culture has contributed much to the visual arts, literature, film, theater, comedy (especially improvisational comedy), food, dance, and music (particularly jazz, blues, soul, hip-hop, gospel, and electronic dance music, including house music). Chicago is home to the Chicago Symphony Orchestra and the Lyric Opera of Chicago, while the Art Institute of Chicago provides an influential visual arts museum and art school. The Chicago area also hosts the University of Chicago, Northwestern University, and the University of Illinois Chicago, among other institutions of learning. Professional sports in Chicago include all major professional leagues, including two Major League Baseball teams." +"Houston, Texas","Houston ( ; HEW-stən) is the most populous city in the U.S. state of Texas and in the Southern United States. Located in Southeast Texas near Galveston Bay and the Gulf of Mexico, it is the seat and largest city of Harris County; as well as the principal city of the Greater Houston metropolitan area, which is the fifth-most populous metropolitan statistical area in the United States and the second-most populous in Texas after Dallas–Fort Worth. With a population of 2,302,878 in 2022, Houston is the fourth-most populous city in the United States after New York City, Los Angeles, and Chicago, and the seventh-most populous city in North America. Houston is the southeast anchor of the greater megaregion known as the Texas Triangle. +Comprising a land area of 640.4 square miles (1,659 km2), Houston is the ninth-most expansive city in the United States (including consolidated city-counties). It is the largest city in the United States by total area whose government is not consolidated with a county, parish, or borough. Though primarily in Harris County, small portions of the city extend into Fort Bend and Montgomery counties, bordering other principal communities of Greater Houston such as Sugar Land and The Woodlands. +Houston was founded by land investors on August 30, 1836, at the confluence of Buffalo Bayou and White Oak Bayou (a point now known as Allen's Landing) and incorporated as a city on June 5, 1837. The city is named after former General Sam Houston, who was president of the Republic of Texas and had won Texas's independence from Mexico at the Battle of San Jacinto 25 miles (40 km) east of Allen's Landing. After briefly serving as the capital of the Texas Republic in the late 1830s, Houston grew steadily into a regional trading center for the remainder of the 19th century. +The arrival of the 20th century brought a convergence of economic factors that fueled rapid growth in Houston, including a burgeoning port and railroad industry, the decline of Galveston as Texas's primary port following a devastating 1900 hurricane, the subsequent construction of the Houston Ship Channel, and the Texas oil boom. In the mid-20th century, Houston's economy diversified, as it became home to the Texas Medical Center—the world's largest concentration of healthcare and research institutions—and NASA's Johnson Space Center, home to the Mission Control Center. +Since the late 19th century Houston's economy has had a broad industrial base, in energy, manufacturing, aeronautics, and transportation. Leading in healthcare sectors and building oilfield equipment, Houston has the second-most Fortune 500 headquarters of any U.S. municipality within its city limits (after New York City). The Port of Houston ranks first in the United States in international waterborne tonnage handled and second in total cargo tonnage handled. +Nicknamed the ""Bayou City"", ""Space City"", ""H-Town"", and ""the 713"", Houston has become a global city, with strengths in culture, medicine, and research. The city's population comprises various ethnic and religious backgrounds, as well as a large and growing international community. Houston is the most diverse metropolitan area in Texas and has been described as the most racially and ethnically diverse major city in the U.S. It is home to many cultural institutions and exhibits, such as the Houston Museum District and the Houston Theater District. + +" +"Phoenix, Arizona","Phoenix ( FEE-niks; Spanish: Fénix;) is the capital and most populous city of the U.S. state of Arizona, with 1,608,139 residents as of 2020. It is the fifth-most populous city in the United States and the most populous state capital in the country. +Phoenix is the most populous city of the Phoenix metropolitan area, also known as the Valley of the Sun, which in turn is part of the Salt River Valley and Arizona Sun Corridor. The metro area is the 10th-largest by population in the United States with approximately 4.85 million people as of 2020, making it the most populous in the Southwestern United States. Phoenix, the seat of Maricopa County, is the largest city by area in Arizona, with an area of 517.9 square miles (1,341 km2), and is also the 11th-largest city by area in the United States. +Phoenix was settled in 1867 as an agricultural community near the confluence of the Salt and Gila Rivers and was incorporated as a city in 1881. It became the capital of Arizona Territory in 1889. Its canal system led to a thriving farming community with the original settlers' crops, such as alfalfa, cotton, citrus, and hay, remaining important parts of the local economy for decades. Cotton, cattle, citrus, climate, and copper were known locally as the ""Five C's"" anchoring Phoenix's economy. These remained the driving forces of the city until after World War II, when high-tech companies began to move into the valley and air conditioning made Phoenix's hot summers more bearable. +Phoenix is the cultural center of Arizona. It is in the northeastern reaches of the Sonoran Desert and is known for its hot desert climate. The region's gross domestic product reached over $362 billion by 2022. The city averaged a four percent annual population growth rate over a 40-year period from the mid-1960s to the mid-2000s, and was among the nation's ten most populous cities by 1980. Phoenix is also one of the largest plurality-Hispanic cities in the United States, with 42% of its population being Hispanic." +"Philadelphia, Pennsylvania","Philadelphia, commonly referred to as Philly, is the most populous city in the U.S. state of Pennsylvania. Philadelphia is the nation's sixth-most populous city, with a population of 1,603,797 in the 2020 census and is the urban core of the larger Delaware Valley (or Philadelphia metropolitan area), the nation's seventh-largest and one of the world's largest metropolitan regions consisting of 6.245 million residents in the metropolitan statistical area and 7.366 million residents in its combined statistical area. Philadelphia is known for its extensive contributions to United States history, especially the American Revolution, and served as the nation's capital until 1800. It maintains contemporary influence in business and industry, culture, sports, and music. +Philadelphia was founded in 1682 by William Penn, an English Quaker and advocate of religious freedom. The city served as the capital of the Pennsylvania Colony during the British colonial era and went on to play a historic and vital role as the central meeting place for the nation's founding fathers. Philadelphia hosted the First Continental Congress in 1774, preserved the Liberty Bell, and hosted the Second Continental Congress during which the founders signed the Declaration of Independence. The U.S. Constitution was later ratified in Philadelphia at the Philadelphia Convention of 1787. Philadelphia remained the nation's largest city until 1790, served as the nation's first capital from May 10, 1775, until December 12, 1776, and on four subsequent occasions during and following the American Revolution, including from 1790 to 1800 during the construction of the new national capital of Washington, D.C. +With 18 four-year universities and colleges, Philadelphia is one of the nation's leading centers for higher education and academic research. As of 2018, the Philadelphia metropolitan area was the state's largest and nation's ninth-largest metropolitan economy with a gross metropolitan product of US$444.1 billion. The city is home to five Fortune 500 corporate headquarters as of 2022. As of 2023, metropolitan Philadelphia ranks among the top five U.S. venture capital centers, facilitated by its proximity to New York City's entrepreneurial and financial ecosystems. The Philadelphia Stock Exchange, owned by Nasdaq since 2008, is the nation's oldest stock exchange and a global leader in options trading. 30th Street Station, the city's primary rail station, is the third-busiest Amtrak hub in the nation, and the city's multimodal transport and logistics infrastructure, includes Philadelphia International Airport, and the rapidly-growing PhilaPort seaport. A migration pattern has been established from New York City to Philadelphia by residents opting for a large city with relative proximity and a lower cost of living. +Philadelphia is a national cultural center, hosting more outdoor sculptures and murals than any other city in the nation. Fairmount Park, when combined with adjacent Wissahickon Valley Park in the same watershed, is 2,052 acres (830 ha), representing one of the nation's largest and the world's 45th-largest urban park. The city is known for its arts, culture, cuisine, and colonial and Revolution-era history; in 2016, it attracted 42 million domestic tourists who spent $6.8 billion, representing $11 billion in economic impact to the city and its surrounding Pennsylvania counties. With five professional sports teams and one of the nation's most loyal fan bases, Philadelphia is often ranked as the nation's best city for professional sports fans. The city has a culturally and philanthropically active LGBTQ+ community. Philadelphia also has played an immensely influential historic and ongoing role in the development and evolution of American music, especially R&B, soul, and rock. +Philadelphia is a city of many firsts, including the nation's first library (1731), hospital (1751), medical school (1765), national capital (1774), university (by some accounts) (1779), central bank (1781), stock exchange (1790), zoo (1874), and business school (1881). Philadelphia contains 67 National Historic Landmarks, including Independence Hall. From the city's 17th century founding through the present, Philadelphia has been the birthplace or home to an extensive number of prominent and influential Americans. In 2021, Time magazine named Philadelphia one of the world's greatest 100 places. Two years later, in 2023, travel guide publisher Lonely Planet ranked Philadelphia the best city in the nation to visit. + +" +"San Antonio, Texas","San Antonio ( SAN an-TOH-nee-oh; Spanish for ""Saint Anthony""), officially the City of San Antonio, is a city in the U.S. state of Texas and the most populous city in Greater San Antonio, the third-largest metropolitan area in Texas and the 24th-largest metropolitan area in the United States at 2.6 million people in 2020. It is the most populous city in and seat of Bexar County. The city is the seventh-most populous in the United States, the second-largest in the Southern United States, and the second-most populous in Texas after Houston. +Founded as a Spanish mission and colonial outpost in 1718, the city in 1731 became the first chartered civil settlement in what is now present-day Texas. The area was then part of the Spanish Empire. From 1821 to 1836, it was part of the Mexican Republic. It is the oldest municipality in Texas, having celebrated its 300th anniversary on May 1, 2018. +Straddling the regional divide between South and Central Texas, San Antonio anchors the southwestern corner of an urban megaregion colloquially known as the Texas Triangle. Downtown Austin and Downtown San Antonio are approximately 80 miles (129 km) apart, and both fall along the Interstate 35 corridor. This combined metropolitan region of San Antonio–Austin has approximately 5 million people. +San Antonio was named by a 1691 Spanish expedition for the Portuguese priest Saint Anthony of Padua, whose feast day is June 13. The city contains five 18th-century Spanish frontier missions, including The Alamo and San Antonio Missions National Historical Park. Together these were designated as UNESCO World Heritage sites in 2015. Other notable attractions include the River Walk, the Tower of the Americas, SeaWorld San Antonio, the Alamo Bowl, and Marriage Island. Commercial entertainment includes Six Flags Fiesta Texas and Morgan's Wonderland amusement parks. According to the San Antonio Convention and Visitors Bureau, the city is visited by about 32 million tourists a year. It is home to the five-time National Basketball Association (NBA) champion San Antonio Spurs. It hosts the annual San Antonio Stock Show & Rodeo, one of the largest such events in the U.S. +The U.S. Armed Forces have numerous facilities in and around San Antonio; Fort Sam Houston, which has Brooke Army Medical Center within it, is the only one within the city limits. Lackland Air Force Base, Randolph Air Force Base, Kelly Air Force Base, Camp Bullis, and Camp Stanley are outside the city limits. San Antonio is home to four Fortune 500 companies and the South Texas Medical Center, the only medical research and care provider in the South Texas region. +San Antonio is also the largest majority-Hispanic city in the United States, with 64% of its population being Hispanic." +"San Diego, California","San Diego ( SAN dee-AY-goh, Spanish: [san ˈdjeɣo]) is a city on the Pacific Ocean coast in Southern California located immediately adjacent to the Mexico–United States border. With a population of over 1.3 million residents, the city is the eighth-most populous in the United States and the second-most populous in the state of California after Los Angeles. The city is the seat of San Diego County, which has a population of nearly 3.3 million people as of 2021. San Diego is known for its mild year-round Mediterranean climate, extensive beaches and parks, its long association with the United States Navy, and its recent emergence as a healthcare and biotechnology development center. +Historically home to the Kumeyaay Native Americans, San Diego has been referred to as the Birthplace of California, as it was the first site visited and settled by Europeans on what is now the West Coast of the United States. Upon landing in San Diego Bay in 1542, Juan Rodríguez Cabrillo claimed the area for Spain, forming the basis for the settlement of Alta California 200 years later. The Presidio and Mission San Diego de Alcalá, founded in 1769, formed the first European settlement in what is now California. In 1821, San Diego became part of the newly declared Mexican Empire, which reformed as the First Mexican Republic two years later. California was conquered by the U.S. in 1848 following the Mexican–American War and was admitted to the union as a state in 1850. +San Diego's main economic engines are military and defense-related activities, tourism, international trade, research, and manufacturing. The city is home to several universities, including UC San Diego, San Diego State University, and the University of San Diego. San Diego is the economic center of the San Diego–Tijuana conurbation, the second-most populous transborder metropolitan area in the Western Hemisphere, home to an estimated 5 million people as of 2022. The primary border crossing between San Diego and Tijuana, the San Ysidro Port of Entry, is the busiest international land border crossing in the world outside of Asia (fourth-busiest overall). The city's airport, San Diego International Airport, is the busiest single-runway airport in the world. + +" +"Dallas, Texas","Dallas () is a city in the U.S. state of Texas and the most populous city in the Dallas–Fort Worth metroplex, the most populous metropolitan area in Texas and the fourth-most populous metropolitan area in the United States at 7.5 million people. It is the most populous city in and seat of Dallas County with portions extending into Collin, Denton, Kaufman, and Rockwall counties. With a 2020 census population of 1,304,379, it is the ninth-most populous city in the U.S. and the third-most populous city in Texas after Houston and San Antonio. Located in the North Texas region, the city of Dallas is the main core of the largest metropolitan area in the Southern United States and the largest inland metropolitan area in the U.S. that lacks any navigable link to the sea. +Dallas and nearby Fort Worth were initially developed as a product of the construction of major railroad lines through the area allowing access to cotton, cattle, and later oil in North and East Texas. The construction of the Interstate Highway System reinforced Dallas's prominence as a transportation hub, with four major interstate highways converging in the city and a fifth interstate loop around it. Dallas then developed as a strong industrial and financial center and a major inland port, due to the convergence of major railroad lines, interstate highways, and the construction of Dallas/Fort Worth International Airport, one of the largest and busiest airports in the world. In addition, Dallas Area Rapid Transit (DART) operates rail and bus transit services throughout the city and its surrounding suburbs. +Dominant sectors of its diverse economy include defense, financial services, information technology, telecommunications, and transportation. The Dallas–Fort Worth metroplex hosts 23 Fortune 500 companies, the second-most in Texas and fourth-most in the United States, and 11 of those companies are located within Dallas city limits. Over 41 colleges and universities are located within its metropolitan area, which is the most of any metropolitan area in Texas. The city has a population from a myriad of ethnic and religious backgrounds and is one of the largest LGBT communities in the U.S. WalletHub named Dallas the fifth-most diverse city in the United States in 2018. + +" +"San Jose, California","San Jose, officially the City of San José (Spanish for 'Saint Joseph' SAN hoh-ZAY, -⁠SAY; Spanish: [saŋ xoˈse]), is the largest city in Northern California by both population and area. With a 2022 population of 971,233, it is the most populous city in both the Bay Area and the San Jose–San Francisco–Oakland Combined Statistical Area—which in 2022 had a population of 7.5 million and 9.0 million respectively—the third-most populous city in California after Los Angeles and San Diego, and the 12th-most populous in the United States. Located in the center of the Santa Clara Valley on the southern shore of San Francisco Bay, San Jose covers an area of 179.97 sq mi (466.1 km2). San Jose is the county seat of Santa Clara County and the main component of the San Jose–Sunnyvale–Santa Clara Metropolitan Statistical Area, with an estimated population of around two million residents in 2018. +San Jose is notable for its innovation, cultural diversity, affluence, and sunny and mild Mediterranean climate. Its connection to the booming high tech industry phenomenon known as Silicon Valley prompted Mayor Tom McEnery to adopt the city motto of ""Capital of Silicon Valley"" in 1988 to promote the city. Major global tech companies including Cisco Systems, eBay, Adobe Inc., PayPal, Broadcom, and Zoom maintain their headquarters in San Jose. San Jose is one of the wealthiest major cities in the world, with the third-highest GDP per capita (after Zürich and Oslo) and the fifth-most expensive housing market. It is home to one of the world's largest overseas Vietnamese populations, a Hispanic community that makes up over 40% of the city's residents, and historic ethnic enclaves such as Japantown and Little Portugal. +Before the arrival of the Spanish, the area around San Jose was long inhabited by the Tamien nation of the Ohlone peoples of California. San Jose was founded on November 29, 1777, as the Pueblo de San José de Guadalupe, the first city founded in the Californias. It became a part of Mexico in 1821 after the Mexican War of Independence. +Following the American Conquest of California during the Mexican–American War, the territory was ceded to the United States in 1848. After California achieved statehood two years later, San Jose was designated as the state's first capital. Following World War II, San Jose experienced an economic boom, with a rapid population growth and aggressive annexation of nearby cities and communities carried out in the 1950s and 1960s. The rapid growth of the high-technology and electronics +industries further accelerated the transition from an agricultural center to an urbanized metropolitan area. Results of the 1990 U.S. census indicated that San Jose had officially surpassed San Francisco as the most populous city in Northern California. By the 1990s, San Jose had become the global center for the high tech and internet industries and was California's fastest-growing economy for 2015–2016. Between April 2020 and July 2022, San Jose lost 42,000 people, 4.1% of its population, dropping to 12th largest city position in largest city ranking." +"Austin, Texas","Austin ( AW-stin, UK: OST-in) is the capital of the U.S. state of Texas, as well as the seat and most populous city of Travis County, with portions extending into Hays and Williamson counties. Incorporated on December 27, 1839, it is the tenth-most populous city in the United States, the fourth-most populous city in the state after Dallas, San Antonio and Houston, and the second-most populous state capital city after Phoenix, the capital of Arizona. It has been one of the fastest growing large cities in the United States since 2010. Downtown Austin and Downtown San Antonio are approximately 80 miles (129 km) apart, and both fall along the Interstate 35 corridor. This combined metropolitan region of San Antonio–Austin has approximately 5 million people. Austin is the southernmost state capital in the contiguous United States and is considered a Beta-level global city as categorized by the Globalization and World Cities Research Network. +As of 2021, Austin had an estimated population of 964,177, up from 961,855 at the 2020 census. The city is the cultural and economic center of the Austin–Round Rock metropolitan statistical area, which had an estimated population of 2,473,275 as of July 1, 2023. Located in Central Texas within the greater Texas Hill Country, it is home to numerous lakes, rivers, and waterways, including Lady Bird Lake and Lake Travis on the Colorado River, Barton Springs, McKinney Falls, and Lake Walter E. Long. +Residents of Austin are known as Austinites. They include a diverse mix of government employees, college students, musicians, high-tech workers, and blue-collar workers. The city's official slogan promotes Austin as ""The Live Music Capital of the World"", a reference to the city's many musicians and live music venues, as well as the long-running PBS TV concert series Austin City Limits. Austin is the site of South by Southwest (SXSW), an annual conglomeration of parallel film, interactive media, and music festivals. The city also adopted ""Silicon Hills"" as a nickname in the 1990s due to a rapid influx of technology and development companies. In recent years, some Austinites have adopted the unofficial slogan ""Keep Austin Weird"", which refers to the desire to protect small, unique, and local businesses from being overrun by large corporations. Since the late 19th century, Austin has also been known as the ""City of the Violet Crown"", because of the colorful glow of light across the hills just after sunset. +Emerging from a strong economic focus on government and education, since the 1990s, Austin has become a center for technology and business. The technology roots in Austin can be traced back to the 1960s when the defense electronics contractor Tracor (now BAE Systems) began operation in the city in 1962. IBM followed in 1967, opening a facility to produce its Selectric typewriters. Texas Instruments set up in Austin two years later, Motorola (now NXP Semiconductors) started semiconductor chip manufacturing in 1974. A number of Fortune 500 companies have headquarters or regional offices in Austin, including 3M, Advanced Micro Devices (AMD), Amazon, Apple, Facebook (Meta), Google, IBM, Intel, NXP Semiconductors, Oracle, Tesla, Texas Instruments, and Whole Foods Market. With regard to education, Austin is the home of the University of Texas at Austin, one of the largest universities in the U.S., with over 50,000 students. In 2021, Austin became home to the Austin FC, the first (and currently only) major professional sports team in the city." +"Jacksonville, Florida","Jacksonville is the most populous city proper in the U.S. state of Florida, located on the Atlantic coast of northeastern Florida. It is the seat of Duval County, with which the City of Jacksonville consolidated in 1968. It is the largest city by area in the contiguous United States as of 2020. +City-county consolidation greatly increased Jacksonville's official population and extended its boundaries, placing most of Duval County's population within the new municipal limits; Jacksonville grew to 900 square miles (2,300 km2). +As of July 2022, Jacksonville's population was 971,319, while the population of Duval County was about 1 million. After consolidation, Jacksonville became the most populous city in Florida and the Southeastern United States, and the largest in the South outside the state of Texas. With a population of 1,733,937, the Jacksonville metropolitan area ranks as Florida's fourth-largest metropolitan region. The metropolitan area consists of Clay County, St. Johns County, Nassau County, and Baker County. +Jacksonville straddles the St. Johns River in the First Coast region of northeastern Florida, about 12 miles (19 kilometers) south of the Georgia state line (25 mi or 40 km to the urban core/downtown) and 350 miles (560 km) north of Miami. The Jacksonville Beaches communities are along the adjacent Atlantic coast. The area was originally inhabited by the Timucua people, and in 1564 was the site of the French colony of Fort Caroline, one of the earliest European settlements in what is now the continental United States. Under British rule, a settlement grew at the narrow point in the river where cattle crossed, known as Wacca Pilatka to the Seminole and the Cow Ford to the British. A platted town was established there in 1822, a year after the United States gained Florida from Spain; it was named after Andrew Jackson, the first military governor of the Florida Territory and seventh President of the United States. +Harbor improvements since the late 19th century have made Jacksonville a major military and civilian deep-water port. Its riverine location facilitates Naval Station Mayport, Naval Air Station Jacksonville, the U.S. Marine Corps Blount Island Command, and the Port of Jacksonville, Florida's largest seaport by volume. Jacksonville's military bases and the nearby Naval Submarine Base Kings Bay form the third largest military presence in the United States. Significant factors in the local economy include services such as banking, insurance, healthcare and logistics. As with much of Florida, tourism is important to the Jacksonville area, particularly tourism related to golf with the PGA Tour headquarters located in nearby Ponte Vedra Beach. People from Jacksonville are known as Jacksonvillians and, informally, as Jaxsons or Jaxons (both derived from Jax, the shortened nickname for the city)." +"Fort Worth, Texas","Fort Worth is a city in the U.S. state of Texas and the seat of Tarrant County, covering nearly 350 square miles (910 km2) into four other counties: Denton, Johnson, Parker, and Wise. According to a 2022 United States census estimate, Fort Worth's population was 956,709, the 5th-most populous in the state and the 13th-most populous in the United States. Fort Worth is the second-largest city in the Dallas–Fort Worth–Arlington metropolitan area, which is the fourth-most populous metropolitan area in the United States, and the most populous in Texas. +The city of Fort Worth was established in 1849 as an army outpost on a bluff overlooking the Trinity River. Fort Worth has historically been a center of the Texas Longhorn cattle trade. It still embraces its Western heritage and traditional architecture and design. USS Fort Worth (LCS-3) is the first ship of the United States Navy named after the city. Nearby Dallas has held a population majority as long as records have been kept, yet Fort Worth has become one of the fastest-growing cities in the United States at the beginning of the 21st century, nearly doubling its population since 2000. +Fort Worth is the location of the Van Cliburn International Piano Competition and several museums designed by contemporary architects. The Kimbell Art Museum was designed by Louis Kahn, with an addition designed by Renzo Piano. The Modern Art Museum of Fort Worth was designed by Tadao Ando. The Amon Carter Museum of American Art, designed by Philip Johnson, houses American art. The Sid Richardson Museum, redesigned by David M. Schwarz, has a collection of Western art in the U.S., emphasizing Frederic Remington and Charles Russell. The Fort Worth Museum of Science and History was designed by Ricardo Legorreta of Mexico. +Fort Worth is the location of several university communities: Texas Christian University, Texas Wesleyan, University of North Texas Health Science Center, and Texas A&M University School of Law. Several multinational corporations, including Bell Textron, American Airlines, and BNSF Railway, are headquartered in Fort Worth. + +" +"Columbus, Ohio","Columbus (, kə-LUM-bəs) is the capital and most populous city of the U.S. state of Ohio. With a 2020 census population of 905,748, it is the 14th-most populous city in the U.S., the second-most populous city in the Midwest after Chicago, and the third-most populous U.S. state capital after Phoenix, Arizona and Austin, Texas. Columbus is the seat of government of Franklin County; it also extends into Delaware and Fairfield counties. It is the core city of the Columbus metropolitan area, which encompasses ten counties in central Ohio. It had a population of 2,138,926 in 2020, making it the largest metropolitan area entirely in Ohio and 32nd-largest metro area in the U.S. +Columbus originated as numerous Native American settlements on the banks of the Scioto River. Franklinton, now a city neighborhood, was the first European settlement, laid out in 1797. The city was founded in 1812 at the confluence of the Scioto and Olentangy rivers, and laid out to become the state capital. The city was named for Italian explorer Christopher Columbus. The city assumed the function of state capital in 1816 and county seat in 1824. Amid steady years of growth and industrialization, the city has experienced numerous floods and recessions. Beginning in the 1950s, Columbus began to experience significant growth; it became the largest city in Ohio in land and population by the early 1990s. Growth has continued in the 21st century, with redevelopment occurring in numerous city neighborhoods, including Downtown. +The city has a diverse economy without reliance on any one sector. The metropolitan area is home to the Battelle Memorial Institute, the world's largest private research and development foundation; Chemical Abstracts Service, the world's largest clearinghouse of chemical information; and the Ohio State University, one of the largest universities in the United States. The Greater Columbus area is further home to the headquarters of six Fortune 500 companies, namely Cardinal Health, American Electric Power, L Brands, Nationwide, Bread Financial and Huntington Bancshares." +"Charlotte, North Carolina","Charlotte ( SHAR-lət) is the most populous city in the U.S. state of North Carolina and the county seat of Mecklenburg County. The population was 874,579 at the 2020 census, making Charlotte the 15th-most populous city in the United States, the seventh-most populous city in the South, and the second-most populous city in the Southeast behind Jacksonville, Florida. The city is the cultural, economic, and transportation center of the Charlotte metropolitan area, whose estimated 2023 population of 2,805,115 ranked 22nd in the United States. The Charlotte metropolitan area is part of an eighteen-county market region or combined statistical area with an estimated 2023 population of 3,387,115. +Between 2004 and 2014, Charlotte was among the country's fastest-growing metropolitan areas, with 888,000 new residents. Based on U.S. census data from 2005 to 2015, Charlotte tops the U.S. in millennial population growth. It is the third-fastest-growing major city in the United States. Residents of Charlotte are referred to as ""Charlotteans"". +Charlotte is home to the corporate headquarters of Bank of America, Truist Financial, and the East Coast headquarters of Wells Fargo, which along with other financial institutions has made it the second-largest banking center in the United States. +Charlotte's notable attractions include three professional sports teams, the Carolina Panthers of the NFL, the Charlotte Hornets of the NBA, and Charlotte FC of MLS. The city is also home to the NASCAR Hall of Fame, Opera Carolina, the Charlotte Symphony, the Charlotte Ballet, Children's Theatre of Charlotte, Mint Museum, Harvey B. Gantt Center, Bechtler Museum of Modern Art, the Billy Graham Library, Levine Museum of the New South, Charlotte Museum of History, Carowinds amusement park, and the U.S. National Whitewater Center. +Charlotte has a humid subtropical climate. It is located several miles east of the Catawba River and southeast of Lake Norman, the largest human-made lake in North Carolina. Lake Wylie and Mountain Island Lake are two smaller human-made lakes located near the city. + +" +"San Francisco, California","San Francisco, officially the City and County of San Francisco, is a commercial, financial, and cultural center in Northern California. With a population of 808,437 residents as of 2022, San Francisco is the fourth most populous city in the U.S. state of California. The city covers a land area of 46.9 square miles (121 square kilometers) at the end of the San Francisco Peninsula, making it the second-most densely populated large U.S. city after New York City and the fifth-most densely populated U.S. county, behind only four New York City boroughs. Among the 92 U.S. cities proper with over 250,000 residents, San Francisco is ranked first by per capita income and sixth by aggregate income as of 2022. +Prior to European settlement, the modern city proper was inhabited by the Yelamu, who spoke a language now referred to as Ramaytush Ohlone. On June 29, 1776, settlers from New Spain established the Presidio of San Francisco at the Golden Gate, and the Mission San Francisco de Asís a few miles away, both named for Francis of Assisi. The California gold rush of 1849 brought rapid growth, transforming an unimportant hamlet into a busy port, making it the largest city on the West Coast at the time; between 1870 and 1900, approximately one quarter of California's population resided in the city proper. In 1856, San Francisco became a consolidated city-county. After three-quarters of the city was destroyed by the 1906 earthquake and fire, it was quickly rebuilt, hosting the Panama–Pacific International Exposition nine years later. In World War II, it was a major port of embarkation for naval service members shipping out to the Pacific Theater. In 1945, the United Nations Charter was signed in San Francisco, establishing the United Nations and in 1951, the Treaty of San Francisco re-established peaceful relations between Japan and the Allied Powers. After the war, the confluence of returning servicemen, significant immigration, liberalizing attitudes, the rise of the beatnik and hippie countercultures, the sexual revolution, the peace movement growing from opposition to United States involvement in the Vietnam War, and other factors led to the Summer of Love and the gay rights movement, cementing San Francisco as a center of liberal activism in the United States. +San Francisco and the surrounding San Francisco Bay Area are a global center of economic activity and the arts and sciences, spurred by leading universities, high-tech, healthcare, finance, insurance, real estate, and professional services sectors. As of 2020, the metropolitan area, with 6.7 million residents, ranked 5th by GDP ($874 billion) and 2nd by GDP per capita ($131,082) across the OECD countries, ahead of global cities like Paris, London, and Singapore. San Francisco anchors the 13th most populous metropolitan statistical area in the United States with 4.6 million residents, and the fourth-largest by aggregate income and economic output, with a GDP of $729 billion in 2022. The wider San Jose–San Francisco–Oakland Combined Statistical Area is the fifth-most populous, with 9.0 million residents, and the third-largest by economic output, with a GDP of $1.32 trillion in 2022. In the same year, San Francisco proper had a GDP of $252.2 billion, and a GDP per capita of $312,000. San Francisco was ranked fifth in the world and second in the United States on the Global Financial Centres Index as of September 2023. The city is home to numerous companies inside and outside of technology, including Salesforce, Uber, Airbnb, X Corp., Levi's, Gap, Dropbox, and Lyft. +In 2022, San Francisco had more than 1.7 million international visitors – the fifth-most visited city from abroad in the United States after New York City, Miami, Orlando, and Los Angeles – and approximately 20 million domestic visitors for a total of 21.9 million visitors. The city is known for its steep rolling hills and eclectic mix of architecture across varied neighborhoods, as well as its cool summers, fog, and landmarks, including the Golden Gate Bridge, cable cars, and Alcatraz, along with the Chinatown and Mission districts. The city is home to a number of educational and cultural institutions, such as the University of California, San Francisco, the University of San Francisco, San Francisco State University, the San Francisco Conservatory of Music, the de Young Museum, the San Francisco Museum of Modern Art, the San Francisco Symphony, the San Francisco Ballet, the San Francisco Opera, the SFJAZZ Center, and the California Academy of Sciences. Two major league sports teams, the San Francisco Giants and the Golden State Warriors, play their home games within San Francisco proper. San Francisco's main international airport offers flights to over 125 destinations while a light rail and bus network, in tandem with the BART and Caltrain systems, connects nearly every part of San Francisco with the wider region. + +" +"Indianapolis, Indiana","Indianapolis ( IN-dee-ə-NAP-ə-lis), colloquially known as Indy, is the capital and most populous city of the U.S. state of Indiana and the seat of Marion County. Located in Central Indiana, the city lies along the White River's West Fork near its confluence with Fall Creek. +At the 2020 census, the balance population was 887,642. Indianapolis is the 16th-most populous city in the U.S., the third-most populous city in the Midwest after Chicago and Columbus, Ohio, and the fourth-most populous state capital after Phoenix, Arizona, Austin, Texas, and Columbus. The Indianapolis metropolitan area is the 34th-most populous metropolitan statistical area in the U.S., home to 2.1 million residents. With a population of more than 2.6 million, the combined statistical area ranks 27th. Indianapolis proper covers 368 square miles (950 km2), making it the 18th-most extensive city by land area in the country. +Indigenous peoples inhabited the area dating to as early as 10,000 BC. In 1818, the Lenape relinquished their tribal lands in the Treaty of St. Mary's. In 1821, Indianapolis was founded as a planned city for the new seat of Indiana's state government. The city was platted by Alexander Ralston and Elias Pym Fordham on a 1-square-mile (2.6 km2) grid. Completion of the National and Michigan roads and the arrival of rail later solidified the city's position as a manufacturing and transportation hub. Two of the city's nicknames, the ""Crossroads of America"" and ""Railroad City"", reflect the city's historical ties to transportation. Since the 1970 city-county consolidation, known as Unigov, local government administration operates under the direction of an elected 25-member city-county council headed by the mayor. +Indianapolis anchors the 29th largest metropolitan economy in the U.S., based primarily on the industries of trade, transportation, and utilities; education and health services; professional and business services; government; leisure and hospitality; and manufacturing. The city has notable niche markets in amateur sports and auto racing. Indianapolis is home to three Fortune 500 companies, two major league sports teams (the Colts of the NFL and the Pacers of the NBA), five university campuses, and many museums, including the world's largest children's museum. The city is perhaps best known for annually hosting the world's largest single-day sporting event, the Indianapolis 500. Among the city's historic sites and districts, Indianapolis is home to the largest collection of monuments dedicated to veterans and war casualties in the U.S. outside of Washington, D.C. + +" +"Seattle, Washington","Seattle ( see-AT-əl) is a seaport city on the West Coast of the United States. It is the seat of King County, Washington. With a 2022 population of 749,256 it is the most populous city in both the state of Washington and the Pacific Northwest region of North America, and the 18th-most populous city in the United States. The Seattle metropolitan area's population is 4.02 million, making it the 15th-largest in the United States. Its growth rate of 21.1% between 2010 and 2020 made it one of the country's fastest-growing large cities. +Seattle is situated on an isthmus between Puget Sound, an inlet of the Pacific Ocean, and Lake Washington. It is the northernmost major city in the United States, located about 100 miles (160 km) south of the Canadian border. A gateway for trade with East Asia, the Port of Seattle is the fourth-largest port in North America in terms of container handling as of 2021. +The Seattle area has been inhabited by Native Americans (such as the Duwamish, who had at least 17 villages around Elliot Bay) for at least 4,000 years before the first permanent European settlers. Arthur A. Denny and his group of travelers, subsequently known as the Denny Party, arrived from Illinois via Portland, Oregon, on the schooner Exact at Alki Point on November 13, 1851. The settlement was moved to the eastern shore of Elliott Bay in 1852 and named ""Seattle"" in honor of Chief Seattle, a prominent 19th-century leader of the local Duwamish and Suquamish tribes. Seattle currently has high populations of Native Americans alongside Americans with strong Asian, African, European, and Scandinavian ancestry, and, as of 2015, hosts the fifth-largest LGBT community in the U.S. +Logging was Seattle's first major industry, but by the late 19th century the city had become a commercial and shipbuilding center as a gateway to Alaska during the Klondike Gold Rush. The city grew after World War II, partly due to the local Boeing company, which established Seattle as a center for its manufacturing of aircraft. +Beginning in the 1980s, the Seattle area developed into a technology center; Microsoft established its headquarters in the region. In 1994, Internet retailer Amazon was founded in Seattle, and Alaska Airlines is based in SeaTac, Washington, serving Seattle–Tacoma International Airport, Seattle's international airport. The stream of new software, biotechnology, and Internet companies led to an economic revival, which increased the city's population by almost 50,000 in the decade between 1990 and 2000. +The culture of Seattle is heavily defined by its significant musical history. Between 1918 and 1951, nearly 24 jazz nightclubs existed along Jackson Street, from the current Chinatown/International District to the Central District. The jazz scene nurtured the early careers of Ernestine Anderson, Ray Charles, Quincy Jones, and others. In the late 20th and early 21st century, the city also was the origin of several rock bands, including Foo Fighters, Heart, and Jimi Hendrix, and the subgenre of grunge and its pioneering bands, including Alice in Chains, Nirvana, Pearl Jam, Soundgarden, and others. + +" +"Denver, Colorado","Denver ( DEN-vər) is a consolidated city and county, the capital, and most populous city of the U.S. state of Colorado. Its population was 715,522 at the 2020 census, a 19.22% increase since 2010. It is the 19th-most populous city in the United States and the fifth most populous state capital. It is the principal city of the Denver–Aurora–Lakewood metropolitan statistical area, the most populous metropolitan statistical area in Colorado and the first city of the Front Range Urban Corridor. +Denver is in the western United States, in the South Platte River Valley on the western edge of the High Plains just east of the Front Range of the Rocky Mountains. Its downtown district is immediately east of the confluence of Cherry Creek and the South Platte River, about 12 miles (19 kilometres) east of the foothills of the Rocky Mountains. It is named after James W. Denver, a governor of the Kansas Territory. It is nicknamed the Mile High City because its official elevation is exactly one mile (5280 feet or 1609.344 meters) above sea level. The 105th meridian west of Greenwich, the longitudinal reference for the Mountain Time Zone, passes directly through Denver Union Station. +Denver is ranked as a Beta world city by the Globalization and World Cities Research Network. The 10-county Denver–Aurora–Lakewood, CO Metropolitan Statistical Area had a population of 2,963,821 at the 2020 United States census, making it the 19th most populous U.S. metropolitan statistical area. The 12-county Denver–Aurora, CO Combined Statistical Area had a population of 3,623,560 at the 2020 U.S. census, making it the 17th most populous U.S. primary statistical area. Denver is the most populous city of the 18-county Front Range Urban Corridor, an oblong urban region stretching across two states with a population of 5,055,344 at the 2020 U.S. census. Its metropolitan area is the most populous within a 560-mile (900 km) radius and it is the second-most populous city in the Mountain West after Phoenix, Arizona. In 2016, it was named the best place to live in the United States by U.S. News & World Report." +"Boston, Massachusetts","Boston (US: ), officially the City of Boston, is the capital and most populous city in the Commonwealth of Massachusetts in the United States. The city serves as the cultural and financial center of the New England region of the Northeastern United States. It has an area of 48.4 sq mi (125 km2) and a population of 675,647 as of the 2020 census, making it the third-largest city in the Northeast after New York City and Philadelphia. The Greater Boston metropolitan statistical area, including and surrounding the city, is the largest in New England and eleventh-largest in the country. +Boston was founded on the Shawmut Peninsula in 1630 by Puritan settlers. The city was named after Boston, Lincolnshire, England. +During the American Revolution, Boston was home to several events that proved central to the revolution and subsequent Revolutionary War, including the Boston Massacre (1770), the Boston Tea Party (1773), Paul Revere's Midnight Ride (1775), the Battle of Bunker Hill (1775), and the Siege of Boston (1775–1776). Following American independence from Great Britain, the city continued to play an important role as a port, manufacturing hub, and center for education and culture. +The city expanded significantly beyond the original peninsula through filling in land and annexing neighboring towns. It now attracts many tourists, with Faneuil Hall alone drawing more than 20 million visitors per year. Boston's many firsts include the United States' first public park (Boston Common, 1634), the first public school (Boston Latin School, 1635), and the first subway system (Tremont Street subway, 1897). +Since the nation's founding, Boston has been a national leader in higher education and research. Boston University and Northeastern University are both located within the city. Two of the world's most prestigious and consistently highly ranked universities, Harvard University, the nation's oldest university, and the Massachusetts Institute of Technology, are both located in neighboring Cambridge, Massachusetts. +Boston also has emerged as the largest biotechnology hub in the world. The city is also a national leader in scientific research, law, medicine, engineering, and business. With nearly 5,000 startup companies, the city is considered a global pioneer in innovation and entrepreneurship, and more recently in artificial intelligence. Boston's economy also includes finance, professional and business services, information technology, and government activities. Households in the city claim the highest average rate of philanthropy in the United States. Furthermore, Boston's businesses and institutions rank among the top in the country overall for environmental sustainability and new investment. + +" +"El Paso, Texas","El Paso (; Spanish: [el ˈpaso]; lit. 'the pass' or 'the step') is a city in and the county seat of El Paso County, Texas, United States. The 2020 population of the city from the U.S. Census Bureau was 678,815, making it the 22nd-most populous city in the U.S., the most populous city in West Texas, and the sixth-most populous city in Texas. +Its metropolitan statistical area covers all of El Paso and Hudspeth counties in Texas, and had a population of 868,859 in 2020. +El Paso stands on the Rio Grande across the Mexico–United States border from Ciudad Juárez, the most populous city in the Mexican state of Chihuahua. The Las Cruces area, in the neighboring U.S. state of New Mexico, has a population of 219,561. On the U.S. side, the El Paso metropolitan area forms part of the larger El Paso–Las Cruces combined statistical area, which has a population of 1,098,541. These three cities form a combined international metropolitan area sometimes referred to as the Paso del Norte or the Borderplex. The region of 2.7 million people constitutes the largest bilingual and binational workforce in the Western Hemisphere. +The city is home to three publicly traded companies, and former Western Refining, now Marathon Petroleum, as well as home to the Medical Center of the Americas, the only medical research and care provider complex in West Texas and Southern New Mexico, and the University of Texas at El Paso, the city's primary university. The city hosts the annual Sun Bowl college football postseason game, the second-oldest bowl game in the country. El Paso has a strong federal and military presence. William Beaumont Army Medical Center, Biggs Army Airfield, and Fort Bliss are located in the area. Also headquartered in El Paso is the Drug Enforcement Administration domestic field division 7, El Paso Intelligence Center, Joint Task Force North, United States Border Patrol El Paso Sector, and U.S. Border Patrol Special Operations Group. +El Paso is a five-time All-America City Award winner, winning in 1969, 2010, 2018, 2020, and 2021, and Congressional Quarterly ranked it in the top-three safest large cities in the United States between 1997 and 2014, including holding the title of the safest city between 2011 and 2014. +El Paso is also the second-largest majority-Hispanic city in the United States (after San Antonio), with 81% of its residents being Hispanic." +"Nashville, Tennessee","Nashville is the capital and most populous city in the U.S. state of Tennessee and the county seat of Davidson County. Located in Middle Tennessee, it had a population of 689,447 at the 2020 U.S. census. Nashville is the 21st most populous city in the United States, and the fourth most populous city in the southeastern U.S. Located on the Cumberland River, the city is the center of the Nashville metropolitan area, and is one of the fastest growing in the nation. +Named for Francis Nash, a general of the Continental Army during the American Revolutionary War, the city was founded in 1779 when this territory was still considered part of North Carolina. The city grew quickly due to its strategic location as a port on the Cumberland River and, in the 19th century, a railroad center. Nashville as part of Tennessee seceded during the American Civil War; in 1862 it was the first state capital in the Confederacy to be taken by Union forces. It was occupied through the war. +After the war, the city gradually reclaimed its stature. It became a center of trade and developed a manufacturing base. +Since 1963, Nashville has had a consolidated city-county government, which includes six smaller municipalities in a two-tier system. The city is governed by a mayor, a vice-mayor, and a 40-member metropolitan council. Some 35 of the members are elected from single-member districts, while five are elected at-large. Reflecting the city's position in state government, Nashville is home to the Tennessee Supreme Court's courthouse for Middle Tennessee, one of the state's three divisions. +As of 2020 Nashville is considered a global city, type ""Gamma"" by the GaWC. A major center for the music industry, especially country music, Nashville is commonly known as ""Music City"". It is home to three major professional sports teams, the Predators, Titans, and Nashville SC. +The city is also the home of many colleges and universities including Tennessee State University, Vanderbilt University, Belmont University, Fisk University, Trevecca Nazarene University, and Lipscomb University. Nashville is sometimes referred to as the ""Athens of the South"" due to the large number of educational institutions. The city is also a major center for the healthcare, publishing, banking, automotive, and technology industries. Entities with headquarters in the city include AllianceBernstein, Asurion, Bridgestone Americas, Captain D's, Concord, Hospital Corporation of America, LifeWay Christian Resources, Logan's Roadhouse, and Ryman Hospitality Properties. + +" +"Detroit, Michigan","Detroit (; dih-TROYT, locally also ) is the most populous city in the U.S. state of Michigan. It is the largest U.S. city on the United States–Canada border, and the seat of government of Wayne County. Detroit had a population of 639,111 at the 2020 census, making it the 29th-most populous city in the United States. The Metro Detroit area, home to 4.3 million people, is the second-largest in the Midwest after the Chicago metropolitan area and the 14th-largest in the United States. A significant cultural center, Detroit is known for its contributions to music, art, architecture and design, in addition to its historical automotive background. +In 1701, Antoine de la Mothe Cadillac and Alphonse de Tonty founded Fort Pontchartrain du Détroit. During the late 19th and early 20th century, it became an important industrial hub at the center of the Great Lakes region. The city's population rose to be the fourth-largest in the nation by 1920, after New York City, Chicago and Philadelphia, with the expansion of the automotive industry in the early 20th century. The Detroit River became the busiest commercial hub in the world as it carried over 65 million tons of shipping commerce each year. In the mid-20th century, Detroit entered a state of urban decay which has continued to the present, as a result of industrial restructuring, the loss of jobs in the auto industry, and rapid suburbanization. Since reaching a peak of 1.85 million at the 1950 census, Detroit's population has declined by more than 65 percent. In 2013, Detroit became the largest U.S. city to file for bankruptcy, which it successfully exited in December 2014. +Detroit is a port on the Detroit River, one of the four major straits that connect the Great Lakes system to the St. Lawrence Seaway. The city anchors the second-largest regional economy in the Midwest and the 14th-largest in the United States. Detroit is best known as the center of the U.S. automotive industry, and the ""Big Three"" auto manufacturers—General Motors, Ford, and Stellantis North America (Chrysler)—are all headquartered in Metro Detroit. The Detroit Metropolitan Airport is among the most important hub airports in the United States. Detroit and its neighboring Canadian city Windsor constitute the second-busiest international crossing in North America, after San Diego–Tijuana. +Detroit's diverse culture has had both local and international influence, particularly in music, with the city giving rise to the genres of Motown and techno and playing an important role in the development of jazz, hip-hop, rock, and punk. The rapid growth of Detroit in its boom years resulted in a globally unique stock of architectural monuments and historic places. Since the 2000s, conservation efforts have managed to save many architectural pieces and achieve several large-scale revitalizations, including the restoration of several historic theaters and entertainment venues, high-rise renovations, new sports stadiums, and a riverfront revitalization project. +An increasingly popular tourist destination, Detroit receives 16 million visitors per year. In 2015, Detroit was named a ""City of Design"" by UNESCO, the first U.S. city to receive that designation. Time named Detroit as one of the fifty World's Greatest Places of 2022 to explore." +"Oklahoma City, Oklahoma","Oklahoma City ( ), officially the City of Oklahoma City, and often shortened to OKC, is the capital and most populous city of the U.S. state of Oklahoma. The county seat of Oklahoma County, it ranks 20th among United States cities in population, and is the 8th largest city in the Southern United States. The population grew following the 2010 census and reached 681,054 in the 2020 census. The Oklahoma City metropolitan area had a population of 1,396,445, and the Oklahoma City–Shawnee Combined Statistical Area had a population of 1,469,124, making it Oklahoma's largest municipality and metropolitan area by population. +Oklahoma City's city limits extend somewhat into Canadian, Cleveland, and Pottawatomie counties, though much of those areas outside the core Oklahoma County area are suburban tracts or protected rural zones (watershed). The city is the eighth-largest in the United States by area including consolidated city-counties; it is the second-largest, after Houston, not including consolidated cities. The city is also the second-largest by area among state capital cities in the United States, after Juneau, Alaska. Along with Topeka, Kansas and Cheyenne, Wyoming, Oklahoma City is one of three state capitals with an indigenous name in a state with an indigenous name. +Oklahoma City has one of the world's largest livestock markets. Oil, natural gas, petroleum products, and related industries are its economy's largest sector. The city is in the middle of an active oil field, and oil derricks dot the capitol grounds. The federal government employs a large number of workers at Tinker Air Force Base and the United States Department of Transportation's Mike Monroney Aeronautical Center (which house offices of the Federal Aviation Administration and the Transportation Department's Enterprise Service Center, respectively). +Oklahoma City is on the I-35 and I-40 corridors, one of the primary travel corridors south into neighboring Texas and New Mexico, north towards Wichita and Kansas City, west to Albuquerque, and east towards Little Rock and Memphis. Located in the state's Frontier Country region, the city's northeast section lies in an ecological region known as the Cross Timbers. The city was founded during the Land Run of 1889 and grew to a population of over 10,000 within hours of its founding. It was the site of the April 19, 1995, bombing of the Alfred P. Murrah Federal Building, in which 168 people died, the deadliest terror attack in U.S. history until the attacks of September 11, 2001, and the deadliest act of domestic terrorism in U.S. history. +Since weather records have been kept beginning in 1890, Oklahoma City has been struck by 14 violent tornadoes, 11 of which were rated F4 or EF4 on the Fujita and Enhanced Fujita scales, and one each rated F5 and EF5. + +" +"Portland, Oregon","Portland ( PORT-lənd) is a port city in the Pacific Northwest and the most populous city in the U.S. state of Oregon. Situated in the northwestern area of the state at the confluence of the Willamette and Columbia rivers, it is the county seat of Multnomah County, Oregon's most populous county. As of 2020, Portland's population was 652,503, making it the 26th-most populous city in the United States, the sixth-most populous on the West Coast, and the second-most populous in the Pacific Northwest, after Seattle. Approximately 2.5 million people live in the Portland–Vancouver–Hillsboro, OR–WA metropolitan statistical area, making it the 25th most populous in the United States. About half of Oregon's population resides within the Portland metropolitan area. +Named after Portland, Maine, which is itself named after the English Isle of Portland, the Oregon settlement began to be populated in the 1840s, near the end of the Oregon Trail. Its water access provided convenient transportation of goods, and the timber industry was a major force in the city's early economy. At the turn of the 20th century, the city had a reputation as one of the most dangerous port cities in the world, a hub for organized crime and racketeering. After the city's economy experienced an industrial boom during World War II, its hard-edged reputation began to dissipate. Beginning in the 1960s, it became noted for its growing liberal and progressive political values, earning it a reputation as a bastion of counterculture. +The city operates with a commission-based government, guided by a mayor and four commissioners, as well as Metro, the only directly elected metropolitan planning organization in the United States. Its climate is marked by warm, dry summers and cool, rainy winters. This climate is ideal for growing roses, and Portland has been called the ""City of Roses"" for over a century." +"Las Vegas, Nevada","Las Vegas, often known simply as Vegas, is the most populous city in the U.S. state of Nevada and the county seat of Clark County. The Las Vegas Valley metropolitan area is the largest within the greater Mojave Desert, and second-largest in the Southwestern United States. Las Vegas is an internationally renowned major resort city, known primarily for its gambling, shopping, fine dining, entertainment, and nightlife, with most venues centered on downtown Las Vegas and more to the Las Vegas Strip just outside city limits. The Las Vegas Valley as a whole serves as the leading financial, commercial, and cultural center for Nevada. According to the United States Census Bureau, the city had 641,903 residents in 2020, with a metropolitan population of 2,227,053, making it the 25th-most populous city in the United States. +The city bills itself as the Entertainment Capital of the World, and is famous for its luxurious and extremely large casino-hotels. With over 2.9 million visitors as of 2019, Las Vegas is the sixth-most visited city in the U.S., after New York City, Miami, Los Angeles, Orlando, and San Francisco. It is a top-three destination in the U.S. for business conventions and a global leader in the hospitality industry, claiming more AAA Five Diamond hotels than any other city in the world. Las Vegas annually ranks as one of the world's most visited tourist destinations. The city's tolerance for numerous forms of adult entertainment had earned it the nickname ""Sin City"", and has made Las Vegas a popular setting for literature, films, television programs, and music videos. +Las Vegas was settled in 1905 and officially incorporated in 1911. At the close of the 20th century, it was the most populated North American city founded within that century (a similar distinction was earned by Chicago in the 19th century). Population growth has accelerated since the 1960s and into the 21st century, and between 1990 and 2000 the population nearly doubled, increasing by 85.2%. As with most major metropolitan areas, the name of the primary city (""Las Vegas"" in this case) is often used to describe areas beyond official city limits. In the case of Las Vegas, this especially applies to the areas on and near the Strip, which are actually in the unincorporated communities of Paradise and Winchester. Over time and influenced by climate change, droughts in Southern Nevada, already one of the driest regions in the United States, have been increasing in frequency and severity, putting a further strain on Las Vegas's water security. + +" +"Memphis, Tennessee","Memphis is a city in the U.S. state of Tennessee. It is the seat of Shelby County, in the southwesternmost part of the state, and is situated along the Mississippi River. With a population of 633,104 at the 2020 U.S. census, Memphis is the second-most populous city in Tennessee after Nashville. +Memphis is the fifth-most populous city in the Southeast, the nation's 28th-most populous overall, as well as the largest city bordering the Mississippi River and third largest metropolitan statistical area behind Greater St. Louis and the Twin Cities on the Mississippi River. The Memphis metropolitan area includes West Tennessee and the greater Mid-South region, which includes portions of neighboring Arkansas, Mississippi and the Missouri Bootheel. One of the more historic and culturally significant cities of the Southern United States, Memphis has a wide variety of landscapes and distinct neighborhoods. +The first European explorer to visit the area of present-day Memphis was Spanish conquistador Hernando de Soto in 1541. The high Chickasaw Bluffs protecting the location from the waters of the Mississippi was contested by European settlers as Memphis developed. By 1819, when modern Memphis was founded, it was part of the United States territory. John Overton, James Winchester, and Andrew Jackson founded the city. Based on the wealth of cotton plantations and river traffic along the Mississippi, Memphis grew into one of the largest cities of the Antebellum South. After the Civil War and the end of slavery, the city continued to grow into the 20th century. It became among the largest world markets for cotton and hardwood. +Home to Tennessee's largest African-American population, Memphis played a prominent role in the American Civil Rights Movement. Dr. Martin Luther King Jr. was assassinated in 1968 after activities supporting a strike by the city's maintenance workers. The National Civil Rights Museum was established there and is a Smithsonian affiliate institution. +Since the civil rights era, Memphis has become one of the nation's leading commercial centers in transportation and logistics. The largest employer is FedEx, which maintains its global air hub at Memphis International Airport. In 2021, Memphis was the world's second-busiest cargo airport. The International Port of Memphis also hosts the fifth-busiest inland water port in the U.S. The Globalization and World Cities Research Network considers Memphis a ""Sufficiency"" level global city as of 2020. +Memphis is a center for media and entertainment, notably a historic music scene. With blues clubs on Beale Street originating the unique Memphis blues sound, the city has been nicknamed the ""Home of the Blues"". Its music has continued to be shaped by a multicultural mix of influences: country, rock and roll, soul, and hip-hop. +The city is home to a major professional sports team, the Grizzlies of the NBA and the Memphis Showboats of the UFL. Other attractions include Graceland, the Memphis Pyramid, Sun Studio, the Blues Hall of Fame and Stax Museum of American Soul Music. Memphis-style barbecue has achieved international prominence, and the city hosts the annual World Championship Barbecue Cooking Contest, which attracts more than 100,000 visitors each year. Higher-level educational institutions include the University of Memphis, Christian Brothers University and Rhodes College." +"Louisville, Kentucky","Louisville (varying pronunciations: US: LOO-ə-vəl, locally LUUV-əl, LOO-ee-vil) is the most populous city in the Commonwealth of Kentucky, sixth-most populous city in the Southeast, and the 27th-most-populous city in the United States. By land area, it is the country's 24th-largest city, although by population density, it is the 265th most dense city. Louisville is the historical county seat and, since 2003, the nominal seat of Jefferson County, on the Indiana border. +Named after King Louis XVI of France, Louisville was founded in 1778 by George Rogers Clark, making it one of the oldest cities west of the Appalachians. With the nearby Falls of the Ohio as the only major obstruction to river traffic between the upper Ohio River and the Gulf of Mexico, the settlement first grew as a portage site. It was the founding city of the Louisville and Nashville Railroad, which grew into a 6,000-mile (9,700 km) system across 13 states. +Today, the city is known as the home of boxer Muhammad Ali, the Kentucky Derby, Kentucky Fried Chicken, the University of Louisville and its Cardinals, Louisville Slugger baseball bats, and Fortune 500 company Humana. Louisville Muhammad Ali International Airport, Louisville's main commercial airport, hosts UPS's worldwide hub. +Since 2003, Louisville's borders have been the same as those of Jefferson County, after a city-county merger. The official name of this consolidated city-county government is the Louisville/Jefferson County Metro Government, abbreviated to Louisville Metro. Despite the merger and renaming, the term ""Jefferson County"" continues to be used in some contexts in reference to Louisville Metro, particularly including the incorporated cities outside the ""balance"" which make up Louisville proper. The city's total consolidated population as of the 2020 census was 782,969. However, the balance total of 633,045 excludes other incorporated places and semiautonomous towns within the county and is the population listed in most sources and national rankings. +The Louisville-Jefferson County, KY-IN Metropolitan Statistical Area (MSA) includes Louisville-Jefferson County and 12 surrounding counties, seven in Kentucky and five in Southern Indiana. As of 2023, the MSA had a population of 1,365,557, the 43rd largest in the nation. + +" +"Baltimore, Maryland","Baltimore is the most populous city in the U.S. state of Maryland. With a population of 585,708 at the 2020 census, it is the 30th-most populous city in the United States. Baltimore was designated an independent city by the Constitution of Maryland in 1851, and is currently the most populous independent city in the nation. As of the 2020 census, the population of the Baltimore metropolitan area was 2,838,327, the 20th-largest metropolitan area in the country. When combined with the larger Washington metropolitan area, the Washington–Baltimore combined statistical area (CSA) has a 2020 U.S. census population of 9,973,383, the third-largest in the country. +The land that is present-day Baltimore was used as hunting ground by Paleo-Indians. In the early 1600s, the Susquehannock began to hunt there. People from the Province of Maryland established the Port of Baltimore in 1706 to support the tobacco trade with Europe, and established the Town of Baltimore in 1729. +In the mid-18th century, the first printing press and newspapers were introduced to Baltimore by Nicholas Hasselbach and William Goddard. During the American Revolutionary War, the Second Continental Congress, fleeing Philadelphia prior to the city's fall to British troops, moved their deliberations to Henry Fite House on West Baltimore Street from December 20, 1776, to February 27, 1777, permitting Baltimore to serve briefly as the nation's capital before the capital returned to Independence Hall in Philadelphia on March 5, 1777. +The Battle of Baltimore was a pivotal engagement during the War of 1812, culminating in the failed British bombardment of Fort McHenry, during which Francis Scott Key wrote a poem that would become ""The Star-Spangled Banner"", which was eventually designated as the American national anthem in 1931. During the Pratt Street Riot of 1861, the city was the site of some of the earliest violence associated with the American Civil War. +The Baltimore and Ohio Railroad, the nation's oldest railroad, was built in 1830 and cemented Baltimore's status as a major transportation hub, giving producers in the Midwest and Appalachia access to the city's port. Baltimore's Inner Harbor was once the second leading port of entry for immigrants to the United States. In addition, Baltimore was a major manufacturing center. After a decline in major manufacturing, heavy industry, and restructuring of the rail industry, Baltimore has shifted to a service-oriented economy. Johns Hopkins Hospital and Johns Hopkins University are the city's top two employers. Baltimore and its surrounding region are home to the headquarters of a number of major organizations and government agencies, including the NAACP, ABET, the National Federation of the Blind, Catholic Relief Services, the Annie E. Casey Foundation, World Relief, the Centers for Medicare & Medicaid Services, and the Social Security Administration. Baltimore is also home to the Baltimore Orioles of Major League Baseball and the Baltimore Ravens of the National Football League. +Many of Baltimore's neighborhoods have rich histories. The city is home to some of the earliest National Register Historic Districts in the nation, including Fell's Point, Federal Hill, and Mount Vernon. These were added to the National Register between 1969 and 1971, soon after historic preservation legislation was passed. Baltimore has more public statues and monuments per capita than any other city in the country. Nearly one third of the city's buildings (over 65,000) are designated as historic in the National Register, which is more than any other U.S. city. Baltimore has 66 National Register Historic Districts and 33 local historic districts. The historical records of the government of Baltimore are located at the Baltimore City Archives. + +" +"Milwaukee, Wisconsin","Milwaukee ( mil-WAW-kee) is the most populous city in the U.S. state of Wisconsin and the county seat of Milwaukee County. With a population of 577,222 at the 2020 census, Milwaukee is the 31st-most populous city in the United States, and the fifth-most populous city in the Midwest. It is the central city of the Milwaukee metropolitan area, the 40th-most populous metro area in the U.S. Milwaukee is categorized as a ""Gamma minus"" city by the Globalization and World Cities Research Network, with a regional GDP of over $102 billion in 2020. +Milwaukee is an ethnically and culturally diverse city. However, it continues to be one of the most racially segregated cities, largely as a result of early-20th-century redlining. Its history was heavily influenced by German immigrants in the 19th century, and it continues to be a center for German-American culture, specifically becoming well known for its brewing industry. In recent years, Milwaukee has undergone several development projects, some of which have added to the city's skyline. Major additions to the city since the turn of the 21st century include the Wisconsin Center, American Family Field, The Hop streetcar system, an expansion to the Milwaukee Art Museum, Milwaukee Repertory Theater, the Bradley Symphony Center, and Discovery World, as well as major renovations to the UW–Milwaukee Panther Arena. Fiserv Forum opened in late 2018, and hosts sporting events and concerts. +Since 1968, Milwaukee has been home to Summerfest, a large music festival. Milwaukee is home to the Medical College of Wisconsin, UW-Milwaukee, Marquette University, MSOE, and several other colleges. The city is represented in two of the four major professional sports leagues − the Bucks of the NBA and the Brewers of the MLB. Milwaukee is home to the Fortune 500 companies of Northwestern Mutual, Fiserv, WEC Energy Group, Rockwell Automation, and Harley-Davidson. + +" +"Albuquerque, New Mexico","Albuquerque ( AL-bə-kur-kee; Spanish: [alβuˈkeɾke]), also known as ABQ, Burque, and the Duke City, is the most populous city in the U.S. state of New Mexico. Founded in 1706 as La Villa de Alburquerque by Santa Fe de Nuevo México governor Francisco Cuervo y Valdés, and named in honor of Francisco Fernández de la Cueva, 10th Duke of Alburquerque and Viceroy of New Spain, it served as an outpost on El Camino Real linking Mexico City to the northernmost territories of New Spain. +Located in the Albuquerque Basin, the city is flanked by the Sandia Mountains to the east and the West Mesa to the west, with the Rio Grande and bosque flowing north-to-south through the middle of the city. According to the 2020 census, Albuquerque had 564,559 residents, making it the 32nd-most populous city in the United States and the fourth largest in the Southwest. The Albuquerque metropolitan area had 955,000 residents in 2023, and forms part of the Albuquerque–Santa Fe–Los Alamos combined statistical area, which had a population of 1,162,523. +Albuquerque is a hub for technology, fine arts, and media companies. It is home to several historic landmarks, the University of New Mexico, the Albuquerque International Balloon Fiesta, the Gathering of Nations, the New Mexico State Fair, and a diverse restaurant scene, which features both New Mexican and global cuisine. + +" +"Tucson, Arizona","Tucson ( TOO-son; O'odham: Cuk Ṣon) is a city in and the county seat of Pima County, Arizona, United States, and is home to the University of Arizona. It is the second-largest city in Arizona behind Phoenix, with a population of 542,629 in the 2020 United States census, while the population of the entire Tucson metropolitan statistical area (MSA) is 1,043,433. The Tucson MSA forms part of the larger Tucson-Nogales combined statistical area. Both Tucson and Phoenix anchor the Arizona Sun Corridor. The city is 108 miles (174 km) southeast of Phoenix and 60 mi (100 km) north of the United States–Mexico border. +Major incorporated suburbs of Tucson include Oro Valley and Marana northwest of the city, Sahuarita south of the city, and South Tucson in an enclave south of downtown. Communities in the vicinity of Tucson (some within or overlapping the city limits) include Casas Adobes, Catalina Foothills, Flowing Wells, Midvale Park, Tanque Verde, Tortolita, and Vail. Towns outside the Tucson metropolitan area include Three Points, Benson to the southeast, Catalina and Oracle to the north, and Green Valley to the south. +Tucson was founded as a military fort by the Spanish when Hugo O'Conor authorized the construction of Presidio San Agustín del Tucsón in 1775. It was included in the state of Sonora after Mexico gained independence from the Spanish Empire in 1821. The United States acquired a 29,670 square miles (76,840 km2) region of present-day southern Arizona and southwestern New Mexico from Mexico under the Gadsden Purchase in 1853. Tucson served as the capital of the Arizona Territory from 1867 to 1877. Tucson was Arizona's largest city by population during the territorial period and early statehood, until it was surpassed by Phoenix by 1920. Nevertheless, its population growth remained strong during the late 20th century. Tucson was the first American city to be designated a ""City of Gastronomy"" by UNESCO in 2015. +The Spanish name of the city, Tucsón (Spanish pronunciation: [tuɣˈson]), is derived from the O'odham Cuk Ṣon (Uto-Aztecan pronunciation: [tʃʊk ʂɔːn]). Cuk is a stative verb meaning ""(be) black, (be) dark"". Ṣon is (in this usage) a noun referring to the base or foundation of something. The name is commonly translated into English as ""(at the) base of the black [hill]"", a reference to a basalt-covered hill now known as Sentinel Peak. Tucson is sometimes referred to as the Old Pueblo and Optics Valley, the latter referring to its optical science and telescopes known worldwide. + +" +"Fresno, California","Fresno ( ; Spanish for 'Ash') is a major city in the San Joaquin Valley of California, United States. It is the county seat of Fresno County and the largest city in the greater Central Valley region. It covers about 115 square miles (300 km2) and had a population of 542,107 as of the 2020 Census, making it the fifth-most populous city, in California, the most populous inland city in California, and the 34th-most populous city in the nation. +Named for the abundant ash trees lining the San Joaquin River, Fresno was founded in 1872 as a railway station of the Central Pacific Railroad before it was incorporated in 1885. It has since become an economic hub of Fresno County and the San Joaquin Valley, with much of the surrounding areas in the Metropolitan Fresno region predominantly tied to large-scale agricultural production. Fresno is near the geographic center of California, approximately 220 miles (350 km) north of Los Angeles, 170 miles (270 km) south of the state capital, Sacramento, and 185 miles (300 km) southeast of San Francisco. Yosemite National Park is about 60 miles (100 km) to the north, Kings Canyon National Park 60 miles (100 km) to the east, and Sequoia National Park 75 miles (120 km) to the southeast. +Fresno is also the fourth-largest majority-Hispanic city in the United States with 50.5% of its population being Hispanic in 2020. + +" +"Mesa, Arizona","Mesa ( MAY-sə) is a city in Maricopa County, Arizona, United States. It is the third-most populous city in Arizona, after Phoenix and Tucson, the 36th-most populous city in the U.S., and the most populous city that is not a county seat. The city is home to 504,258 people as of 2020. It is the most populous city in the East Valley of the Phoenix metropolitan area. It is bordered by Tempe on the west, the Salt River Pima–Maricopa Indian Community on the north, Chandler and Gilbert on the south along with Queen Creek, and Apache Junction on the east. +At least ten colleges and universities are located in Mesa. The city is home to the largest relief airport in the Phoenix area, Phoenix–Mesa Gateway Airport, located in the southeastern corner of the city. In separate studies in 2014 and 2017, researchers determined Mesa to be ""America's most conservative city""." +"Sacramento, California","Sacramento (Spanish for 'sacrament') ( SAK-rə-MEN-toh; Spanish: [sakɾaˈmento]) is the capital city of the U.S. state of California and the county seat of Sacramento County. Located at the confluence of the Sacramento and American Rivers in Northern California's Sacramento Valley, Sacramento's 2020 population of 524,943 makes it the fourth-most populous city in Northern California, sixth-most populous city in the state, and the ninth-most populous state capital in the United States. Sacramento is the seat of the California Legislature and the Governor of California. +Sacramento is also the cultural and economic core of the Greater Sacramento area, which at the 2020 census had a population of 2,680,831, the fourth-largest metropolitan area in California. +Before the arrival of the Spanish, the area was inhabited by the Nisenan, Maidu, and other indigenous peoples of California. In 1808, Spanish cavalryman Gabriel Moraga surveyed and named the Río del Santísimo Sacramento (Sacramento River), after the Blessed Sacrament. In 1839, Juan Bautista Alvarado, Mexican governor of Alta California, granted the responsibility of colonizing the Sacramento Valley to Swiss-born Mexican citizen John Augustus Sutter, who subsequently established Sutter's Fort and the settlement at the Rancho Nueva Helvetia. Following the American Conquest of California and the 1848 Treaty of Guadalupe-Hidalgo, the waterfront developed by Sutter began to be developed and incorporated in 1850 as the City of Sacramento. In 1852, the city offered its county courthouse to the state of California to house the state legislature, resulting in the city becoming the permanent state capital in 1854 and ushering in the construction of a new state capitol building which was finished in 1874. +Sacramento is the fastest-growing major city in California, owing to its status as a notable political center on the West Coast and as a major educational hub, home of California State University, Sacramento and UC Davis. Similarly, Sacramento is a major center for the California healthcare industry, as the seat of Sutter Health, UC Davis Medical Center, and the UC Davis School of Medicine. In 2013, the Sacramento Convention and Visitors Bureau stated that the city receives 15.3 million visitors per year, and is home to the California Museum, Crocker Art Museum, California State Railroad Museum, California State Capitol Museum, the Sacramento Convention Center, and Old Sacramento State Historic Park. It is also a global city, designated at the Gamma − level. + +" +"Atlanta, Georgia","Atlanta ( at-LAN-(t)ə) is the capital and most populous city in the U.S. state of Georgia. It is the seat of Fulton County, and a portion of the city extends into neighboring DeKalb County. With a population of 498,715 living within the city limits, Atlanta is the eighth most populous city in the Southeast and 38th most populous city in the United States according to the 2020 U.S. census. It is the core of the much larger Atlanta metropolitan area, which is home to more than 6.3 million people (2023 estimate), making it the sixth-largest U.S. metropolitan area. Situated among the foothills of the Appalachian Mountains at an elevation of just over 1,000 feet (300 m) above sea level, Atlanta features unique topography that includes rolling hills, lush greenery, and the densest urban tree coverage of any major city in the United States. +Atlanta was originally founded as the terminus of a major state-sponsored railroad, but it soon became the convergence point among several railroads, spurring its rapid growth. The largest was the Western and Atlantic Railroad, from which the name ""Atlanta"" is derived, signifying the city's growing reputation as a major hub of transportation. During the American Civil War, it served a strategically important role for the Confederacy until it was captured in 1864. The city was almost entirely burned to the ground during General William T. Sherman's March to the Sea. However, the city rebounded dramatically in the post-war period and quickly became a national industrial center and the unofficial capital of the ""New South"". After World War II, it also became a manufacturing and technology hub. During the 1950s and 1960s, it became a major organizing center of the American Civil Rights Movement, with Martin Luther King Jr., Ralph Abernathy, and many other locals becoming prominent figures in the movement's leadership. In the modern era, Atlanta has remained a major center of transportation, with Hartsfield-Jackson International Airport becoming the world's busiest airport by passenger traffic in 1998 (a position it has held every year since, except for 2020), with an estimated 93.7 million passengers in 2022. +With a nominal gross domestic product (GDP) of $473 billion in 2021, Atlanta has the eleventh largest economy of cities in the U.S. and the 22nd largest in the world. Its economy is considered diverse, with dominant sectors in industries including transportation, aerospace, logistics, healthcare, news and media operations, film and television production, information technology, finance, and biomedical research and public policy. The gentrification of some of its neighborhoods, initially spurred by the 1996 Summer Olympics, has intensified in the 21st century with the growth of the Atlanta Beltline. This has altered its demographics, politics, aesthetics, and culture. + +" +"Kansas City, Missouri","Kansas City, Missouri (KC or KCMO) is the largest city in the U.S. state of Missouri by population and area. Most of the city lies within Jackson County, with portions spilling into Clay, Platte, and Cass counties. It is the central city of the Kansas City metropolitan area, which straddles the Missouri–Kansas state line and has a population of 2,392,035. As of the 2020 census, the city had a population of 508,090, making it the 37th most-populous city in the United States, as well as the sixth-most populous city in the Midwest. Kansas City was founded in the 1830s as a port on the Missouri River at its confluence with the Kansas River from the west. On June 1, 1850, the town of Kansas was incorporated; shortly after came the establishment of the Kansas Territory. Confusion between the two ensued, and the name Kansas City was assigned to distinguish them soon after. +Sitting on Missouri's western boundary with Kansas, with Downtown near the confluence of the Kansas and Missouri Rivers, the city encompasses about 319.03 square miles (826.3 km2), making it the 25th largest city by total area in the United States. It serves as one of the two county seats of Jackson County, along with the major satellite city of Independence. Other major suburbs include the Missouri cities of Blue Springs, Lee's Summit, Raytown, and Liberty; on the Kansas side of the metro area, major suburbs include the cities of Overland Park, Olathe, Lenexa, and Kansas City, Kansas. +The city is composed of several neighborhoods, including the River Market District in the north, the 18th and Vine District in the east, and the Country Club Plaza in the south. Celebrated cultural traditions include Kansas City jazz; theater, as a center of the Vaudevillian Orpheum circuit in the 1920s; the many fountains throughout the city that it was nicknamed the ""City of Fountains""; the Chiefs and Royals sports franchises; and cuisine such as Kansas City–style barbecue and strip steak." +"Colorado Springs, Colorado","Colorado Springs is a city in and the county seat of El Paso County, Colorado, United States. It is the most populous city in El Paso County, with a population of 478,961 at the 2020 census, a 15.02% increase since 2010. Colorado Springs is the second-most populous city and the most extensive city in the state of Colorado, and the 39th-most-populous city in the United States. It is the principal city of the Colorado Springs metropolitan area and the second-most prominent city of the Front Range Urban Corridor. It is located in east-central Colorado on Fountain Creek, 70 miles (113 km) south of Denver. +At 6,035 feet (1,839 m) the city stands over 1 mile (1.6 km) above sea level. Colorado Springs is near the base of Pikes Peak, which rises 14,115 feet (4,302.31 m) above sea level on the eastern edge of the Southern Rocky Mountains. The city is the largest city north of Mexico above 6000 feet in elevation." +"Miami, Florida","Miami, officially the City of Miami, is a coastal metropolis in the U.S. state of Florida and the seat of Miami-Dade County in South Florida. It is the core of the much larger Miami metropolitan area, which, with a population of 6.14 million, is the second-largest metropolitan area in the Southeast after Atlanta, and the ninth-largest in the United States. With a population of 442,241 as of the 2020 census, Miami is the second-most populous city in Florida after Jacksonville. Miami has the third-largest skyline in the U.S. with over 300 high-rises, 58 of which exceed 491 ft (150 m). +Miami is a major center and leader in finance, commerce, culture, arts, and international trade. Miami's metropolitan area is by far the largest urban economy in Florida, with a gross domestic product of $344.9 billion as of 2017. According to a 2018 UBS study of 77 world cities, Miami is the third-richest city in the U.S. and the third-richest globally in purchasing power. Miami is a majority-minority city with a Hispanic and Latino population of 310,472, or 70.2 percent of the city's population, as of 2020. +Downtown Miami has among the largest concentrations of international banks in the U.S. and is home to several large national and international companies. The Health District is home to several major University of Miami-affiliated hospital and health facilities, including Jackson Memorial Hospital, the nation's largest hospital with 1,547 beds, and the Leonard M. Miller School of Medicine, the University of Miami's academic medical center and teaching hospital, and others engaged in health-related care and research. PortMiami, the city's seaport, is the busiest cruise port in the world in both passenger traffic and cruise lines. The Miami metropolitan area is the second-most visited city or metropolitan statistical area in the U.S. after New York City, with over 4 million visitors as of 2022. Miami has sometimes been called the ""Gateway to Latin America"" because of the magnitude of its commercial and cultural ties to the region. In 2022, Miami ranked seventh in the U.S. in business activity, human capital, information exchange, cultural experience, and political engagement. + +" +"Raleigh, North Carolina","Raleigh (; RAH-lee) is the capital city of the U.S. state of North Carolina and the seat of Wake County. It is the second-most populous city in North Carolina, after Charlotte. Raleigh is the tenth-most populous city in the Southeast, the 41st-most populous city in the U.S., and the largest city of the Research Triangle metro area. Raleigh is known as the ""City of Oaks"" for its many oak trees, which line the streets in the heart of the city. The city covers a land area of 148.54 square miles (384.7 km2). The U.S. Census Bureau counted the city's population as 467,665 at the 2020 census. It is one of the fastest-growing cities in the United States. The city of Raleigh is named after Sir Walter Raleigh, who established the now-lost Roanoke Colony in present-day Dare County. +Raleigh is home to North Carolina State University (NC State or NCSU) and is part of the Research Triangle together with Durham (home of Duke University and North Carolina Central University) and Chapel Hill (home of the University of North Carolina at Chapel Hill). The name of the Research Triangle (often shortened to ""The Triangle"") originated after the 1959 creation of Research Triangle Park (RTP), located in Durham and Wake counties, among the three cities and universities. The Triangle encompasses the Raleigh-Durham-Cary, NC Combined Statistical Area, which had an estimated population of 2,368,947 in 2023. The Raleigh-Cary, NC Metropolitan Statistical Area had an estimated population of 1,509,231 in 2023. +Most of Raleigh is located within Wake County, with a small portion extending into Durham County. The towns of Apex, Cary, Clayton, Fuquay-Varina, Garner, Holly Springs, Knightdale, Morrisville, Rolesville, Wake Forest, Wendell, and Zebulon are some of Raleigh's primary nearby suburbs and satellite towns. +Raleigh is an early example in the United States of a planned city. Following the American Revolutionary War when the U.S. gained independence, the area was chosen as the site of the state capital in 1788 and incorporated in 1792 as such. The city was originally laid out in a grid pattern with the North Carolina State Capitol at the center, in Union Square. During the American Civil War, the city was spared from any significant battle. It fell to the Union in the closing days of the war and struggled with the economic hardships in the postwar period, related to the reconstitution of labor markets, over-reliance on agriculture, and the social unrest of the Reconstruction Era. The establishment of the Research Triangle Park (RTP) in 1959 helped create tens of thousands of jobs in the fields of science and technology. By the early 21st century, Raleigh had become one of the fastest-growing cities in the United States. + +" +"Omaha, Nebraska","Omaha ( OH-mə-hah) is the most populous city in the U.S. state of Nebraska and the county seat of Douglas County. Omaha is in the Midwestern United States on the Missouri River, about 10 mi (15 km) north of the mouth of the Platte River. The nation's 40th-most populous city, Omaha's 2020 census population was 486,051. +Omaha is the anchor of the eight-county, a bi-state Omaha–Council Bluffs metropolitan area. The Omaha metropolitan area is the 58th-largest in the United States, with a population of 967,604. The Omaha–Council Bluffs–Fremont, NE–IA Combined Statistical Area (CSA) totaled 1,004,771, according to 2020 estimates. Approximately 1.5 million people reside within the Greater Omaha area, within a 50 mi (80 km) radius of Downtown Omaha. It is ranked as a global city by the Globalization and World Cities Research Network, which in 2020 gave it ""sufficiency"" status. +Omaha's pioneer period began in 1854, when the city was founded by speculators from neighboring Council Bluffs, Iowa. The city was founded along the Missouri River, and a crossing called Lone Tree Ferry earned the city its nickname, the ""Gateway to the West"". Omaha introduced this new West to the world in 1898, when it played host to the World's Fair, dubbed the Trans-Mississippi Exposition. During the 19th century, Omaha's central location in the United States spurred the city to become an important national transportation hub. Throughout the rest of the 19th century, the transportation and jobbing sectors were important in the city, along with its railroads and breweries. In the 20th century, the Omaha Stockyards, once the world's largest, and its meatpacking plants gained international prominence. +Presently, Omaha is the home to the headquarters of four Fortune 500 companies: conglomerate Berkshire Hathaway; one of the world's largest construction companies, Kiewit Corporation; insurance and financial firm Mutual of Omaha; and the United States' largest railroad operator, Union Pacific Corporation. Berkshire Hathaway is headed by local investor Warren Buffett, one of the wealthiest people in the world, according to a decade's worth of Forbes rankings, some of which have ranked him as high as No. 1. Omaha is also the home to five Fortune 1000 headquarters: Green Plains, Intrado, TD Ameritrade, Valmont Industries, and Werner Enterprises. Also headquartered in Omaha are the following: First National Bank of Omaha, the third largest privately held bank in the United States; three of the nation's ten largest architecture/engineering firms (DLR Group, HDR, Inc., and Leo A Daly); and the Gallup Organization, of Gallup Poll fame, and its riverfront Gallup University. Notable modern Omaha inventions include the following: the ""pink hair curler"" created at Omaha's Tip-Top Products; Butter Brickle Ice Cream, and the Reuben sandwich, conceived by a chef at the Blackstone Hotel on 36th and Farnam Streets; cake mix, developed by Duncan Hines, then a division of Omaha's Nebraska Consolidated Mills, the forerunner to today's ConAgra Foods; center-pivot irrigation by the Omaha company now known as Valmont Corporation; Raisin Bran, developed by Omaha's Skinner Macaroni Co.; the first ski lift in the U.S., in 1936, by Omaha's Union Pacific Corp.; the Top 40 radio format, pioneered by Todd Storz, scion of Omaha's Storz Brewing Co. and head of Storz Broadcasting, and first used in the U.S. at Omaha's KOWH Radio; and the TV dinner, developed by Omaha's Carl A. Swanson. + +" +"Long Beach, California","Long Beach is a city in Los Angeles County, California, United States. It is the 43rd-most populous city in the United States, with a population of 466,742 as of 2020. A charter city, Long Beach is the seventh-most populous city in California, the second most populous city in Los Angeles County, and the largest city in California that is not a county seat city. +Incorporated in 1897, Long Beach lies in Southern California, in the southern part of Los Angeles County. Long Beach is approximately 20 miles (32 km) south of downtown Los Angeles, and is part of the Gateway Cities region. The Port of Long Beach is the second busiest container port in the United States and is among the world's largest shipping ports. The city is over an oilfield with minor wells both directly beneath the city as well as offshore. +The city is known for its waterfront attractions, including the permanently docked RMS Queen Mary and the Aquarium of the Pacific. Long Beach also hosts the Grand Prix of Long Beach, an IndyCar race and the Long Beach Pride Festival and Parade. California State University, Long Beach, one of the largest universities in California by enrollment, is within the city." +"Virginia Beach, Virginia","Virginia Beach, officially the City of Virginia Beach, is an independent city located on the southeastern coast of Virginia, United States. The population was 459,470 at the 2020 census. Although mostly suburban in character, it is the most populous city in Virginia, fifth-most populous city in the Mid-Atlantic and the 42nd-most populous city in the U.S. Located on the Atlantic Ocean at the mouth of the Chesapeake Bay, Virginia Beach is a principal city in the Hampton Roads metropolitan area which has more than 1.8 million inhabitants and is the 37th-largest metropolitan area in the U.S. +Virginia Beach is a resort city with miles of beaches and hundreds of hotels, motels, and restaurants along its oceanfront. Near the point where the Chesapeake Bay and the Atlantic Ocean meet, Cape Henry was the site of the first landing of the English colonists who eventually settled in Jamestown; modern Virginia Beach was established in 1906. It is home to several state parks, protected beaches, and military bases. Virginia Wesleyan University, Regent University, Christian Broadcasting Network, the U.S. headquarters of Stihl, and the Association for Research and Enlightenment are based in Virginia Beach. It also hosts the annual East Coast Surfing Championships and Neptune Festival. +The city is listed in the Guinness Book of Records as having the longest pleasure beach in the world. It is located at the southern end of the Chesapeake Bay Bridge-Tunnel, which was the world's longest bridge-tunnel complex until the Hong Kong-Zhuhai-Macau Bridge opened in 2018." +"Oakland, California","Oakland is the most populous city in and the county seat of Alameda County, California, United States. A major West Coast port, Oakland is the largest city in the East Bay region of the San Francisco Bay Area, and the third-largest city overall in the Bay Area. With a population of 440,646 in 2020, it serves as the Bay Area's trade center: the Port of Oakland is the busiest port in Northern California, and the fifth- or sixth-busiest in the United States. A charter city, Oakland was incorporated on May 4, 1852, in the wake of the state's increasing population due to the California gold rush. +Oakland's territory covers what was once a mosaic of California coastal terrace prairie, oak woodland, and north coastal scrub. In the late 18th century, it became part of a large rancho grant in the colony of New Spain, and known for its plentiful oak tree stands. Its land served as a resource when its hillside oak and redwood timber were logged to build San Francisco. The fertile flatland soils helped it become a prolific agricultural region. In the 1850s, what became the first campus of the University of California was founded in Oakland, and Oakland was selected as the western terminal of the Transcontinental Railroad in 1869. The following year, Oakland's Lake Merritt became the United States' first officially designated wildlife refuge, now a National Historic Landmark. Following the catastrophic 1906 San Francisco earthquake, many San Francisco citizens moved to Oakland, enlarging the population, increasing its housing stock, and improving its infrastructure. It continued to grow in the 20th century with its port, shipyards, and manufacturing industry." +"Minneapolis, Minnesota","Minneapolis, officially the City of Minneapolis, is a city in and the county seat of Hennepin County, Minnesota, United States. With a population of 429,954, it is the state's most populous city as of the 2020 census. It occupies both banks of the Mississippi River and adjoins Saint Paul, the state capital of Minnesota. Minneapolis, Saint Paul, and the surrounding area are collectively known as the Twin Cities, a metropolitan area with 3.69 million residents. Minneapolis is built on an artesian aquifer on flat terrain, and is known for cold, snowy winters and hot, humid summers. Nicknamed the ""City of Lakes"", Minneapolis is abundant in water, with thirteen lakes, wetlands, the Mississippi River, creeks, and waterfalls. The city's public park system is connected by the Grand Rounds National Scenic Byway. +Dakota people originally inhabited the site of today's Minneapolis. European colonization and settlement began north of Fort Snelling along Saint Anthony Falls—the only natural waterfall on the Mississippi River. The city's early growth was attributed to its proximity to the fort and the falls providing power for industrial activity. Minneapolis was the 19th-century lumber and flour milling capital of the world, and as home to the Federal Reserve Bank of Minneapolis has preserved its financial clout into the 21st century. A Minneapolis Depression-era labor strike brought about federal worker protections. Work in Minneapolis contributed to the computing industry, and the city is the birthplace of General Mills, the Pillsbury brand, Target Corporation, and of Thermo King mobile refrigeration. +The city's major arts institutions include the Minneapolis Institute of Art, the Walker Art Center, and the Guthrie Theater. Four professional sports teams play downtown. Prince is survived by his favorite venue, the First Avenue nightclub. Minneapolis is home to the University of Minnesota's main campus. The city's public transport is provided by Metro Transit and the international airport, serving the Twin Cities region, is located towards the south on the city limits. +Residents adhere to more than fifty religions, and thousands choose to volunteer their time. Despite its well-regarded quality of life, Minneapolis faces a pressing challenge in the form of stark disparities among its residents—arguably the most critical issue confronting the city in the 21st century. Governed by a mayor-council system, Minneapolis has a political landscape dominated by the Minnesota Democratic–Farmer–Labor Party (DFL), with Jacob Frey serving as mayor since 2018. + +" +"Tulsa, Oklahoma","Tulsa ( TULL-sə) is the second-most-populous city in the state of Oklahoma, after Oklahoma City, and is the 47th-most-populous city in the United States. The population was 413,066 as of the 2020 census. It is the principal municipality of the Tulsa metropolitan area, a region with 1,034,123 residents. The city serves as the county seat of Tulsa County, the most densely populated county in Oklahoma, with urban development extending into Osage, Rogers and Wagoner counties. +Tulsa was settled between 1828 and 1836 by the Lochapoka Band of Creek Native American tribe and most of Tulsa is still part of the territory of the Muscogee (Creek) Nation. +Historically, a robust energy sector fueled Tulsa's economy; however, today the city has diversified and leading sectors include finance, aviation, telecommunications and technology. Two institutions of higher education within the city have sports teams at the NCAA Division I level: the University of Tulsa and Oral Roberts University. As well, the University of Oklahoma has a secondary campus at the Tulsa Schusterman Center, and Oklahoma State University has a secondary campus located in downtown Tulsa. For most of the 20th century, the city held the nickname ""Oil Capital of the World"" and played a major role as one of the most important hubs for the American oil industry. +It is situated on the Arkansas River between the Osage Hills and the foothills of the Ozark Mountains in northeast Oklahoma, a region of the state known as ""Green Country"". Considered the cultural and arts center of Oklahoma, Tulsa houses two art museums, full-time professional opera and ballet companies, and one of the nation's largest concentrations of art deco architecture." +"Arlington, Texas","Arlington is a city in Tarrant County, Texas, United States. It is part of the Mid-Cities region of the Dallas–Fort Worth–Arlington metropolitan statistical area, and is a principal city of the metropolis and region. The city had a population of 394,266 in 2020, making it the second-largest city in the county after Fort Worth and the third-largest city in the metropolitan area, after Dallas and Fort Worth. Arlington is the 50th-most populous city in the United States, the seventh-most populous city in the state of Texas, and the largest city in the state that is not a county seat. +Arlington is home to the University of Texas at Arlington, a major urban research university, the Arlington Assembly plant used by General Motors, the Nuclear Regulatory Commission Region IV, Texas Health Resources, Mensa International, and D. R. Horton. Additionally, Arlington hosts the Texas Rangers at Globe Life Field, the Dallas Cowboys at AT&T Stadium, the Arlington Renegades at Choctaw Stadium, the Dallas Wings at College Park Center, the International Bowling Campus (which houses the United States Bowling Congress, International Bowling Museum and the International Bowling Hall of Fame), and the theme parks Six Flags Over Texas (the original Six Flags) and Hurricane Harbor." +"Tampa, Florida","Tampa (US: TAM-pə) is a city on the Gulf Coast of the U.S. state of Florida. The city's borders include the north shore of Tampa Bay and the east shore of Old Tampa Bay. Tampa is the largest city in the Tampa Bay area and the seat of Hillsborough County. With an estimated population of 398,173 in 2022, Tampa is the 49th-most populous city in the country and the third-most populous city in Florida after Jacksonville and Miami. +Tampa was founded as a military center during the 19th century with the establishment of Fort Brooke. The cigar industry was also brought to the city by Vincente Martinez Ybor, after whom Ybor City is named. Tampa was reincorporated as a city in 1887 following the Civil War. Tampa's economy is driven by tourism, health care, finance, insurance, technology, construction, and the maritime industry. The bay's port is the largest in the state, responsible for over $15 billion in economic impact. +The city is part of the Tampa-St. Petersburg-Clearwater, Florida Metropolitan Statistical Area, which is a four-county area composed of roughly 3.1 million residents, making it the second-largest metropolitan statistical area (MSA) in the state and the sixth largest in the Southeastern United States, behind Dallas-Fort Worth, Houston, Washington D.C., Atlanta, and Miami. The Greater Tampa Bay area has over 4 million residents and generally includes the Tampa and Sarasota metro areas." +"New Orleans, Louisiana","New Orleans (commonly known as NOLA or the Big Easy among other nicknames) is a consolidated city-parish located along the Mississippi River in the southeastern region of the U.S. state of Louisiana. With a population of 383,997 according to the 2020 U.S. census, it is the most populous city in Louisiana and the French Louisiana region; third most populous city in the Deep South; and the twelfth-most populous city in the southeastern United States. Serving as a major port, New Orleans is considered an economic and commercial hub for the broader Gulf Coast region of the United States. +New Orleans is world-renowned for its distinctive music, Creole cuisine, unique dialects, and its annual celebrations and festivals, most notably Mardi Gras. The historic heart of the city is the French Quarter, known for its French and Spanish Creole architecture and vibrant nightlife along Bourbon Street. The city has been described as the ""most unique"" in the United States, owing in large part to its cross-cultural and multilingual heritage. Additionally, New Orleans has increasingly been known as ""Hollywood South"" due to its prominent role in the film industry and in pop culture. +Founded in 1718 by French colonists, New Orleans was once the territorial capital of French Louisiana before becoming part of the United States in the Louisiana Purchase of 1803. New Orleans in 1840 was the third most populous city in the United States, and it was the largest city in the American South from the Antebellum era until after World War II. The city has historically been very vulnerable to flooding, due to its high rainfall, low lying elevation, poor natural drainage, and proximity to multiple bodies of water. State and federal authorities have installed a complex system of levees and drainage pumps in an effort to protect the city. +New Orleans was severely affected by Hurricane Katrina in August 2005, which flooded more than 80% of the city, killed more than 1,800 people, and displaced thousands of residents, causing a population decline of over 50%. Since Katrina, major redevelopment efforts have led to a rebound in the city's population. Concerns have been expressed about gentrification, new residents buying property in formerly close-knit communities, and displacement of longtime residents. Additionally, high rates of violent crime continue to plague the city with New Orleans experiencing 280 murders in 2022, resulting in the highest per capita homicide rate in the United States. +The city and Orleans Parish (French: paroisse d'Orléans) are coterminous. As of 2017, Orleans Parish is the third most populous parish in Louisiana, behind East Baton Rouge Parish and neighboring Jefferson Parish. The city and parish are bounded by St. Tammany Parish and Lake Pontchartrain to the north, St. Bernard Parish and Lake Borgne to the east, Plaquemines Parish to the south, and Jefferson Parish to the south and west. +The city anchors the larger Greater New Orleans metropolitan area, which had a population of 1,271,845 in 2020. Greater New Orleans is the most populous metropolitan statistical area (MSA) in Louisiana and, since the 2020 census, has been the 46th most populous MSA in the United States. + +" diff --git a/module_4_rag/feature_repo/data/city_wikipedia_summaries_with_embeddings.parquet b/module_4_rag/feature_repo/data/city_wikipedia_summaries_with_embeddings.parquet new file mode 100644 index 0000000000000000000000000000000000000000..004d8bdba711017fd746f80f582ff494a498da73 GIT binary patch literal 190566 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

i(-C+_uYXscKVavb$+t;g33LNo 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" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 1. Setup the feature store" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Apply feature repository\n", - "We first run `feast apply` to register the data sources + features and setup Redis." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\r\n", - " warnings.warn(\r\n", - "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \r\n", - "In a future release, Dask DataFrame will use a new implementation that\r\n", - "contains several improvements including a logical query planning.\r\n", - "The user-facing DataFrame API will remain unchanged.\r\n", - "\r\n", - "The new implementation is already available and can be enabled by\r\n", - "installing the dask-expr library:\r\n", - "\r\n", - " $ pip install dask-expr\r\n", - "\r\n", - "and turning the query planning option on:\r\n", - "\r\n", - " >>> import dask\r\n", - " >>> dask.config.set({'dataframe.query-planning': True})\r\n", - " >>> import dask.dataframe as dd\r\n", - "\r\n", - "API documentation for the new implementation is available at\r\n", - "https://docs.dask.org/en/stable/dask-expr-api.html\r\n", - "\r\n", - "Any feedback can be reported on the Dask issue tracker\r\n", - "https://github.com/dask/dask/issues \r\n", - "\r\n", - "To disable this warning in the future, set dask config:\r\n", - "\r\n", - " # via Python\r\n", - " >>> dask.config.set({'dataframe.query-planning-warning': False})\r\n", - "\r\n", - " # via CLI\r\n", - " dask config set dataframe.query-planning-warning False\r\n", - "\r\n", - "\r\n", - " import dask.dataframe as dd\r\n", - "Deploying infrastructure for \u001B[1m\u001B[32mcity_embeddings\u001B[0m\r\n" - ] - } - ], - "source": [ - "!feast apply" - ] - }, - { - "cell_type": "markdown", - "source": [ - "# 2. Materialize training data\n", - "The datasets are prepared in the data directory. You can get them locally by running the commands in README.md. We will materialize the training data into the online store." - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 6, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\r\n", - " warnings.warn(\r\n", - "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \r\n", - "In a future release, Dask DataFrame will use a new implementation that\r\n", - "contains several improvements including a logical query planning.\r\n", - "The user-facing DataFrame API will remain unchanged.\r\n", - "\r\n", - "The new implementation is already available and can be enabled by\r\n", - "installing the dask-expr library:\r\n", - "\r\n", - " $ pip install dask-expr\r\n", - "\r\n", - "and turning the query planning option on:\r\n", - "\r\n", - " >>> import dask\r\n", - " >>> dask.config.set({'dataframe.query-planning': True})\r\n", - " >>> import dask.dataframe as dd\r\n", - "\r\n", - "API documentation for the new implementation is available at\r\n", - "https://docs.dask.org/en/stable/dask-expr-api.html\r\n", - "\r\n", - "Any feedback can be reported on the Dask issue tracker\r\n", - "https://github.com/dask/dask/issues \r\n", - "\r\n", - "To disable this warning in the future, set dask config:\r\n", - "\r\n", - " # via Python\r\n", - " >>> dask.config.set({'dataframe.query-planning-warning': False})\r\n", - "\r\n", - " # via CLI\r\n", - " dask config set dataframe.query-planning-warning False\r\n", - "\r\n", - "\r\n", - " import dask.dataframe as dd\r\n", - "Materializing \u001B[1m\u001B[32m1\u001B[0m feature views from \u001B[1m\u001B[32m2024-03-31 17:00:00-07:00\u001B[0m to \u001B[1m\u001B[32m2024-04-16 17:00:00-07:00\u001B[0m into the \u001B[1m\u001B[32mpostgres\u001B[0m online store.\r\n", - "\r\n", - "\u001B[1m\u001B[32mcity_embeddings\u001B[0m:\r\n", - "100%|██████████████████████████████████████████████████████████████| 49/49 [00:00<00:00, 956.19it/s]\r\n" - ] - } - ], - "source": [ - "!feast materialize 2024-04-01T00:00:00 2024-04-17T00:00:00" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we instantiate a Feast `FeatureStore` object to push data to" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", - " warnings.warn(\n", - "/Users/haoxu/dev/feast-workshop/.virtualenv/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \n", - "In a future release, Dask DataFrame will use a new implementation that\n", - "contains several improvements including a logical query planning.\n", - "The user-facing DataFrame API will remain unchanged.\n", - "\n", - "The new implementation is already available and can be enabled by\n", - "installing the dask-expr library:\n", - "\n", - " $ pip install dask-expr\n", - "\n", - "and turning the query planning option on:\n", - "\n", - " >>> import dask\n", - " >>> dask.config.set({'dataframe.query-planning': True})\n", - " >>> import dask.dataframe as dd\n", - "\n", - "API documentation for the new implementation is available at\n", - "https://docs.dask.org/en/stable/dask-expr-api.html\n", - "\n", - "Any feedback can be reported on the Dask issue tracker\n", - "https://github.com/dask/dask/issues \n", - "\n", - "To disable this warning in the future, set dask config:\n", - "\n", - " # via Python\n", - " >>> dask.config.set({'dataframe.query-planning-warning': False})\n", - "\n", - " # via CLI\n", - " dask config set dataframe.query-planning-warning False\n", - "\n", - "\n", - " import dask.dataframe as dd\n" - ] - } - ], - "source": [ - "from feast import FeatureStore\n", - "store = FeatureStore(repo_path=\".\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "# Prepare a query vector" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 3, - "outputs": [], - "source": [ - "from batch_score_documents import run_model, TOKENIZER, MODEL\n", - "from transformers import AutoTokenizer, AutoModel" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "question = \"the most populous city in the U.S. state of Texas?\"\n", - "\n", - "tokenizer = AutoTokenizer.from_pretrained(TOKENIZER)\n", - "model = AutoModel.from_pretrained(MODEL)\n", - "query_embedding = run_model(question, tokenizer, model)\n", - "query = query_embedding.detach().cpu().numpy().tolist()[0]" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "is_executing": true - } - } - }, - { - "cell_type": "markdown", - "source": [ - "# Retrieve the top-k documents" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Embeddings : [[0.11749927699565887, -0.04684491828083992, 0.074561707675457, 0.10036394000053406, -0.02789139188826084, 0.004901227541267872, -0.025490708649158478, -0.014385512098670006, -0.03353535756468773, -0.03694501891732216, 0.019829893484711647, -0.08767078071832657, 0.15164919197559357, -0.05422529578208923, 0.04684631526470184, -0.016555113717913628, 0.06950949877500534, 0.012052210047841072, 0.024535944685339928, -0.0060577718541026115, 0.06979842483997345, 0.026241665706038475, -0.06335429847240448, 0.03742428496479988, -0.006074287462979555, 0.12012293934822083, 0.012978488579392433, 0.019200358539819717, -0.09065929055213928, -0.010197900235652924, 0.046665437519550323, 0.07225364446640015, 0.07100000977516174, -0.08593559265136719, 0.05330311879515648, 0.004392698407173157, -0.06441846489906311, -0.006751690525561571, -0.04681907594203949, -0.006416881922632456, 0.0013941957149654627, -0.014143028296530247, 0.03822663053870201, 0.06176742911338806, -0.07114912569522858, -0.06869634985923767, 0.023103320971131325, 0.017941536381840706, 0.04543396458029747, -0.003846831852570176, -0.006298447027802467, 0.04135259613394737, 0.03142368793487549, 0.059807322919368744, 0.0027939684223383665, -0.010763526894152164, -0.01526960264891386, 0.021293316036462784, 0.014713623560965061, -0.01951569877564907, -0.012679428793489933, -0.046083226799964905, 0.020521333441138268, -0.01550274807959795, 0.00899930763989687, 0.07635846734046936, -0.02821502462029457, -0.02116866037249565, 0.04579779505729675, -0.08746904879808426, 0.07579099386930466, -0.0026315602008253336, -0.021190708503127098, 0.04639966040849686, 0.11584736406803131, -0.004722608719021082, 0.03807824105024338, -0.008432984352111816, -0.06269132345914841, 0.033780377358198166, 0.010498360730707645, -0.04720931872725487, -0.05267438292503357, -0.09110666811466217, -0.10725008696317673, -0.06415090709924698, 0.03612256795167923, 0.03143369033932686, -0.020167799666523933, 0.03701704740524292, -0.017262401059269905, 0.0684085264801979, -0.058458346873521805, -0.07113922387361526, 0.09735991805791855, 0.003146713599562645, -0.07869425415992737, -0.0440203920006752, 0.018143530935049057, 0.02249395288527012, 0.027600392699241638, -0.026889359578490257, 0.028707388788461685, 0.07705868035554886, 0.10244245082139969, -0.06309869885444641, -0.01154290046542883, -0.009791369549930096, -0.03711015731096268, -0.038788292557001114, 0.049837663769721985, -0.04931922256946564, -0.012459300458431244, 0.04696429520845413, 0.04174819961190224, 0.070229671895504, 0.06802497059106827, 0.01821114495396614, 0.018153393641114235, -0.0023667162749916315, 0.03611695393919945, -0.030793042853474617, -0.04765204340219498, 0.0017187651246786118, 0.10731911659240723, -0.0014752444112673402, -0.13421441614627838, -2.1588829863484657e-33, -0.11735869199037552, -0.02727390080690384, 0.012979614548385143, 0.022615285590291023, -0.041619788855314255, -0.01927032694220543, -0.02232659049332142, -0.00839410163462162, 0.012217069044709206, -0.04900732263922691, 0.04629648104310036, 0.05606415867805481, 0.04693273454904556, 0.048979755491018295, 0.10588003695011139, -0.05331561714410782, -0.015047404915094376, -0.033745333552360535, -0.022007597610354424, -0.014778360724449158, -0.024108896031975746, -0.03541431576013565, -0.01940123550593853, 0.0008004573173820972, -0.08957581222057343, 0.08470030128955841, -0.004999587778002024, -0.021122220903635025, 0.0605558305978775, -0.0037110960111021996, -0.06870313733816147, 0.02203388512134552, 0.10891969501972198, -0.013062838464975357, 0.021517816931009293, -0.0035001265350729227, 0.00044258407433517277, -0.0033845503348857164, -0.032929230481386185, 0.03419949486851692, -0.12468685954809189, 0.02728654071688652, -0.03658629208803177, 0.0062593864277005196, 0.022481128573417664, 0.019314875826239586, -0.0032050402369350195, -0.011589311994612217, -0.019010959193110466, 0.014523262158036232, 0.07006651163101196, -0.054914992302656174, 0.01242269016802311, -0.021287260577082634, 0.022597109898924828, 0.06195758283138275, -0.03862821310758591, -0.026994911953806877, -0.0013452088460326195, 0.033970437943935394, -0.04091078042984009, 0.03369394317269325, 0.03220393881201744, 0.03767672926187515, 0.05298908054828644, 0.06925726681947708, 0.06519123911857605, 0.059456147253513336, 0.029546089470386505, 0.0728830024600029, 0.010236803442239761, 0.07094284147024155, 0.029794322326779366, 0.019826361909508705, -0.01423713006079197, 0.03157419338822365, 0.00889563374221325, -0.0114641934633255, 0.017643103376030922, 0.07218773663043976, -0.007698675151914358, 0.033402204513549805, -0.06450118124485016, -0.03132760897278786, 0.08943087607622147, -0.016201285645365715, -0.03538915142416954, 0.0339173823595047, 0.01659158244729042, -0.011765778064727783, 0.052562013268470764, 0.005110282450914383, 0.0010674302466213703, 0.06568385660648346, -0.0761270523071289, 1.3933608411456749e-33, 0.0009253066382370889, -0.08035185933113098, 0.021005259826779366, 0.01279155071824789, 0.017389284446835518, -0.012598567642271519, 0.07392681390047073, 0.03542575240135193, -0.00678551010787487, -0.08230569958686829, -0.05081082507967949, -0.03972111642360687, 0.008916412480175495, -0.055083561688661575, 0.012490999884903431, 0.046758029609918594, 0.047956433147192, 0.000841215718537569, -0.09051639586687088, 0.026546481996774673, -0.10587587207555771, 0.016274303197860718, -0.07532799988985062, -0.057392194867134094, -0.001697041210718453, -0.02615753747522831, -0.08573239296674728, 0.007093202322721481, -0.009812992066144943, 0.0059440117329359055, -0.0915243998169899, 0.0043739755637943745, -0.06659617274999619, 0.00023749038518872112, -0.016416752710938454, 0.027138840407133102, -0.0018410267075523734, -0.03729409724473953, 0.06756874918937683, 0.017979232594370842, -0.030627429485321045, 0.03571843355894089, 0.04044914245605469, -0.05168215185403824, -0.006584961898624897, 0.08455103635787964, 0.09588535130023956, 0.02825082093477249, -0.05815998837351799, -0.014993187971413136, -0.010946402326226234, -0.04573942348361015, -0.11304665356874466, 0.05365119129419327, -0.038412753492593765, -0.002871329430490732, -0.009341246448457241, 0.10030493885278702, -0.031042642891407013, -0.019354380667209625, 0.0004125670820940286, -0.0007719398709014058, 0.09847064316272736, 0.023863879963755608, -0.025697963312268257, 0.02437741495668888, 0.025297367945313454, -0.05756767466664314, -0.040450673550367355, 0.025564342737197876, 0.028172887861728668, -0.0029736191499978304, -0.0665455162525177, -0.0576401986181736, 0.021328864619135857, 0.09964409470558167, 0.010494464077055454, 0.07944424450397491, -0.02641637995839119, -0.010853635147213936, 0.0034789391793310642, 0.08805618435144424, -0.09555229544639587, -0.027953583747148514, 0.03557375818490982, 0.07804333418607712, -0.05295033007860184, 0.043670881539583206, 0.03206954523921013, 0.012246176600456238, -0.10244423151016235, 0.005418527405709028, -0.1327744871377945, -0.05309426411986351, -0.07330143451690674, -4.644808981879578e-08, -0.06450624763965607, 0.024119151756167412, -0.07194093614816666, 0.033693838864564896, 0.13507509231567383, 0.13180622458457947, 0.05551670864224434, 0.04497965797781944, 0.009016617201268673, 0.05985432490706444, 0.03754103183746338, -0.0447244830429554, -0.0740557461977005, -0.037813812494277954, -0.09472808986902237, 0.04429461061954498, -0.05627050623297691, -0.006502519361674786, -0.003369016805663705, -0.04041304439306259, -0.06678348779678345, 0.0051789721474051476, -0.052771832793951035, 0.05788276717066765, -0.012315365485846996, -0.046666428446769714, 0.004011842887848616, 0.02137860655784607, 0.030087687075138092, -0.05046994984149933, 0.04225831478834152, -0.03473357483744621, -0.1598803699016571, -0.04670379310846329, 0.026452666148543358, -0.10197827965021133, 0.022245166823267937, 0.06653784215450287, 0.02565297856926918, 0.06364096701145172, -0.018878169357776642, -0.008384596556425095, -0.017159799113869667, -0.035177577286958694, -0.020360833033919334, 0.0019360436126589775, -0.05431096628308296, 0.025217294692993164, 0.005906396545469761, 0.02939896285533905, -0.02391386218369007, -0.09292323142290115, -0.015012769959867, 0.008888348005712032, 0.0570496991276741, -0.03264027088880539, 0.08929869532585144, -0.04854343459010124, -0.03315092623233795, 0.029655855149030685, -0.02528601884841919, -0.017414361238479614, 0.0321027971804142, 0.039058443158864975], [0.10331051051616669, -0.07676679641008377, 0.04462852329015732, 0.08021443337202072, -0.05351116880774498, 0.005698204040527344, -0.05440784618258476, 0.04601375013589859, -0.03462834283709526, -0.07392653822898865, 0.0522584430873394, 0.02368549071252346, 0.09067568928003311, -0.06237998232245445, 0.02410109154880047, 0.006168494466692209, 0.03190910443663597, 0.009539336897432804, -0.028488988056778908, -0.02267671562731266, 0.09337331354618073, -0.055280741304159164, -0.05473731458187103, -0.01975906454026699, 0.017720043659210205, 0.040230706334114075, -0.020040327683091164, -0.033438798040151596, -0.0795409083366394, 0.01570550911128521, 0.03418699651956558, 0.047492433339357376, 0.04017673060297966, -0.016825802624225616, 0.014013564214110374, -0.014820379205048084, -0.03144967183470726, 0.013162312097847462, 0.040420595556497574, 0.012820563279092312, -0.024819066748023033, -0.04387754574418068, 0.05846838280558586, 0.06642544269561768, -0.035549987107515335, -0.08463059365749359, -0.00042474482324905694, 0.027333209291100502, 0.07404281198978424, -0.04053667560219765, 0.009552833624184132, 0.076789490878582, 0.002252038801088929, 0.028407329693436623, 0.017153097316622734, -0.038921378552913666, 0.009500805288553238, 0.012428867630660534, -0.022668754681944847, -0.017223693430423737, -0.021368402987718582, 0.057022448629140854, 0.015266109257936478, -0.039043232798576355, -0.07307662069797516, 0.050958309322595596, 0.030760347843170166, -0.0600537545979023, 0.018778743222355843, -0.0723862275481224, 0.07840563356876373, 0.011015571653842926, -0.021207552403211594, 0.049671366810798645, 0.10778632014989853, -0.023844381794333458, 0.035239771008491516, 0.07035961002111435, -0.013240911066532135, -0.011642856523394585, 0.04533189907670021, 0.03697344660758972, -0.11386046558618546, -0.07553944736719131, -0.15270361304283142, -0.018226640298962593, -0.03737008199095726, 0.045229487121105194, 0.0007506260881200433, -0.018041811883449554, 0.06504639983177185, 0.03144799917936325, -0.10954160243272781, -0.10738150030374527, 0.13930831849575043, 0.06204458698630333, -0.09926486760377884, -0.0347372405230999, -0.004604031331837177, -0.015538091771304607, 0.021594056859612465, 0.004683373030275106, -0.0063517093658447266, 0.010801705531775951, 0.07792841643095016, -0.012220469303429127, -0.04405515640974045, 0.005511843133717775, -0.057228103280067444, -0.051467206329107285, 0.093075692653656, -0.05880353972315788, -0.028999920934438705, 0.05876193568110466, 0.007591032423079014, 0.026665104553103447, 0.03153247758746147, -0.05337504670023918, 0.03779562935233116, -0.09649711847305298, -0.026061851531267166, -0.03088366612792015, -0.03969842940568924, 0.017427418380975723, 0.05684369429945946, 0.002518854569643736, -0.06276379525661469, -2.0867386736056787e-33, -0.04391661658883095, -0.07563015073537827, 0.009133857674896717, 0.017166726291179657, -0.06620938330888748, -0.0503690131008625, 0.012596432119607925, -0.05982870236039162, 0.0027576745487749577, -0.029722031205892563, 0.027648236602544785, 0.0031523031648248434, 0.034868329763412476, -0.012535315938293934, 0.08612681925296783, 0.007981225848197937, -0.046025414019823074, -0.011055168695747852, -0.020676391199231148, -0.06484035402536392, -0.013890908099710941, -0.0025176883209496737, 0.02051563560962677, -0.06336773186922073, -0.036557748913764954, 0.03636118397116661, -0.07441388070583344, -0.046714406460523605, -0.02059175819158554, -0.011695639230310917, -0.10995755344629288, -0.024104870855808258, 0.097081758081913, 0.03226326406002045, 0.03045407496392727, -0.033308226615190506, 0.03990059345960617, 0.018012845888733864, -0.04174208268523216, 0.003600242780521512, -0.04683617502450943, 0.06494197994470596, -0.0269573125988245, 0.02866203710436821, 0.07913592457771301, 0.03081035427749157, 0.003436909057199955, 0.011421363800764084, -0.02924053743481636, -0.07447626441717148, 0.09607291221618652, -0.025704752653837204, 0.050055645406246185, -0.02644922211766243, 0.004042467102408409, 0.0317777581512928, 0.0038234670646488667, -0.03039737045764923, 0.024811210110783577, 0.12182707339525223, -0.08409561216831207, 0.005762482061982155, 0.025205111131072044, 0.02487976849079132, 0.04486233741044998, 0.0068103233352303505, 0.01931614615023136, 0.11814720928668976, -0.02936437353491783, 0.07588185369968414, 0.026423893868923187, -0.049529291689395905, 0.06123148277401924, 0.02182760089635849, 0.03450331464409828, -0.028617653995752335, 0.035406824201345444, 0.03734695538878441, -0.047207221388816833, 0.03879037871956825, 0.024722419679164886, 0.025558430701494217, 0.020973404869437218, 0.03850189596414566, 0.07455627620220184, -0.044103022664785385, 0.01613634079694748, 0.006007217802107334, -0.02155369147658348, -0.037056226283311844, -0.062379006296396255, 0.07525509595870972, 0.055451661348342896, 0.05236397311091423, 0.040192823857069016, -9.426353484091234e-34, -0.03637831658124924, -0.051907360553741455, 0.04856778681278229, -0.05725143104791641, -0.024386877194046974, -0.044092267751693726, 0.09381633251905441, -0.029993178322911263, -0.0030174434650689363, -0.07819853723049164, -0.07676231861114502, -0.02261270582675934, 0.028997182846069336, -0.06145840510725975, 0.0031029076781123877, 0.0036302884109318256, -0.00785570777952671, 0.007383706979453564, -0.13788872957229614, 0.07382552325725555, -0.05208449438214302, 0.02073391154408455, -0.01228058710694313, 0.021948235109448433, 0.07203274965286255, -0.022037608548998833, -0.056802913546562195, 0.0009453981183469296, -0.02144419401884079, 0.020031193271279335, 0.024152880534529686, -0.008272870443761349, -0.0159528199583292, 0.044012539088726044, -4.079512655152939e-05, 0.013061239384114742, 0.014660916291177273, -0.03423278406262398, 0.06256286054849625, 0.011297265067696571, 0.009315217845141888, 0.033603377640247345, 0.03684663772583008, -0.040490370243787766, -0.0267629511654377, 0.07919536530971527, 0.07947143167257309, 0.0009094149572774768, -0.061920084059238434, -0.04677439108490944, -0.030411161482334137, -0.024920212104916573, -0.08064541965723038, 0.05981258302927017, -0.07002998888492584, 0.03632117062807083, 0.02983582578599453, 0.0829337015748024, 0.029316511005163193, -0.0230630524456501, -0.03355468064546585, -0.0007939631468616426, 0.055992744863033295, 0.040662284940481186, -0.022757692262530327, -0.01730244979262352, 0.05073518306016922, -0.045434873551130295, -0.019017120823264122, -0.043729446828365326, -0.03932960331439972, 0.015522775240242481, -0.06450066715478897, 0.01296135876327753, 0.05136873945593834, 0.09069471806287766, -0.016517398878932, 0.0734264999628067, -0.027500895783305168, 0.06596570461988449, 0.003147663315758109, 0.048661671578884125, -0.09457903355360031, -0.09554070979356766, 0.04700878635048866, 0.059318140149116516, -0.051983051002025604, 0.06198004633188248, 0.03580159693956375, -0.039614662528038025, -0.07806045562028885, -0.004564489237964153, -0.09403438866138458, -0.02245713584125042, -0.022319912910461426, -5.360929833386763e-08, -0.027041159570217133, 0.09500405937433243, -0.00885707139968872, 0.06403651833534241, 0.032831571996212006, 0.02816218137741089, 0.03130489960312843, 0.07699041813611984, -0.006205273326486349, 0.03686976060271263, -0.0035430514253675938, -0.009556521661579609, -0.09004775434732437, -0.061549797654151917, -0.11513242870569229, -0.06034677475690842, -0.11029954254627228, -0.01871279813349247, 0.0018805541330948472, -0.030120955780148506, 0.007194702047854662, -0.07524652034044266, -0.10343952476978302, 0.007047621998935938, -0.020713381469249725, -0.04571079462766647, 0.01424648892134428, 0.056544624269008636, 0.00022138845815788954, 0.026383904740214348, 0.116036556661129, -0.09139249473810196, -0.1556224822998047, 0.007270175497978926, 0.08876193314790726, -0.07553884387016296, 0.07017125189304352, 0.013147140853106976, 0.05257280915975571, -0.006699622143059969, -0.011253020726144314, 0.040383897721767426, -0.008787150494754314, -0.05065607652068138, -0.005260122939944267, -0.012216638773679733, -0.01657884567975998, 0.035974349826574326, 0.07825075089931488, 0.09855543822050095, 0.02233605459332466, -0.0626956969499588, -0.02550097182393074, -0.04142352566123009, 0.09897702187299728, -0.061636462807655334, 0.03376517817378044, 0.0008465087739750743, 0.016745612025260925, -0.027870606631040573, -0.025691978633403778, 0.039361681789159775, 0.050182878971099854, 0.07090042531490326], [0.11634305864572525, -0.10321833193302155, -0.007189923897385597, 0.06054242327809334, -0.011092515662312508, 0.008888869546353817, -0.012909846380352974, 0.019102297723293304, -0.04098448157310486, -0.037729691714048386, -0.027977826073765755, 0.0353659950196743, 0.13618184626102448, -0.02067447081208229, 0.0038423400837928057, -0.0651339590549469, 0.05769791454076767, -0.04073723405599594, 0.06008503586053848, -0.006888522766530514, 0.012933759018778801, -0.0736369863152504, -0.021633297204971313, -0.0894172266125679, -0.04663727432489395, 0.023937780410051346, 0.00020877517818007618, 0.021651145070791245, -0.08914417773485184, 0.004642942454665899, -0.004277986008673906, 0.10236808657646179, -0.027143102139234543, -0.017563657835125923, -0.02927396632730961, 0.06552392989397049, -0.022684849798679352, 0.03587312251329422, 0.028600674122571945, -0.00011912188347196206, 0.0014841393567621708, -0.07621059566736221, 0.05600668489933014, -0.015091462060809135, -0.006106847431510687, -0.08980677276849747, -0.01889166235923767, 0.027821719646453857, 0.1162354052066803, -0.02956310659646988, 0.0028604010585695505, 0.0948241725564003, 0.015074390918016434, 0.08431674540042877, 0.014123247005045414, -0.012907179072499275, 0.02972230687737465, 0.03902226686477661, -0.07236318290233612, 0.02151038683950901, -0.06272643804550171, 0.0003269300505053252, 0.01059903297573328, -0.05653905123472214, -0.03587447479367256, 0.05409163609147072, 0.0020082006230950356, 0.011958504095673561, -0.0329730324447155, -0.06608514487743378, 0.04413757100701332, -0.0025174864567816257, -0.07787992060184479, 0.07192662358283997, 0.10019515454769135, 0.02539791725575924, 0.04016440361738205, -0.006924023851752281, 0.005925080738961697, 0.04081990569829941, -0.03304620087146759, 0.021206721663475037, -0.06485887616872787, -0.05201338976621628, -0.11545782536268234, -0.00801850575953722, 0.012861297465860844, -0.006095332093536854, -0.016472330316901207, 0.0058835409581661224, 0.06178133189678192, 0.09412389993667603, -0.06327200680971146, -0.019518742337822914, 0.06615566462278366, 0.024986354634165764, -0.059936586767435074, -0.03233719989657402, 0.004648788366466761, -0.04932575300335884, -0.028288649395108223, -0.012720693834125996, 0.02692382223904133, 0.05466010794043541, 0.01738874614238739, -0.007208314258605242, -0.024267826229333878, 0.009864699095487595, -0.06831816583871841, -0.055211227387189865, 0.06146666780114174, -0.02202630043029785, -0.04086703807115555, -0.0210438072681427, -0.02340015023946762, 0.017423097044229507, 0.03068532422184944, -0.05786578357219696, 0.04791866987943649, -0.05597405508160591, -0.018911534920334816, 0.04077770560979843, 0.016362937167286873, 0.059432998299598694, 0.06770279258489609, -0.005518815480172634, -0.03877989202737808, -3.8525956747696895e-33, -0.1337270885705948, 0.001012894557788968, 0.03974046930670738, 0.021452704444527626, -0.07663615047931671, -0.0498632974922657, 0.017822982743382454, -0.02128567174077034, -4.734064714284614e-05, -0.010782117955386639, -0.042328719049692154, 0.09506185352802277, 0.025139544159173965, 0.05306873470544815, 0.05406158044934273, -0.06833197921514511, 0.03489414602518082, -0.02629990689456463, -0.04384368658065796, -0.015669291839003563, 0.034520965069532394, -0.0013516645412892103, 0.02120133861899376, -0.05431106686592102, 0.013346433639526367, 0.0673346146941185, -0.015487014316022396, 0.05636169761419296, 0.05866707116365433, -0.006376099772751331, -0.11707364022731781, -0.013991751708090305, 0.07255817949771881, 0.02153550647199154, 0.03307328373193741, -0.0233885757625103, 0.027623789384961128, 0.03279649838805199, -0.0691627562046051, -0.002109368797391653, -0.08114180713891983, 0.002096959389746189, -0.04174213483929634, -0.01546625979244709, 0.0036050984635949135, 0.026141183450818062, 0.006218935828655958, -0.02092091739177704, -0.0469009131193161, 0.013603090308606625, 0.07198671251535416, 0.00527279544621706, 0.031756483018398285, 0.02240552008152008, -0.07020461559295654, 0.023433424532413483, -0.002824752125889063, -0.08813190460205078, 0.02565416321158409, 0.07466182857751846, -0.1184200569987297, -0.04860341176390648, -0.024335704743862152, 0.01428957935422659, 0.10196445882320404, 0.021237779408693314, 0.027897339314222336, 0.07381123304367065, 0.03207793086767197, 0.13156715035438538, 0.022680535912513733, 0.011099663563072681, 0.08376941084861755, 0.02295740321278572, 0.1006849929690361, 0.04584816098213196, -0.04752732813358307, 0.09606143832206726, -0.006546863354742527, 0.033346988260746, -0.03939469903707504, 0.05584152042865753, -0.026171935722231865, 0.01685541309416294, 0.13590843975543976, -0.016731370240449905, 0.0053167459554970264, -0.005495900753885508, -0.04047994315624237, -0.061979029327631, -0.005767766386270523, 0.09655506163835526, 0.07965542376041412, 0.03254152461886406, -0.016139553859829903, 4.952533105811959e-34, -0.007802362088114023, -0.04790643975138664, 0.01824960857629776, -0.005397023167461157, -0.01801365800201893, -0.0015343648847192526, 0.1463852822780609, -0.02064872905611992, -0.019301680848002434, -0.036317043006420135, -0.07882848381996155, -0.022393688559532166, 0.01706908643245697, -0.0865662470459938, 0.012805863283574581, -0.020480738952755928, 0.014182521030306816, 0.030507126823067665, -0.1322702020406723, -0.013075750321149826, -0.04606737568974495, -0.002968201646581292, 0.0027524768374860287, -0.006147999316453934, 0.0015425594756379724, -0.034277550876140594, -0.08691025525331497, -0.03901840001344681, -0.05995279923081398, 0.048140738159418106, 0.00847644917666912, -0.008051052689552307, 0.025824107229709625, 0.0886959508061409, 0.021597549319267273, 0.01843535713851452, 0.02108466438949108, 0.0018915103282779455, 0.07094748318195343, 0.015023194253444672, 0.012037004344165325, -0.021114153787493706, -0.0091589679941535, -0.00033312858431600034, 0.008502992801368237, 0.01642298698425293, 0.00264121126383543, 0.0025563130620867014, -0.027517056092619896, 0.012167287059128284, 0.00586564838886261, 0.00569115998223424, -0.0660431906580925, 0.020013339817523956, -0.043728653341531754, 0.027768004685640335, 0.07248293608427048, 0.02650085650384426, 0.026530282571911812, 0.0047976309433579445, 0.030451849102973938, 0.025542911142110825, 0.029734887182712555, 0.06251499056816101, 0.05304361507296562, -0.06486289948225021, -0.001436406746506691, -0.1435907930135727, -0.04016046226024628, -0.01902950555086136, 0.04518653824925423, 0.05946821719408035, -0.011116944253444672, -0.03292161226272583, 0.03208693116903305, 0.0724915862083435, 0.06185712292790413, 0.12229830771684647, -0.020529812201857567, 0.11314670741558075, 0.0860629677772522, 0.008945933543145657, -0.06281288713216782, -0.0234488807618618, -0.04965777322649956, 0.04881681501865387, -0.02734999731183052, -0.0193110890686512, 0.015421513468027115, -0.05676528811454773, -0.10513850301504135, 0.025526199489831924, -0.14217595756053925, -0.058782242238521576, -0.03432648256421089, -4.606698666975717e-08, -0.05532163381576538, 0.036070749163627625, -0.0936923548579216, -0.034402985125780106, 0.01258263923227787, 0.06608672440052032, -0.031595610082149506, 0.07117749750614166, -0.020761892199516296, 0.04364870861172676, 0.06944156438112259, -0.034030284732580185, -0.08598154038190842, -0.028704453259706497, -0.07845199108123779, -0.015822872519493103, -0.050939787179231644, -0.05809103325009346, -0.020059870555996895, -0.006340240593999624, -0.04450039938092232, -0.02598443441092968, -0.10489711165428162, 0.048238180577754974, -0.018998397514224052, -0.08187401294708252, -0.04273638874292374, 0.022272516041994095, 0.020087847486138344, 0.03881067782640457, 0.039810750633478165, -0.07885555177927017, -0.09733181446790695, 0.019218821078538895, 0.05567796528339386, -0.047517579048871994, 0.08648350089788437, 0.056817490607500076, 0.042295731604099274, 0.07148952037096024, 0.015922481194138527, 4.9233814934268594e-05, 0.006363036576658487, -0.05094635859131813, 0.01348098460584879, -0.03840893879532814, -0.08650396764278412, -0.011939928866922855, 0.010110230185091496, 0.0798916220664978, -0.00011506042210385203, -0.018978942185640335, -0.01327336486428976, -0.0663352757692337, -0.012223249301314354, -0.0681992918252945, -0.03853427618741989, -0.05774924159049988, -0.005615982227027416, -0.0023417130578309298, 0.017137639224529266, 0.03344760462641716, 0.08827316015958786, 0.10068315267562866]]\n", - "distance : [0.9355663657188416, 0.9424622058868408, 0.9833430647850037]\n" - ] - } - ], - "source": [ - "features = store.retrieve_online_documents(\n", - " feature=\"city_embeddings:Embeddings\",\n", - " query=query,\n", - " top_k=3\n", - ").to_dict()\n", - "\n", - "def print_online_features(features):\n", - " for key, value in sorted(features.items()):\n", - " print(key, \" : \", value)\n", - "\n", - "print_online_features(features)" - ] - }, - { - "cell_type": "markdown", - "source": [ - "You can see the top 3 document embeddings as well as its distance are returned" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false - } - } - ], - "metadata": { - "interpreter": { - "hash": "7d634b9af180bcb32a446a43848522733ff8f5bbf0cc46dba1a83bede04bf237" - }, - "kernelspec": { - "display_name": "Python 3.8.10 64-bit ('python-3.8')", - "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.8.10" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} From c19e1b7f15c2670d809fdfc024f57b6aac0c84a9 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Fri, 10 May 2024 22:45:45 -0400 Subject: [PATCH 07/11] linted --- module_4_rag/README.md | 8 +- module_4_rag/batch_score_documents.py | 36 +- module_4_rag/feature_repo/features.py | 3 +- module_4_rag/generate_random_questions.py | 20 +- module_4_rag/module_4.ipynb | 609 ++++++++++++++++++++++ module_4_rag/pull_states.py | 28 +- module_4_rag/run.py | 4 +- 7 files changed, 685 insertions(+), 23 deletions(-) create mode 100644 module_4_rag/module_4.ipynb diff --git a/module_4_rag/README.md b/module_4_rag/README.md index 77c319b..82294f5 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -25,15 +25,21 @@ Which will output data to `data/city_wikipedia_summaries_with_embeddings.parquet Next we'll need to do some Feast work and move the data into a repo created by Feast. + ## Feast To get started, make sure to have Feast installed and PostGreSQL. First run ```bash -feast apply +cp ./data feature_repo/ ``` +And then open the `module_4.ipynb` notebook and follow those instructions. + +It will walk you through a trivial tutorial to retrieve the top `k` most similar +documents using PGVector. + # Overview The overview is relatively simple, the goal is to define an architecture diff --git a/module_4_rag/batch_score_documents.py b/module_4_rag/batch_score_documents.py index bafe616..5d64da0 100644 --- a/module_4_rag/batch_score_documents.py +++ b/module_4_rag/batch_score_documents.py @@ -6,36 +6,47 @@ INPUT_FILENAME = "./data/city_wikipedia_summaries.csv" EXPORT_FILENAME = "./data/city_wikipedia_summaries_with_embeddings.parquet" -TOKENIZER = 'sentence-transformers/all-MiniLM-L6-v2' -MODEL = 'sentence-transformers/all-MiniLM-L6-v2' +TOKENIZER = "sentence-transformers/all-MiniLM-L6-v2" +MODEL = "sentence-transformers/all-MiniLM-L6-v2" + def mean_pooling(model_output, attention_mask): - token_embeddings = model_output[0] #First element of model_output contains all token embeddings - input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() - return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9) + token_embeddings = model_output[ + 0 + ] # First element of model_output contains all token embeddings + input_mask_expanded = ( + attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() + ) + return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp( + input_mask_expanded.sum(1), min=1e-9 + ) + def run_model(sentences, tokenizer, model): - encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt') + encoded_input = tokenizer( + sentences, padding=True, truncation=True, return_tensors="pt" + ) # Compute token embeddings with torch.no_grad(): model_output = model(**encoded_input) - sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask']) + sentence_embeddings = mean_pooling(model_output, encoded_input["attention_mask"]) sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1) return sentence_embeddings + def score_data() -> None: if EXPORT_FILENAME not in os.listdir(): print("scored data not found...generating embeddings...") df = pd.read_csv(INPUT_FILENAME) tokenizer = AutoTokenizer.from_pretrained(TOKENIZER) model = AutoModel.from_pretrained(MODEL) - embeddings = run_model(df['Wiki Summary'].tolist(), tokenizer, model) + embeddings = run_model(df["Wiki Summary"].tolist(), tokenizer, model) print(embeddings) - print('shape = ', df.shape) - df['Embeddings'] = list(embeddings.detach().cpu().numpy()) + print("shape = ", df.shape) + df["Embeddings"] = list(embeddings.detach().cpu().numpy()) print("embeddings generated...") - df['event_timestamp'] = pd.to_datetime('today') + df["event_timestamp"] = pd.to_datetime("today") df["item_id"] = df.index print(df.head()) df.to_parquet(EXPORT_FILENAME, index=False) @@ -43,5 +54,6 @@ def score_data() -> None: else: print("scored data found...skipping generating embeddings.") -if __name__ == '__main__': + +if __name__ == "__main__": score_data() diff --git a/module_4_rag/feature_repo/features.py b/module_4_rag/feature_repo/features.py index 91eaa46..4cb5532 100644 --- a/module_4_rag/feature_repo/features.py +++ b/module_4_rag/feature_repo/features.py @@ -2,7 +2,8 @@ from feast import ( FeatureView, - Field, FileSource, + Field, + FileSource, ) from feast.data_format import ParquetFormat from feast.types import Float32, Array diff --git a/module_4_rag/generate_random_questions.py b/module_4_rag/generate_random_questions.py index ac241f3..fe4add8 100644 --- a/module_4_rag/generate_random_questions.py +++ b/module_4_rag/generate_random_questions.py @@ -1,7 +1,18 @@ import csv import random -topics = ["science", "history", "technology", "mathematics", "geography", "literature", "sports", "art", "music", "cinema"] +topics = [ + "science", + "history", + "technology", + "mathematics", + "geography", + "literature", + "sports", + "art", + "music", + "cinema", +] # Define a pattern for generating questions question_patterns = [ @@ -14,7 +25,7 @@ "How does {} affect our daily lives?", "What are the future prospects of {}?", "What are the major challenges in {} today?", - "How can one get started with {}?" + "How can one get started with {}?", ] # Generate a list of 50 random questions @@ -28,13 +39,14 @@ def main(): # Define the file path - file_path = './random_questions.csv' + file_path = "./random_questions.csv" # Write the questions to a CSV file - with open(file_path, 'w', newline='') as file: + with open(file_path, "w", newline="") as file: writer = csv.writer(file) writer.writerow(["Question"]) # Writing header writer.writerows(questions) + if __name__ == "__main__": main() diff --git a/module_4_rag/module_4.ipynb b/module_4_rag/module_4.ipynb new file mode 100644 index 0000000..01c98b7 --- /dev/null +++ b/module_4_rag/module_4.ipynb @@ -0,0 +1,609 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Module 1: Use Postgres (Pgvector) vector database as an online store for retrieving documents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Overview\n", + "In this notebook, we explore how to use Feast to retrieve documents from a Postgres (Pgvector) vector database. We will use the `city_embeddings` feature table that we created in the previous notebook. We will use the `retrieve_online_documents` method to retrieve the top-k documents that are closest to the query vector.\n", + "\n", + "If you haven't already, look at the [README](../README.md) for setup instructions prior to starting this notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Setup the feature store" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Apply feature repository\n", + "We first run `feast apply` to register the data sources + features and setup Redis." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import warnings\n", + "\n", + "from batch_score_documents import run_model, TOKENIZER, MODEL\n", + "from transformers import AutoTokenizer, AutoModel" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_parquet(\"./feature_repo/data/city_wikipedia_summaries_with_embeddings.parquet\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StateWiki SummaryEmbeddingsevent_timestampitem_id
0New York, New YorkNew York, often called New York City or simply...[0.17517076, -0.1259909, 0.019542355, 0.030451...2024-05-01 22:24:21.5938130
1Los Angeles, CaliforniaLos Angeles, often referred to by its initials...[0.16593967, -0.10821897, 0.043743934, 0.01682...2024-05-01 22:24:21.5938131
2Chicago, IllinoisChicago is the most populous city in the U.S. ...[0.16295174, -0.063115865, 0.048169453, 0.0283...2024-05-01 22:24:21.5938132
3Houston, TexasHouston ( ; HEW-stən) is the most populous cit...[0.10329512, -0.078975916, 0.045779355, 0.0774...2024-05-01 22:24:21.5938133
4Phoenix, ArizonaPhoenix ( FEE-niks; Spanish: Fénix;) is the ca...[0.13658537, -0.038460232, -0.06357397, 0.1216...2024-05-01 22:24:21.5938134
\n", + "
" + ], + "text/plain": [ + " State Wiki Summary \\\n", + "0 New York, New York New York, often called New York City or simply... \n", + "1 Los Angeles, California Los Angeles, often referred to by its initials... \n", + "2 Chicago, Illinois Chicago is the most populous city in the U.S. ... \n", + "3 Houston, Texas Houston ( ; HEW-stən) is the most populous cit... \n", + "4 Phoenix, Arizona Phoenix ( FEE-niks; Spanish: Fénix;) is the ca... \n", + "\n", + " Embeddings \\\n", + "0 [0.17517076, -0.1259909, 0.019542355, 0.030451... \n", + "1 [0.16593967, -0.10821897, 0.043743934, 0.01682... \n", + "2 [0.16295174, -0.063115865, 0.048169453, 0.0283... \n", + "3 [0.10329512, -0.078975916, 0.045779355, 0.0774... \n", + "4 [0.13658537, -0.038460232, -0.06357397, 0.1216... \n", + "\n", + " event_timestamp item_id \n", + "0 2024-05-01 22:24:21.593813 0 \n", + "1 2024-05-01 22:24:21.593813 1 \n", + "2 2024-05-01 22:24:21.593813 2 \n", + "3 2024-05-01 22:24:21.593813 3 \n", + "4 2024-05-01 22:24:21.593813 4 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "os.chdir(\"./feature_repo\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/farceo/Library/Caches/pypoetry/virtualenvs/feast-rag-y1sQHR1E-py3.9/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \n", + "In a future release, Dask DataFrame will use a new implementation that\n", + "contains several improvements including a logical query planning.\n", + "The user-facing DataFrame API will remain unchanged.\n", + "\n", + "The new implementation is already available and can be enabled by\n", + "installing the dask-expr library:\n", + "\n", + " $ pip install dask-expr\n", + "\n", + "and turning the query planning option on:\n", + "\n", + " >>> import dask\n", + " >>> dask.config.set({'dataframe.query-planning': True})\n", + " >>> import dask.dataframe as dd\n", + "\n", + "API documentation for the new implementation is available at\n", + "https://docs.dask.org/en/stable/dask-expr-api.html\n", + "\n", + "Any feedback can be reported on the Dask issue tracker\n", + "https://github.com/dask/dask/issues \n", + "\n", + "To disable this warning in the future, set dask config:\n", + "\n", + " # via Python\n", + " >>> dask.config.set({'dataframe.query-planning-warning': False})\n", + "\n", + " # via CLI\n", + " dask config set dataframe.query-planning-warning False\n", + "\n", + "\n", + " import dask.dataframe as dd\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Deploying infrastructure for city_embeddings\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "os.system(\"feast apply\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "# 2. Materialize training data\n", + "The datasets are prepared in the data directory. You can get them locally by running the commands in README.md. We will materialize the training data into the online store." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/farceo/Library/Caches/pypoetry/virtualenvs/feast-rag-y1sQHR1E-py3.9/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \n", + "In a future release, Dask DataFrame will use a new implementation that\n", + "contains several improvements including a logical query planning.\n", + "The user-facing DataFrame API will remain unchanged.\n", + "\n", + "The new implementation is already available and can be enabled by\n", + "installing the dask-expr library:\n", + "\n", + " $ pip install dask-expr\n", + "\n", + "and turning the query planning option on:\n", + "\n", + " >>> import dask\n", + " >>> dask.config.set({'dataframe.query-planning': True})\n", + " >>> import dask.dataframe as dd\n", + "\n", + "API documentation for the new implementation is available at\n", + "https://docs.dask.org/en/stable/dask-expr-api.html\n", + "\n", + "Any feedback can be reported on the Dask issue tracker\n", + "https://github.com/dask/dask/issues \n", + "\n", + "To disable this warning in the future, set dask config:\n", + "\n", + " # via Python\n", + " >>> dask.config.set({'dataframe.query-planning-warning': False})\n", + "\n", + " # via CLI\n", + " dask config set dataframe.query-planning-warning False\n", + "\n", + "\n", + " import dask.dataframe as dd\n", + "0it [00:00, ?it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Materializing \u001b[1m\u001b[32m1\u001b[0m feature views to \u001b[1m\u001b[32m2024-05-10 22:41:47-04:00\u001b[0m into the \u001b[1m\u001b[32mpostgres\u001b[0m online store.\n", + "\n", + "\u001b[1m\u001b[32mcity_embeddings\u001b[0m from \u001b[1m\u001b[32m2024-05-11 00:41:49-04:00\u001b[0m to \u001b[1m\u001b[32m2024-05-10 22:41:47-04:00\u001b[0m:\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "os.system('CURRENT_TIME=$(date -u +\"%Y-%m-%dT%H:%M:%S\");feast materialize-incremental $CURRENT_TIME')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Now, we instantiate a Feast `FeatureStore` object to push data to" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/farceo/Library/Caches/pypoetry/virtualenvs/feast-rag-y1sQHR1E-py3.9/lib/python3.9/site-packages/feast/infra/offline_stores/file.py:8: DeprecationWarning: The current Dask DataFrame implementation is deprecated. \n", + "In a future release, Dask DataFrame will use a new implementation that\n", + "contains several improvements including a logical query planning.\n", + "The user-facing DataFrame API will remain unchanged.\n", + "\n", + "The new implementation is already available and can be enabled by\n", + "installing the dask-expr library:\n", + "\n", + " $ pip install dask-expr\n", + "\n", + "and turning the query planning option on:\n", + "\n", + " >>> import dask\n", + " >>> dask.config.set({'dataframe.query-planning': True})\n", + " >>> import dask.dataframe as dd\n", + "\n", + "API documentation for the new implementation is available at\n", + "https://docs.dask.org/en/stable/dask-expr-api.html\n", + "\n", + "Any feedback can be reported on the Dask issue tracker\n", + "https://github.com/dask/dask/issues \n", + "\n", + "To disable this warning in the future, set dask config:\n", + "\n", + " # via Python\n", + " >>> dask.config.set({'dataframe.query-planning-warning': False})\n", + "\n", + " # via CLI\n", + " dask config set dataframe.query-planning-warning False\n", + "\n", + "\n", + " import dask.dataframe as dd\n" + ] + } + ], + "source": [ + "from feast import FeatureStore\n", + "store = FeatureStore(repo_path=\".\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "# Prepare a query vector" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "is_executing": true + } + }, + "outputs": [], + "source": [ + "question = \"the most populous city in the U.S. state of Texas?\"\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(TOKENIZER)\n", + "model = AutoModel.from_pretrained(MODEL)\n", + "query_embedding = run_model(question, tokenizer, model)\n", + "query = query_embedding.detach().cpu().numpy().tolist()[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "# Retrieve the top-k documents" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "features = store.retrieve_online_documents(\n", + " feature=\"city_embeddings:Embeddings\",\n", + " query=query,\n", + " top_k=3\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## You can see the top 3 document embeddings as well as the distance returned" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Embeddingsdistance
0[0.11749928444623947, -0.04684492573142052, 0....0.935567
1[0.10329511761665344, -0.07897591590881348, 0....0.939936
2[0.11634305864572525, -0.10321836173534393, -0...0.983343
\n", + "
" + ], + "text/plain": [ + " Embeddings distance\n", + "0 [0.11749928444623947, -0.04684492573142052, 0.... 0.935567\n", + "1 [0.10329511761665344, -0.07897591590881348, 0.... 0.939936\n", + "2 [0.11634305864572525, -0.10321836173534393, -0... 0.983343" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "features.to_df()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### As a dictionary returning the first 3 embedding values" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"Embeddings\": [\n", + " [\n", + " 0.11749928444623947,\n", + " -0.04684492573142052,\n", + " 0.0745617225766182\n", + " ],\n", + " [\n", + " 0.10329511761665344,\n", + " -0.07897591590881348,\n", + " 0.045779354870319366\n", + " ],\n", + " [\n", + " 0.11634305864572525,\n", + " -0.10321836173534393,\n", + " -0.0071899304166436195\n", + " ]\n", + " ]\n", + "}\n", + "{\n", + " \"distance\": [\n", + " 0.9355665445327759,\n", + " 0.9399362802505493,\n", + " 0.9833431243896484\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "import json\n", + "\n", + "def print_online_features(features: dict, k: int=3):\n", + " for key, value in sorted(features.items()):\n", + " if key =='Embeddings':\n", + " print(json.dumps({key: [v[0:k] for v in value]}, indent=2))\n", + " else:\n", + " print(json.dumps({key: value}, indent=2))\n", + "\n", + "print_online_features(features.to_dict())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# END" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "7d634b9af180bcb32a446a43848522733ff8f5bbf0cc46dba1a83bede04bf237" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/module_4_rag/pull_states.py b/module_4_rag/pull_states.py index 2c68c0c..6475e09 100644 --- a/module_4_rag/pull_states.py +++ b/module_4_rag/pull_states.py @@ -3,7 +3,12 @@ import wikipedia as wiki import pandas as pd -EXPORT_FILENAME = "./data/city_wikipedia_summaries.csv" +EXPORT_PATH = "./data" +EXPORT_FILENAME = os.path.join( + EXPORT_PATH, + "city_wikipedia_summaries.csv", +) + CITIES = [ "New York, New York", "Los Angeles, California", @@ -54,9 +59,21 @@ "Tulsa, Oklahoma", "Arlington, Texas", "Tampa, Florida", - "New Orleans, Louisiana" + "New Orleans, Louisiana", ] + +def create_folder_if_not_exists(folder_path: str) -> None: + """Create a folder if it does not exist. + + Args: + folder_path (str): The path to the folder to create. + """ + if not os.path.exists(folder_path): + os.makedirs(folder_path) + print(f"Folder created: {folder_path}") + + def get_wikipedia_summary(cities: List[str]) -> Dict[str, str]: city_summaries = {} for city in cities: @@ -70,11 +87,13 @@ def get_wikipedia_summary(cities: List[str]) -> Dict[str, str]: def write_data(output_dict: Dict[str, str]) -> None: df = pd.DataFrame([output_dict]).T.reset_index() - df.columns = ['State', 'Wiki Summary'] + df.columns = ["State", "Wiki Summary"] + create_folder_if_not_exists(EXPORT_PATH) df.to_csv(EXPORT_FILENAME, index=False) + def pull_state_data() -> None: - if EXPORT_FILENAME not in os.listdir(): + if EXPORT_FILENAME not in os.listdir(EXPORT_PATH): print("data not found pullling wikipedia state summaries...") city_summary_output = get_wikipedia_summary(CITIES) write_data(city_summary_output) @@ -82,5 +101,6 @@ def pull_state_data() -> None: else: print("data already present...skipping download") + if __name__ == "__main__": pull_state_data() diff --git a/module_4_rag/run.py b/module_4_rag/run.py index 01035d4..84c831b 100644 --- a/module_4_rag/run.py +++ b/module_4_rag/run.py @@ -2,9 +2,11 @@ from pull_states import pull_state_data from batch_score_documents import score_data + def main(): pull_state_data() score_data() -if __name__ == '__main__': + +if __name__ == "__main__": main() From 7422a9cedf7399a095dbf3f90d8596c6f1ec9d42 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Fri, 10 May 2024 23:03:42 -0400 Subject: [PATCH 08/11] updated diagram Signed-off-by: Francisco Javier Arceo --- module_4_rag/README.md | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/module_4_rag/README.md b/module_4_rag/README.md index 82294f5..c5acdac 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -50,33 +50,5 @@ flowchart TD; A[Pull Data] --> B[Batch Score Embeddings]; B[Batch Score Embeddings] --> C[Materialize Online]; C[Materialize Online] --> D[Retrieval Augmented Generation]; - D[Retrieval Augmented Generation] --> E[Store User Interaction]; - E[Store User Interaction] --> F[Update Training Labels]; - F[Update Training Labels] --> H[Fine Tuning]; - H[Fine Tuning] -. Backpropagate .-> B[Batch Score Embeddings]; ``` - -A simple example of the user experience: - -``` -Q: Can you tell me about Chicago? -A: Here's some wikipedia facts about Chicago... -``` - -# Limitations -A common issue with RAG and LLMs is hallucination. There are two common -approaches: - -1. Prompt engineering -- This approach is the most obvious but is susceptible to prompt injection - -2. Build a Classifier to return the "I don't know" response -- This approach is less obvious, requires another model, more training data, -and fine tuning - -We can, in fact, use both approaches to further attempt to minimize the -likelihood of prompt injection. - -This demo will display both. - From 839e07b19ec94ba5cd58de58304a5a117692bc98 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Fri, 10 May 2024 23:16:35 -0400 Subject: [PATCH 09/11] updated Signed-off-by: Francisco Javier Arceo --- module_4_rag/README.md | 40 +++++++++++++++++++++++++++++++++++++ module_4_rag/module_4.ipynb | 13 ++---------- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/module_4_rag/README.md b/module_4_rag/README.md index c5acdac..76f7091 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -52,3 +52,43 @@ flowchart TD; C[Materialize Online] --> D[Retrieval Augmented Generation]; ``` +# Results + +The simple demo shows the code below with the retrieved data shown. + +```python +import pandas as pd + +from feast import FeatureStore +from batch_score_documents import run_model, TOKENIZER, MODEL +from transformers import AutoTokenizer, AutoModel + +df = pd.read_parquet("./feature_repo/data/city_wikipedia_summaries_with_embeddings.parquet") + +store = FeatureStore(repo_path=".") + +# Prepare a query vector +question = "the most populous city in the U.S. state of Texas?" + +tokenizer = AutoTokenizer.from_pretrained(TOKENIZER) +model = AutoModel.from_pretrained(MODEL) +query_embedding = run_model(question, tokenizer, model) +query = query_embedding.detach().cpu().numpy().tolist()[0] + +# Retrieve top k documents +features = store.retrieve_online_documents( + feature="city_embeddings:Embeddings", + query=query, + top_k=3 +) +``` +And running `features_df` will show: + +``` +$features_df + + Embeddings distance +0 [0.11749928444623947, -0.04684492573142052, 0.... 0.935567 +1 [0.10329511761665344, -0.07897591590881348, 0.... 0.939936 +2 [0.11634305864572525, -0.10321836173534393, -0... 0.983343 +``` diff --git a/module_4_rag/module_4.ipynb b/module_4_rag/module_4.ipynb index 01c98b7..f79aece 100644 --- a/module_4_rag/module_4.ipynb +++ b/module_4_rag/module_4.ipynb @@ -38,8 +38,9 @@ "metadata": {}, "outputs": [], "source": [ + "import os\n", "import pandas as pd\n", - "import warnings\n", + "from feast import FeatureStore\n", "\n", "from batch_score_documents import run_model, TOKENIZER, MODEL\n", "from transformers import AutoTokenizer, AutoModel" @@ -164,15 +165,6 @@ "df.head()" ] }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import os" - ] - }, { "cell_type": "code", "execution_count": 5, @@ -380,7 +372,6 @@ } ], "source": [ - "from feast import FeatureStore\n", "store = FeatureStore(repo_path=\".\")" ] }, From 4e53afa211d4e9591e7bee347c2f8a49026fc9d1 Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Fri, 10 May 2024 23:17:04 -0400 Subject: [PATCH 10/11] updated Signed-off-by: Francisco Javier Arceo --- module_4_rag/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module_4_rag/README.md b/module_4_rag/README.md index 76f7091..ed5b5a6 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -87,7 +87,7 @@ And running `features_df` will show: ``` $features_df - Embeddings distance + Embeddings distance 0 [0.11749928444623947, -0.04684492573142052, 0.... 0.935567 1 [0.10329511761665344, -0.07897591590881348, 0.... 0.939936 2 [0.11634305864572525, -0.10321836173534393, -0... 0.983343 From cd4b28b689aed5476c9ae9da195cd5649721daea Mon Sep 17 00:00:00 2001 From: Francisco Javier Arceo Date: Fri, 10 May 2024 23:18:14 -0400 Subject: [PATCH 11/11] updated Signed-off-by: Francisco Javier Arceo --- module_4_rag/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/module_4_rag/README.md b/module_4_rag/README.md index ed5b5a6..611078b 100644 --- a/module_4_rag/README.md +++ b/module_4_rag/README.md @@ -82,11 +82,10 @@ features = store.retrieve_online_documents( top_k=3 ) ``` -And running `features_df` will show: +And running `features_df.head()` will show: ``` -$features_df - +features_df.head() Embeddings distance 0 [0.11749928444623947, -0.04684492573142052, 0.... 0.935567 1 [0.10329511761665344, -0.07897591590881348, 0.... 0.939936