From 8cc83ff365821cf06234732228a987aeeb0e2c98 Mon Sep 17 00:00:00 2001 From: Josh Bradley Date: Mon, 1 Jul 2024 16:23:30 -0400 Subject: [PATCH] Remove legacy frontend (#40) --- .github/workflows/dev.yaml | 13 - docker/Dockerfile-frontend | 18 - docs/DEVELOPMENT-GUIDE.md | 2 +- frontend/.streamlit/config.toml | 5 - frontend/README.md | 22 -- frontend/app.py | 582 ---------------------------- frontend/static/Microsoft_logo.png | Bin 13581 -> 0 bytes frontend/static/microsoft.png | Bin 6654 -> 0 bytes frontend/style.css | 84 ---- poetry.lock | 589 +++++++++++++++-------------- pyproject.toml | 2 +- 11 files changed, 312 insertions(+), 1005 deletions(-) delete mode 100644 docker/Dockerfile-frontend delete mode 100644 frontend/.streamlit/config.toml delete mode 100644 frontend/README.md delete mode 100644 frontend/app.py delete mode 100644 frontend/static/Microsoft_logo.png delete mode 100644 frontend/static/microsoft.png delete mode 100644 frontend/style.css diff --git a/.github/workflows/dev.yaml b/.github/workflows/dev.yaml index 889741c..24938ff 100644 --- a/.github/workflows/dev.yaml +++ b/.github/workflows/dev.yaml @@ -52,16 +52,3 @@ jobs: context: . file: docker/Dockerfile-backend push: false - build-frontend: - needs: [lint-check] - runs-on: ubuntu-latest - if: ${{ !github.event.pull_request.draft }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Build docker image - uses: docker/build-push-action@v2 - with: - context: . - file: docker/Dockerfile-frontend - push: false diff --git a/docker/Dockerfile-frontend b/docker/Dockerfile-frontend deleted file mode 100644 index 08c8ab1..0000000 --- a/docker/Dockerfile-frontend +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. - -FROM python:3.10 - -ENV PIP_ROOT_USER_ACTION=ignore -ENV PIP_DISABLE_PIP_VERSION_CHECK=1 -ENV SETUPTOOLS_USE_DISTUTILS=stdlib - -COPY poetry.lock pyproject.toml / -COPY frontend /frontend -RUN pip install poetry \ - && poetry config virtualenvs.create false \ - && poetry install --without backend - -WORKDIR /frontend -EXPOSE 8080 -CMD ["streamlit", "run", "app.py", "--server.port", "8080"] diff --git a/docs/DEVELOPMENT-GUIDE.md b/docs/DEVELOPMENT-GUIDE.md index 34253f3..f05f155 100644 --- a/docs/DEVELOPMENT-GUIDE.md +++ b/docs/DEVELOPMENT-GUIDE.md @@ -42,7 +42,7 @@ Development is best done in a unix environment (Linux, Mac, or [Windows WSL](htt - Most dependencies (packages or tools) should be added to the environment through the Dockerfile. This allows us to maintain a consistent development enviornment. If you need a tool added, please make the appropriate changes to the Dockerfile and submit a Pull Request. ### Deploying GraphRAG -The GraphRAG service consist of two components (a `backend` application and a `frontend` application). GraphRAG can be launched in multiple ways depending on where in the application stack you are developing and debugging. +The GraphRAG service consist of two components - a `backend` application and a `frontend` UI application (coming soon). GraphRAG can be launched in multiple ways depending on where in the application stack you are developing and debugging. - In Azure Kubernetes Service (AKS): diff --git a/frontend/.streamlit/config.toml b/frontend/.streamlit/config.toml deleted file mode 100644 index 8b3ac29..0000000 --- a/frontend/.streamlit/config.toml +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. - -[server] -enableXsrfProtection = false \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md deleted file mode 100644 index ef452c5..0000000 --- a/frontend/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Launch Instructions - -1. Deploy the GraphRAG solution accelerator. -Follow instructions from the [deployment guide](../docs/DEPLOYMENT-GUIDE.md) to deploy a full instance of the solution accelerator. - -2. Create a `.env` file with the following environment variables defined: - -| Variable Name | Description | -| :--- | ---: | -DEPLOYMENT_URL | Base url of the deployed graphrag API. Also referred to as the APIM Gateway URL. -APIM_SUBSCRIPTION_KEY | A subscription key generated by APIM. -DEPLOYER_EMAIL | (optional) The email address of the person/organization that deployed the solution accelerator. Will default to `deployer@email.com`. - -The frontend application is a simple streamlit app meant to demonstrate how to build a UI on top of the solution accelerator API. It can run as a docker container locally: -``` -# cd to the root directory of the repo -> docker build -t graphrag:frontend -f docker/Dockerfile-frontend . -> docker run --env-file -p 8080:8080 graphrag:frontend -``` -To access the app , visit `localhost:8080` in your browser. - -This UI application can also be hosted in Azure as a [Web App](https://azure.microsoft.com/en-us/products/app-service/web) for example. diff --git a/frontend/app.py b/frontend/app.py deleted file mode 100644 index 03e4c5c..0000000 --- a/frontend/app.py +++ /dev/null @@ -1,582 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. - -import asyncio -import json -import os -import time - -import numpy as np -import pandas as pd -import requests -import streamlit as st -import streamlit_nested_layout # noqa -from dotenv import load_dotenv - -load_dotenv() - - -headers = { - "Ocp-Apim-Subscription-Key": os.environ["APIM_SUBSCRIPTION_KEY"], - "Content-Type": "application/json", # Include other headers as needed -} - -headers_upload = {"Ocp-Apim-Subscription-Key": os.environ["APIM_SUBSCRIPTION_KEY"]} -st.set_page_config(initial_sidebar_state="expanded", layout="wide") -# API endpoint URL -api_url = os.environ["DEPLOYMENT_URL"] -input_storage_name = "" -select_storage_name = "" - -with open("style.css") as f: - st.markdown(f"", unsafe_allow_html=True) - - -KILOBYTE = 1024 - - -# Function to call the REST API and return storage data -def get_storage_data(api_url: str) -> dict | None: - try: - response = requests.get(f"{api_url}/data", headers=headers) - if response.status_code == 200: - return response.json() - else: - st.error(f"Error: {response.status_code}") - return None - except Exception: - return None - - -# Function to call the REST API and return existing entity config -def get_entity_data(api_url: str) -> dict | None: - try: - response = requests.get(f"{api_url}/index/config/entity", headers=headers) - if response.status_code == 200: - return response.json() - else: - st.error(f"Error: {response.status_code}") - return None - except Exception: - return None - - -# Function to call the REST API and return existing entity config -def get_indexes_data(api_url: str) -> dict | None: - try: - response = requests.get(f"{api_url}/index", headers=headers) - if response.status_code == 200: - return response.json() - else: - st.error(f"Error: {response.status_code}") - return None - except Exception: - return None - - -def upload_files(files: list) -> dict: - if files is not None: - # Create a dictionary to store the files - files_dict = {} - - # Iterate over the files and create a dictionary with file name and contents - for file in files: - files_dict[file.name] = file.getvalue() - - return files_dict - - -async def query_index(index_name: list[str], query_type: str, query: str): - try: - request = { - "index_name": index_name, - "query": query, - "reformat_context_data": True, - } - response = requests.post( - f"{api_url}/query/{query_type.lower()}", headers=headers, json=request - ) - - if response.status_code == 200: - return response.json() - else: - st.error(f"Error: {response.status_code} {response.json()}") - return None - except Exception: - return None - - -def get_source_entity(index_name: str, entity_id: str) -> dict | None: - try: - response = requests.get( - f"{api_url}/source/entity/{index_name}/{entity_id}", headers=headers - ) - if response.status_code == 200: - return response.json() - else: - st.error(f"Error: {response.status_code} {response.json()}") - return None - except Exception: - return None - - -async def app(): - # main entry point - - # Call the API and get data - data = get_storage_data(api_url) - - if "entity_config" not in st.session_state: - st.session_state["entity_config"] = ["DEFAULT"] + get_entity_data(api_url)[ - "entity_configuration_name" - ] - - # Check if data is retrieved successfully - with st.sidebar: - st.title("Index Pipeline") - # image = Image.open("./static/Microsoft_logo.png") - # st.sidebar.image(image, width=200) - data_containers = [""] - try: - data_containers = data_containers + data["storage_name"] - except Exception: - print("No data containers found, continuing...") - - disable_other_input = False - - st.header( - "1. Data Storage", - divider=True, - help="Upload your own files to a new data storage container, or select an existing data storage created. This step creates a blob container and CosmosDB entry that will contain your data necessary for indexing.", - ) - - select_storage_name = st.sidebar.selectbox( - "Select an existing data storage.", data_containers - ) - - if select_storage_name != "": - disable_other_input = True - - with st.expander("Upload data to a storage container."): - input_storage_name = st.text_input( - "Enter Storage Name", disabled=disable_other_input - ) - file_upload = st.file_uploader( - "Upload Data", - type=["txt"], - accept_multiple_files=True, - disabled=disable_other_input, - ) - - if st.button( - "Upload Files", disabled=disable_other_input or input_storage_name == "" - ): - if file_upload and input_storage_name != "": - file_payloads = [] - for file in file_upload: - file_payload = ("files", (file.name, file.read(), file.type)) - file_payloads.append((file_payload)) - - response = requests.post( - api_url + "/data", - headers=headers_upload, - files=dict(file_payloads), - params={"storage_name": input_storage_name}, - ) - if response.status_code == 200: - st.success("Files uploaded successfully!") - else: - st.error(f"Error: {json.loads(response.text)}") - if select_storage_name != "": - disable_other_input = True - input_storage_name = "" - - st.header( - "2. Entity Config", - divider=True, - help="Create an entity configuration or select an existing entity configuration that has been previously created. The entity configuration directs the LLM what entities to extract by through annotated text examples. You may either use the form to input the necessary information, or enter a raw json configuration. Please ensure to enter the entity configuration name as well. ", - ) - - try: - st.session_state["entity_config"] = ["DEFAULT"] + get_entity_data(api_url)[ - "entity_configuration_name" - ] - except Exception: - st.session_state.entity_config = [""] - print("No entity configurations found, continuing...") - - disable_entity_input = False - st.session_state.update(st.session_state) - entity_config_name_select = st.sidebar.selectbox( - "Select an existing entity configuration.", - st.session_state["entity_config"], - index=0, - key="entity_select_key", - ) - - if entity_config_name_select != "DEFAULT": - disable_entity_input = True - - with st.expander("Create new entity configuration"): - if "entity_examples" not in st.session_state: - st.session_state["entity_examples"] = [] - - with open("./entity_config.json", "r") as file: - entity_data = json.load(file) - entity_data = json.dumps(entity_data) - - entity_config_json = st.text_area( - "Raw Entity Config Json", - value=entity_data, - disabled=disable_entity_input, - ) - - if st.button( - "Create Entity Configuration from JSON", disabled=disable_entity_input - ): - url = api_url + "/index/config/entity" - parsed_json = json.loads(entity_config_json) - response = requests.post(url, json=parsed_json, headers=headers) - if response.status_code == 200: - st.success("Entity configuration created successfully!") - new_entity_json = [parsed_json.get("entity_configuration_name", [])] - st.session_state["entity_config"] += new_entity_json - - print(st.session_state.entity_config) - else: - st.error( - f"Failed to create entity configuration. {json.loads(response.text)['detail']}" - ) - - st.header( - "3. Build Index", - divider=True, - help="After selecting/creating a data storage and entity configuration, enter an index name and select build index. Building an index will process the data with the LLM to be in a proper format for querying. To track the status of an indexing job, use the check index status below.", - ) - index_name = st.text_input("Enter Index Name") - st.write( - f"Selected Storage Container: {select_storage_name} {input_storage_name}" - ) - st.write(f"Selected Entity Config: {entity_config_name_select}") - if st.button("Build Index"): - if select_storage_name != "": - final_storage_name = select_storage_name - elif input_storage_name != "": - final_storage_name = input_storage_name - - if entity_config_name_select != "": - final_entity_name = entity_config_name_select - if ( - final_entity_name == "DEFAULT" - ): # no entity config selected, so creating and using the default config at runtime. - request = { - "storage_name": final_storage_name, - "index_name": index_name, - } - else: - request = { - "storage_name": final_storage_name, - "index_name": index_name, - "entity_config_name": final_entity_name, - } - - url = api_url + "/index" - - response = requests.post(url, json=request, headers=headers) - - if response.status_code == 200: - st.success("Job submitted successfully!") - else: - st.error(f"Failed to submit job.\nStatus: {response.text}") - st.divider() - st.header( - "Check Index Status", - divider=True, - help="Select the created index to check status at what steps it is at in indexing. Indexing must be complete in order to be able to query properly.", - ) - - indexes = get_indexes_data(api_url) - options_indexes = [""] - try: - options_indexes = options_indexes + indexes["index_name"] - except Exception: - print("No indexes found, continuing...") - - index_name_select = st.sidebar.selectbox( - "Select an index to check its status.", options_indexes - ) - - progress_bar = st.progress(0) - - if st.button("Check Status"): - status_url = api_url + f"/index/status/{index_name_select}" - status_response = requests.get(url=status_url, headers=headers) - status_response_text = json.loads(status_response.text) - if ( - status_response.status_code == 200 - and status_response_text["status"] != "" - ): - try: - percent_complete = status_response_text["percent_complete"] - st.success(f"Status: {status_response_text['status']}") - except Exception: - pass - try: - progress_bar.progress(float(percent_complete) / 100) - st.success(f"Percent Complete: {percent_complete}% ") - except Exception: - pass - try: - progress_status = status_response_text["progress"] - st.success(f"Progress: {progress_status } ") - except Exception: - pass - else: - st.error(f"Status: No workflow associated with {index_name}") - - st.title("Microsoft GraphRAG Copilot") - - col1, col2, col3, col4 = st.columns([0.4, 0.23, 0.22, 0.1]) - - # image = Image.open("./static/Microsoft_logo.png") - # logo = col1.image(image) - - search_bar = col1.text_input("Query") - query_type = col2.selectbox( - "Query Type", - ["Global", "Local", "Global Streaming"], - help="Select the query type - Each yeilds different results of specificity. Global queries focus on the entire graph structure. Local queries focus on a set of communities (subgraphs) in the graph that are more connected to each other than they are to the rest of the graph structure and can focus on very specific entities in the graph. Global streaming is a global query that displays results as they appear live.", - ) - select_index_search = col3.multiselect( - "Index", - options_indexes, - help="Select the index(es) to query. The selected index(es) must have a complete status in order to yield query results without error. Use Check Index Status to confirm status.", - ) - search_button = col4.button("Search") - url = "https://github.com/Azure-Samples/graphrag-accelerator/blob/main/docs/TRANSPARENCY.md" - content = f""" - ## Welcome to GraphRAG! - Diving into complex information and uncovering semantic relationships utilizing generative AI has never been easier. Here's how you can get started with just a few clicks: - - *Set Up:* In the left pane, select or upload your data storage, configure entities, and name your index to begin building an index. - - *Explore:* On the query side, choose your index, specify the query type, and click search to see insights. - - [GraphRAG]({url}) turns complex data tasks into a breeze, giving you insights at your fingertips. - """ - # Display text in the gray box - container_placeholder = st.markdown(content, unsafe_allow_html=False) - - deployer_email = os.environ.get("DEPLOYER_EMAIL", "deployer@email.com") - footer = f""" - - """ - - st.markdown(footer, unsafe_allow_html=True) - - # container_placeholder = st.empty() - - # st.markdown('', unsafe_allow_html=True) - - async def search_button_clicked(): - query_response = {} - container_placeholder.empty() - - idler_message_list = [ - "Querying the graph...", - "Processing the query...", - "The graph is working hard...", - "Fetching the results...", - "Reticulating splines...", - "Almost there...", - "The report format is customizable, for this demo we report back in executive summary format. It's prompt driven to change as you like!", - "Just a few more seconds...", - "You probably know these messages are just for fun...", - "In the meantime, here's a fun fact: Did you know that the Microsoft GraphRAG Copilot is built on top of the Microsoft GraphRAG Solution Accelerator?", - "The average graph query processes several textbooks worth of information to get you your answer. I hope it was a good question!", - "Shamelessly buying time...", - "When the answer comes, make sure to check the context reports, the detail there is incredible!", - "When we ingest data into the graph, the structure of language itself is used to create the graph structure. It's like a language-based neural network, using neural networks to understand language to network. It's a network-ception!", - "The answers will come eventually, I promise. In the meantime, I recommend a doppio espresso, or a nice cup of tea. Or both! The GraphRAG team runs on caffeine.", - "The graph is a complex structure, but it's working hard to get you the answer you need.", - "GraphRAG is step one in a long journey of understanding the world through language. It's a big step, but there's so much more to come.", - "The results are on their way...", - ] - - query_response = None - try: - while query_response is None: - for _ in range(3): - # wait 5 seconds - message = np.random.choice(idler_message_list) - with st.spinner(text=message): - time.sleep(5) - - if query_type == "Global" or query_type == "Local": - with st.spinner(): - query_response = await query_index( - select_index_search, query_type, search_bar - ) - elif query_type == "Global Streaming": - with st.spinner(): - url = f"{api_url}/experimental/query/global/streaming" - query_response = requests.post( - url, - json={ - "index_name": select_index_search, - "query": search_bar, - }, - headers=headers, - stream=True, - ) - assistant_response = "" - context_list = [] - if query_response.status_code == 200: - text_placeholder = st.empty() - reports_context_expander = None - for chunk in query_response.iter_lines( - # allow up to 256KB to avoid excessive many reads - chunk_size=256 * KILOBYTE, - decode_unicode=True, - ): - try: - payload = json.loads(chunk) - except json.JSONDecodeError: - # In the event that a chunk is not a complete JSON object, - # document it for further analysis. - print("Error decoding JSON chunk.") - pass - - token = payload["token"] - context = payload["context"] - if (token != "") and (context is None): - assistant_response += token - text_placeholder.write(assistant_response) - elif (token == "") and (context is None): - # Message is over, you will not receive the context values - reports_context_expander = st.expander( - "Expand to see context reports" - ) - elif (token == "") and (context is not None): - context_list.append(context) - with reports_context_expander: - with st.expander(context["title"]): - df_context = pd.DataFrame.from_dict( - [context] - ) - if "id" in df_context.columns: - df_context = df_context.drop( - "id", axis=1 - ) - if "title" in df_context.columns: - df_context = df_context.drop( - "title", axis=1 - ) - if "index_id" in df_context.columns: - df_context = df_context.drop( - "index_id", axis=1 - ) - st.dataframe( - df_context, use_container_width=True - ) - else: - print(chunk) - raise Exception( - "Received unexpected response from server" - ) - - if query_type == "Global" or query_type == "Local": - container_placeholder.empty() - - if query_response["result"] != "": - with st.expander("Results", expanded=True): - st.write(query_response["result"]) - - if query_response["context_data"]["reports"] != []: - with st.expander( - f"View context for this response from {query_type} method:" - ): - if query_type == "Local": - st.write( - query_response["context_data"]["reports"][0]["content"] - ) - else: - df = pd.DataFrame(query_response["context_data"]["reports"]) - if "index_name" in df.columns: - df = df.drop("index_name", axis=1) - if "index_id" in df.columns: - df = df.drop("index_id", axis=1) - st.dataframe(df, use_container_width=True) - - if query_response["context_data"]["entities"] != []: - with st.spinner("Loading context entities..."): - with st.expander("View context entities"): - df_entities = pd.DataFrame( - query_response["context_data"]["entities"] - ) - if "in_context" in df_entities.columns: - df_entities = df_entities.drop("in_context", axis=1) - st.dataframe(df_entities, use_container_width=True) - - for report in query_response["context_data"]["entities"]: - entity_data = get_source_entity( - report["index_name"], report["id"] - ) - for unit in entity_data["text_units"]: - response = requests.get( - f"{api_url}/source/text/{report['index_name']}/{unit}", - headers=headers, - ) - text_info = response.json() - if text_info is not None: - with st.expander( - f" Entity: {report['entity']} - Source Document: {text_info['source_document']} " - ): - st.write(text_info["text"]) - - if query_response["context_data"]["relationships"] != []: - with st.spinner("Loading context relationships..."): - with st.expander("View context relationships"): - df_relationships = pd.DataFrame( - query_response["context_data"]["relationships"] - ) - if "in_context" in df_relationships.columns: - df_relationships = df_relationships.drop( - "in_context", axis=1 - ) - st.dataframe(df_relationships, use_container_width=True) - for report in query_response["context_data"][ - "relationships" - ][:15]: - # with st.expander( - # f"Source: {report['source']} Target: {report['target']} Rank: {report['rank']}" - # ): - # st.write(report["description"]) - relationship_data = requests.get( - f"{api_url}/source/relationship/{report['index_name']}/{report['id']}", - headers=headers, - ) - relationship_data = relationship_data.json() - for unit in relationship_data["text_units"]: - response = requests.get( - f"{api_url}/source/text/{report['index_name']}/{unit}", - headers=headers, - ) - text_info_rel = response.json() - - df_textinfo_rel = pd.DataFrame([text_info_rel]) - with st.expander( - f"Source: {report['source']} Target: {report['target']} - Source Document: {text_info['source_document']} " - ): - st.write(text_info["text"]) - st.dataframe( - df_textinfo_rel, use_container_width=True - ) - except requests.exceptions.RequestException: - st.error("Error with query") - - if search_button: - await search_button_clicked() - - -asyncio.run(app()) diff --git a/frontend/static/Microsoft_logo.png b/frontend/static/Microsoft_logo.png deleted file mode 100644 index 0990b413283a6e0bd0408a818c88bbe466909fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13581 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 Gu>S!wXtQkq diff --git a/frontend/static/microsoft.png b/frontend/static/microsoft.png deleted file mode 100644 index 09567a0392b013c0a203e3f19350b31b161b50af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6654 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 EKMh*8r2qf` diff --git a/frontend/style.css b/frontend/style.css deleted file mode 100644 index 517a585..0000000 --- a/frontend/style.css +++ /dev/null @@ -1,84 +0,0 @@ -/* -Copyright (c) Microsoft Corporation. -Licensed under the MIT License. -*/ - -@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css'); - -#root > div:nth-child(1) > div.withScreencast > div > div > div > section.main.st-emotion-cache-uf99v8.ea3mdgi8 > div.block-container.st-emotion-cache-z5fcl4.ea3mdgi5 > div > div > div > div.st-emotion-cache-ocqkz7.e1f1d6gn5 > div:nth-child(4) > div > div > div > div > div{ - margin-top: 1.6em; -} - - -[data-testid="stHeadingDivider"] { - background-color: #3d9df3; /* Set your desired color */ - height: 1px; -} - -#microsoft-graphrag-copilot > div > span { - text-align: center; - margin-top: -1em; -} - -/* Tooltip container */ -.tooltip { - position: relative; - display: inline-block; - border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ - } - - /* Tooltip text */ - .tooltip .tooltiptext { - visibility: hidden; - width: 120px; - background-color: #555; - color: #fff; - text-align: center; - border-radius: 6px; - padding: 5px; - position: absolute; - z-index: 1; - bottom: 125%; - left: 50%; - margin-left: -60px; - opacity: 0; - transition: opacity 0.3s; - } - - /* Show the tooltip text when you hover over the tooltip container */ - .tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; - } - - .gray-box { - - background-color: #ffffff; - padding: 10px; - width: 80%; -} - -.center-container { - margin-top: -10em; - display: flex; - align-items: center; - justify-content: center; - height: 100vh; -} - -.footer { - display: flex; - justify-content: center; - align-items: center; - position: fixed; - left: 0; - bottom: 0; - width: 100%; - background-color: #f1f1f1; - text-align: center; - padding: 5px; - z-index: 1000; -} -.footer p{ - font-size: 12px; -} \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 7dd0320..b75ea66 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1234,33 +1234,33 @@ pyarrow = ">=15.0.0,<16.0.0" [[package]] name = "debugpy" -version = "1.8.1" +version = "1.8.2" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, - {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, - {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, - {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, - {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, - {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, - {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, - {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, - {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, - {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, - {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, - {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, - {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, - {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, - {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, - {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, - {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, - {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, - {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, - {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, - {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, - {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, + {file = "debugpy-1.8.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7ee2e1afbf44b138c005e4380097d92532e1001580853a7cb40ed84e0ef1c3d2"}, + {file = "debugpy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8c3f7c53130a070f0fc845a0f2cee8ed88d220d6b04595897b66605df1edd6"}, + {file = "debugpy-1.8.2-cp310-cp310-win32.whl", hash = "sha256:f179af1e1bd4c88b0b9f0fa153569b24f6b6f3de33f94703336363ae62f4bf47"}, + {file = "debugpy-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:0600faef1d0b8d0e85c816b8bb0cb90ed94fc611f308d5fde28cb8b3d2ff0fe3"}, + {file = "debugpy-1.8.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8a13417ccd5978a642e91fb79b871baded925d4fadd4dfafec1928196292aa0a"}, + {file = "debugpy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acdf39855f65c48ac9667b2801234fc64d46778021efac2de7e50907ab90c634"}, + {file = "debugpy-1.8.2-cp311-cp311-win32.whl", hash = "sha256:2cbd4d9a2fc5e7f583ff9bf11f3b7d78dfda8401e8bb6856ad1ed190be4281ad"}, + {file = "debugpy-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:d3408fddd76414034c02880e891ea434e9a9cf3a69842098ef92f6e809d09afa"}, + {file = "debugpy-1.8.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:5d3ccd39e4021f2eb86b8d748a96c766058b39443c1f18b2dc52c10ac2757835"}, + {file = "debugpy-1.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62658aefe289598680193ff655ff3940e2a601765259b123dc7f89c0239b8cd3"}, + {file = "debugpy-1.8.2-cp312-cp312-win32.whl", hash = "sha256:bd11fe35d6fd3431f1546d94121322c0ac572e1bfb1f6be0e9b8655fb4ea941e"}, + {file = "debugpy-1.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:15bc2f4b0f5e99bf86c162c91a74c0631dbd9cef3c6a1d1329c946586255e859"}, + {file = "debugpy-1.8.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:5a019d4574afedc6ead1daa22736c530712465c0c4cd44f820d803d937531b2d"}, + {file = "debugpy-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40f062d6877d2e45b112c0bbade9a17aac507445fd638922b1a5434df34aed02"}, + {file = "debugpy-1.8.2-cp38-cp38-win32.whl", hash = "sha256:c78ba1680f1015c0ca7115671fe347b28b446081dada3fedf54138f44e4ba031"}, + {file = "debugpy-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cf327316ae0c0e7dd81eb92d24ba8b5e88bb4d1b585b5c0d32929274a66a5210"}, + {file = "debugpy-1.8.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1523bc551e28e15147815d1397afc150ac99dbd3a8e64641d53425dba57b0ff9"}, + {file = "debugpy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e24ccb0cd6f8bfaec68d577cb49e9c680621c336f347479b3fce060ba7c09ec1"}, + {file = "debugpy-1.8.2-cp39-cp39-win32.whl", hash = "sha256:7f8d57a98c5a486c5c7824bc0b9f2f11189d08d73635c326abef268f83950326"}, + {file = "debugpy-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:16c8dcab02617b75697a0a925a62943e26a0330da076e2a10437edd9f0bf3755"}, + {file = "debugpy-1.8.2-py2.py3-none-any.whl", hash = "sha256:16e16df3a98a35c63c3ab1e4d19be4cbc7fdda92d9ddc059294f18910928e0ca"}, + {file = "debugpy-1.8.2.zip", hash = "sha256:95378ed08ed2089221896b9b3a8d021e642c24edc8fef20e5d4342ca8be65c00"}, ] [[package]] @@ -1842,13 +1842,13 @@ files = [ [[package]] name = "fsspec" -version = "2024.6.0" +version = "2024.6.1" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.6.0-py3-none-any.whl", hash = "sha256:58d7122eb8a1a46f7f13453187bfea4972d66bf01618d37366521b1998034cee"}, - {file = "fsspec-2024.6.0.tar.gz", hash = "sha256:f579960a56e6d8038a9efc8f9c77279ec12e6299aa86b0769a7e9c46b94527c2"}, + {file = "fsspec-2024.6.1-py3-none-any.whl", hash = "sha256:3cb443f8bcd2efb31295a5b9fdb02aee81d8452c80d28f97a6d0959e6cee101e"}, + {file = "fsspec-2024.6.1.tar.gz", hash = "sha256:fad7d7e209dd4c1208e3bbfda706620e0da5142bebbd9c384afb95b07e798e49"}, ] [package.extras] @@ -1988,13 +1988,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-auth" -version = "2.30.0" +version = "2.31.0" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google-auth-2.30.0.tar.gz", hash = "sha256:ab630a1320f6720909ad76a7dbdb6841cdf5c66b328d690027e4867bdfb16688"}, - {file = "google_auth-2.30.0-py2.py3-none-any.whl", hash = "sha256:8df7da660f62757388b8a7f249df13549b3373f24388cb5d2f1dd91cc18180b5"}, + {file = "google-auth-2.31.0.tar.gz", hash = "sha256:87805c36970047247c8afe614d4e3af8eceafc1ebba0c679fe75ddd1d575e871"}, + {file = "google_auth-2.31.0-py2.py3-none-any.whl", hash = "sha256:042c4702efa9f7d3c48d3a69341c209381b125faa6dbf3ebe56bc7e40ae05c23"}, ] [package.dependencies] @@ -2261,13 +2261,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.2.1" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.2.1-py3-none-any.whl", hash = "sha256:ffef94b0b66046dd8ea2d619b701fe978d9264d38f3998bc4c27ec3b146a87c8"}, - {file = "importlib_metadata-7.2.1.tar.gz", hash = "sha256:509ecb2ab77071db5137c655e24ceb3eee66e7bbc6574165d0d114d9fc4bbe68"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] @@ -2302,13 +2302,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.29.4" +version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, - {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] [package.dependencies] @@ -2335,13 +2335,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.25.0" +version = "8.26.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"}, - {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"}, + {file = "ipython-8.26.0-py3-none-any.whl", hash = "sha256:e6b347c27bdf9c32ee9d31ae85defc525755a1869f14057e900675b9e8d6e6ff"}, + {file = "ipython-8.26.0.tar.gz", hash = "sha256:1cec0fbba8404af13facebe83d04436a7434c7400e59f47acf467c64abd0956c"}, ] [package.dependencies] @@ -2368,7 +2368,7 @@ nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] @@ -2747,13 +2747,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.2" +version = "4.2.3" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.2.2-py3-none-any.whl", hash = "sha256:59ee9b839f43308c3dfd55d72d1f1a299ed42a7f91f2d1afe9c12a783f9e525f"}, - {file = "jupyterlab-4.2.2.tar.gz", hash = "sha256:a534b6a25719a92a40d514fb133a9fe8f0d9981b0bbce5d8a5fcaa33344a3038"}, + {file = "jupyterlab-4.2.3-py3-none-any.whl", hash = "sha256:0b59d11808e84bb84105c73364edfa867dd475492429ab34ea388a52f2e2e596"}, + {file = "jupyterlab-4.2.3.tar.gz", hash = "sha256:df6e46969ea51d66815167f23d92f105423b7f1f06fa604d4f44aeb018c82c7b"}, ] [package.dependencies] @@ -3808,13 +3808,13 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "openai" -version = "1.35.3" +version = "1.35.7" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.35.3-py3-none-any.whl", hash = "sha256:7b26544cef80f125431c073ffab3811d2421fbb9e30d3bd5c2436aba00b042d5"}, - {file = "openai-1.35.3.tar.gz", hash = "sha256:d6177087f150b381d49499be782d764213fdf638d391b29ca692b84dd675a389"}, + {file = "openai-1.35.7-py3-none-any.whl", hash = "sha256:3d1e0b0aac9b0db69a972d36dc7efa7563f8e8d65550b27a48f2a0c2ec207e80"}, + {file = "openai-1.35.7.tar.gz", hash = "sha256:009bfa1504c9c7ef64d87be55936d142325656bbc6d98c68b669d6472e4beb09"}, ] [package.dependencies] @@ -4098,84 +4098,95 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.3.0" +version = "10.4.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"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -4310,58 +4321,68 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p [[package]] name = "pot" -version = "0.9.3" +version = "0.9.4" description = "Python Optimal Transport Library" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "POT-0.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:00ceb63cfc49e27fab2829646ed24f553bd7d3584eb8ba83fc856e7a757b0b8c"}, - {file = "POT-0.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:590b583e43f401435dac2b83da9ca244abbe21f606477c9b67bbc45e46103ed7"}, - {file = "POT-0.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:35b172ec33dbfbe44f66ca16fc16a77e0eb68439026ba920f73bd3602f18d92e"}, - {file = "POT-0.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88544f3811eef1f9e9e50d8e68f73a3bf3d84886fbe7be2389cf57d86101e274"}, - {file = "POT-0.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfaf40a74c5131c1c49f5624c170cb4de24f294ddef1cff6c494321c134d6f2d"}, - {file = "POT-0.9.3-cp310-cp310-win32.whl", hash = "sha256:30df60ba279591583ce2921e0e78bdcb27337713f433ee0b7385f77e79d63a69"}, - {file = "POT-0.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:88d4d06cec340c53d1abe9369cb905fe953bd5bf126b0e589d5254e3f5d86592"}, - {file = "POT-0.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:73fc8a643ed4c95dacad4dfb8a4dd50beda3853354b923c4b442a97f5e86db03"}, - {file = "POT-0.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b1888da5458269648990c292ab5f2ad1f60d8496440af45361a1075250af58cd"}, - {file = "POT-0.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:787dae6ba7f72a927a9f8a7e9e4e844935153a09d2a0834548c1b9cb377486d9"}, - {file = "POT-0.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd434bc9659af8ed814200473bfdfc67573db08442bb924324f238903f36bb60"}, - {file = "POT-0.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34019967a47120e9460fb344162d010103e1b1fbf96aa8872b27a07dd7f51144"}, - {file = "POT-0.9.3-cp311-cp311-win32.whl", hash = "sha256:596b296d5522cd55dade5c110442281a1189dc5e5449eb948e4d7eaed2f74503"}, - {file = "POT-0.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:fd2f8fa78b364d51a4dc397d8c4f45dd74df3a904b7c03481aebaf39ebc9eafb"}, - {file = "POT-0.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3e12fbdf9bf6d5de0ecb56277da85036e647d1cdf57cfd087ee57d3e83c19d0d"}, - {file = "POT-0.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ee6269aa3ce7d9706e021f23aea91b932cfd4c264869ee89956ebce40cbe2cd3"}, - {file = "POT-0.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cb28fc18fb1acc095999b80844458a5645aa5b09ea2d8647be48257d1c6dddf"}, - {file = "POT-0.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16bb37c7d20da3a6ff7b4f0c0c5ff98e1e097323e560811392e963440994e661"}, - {file = "POT-0.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b29232b6c1cca507d969a8797aef0cf87631d77e28e03cfb5b62d64d9d63044e"}, - {file = "POT-0.9.3-cp312-cp312-win32.whl", hash = "sha256:b20bf5cca6776e1d92421a14bc14307a0914d172c67e5a76acaf1a3ecfe7d02b"}, - {file = "POT-0.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:e9e419868ae64c397d932a43d98cc2d1464b6060815775037a070fd2e1d4eafa"}, - {file = "POT-0.9.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1e401b5ae17d95d33ef48c851df7aaac4711e7af21705ba9b5fae7bf53ae9217"}, - {file = "POT-0.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db3ac04a2f272855501a7d8117969b6dff15a146986f7a5c1f0e6d9f1840fa73"}, - {file = "POT-0.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9268e48a1a43e947fdb78a89e3866b484c559681ed88bb178ac5b3dccb217579"}, - {file = "POT-0.9.3-cp37-cp37m-win32.whl", hash = "sha256:0dbe4878419ae1edbd029b2e166406f8fd1387356bd18ab2fd9a3c656bc4125a"}, - {file = "POT-0.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:6f114b5ab93039c0426afa59be6db1fa6b2e251dc3e1e7f7b348a1334f2c0061"}, - {file = "POT-0.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:aab4eb2b4bbfe01fee10bb1c2157891883cc63fa70c2bc2a8460a486c77de9f3"}, - {file = "POT-0.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:09badce0c77cdc94422e74aa81fdcf0ad8e6e826bf7eafcb8a1701bd9ff5f393"}, - {file = "POT-0.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:18f2c3905e0678bf397890f242ae196afaa25ac4dec5f06ef6ae30921adc0614"}, - {file = "POT-0.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74cc9a8ab92329c50b0df74b3be19f282860aa7f1abddf0c149fb2f5e96d18bb"}, - {file = "POT-0.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b0377111e50a8008b29bcfb092aac8594f183716993369f2e2f3ff746dacd7"}, - {file = "POT-0.9.3-cp38-cp38-win32.whl", hash = "sha256:342161c182f3b4719c4424bf3d852b30f7cb794f17166aa64965b2408355d44a"}, - {file = "POT-0.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:a38f573bddf670dee651a6df220c18f30f71c74e4ec9ac398b7937ca9adfc0ff"}, - {file = "POT-0.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5b72b204af2d6a236dfc457767f5e9ad3cca60e2ee3cf0f909c0028be95f7b42"}, - {file = "POT-0.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec4482888de48d17ad4d8fe905bd186a6c41f8dc907cda9d0468331a907e2419"}, - {file = "POT-0.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b19c0a8051d80e6d55e0dfd4473f7841ef30167b3013c95eedbaba7acc385dea"}, - {file = "POT-0.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aede827854d868fb4ec9e8aaeac97f13fdd2a1313c16d06d4ccae10a92e272a7"}, - {file = "POT-0.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:057246783b90936d7ce32b7bb27e1cfa59731eb95898ea5f756e4d1de6e9ae3f"}, - {file = "POT-0.9.3-cp39-cp39-win32.whl", hash = "sha256:fc7676338404001ad61050610494b7b5ab496f0533ce29f1d44cff833efd80d8"}, - {file = "POT-0.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:f391982d5b9877faabac21ec1bccfb5567b0fc8305770277bc87fdff4563bd5b"}, - {file = "POT-0.9.3.tar.gz", hash = "sha256:eecf2394390a73472e727ef75f7c801fc47509039f00c40f8fc64fdeea617c86"}, + {file = "POT-0.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8418ab9c24f549290fdc452caebb58ded05b986a024063fe3354cfd2e704b378"}, + {file = "POT-0.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:096cd3b454f87ff9c8f48d8e221bc26509d8f9355ce99d9fefe83560f82278b5"}, + {file = "POT-0.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6e67d420a479ed66f4549c785e157bb3dce2c5489bf81a44ac922a6e9471fe69"}, + {file = "POT-0.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bc7225906a3fa3aafdb441e1d24c55eaf1ee3badd1c93ab6199865f689221"}, + {file = "POT-0.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfee044f744b1722912654c8b905bc289ce160524db5ca0e853f1aa442ffea55"}, + {file = "POT-0.9.4-cp310-cp310-win32.whl", hash = "sha256:421c3efb8da2f1ce9605f9f2068047ea629b95de87baa15b8786b3e664de9dbd"}, + {file = "POT-0.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:6e76194a62f29ddadc975e18cf7f07d22060735bd3fb9a023781e0e126a05822"}, + {file = "POT-0.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:148040b89063790ab784458d5d200ba4a7f36c54fdb62ea0842f8d5d4c5c6ccb"}, + {file = "POT-0.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1109fc77989834a1467be731ff957d90c2b558e772cff6c06fb90f7cbe58b014"}, + {file = "POT-0.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8218cd419e8457b37fe2b8060b5bf9bd07d4671d5f5fa4d5ac98c58b5be8c0"}, + {file = "POT-0.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ea0055f18e26917ff326f39dd5e5fd43bcc9eccaab4b09a4f8d7785c8921250"}, + {file = "POT-0.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f03b4af3f56234787d2a34e0637dac9c1e1de4cb3f7386ca4f91331f0c4af187"}, + {file = "POT-0.9.4-cp311-cp311-win32.whl", hash = "sha256:a69f6d554df1de47dd312fc065d9171bdbedf48c90c8409889485945ffaaeacf"}, + {file = "POT-0.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:8791c8f09a852901e03e2dc1c6aec4f374b58b3ee905a90349713587aa16e26a"}, + {file = "POT-0.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1a7a55b3fd528e6808f99de0165dcacf185eb86ae3aff4d358b850479b76a8ba"}, + {file = "POT-0.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a9bbd2507605be6eae4f0f0d6f6f0ff91ce3eeb5b7c8eeb350e4eb76bcc6940a"}, + {file = "POT-0.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5594ab0e78329307ce4cd293f2de409513876695d60fb4c1013b5dd46069f256"}, + {file = "POT-0.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0ca658105d129b752c8d20751ff2cb965d1bdcaecec319ae489b135c58d9da9"}, + {file = "POT-0.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6732f1acd94959b8fa13a4fa250ad49c1e6894ece488a81f4427dbf13df4776"}, + {file = "POT-0.9.4-cp312-cp312-win32.whl", hash = "sha256:bf7f5253fee6ba7df5dd854b739540f701153cabab80dd25332dfac93d84bec1"}, + {file = "POT-0.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:597ff64b06a157871feb84e6e82b3f5dfbfff57161c14660ab2ddbcc93c940e6"}, + {file = "POT-0.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:385b41606943fbc73f1ab96fd994117d79c4ad782c91bbb7ba74c0359e9de887"}, + {file = "POT-0.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3f697e084243b9fe0a975331e471fd09610343c6aa28172232958e39100ede6"}, + {file = "POT-0.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b967fb9cafc6ad30a6d51b21d6307b384491a106d6dc75f37bee52a3f63575c3"}, + {file = "POT-0.9.4-cp37-cp37m-win32.whl", hash = "sha256:35926c2f4d2ee49309dce340f7f6646fe451ca1e0d11b2d017a851d482bf4468"}, + {file = "POT-0.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:f29fa1fcd591d1940e2279dc1422ff46c0c273f6be4ecbcaa819d91dd196573e"}, + {file = "POT-0.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:63f8b50f448e32a4ae274dd1e68e22b1a2bc291c53c5c6ec5afadfb930b6a809"}, + {file = "POT-0.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cabd13a728d2db40b3989ad57810769dfba8972b686ae7f4881dbd315252e5d9"}, + {file = "POT-0.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5984157d5a819bd6c55db3b0d8fe631ff398c243e80a9e9e933cbd1ee7c7588c"}, + {file = "POT-0.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b8da4e3268eeee40dff96364f0a9f0326979d565d970ec74a1688b8ad338022"}, + {file = "POT-0.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede957083299e4904627621f4d2c8a6b56af108fef9b486330f65519a395f10a"}, + {file = "POT-0.9.4-cp38-cp38-win32.whl", hash = "sha256:79716079d7970c6c0bf909f986c65d7103135e36b364ba5fa5caed97d7aa6464"}, + {file = "POT-0.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:3246493745bcf2b353312183b9ab547466cae711936f991a6754b62f55ff1dec"}, + {file = "POT-0.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:223c4ca199b679e4c2b8a79fb49d31f2c7fab2975c2c37d1e68a0a7fbe2bc55d"}, + {file = "POT-0.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c30d77994d02984ad32665f5975e272e8c02e8d5288c4edfbec08617c5c38f91"}, + {file = "POT-0.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b0fe5be45112c12cc0f6ab61fb85ed9161ca540b24a4037e5d53ab86f390a49"}, + {file = "POT-0.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab68bdfeae54719d202e923f18ec29869c09b105e42f94568221fc92996f0f4d"}, + {file = "POT-0.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2847015e3bb65171eb70eca786f8cebe806960af40625ebc17c858b6314a9e0b"}, + {file = "POT-0.9.4-cp39-cp39-win32.whl", hash = "sha256:2e35d68c6e676108d6eeb7e6b119c4c19dca364992bca57f3f513660bfb1810c"}, + {file = "POT-0.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:e7d029f024ed58f8d10b3e4d517df551bb9758ac12d0503be793f44258f2dffc"}, + {file = "pot-0.9.4.tar.gz", hash = "sha256:4cf8b46bf4992c37529161c32dd5e3334e0c089399142f08ed6d455b57015edd"}, ] [package.dependencies] numpy = ">=1.16" scipy = ">=1.6" +[package.extras] +all = ["autograd", "cvxopt", "jax", "jaxlib", "matplotlib", "pymanopt", "scikit-learn", "tensorflow", "torch", "torch-geometric"] +backend-jax = ["jax", "jaxlib"] +backend-tf = ["tensorflow"] +backend-torch = ["torch"] +cvxopt = ["cvxopt"] +dr = ["autograd", "pymanopt", "scikit-learn"] +gnn = ["torch", "torch-geometric"] +plot = ["matplotlib"] + [[package]] name = "pre-commit" version = "3.7.1" @@ -4427,22 +4448,22 @@ testing = ["google-api-core (>=1.31.5)"] [[package]] name = "protobuf" -version = "5.27.1" +version = "5.27.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.27.1-cp310-abi3-win32.whl", hash = "sha256:3adc15ec0ff35c5b2d0992f9345b04a540c1e73bfee3ff1643db43cc1d734333"}, - {file = "protobuf-5.27.1-cp310-abi3-win_amd64.whl", hash = "sha256:25236b69ab4ce1bec413fd4b68a15ef8141794427e0b4dc173e9d5d9dffc3bcd"}, - {file = "protobuf-5.27.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4e38fc29d7df32e01a41cf118b5a968b1efd46b9c41ff515234e794011c78b17"}, - {file = "protobuf-5.27.1-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:917ed03c3eb8a2d51c3496359f5b53b4e4b7e40edfbdd3d3f34336e0eef6825a"}, - {file = "protobuf-5.27.1-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:ee52874a9e69a30271649be88ecbe69d374232e8fd0b4e4b0aaaa87f429f1631"}, - {file = "protobuf-5.27.1-cp38-cp38-win32.whl", hash = "sha256:7a97b9c5aed86b9ca289eb5148df6c208ab5bb6906930590961e08f097258107"}, - {file = "protobuf-5.27.1-cp38-cp38-win_amd64.whl", hash = "sha256:f6abd0f69968792da7460d3c2cfa7d94fd74e1c21df321eb6345b963f9ec3d8d"}, - {file = "protobuf-5.27.1-cp39-cp39-win32.whl", hash = "sha256:dfddb7537f789002cc4eb00752c92e67885badcc7005566f2c5de9d969d3282d"}, - {file = "protobuf-5.27.1-cp39-cp39-win_amd64.whl", hash = "sha256:39309898b912ca6febb0084ea912e976482834f401be35840a008da12d189340"}, - {file = "protobuf-5.27.1-py3-none-any.whl", hash = "sha256:4ac7249a1530a2ed50e24201d6630125ced04b30619262f06224616e0030b6cf"}, - {file = "protobuf-5.27.1.tar.gz", hash = "sha256:df5e5b8e39b7d1c25b186ffdf9f44f40f810bbcc9d2b71d9d3156fee5a9adf15"}, + {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"}, + {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"}, + {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"}, + {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"}, + {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"}, + {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"}, + {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"}, + {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"}, + {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"}, ] [[package]] @@ -4624,109 +4645,118 @@ files = [ [[package]] name = "pydantic" -version = "2.7.4" +version = "2.8.0" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.7.4-py3-none-any.whl", hash = "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"}, - {file = "pydantic-2.7.4.tar.gz", hash = "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52"}, + {file = "pydantic-2.8.0-py3-none-any.whl", hash = "sha256:ead4f3a1e92386a734ca1411cb25d94147cf8778ed5be6b56749047676d6364e"}, + {file = "pydantic-2.8.0.tar.gz", hash = "sha256:d970ffb9d030b710795878940bd0489842c638e7252fc4a19c3ae2f7da4d6141"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.18.4" -typing-extensions = ">=4.6.1" +pydantic-core = "2.20.0" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.18.4" +version = "2.20.0" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.18.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f76d0ad001edd426b92233d45c746fd08f467d56100fd8f30e9ace4b005266e4"}, - {file = "pydantic_core-2.18.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:59ff3e89f4eaf14050c8022011862df275b552caef8082e37b542b066ce1ff26"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a55b5b16c839df1070bc113c1f7f94a0af4433fcfa1b41799ce7606e5c79ce0a"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d0dcc59664fcb8974b356fe0a18a672d6d7cf9f54746c05f43275fc48636851"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8951eee36c57cd128f779e641e21eb40bc5073eb28b2d23f33eb0ef14ffb3f5d"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4701b19f7e3a06ea655513f7938de6f108123bf7c86bbebb1196eb9bd35cf724"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00a3f196329e08e43d99b79b286d60ce46bed10f2280d25a1718399457e06be"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97736815b9cc893b2b7f663628e63f436018b75f44854c8027040e05230eeddb"}, - {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6891a2ae0e8692679c07728819b6e2b822fb30ca7445f67bbf6509b25a96332c"}, - {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bc4ff9805858bd54d1a20efff925ccd89c9d2e7cf4986144b30802bf78091c3e"}, - {file = "pydantic_core-2.18.4-cp310-none-win32.whl", hash = "sha256:1b4de2e51bbcb61fdebd0ab86ef28062704f62c82bbf4addc4e37fa4b00b7cbc"}, - {file = "pydantic_core-2.18.4-cp310-none-win_amd64.whl", hash = "sha256:6a750aec7bf431517a9fd78cb93c97b9b0c496090fee84a47a0d23668976b4b0"}, - {file = "pydantic_core-2.18.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d"}, - {file = "pydantic_core-2.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951"}, - {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2"}, - {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9"}, - {file = "pydantic_core-2.18.4-cp311-none-win32.whl", hash = "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558"}, - {file = "pydantic_core-2.18.4-cp311-none-win_amd64.whl", hash = "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b"}, - {file = "pydantic_core-2.18.4-cp311-none-win_arm64.whl", hash = "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805"}, - {file = "pydantic_core-2.18.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6f5c4d41b2771c730ea1c34e458e781b18cc668d194958e0112455fff4e402b2"}, - {file = "pydantic_core-2.18.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2fdf2156aa3d017fddf8aea5adfba9f777db1d6022d392b682d2a8329e087cef"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4748321b5078216070b151d5271ef3e7cc905ab170bbfd27d5c83ee3ec436695"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:847a35c4d58721c5dc3dba599878ebbdfd96784f3fb8bb2c356e123bdcd73f34"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c40d4eaad41f78e3bbda31b89edc46a3f3dc6e171bf0ecf097ff7a0ffff7cb1"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21a5e440dbe315ab9825fcd459b8814bb92b27c974cbc23c3e8baa2b76890077"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01dd777215e2aa86dfd664daed5957704b769e726626393438f9c87690ce78c3"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4b06beb3b3f1479d32befd1f3079cc47b34fa2da62457cdf6c963393340b56e9"}, - {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:564d7922e4b13a16b98772441879fcdcbe82ff50daa622d681dd682175ea918c"}, - {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0eb2a4f660fcd8e2b1c90ad566db2b98d7f3f4717c64fe0a83e0adb39766d5b8"}, - {file = "pydantic_core-2.18.4-cp312-none-win32.whl", hash = "sha256:8b8bab4c97248095ae0c4455b5a1cd1cdd96e4e4769306ab19dda135ea4cdb07"}, - {file = "pydantic_core-2.18.4-cp312-none-win_amd64.whl", hash = "sha256:14601cdb733d741b8958224030e2bfe21a4a881fb3dd6fbb21f071cabd48fa0a"}, - {file = "pydantic_core-2.18.4-cp312-none-win_arm64.whl", hash = "sha256:c1322d7dd74713dcc157a2b7898a564ab091ca6c58302d5c7b4c07296e3fd00f"}, - {file = "pydantic_core-2.18.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:823be1deb01793da05ecb0484d6c9e20baebb39bd42b5d72636ae9cf8350dbd2"}, - {file = "pydantic_core-2.18.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebef0dd9bf9b812bf75bda96743f2a6c5734a02092ae7f721c048d156d5fabae"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae1d6df168efb88d7d522664693607b80b4080be6750c913eefb77e34c12c71a"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9899c94762343f2cc2fc64c13e7cae4c3cc65cdfc87dd810a31654c9b7358cc"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99457f184ad90235cfe8461c4d70ab7dd2680e28821c29eca00252ba90308c78"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18f469a3d2a2fdafe99296a87e8a4c37748b5080a26b806a707f25a902c040a8"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7cdf28938ac6b8b49ae5e92f2735056a7ba99c9b110a474473fd71185c1af5d"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:938cb21650855054dc54dfd9120a851c974f95450f00683399006aa6e8abb057"}, - {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:44cd83ab6a51da80fb5adbd9560e26018e2ac7826f9626bc06ca3dc074cd198b"}, - {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:972658f4a72d02b8abfa2581d92d59f59897d2e9f7e708fdabe922f9087773af"}, - {file = "pydantic_core-2.18.4-cp38-none-win32.whl", hash = "sha256:1d886dc848e60cb7666f771e406acae54ab279b9f1e4143babc9c2258213daa2"}, - {file = "pydantic_core-2.18.4-cp38-none-win_amd64.whl", hash = "sha256:bb4462bd43c2460774914b8525f79b00f8f407c945d50881568f294c1d9b4443"}, - {file = "pydantic_core-2.18.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:44a688331d4a4e2129140a8118479443bd6f1905231138971372fcde37e43528"}, - {file = "pydantic_core-2.18.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a2fdd81edd64342c85ac7cf2753ccae0b79bf2dfa063785503cb85a7d3593223"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86110d7e1907ab36691f80b33eb2da87d780f4739ae773e5fc83fb272f88825f"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46387e38bd641b3ee5ce247563b60c5ca098da9c56c75c157a05eaa0933ed154"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:123c3cec203e3f5ac7b000bd82235f1a3eced8665b63d18be751f115588fea30"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1803ac5c32ec324c5261c7209e8f8ce88e83254c4e1aebdc8b0a39f9ddb443"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53db086f9f6ab2b4061958d9c276d1dbe3690e8dd727d6abf2321d6cce37fa94"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abc267fa9837245cc28ea6929f19fa335f3dc330a35d2e45509b6566dc18be23"}, - {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0d829524aaefdebccb869eed855e2d04c21d2d7479b6cada7ace5448416597b"}, - {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:509daade3b8649f80d4e5ff21aa5673e4ebe58590b25fe42fac5f0f52c6f034a"}, - {file = "pydantic_core-2.18.4-cp39-none-win32.whl", hash = "sha256:ca26a1e73c48cfc54c4a76ff78df3727b9d9f4ccc8dbee4ae3f73306a591676d"}, - {file = "pydantic_core-2.18.4-cp39-none-win_amd64.whl", hash = "sha256:c67598100338d5d985db1b3d21f3619ef392e185e71b8d52bceacc4a7771ea7e"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9"}, - {file = "pydantic_core-2.18.4.tar.gz", hash = "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864"}, + {file = "pydantic_core-2.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e9dcd7fb34f7bfb239b5fa420033642fff0ad676b765559c3737b91f664d4fa9"}, + {file = "pydantic_core-2.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:649a764d9b0da29816889424697b2a3746963ad36d3e0968784ceed6e40c6355"}, + {file = "pydantic_core-2.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7701df088d0b05f3460f7ba15aec81ac8b0fb5690367dfd072a6c38cf5b7fdb5"}, + {file = "pydantic_core-2.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab760f17c3e792225cdaef31ca23c0aea45c14ce80d8eff62503f86a5ab76bff"}, + {file = "pydantic_core-2.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb1ad5b4d73cde784cf64580166568074f5ccd2548d765e690546cff3d80937d"}, + {file = "pydantic_core-2.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b81ec2efc04fc1dbf400647d4357d64fb25543bae38d2d19787d69360aad21c9"}, + {file = "pydantic_core-2.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4a9732a5cad764ba37f3aa873dccb41b584f69c347a57323eda0930deec8e10"}, + {file = "pydantic_core-2.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6dc85b9e10cc21d9c1055f15684f76fa4facadddcb6cd63abab702eb93c98943"}, + {file = "pydantic_core-2.20.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:21d9f7e24f63fdc7118e6cc49defaab8c1d27570782f7e5256169d77498cf7c7"}, + {file = "pydantic_core-2.20.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8b315685832ab9287e6124b5d74fc12dda31e6421d7f6b08525791452844bc2d"}, + {file = "pydantic_core-2.20.0-cp310-none-win32.whl", hash = "sha256:c3dc8ec8b87c7ad534c75b8855168a08a7036fdb9deeeed5705ba9410721c84d"}, + {file = "pydantic_core-2.20.0-cp310-none-win_amd64.whl", hash = "sha256:85770b4b37bb36ef93a6122601795231225641003e0318d23c6233c59b424279"}, + {file = "pydantic_core-2.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:58e251bb5a5998f7226dc90b0b753eeffa720bd66664eba51927c2a7a2d5f32c"}, + {file = "pydantic_core-2.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:78d584caac52c24240ef9ecd75de64c760bbd0e20dbf6973631815e3ef16ef8b"}, + {file = "pydantic_core-2.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5084ec9721f82bef5ff7c4d1ee65e1626783abb585f8c0993833490b63fe1792"}, + {file = "pydantic_core-2.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6d0f52684868db7c218437d260e14d37948b094493f2646f22d3dda7229bbe3f"}, + {file = "pydantic_core-2.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1def125d59a87fe451212a72ab9ed34c118ff771e5473fef4f2f95d8ede26d75"}, + {file = "pydantic_core-2.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b34480fd6778ab356abf1e9086a4ced95002a1e195e8d2fd182b0def9d944d11"}, + {file = "pydantic_core-2.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d42669d319db366cb567c3b444f43caa7ffb779bf9530692c6f244fc635a41eb"}, + {file = "pydantic_core-2.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:53b06aea7a48919a254b32107647be9128c066aaa6ee6d5d08222325f25ef175"}, + {file = "pydantic_core-2.20.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1f038156b696a1c39d763b2080aeefa87ddb4162c10aa9fabfefffc3dd8180fa"}, + {file = "pydantic_core-2.20.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3f0f3a4a23717280a5ee3ac4fb1f81d6fde604c9ec5100f7f6f987716bb8c137"}, + {file = "pydantic_core-2.20.0-cp311-none-win32.whl", hash = "sha256:316fe7c3fec017affd916a0c83d6f1ec697cbbbdf1124769fa73328e7907cc2e"}, + {file = "pydantic_core-2.20.0-cp311-none-win_amd64.whl", hash = "sha256:2d06a7fa437f93782e3f32d739c3ec189f82fca74336c08255f9e20cea1ed378"}, + {file = "pydantic_core-2.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d6f8c49657f3eb7720ed4c9b26624063da14937fc94d1812f1e04a2204db3e17"}, + {file = "pydantic_core-2.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad1bd2f377f56fec11d5cfd0977c30061cd19f4fa199bf138b200ec0d5e27eeb"}, + {file = "pydantic_core-2.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed741183719a5271f97d93bbcc45ed64619fa38068aaa6e90027d1d17e30dc8d"}, + {file = "pydantic_core-2.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d82e5ed3a05f2dcb89c6ead2fd0dbff7ac09bc02c1b4028ece2d3a3854d049ce"}, + {file = "pydantic_core-2.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2ba34a099576234671f2e4274e5bc6813b22e28778c216d680eabd0db3f7dad"}, + {file = "pydantic_core-2.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:879ae6bb08a063b3e1b7ac8c860096d8fd6b48dd9b2690b7f2738b8c835e744b"}, + {file = "pydantic_core-2.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b0eefc7633a04c0694340aad91fbfd1986fe1a1e0c63a22793ba40a18fcbdc8"}, + {file = "pydantic_core-2.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73deadd6fd8a23e2f40b412b3ac617a112143c8989a4fe265050fd91ba5c0608"}, + {file = "pydantic_core-2.20.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:35681445dc85446fb105943d81ae7569aa7e89de80d1ca4ac3229e05c311bdb1"}, + {file = "pydantic_core-2.20.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0f6dd3612a3b9f91f2e63924ea18a4476656c6d01843ca20a4c09e00422195af"}, + {file = "pydantic_core-2.20.0-cp312-none-win32.whl", hash = "sha256:7e37b6bb6e90c2b8412b06373c6978d9d81e7199a40e24a6ef480e8acdeaf918"}, + {file = "pydantic_core-2.20.0-cp312-none-win_amd64.whl", hash = "sha256:7d4df13d1c55e84351fab51383520b84f490740a9f1fec905362aa64590b7a5d"}, + {file = "pydantic_core-2.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:d43e7ab3b65e4dc35a7612cfff7b0fd62dce5bc11a7cd198310b57f39847fd6c"}, + {file = "pydantic_core-2.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b6a24d7b5893392f2b8e3b7a0031ae3b14c6c1942a4615f0d8794fdeeefb08b"}, + {file = "pydantic_core-2.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2f13c3e955a087c3ec86f97661d9f72a76e221281b2262956af381224cfc243"}, + {file = "pydantic_core-2.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72432fd6e868c8d0a6849869e004b8bcae233a3c56383954c228316694920b38"}, + {file = "pydantic_core-2.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d70a8ff2d4953afb4cbe6211f17268ad29c0b47e73d3372f40e7775904bc28fc"}, + {file = "pydantic_core-2.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e49524917b8d3c2f42cd0d2df61178e08e50f5f029f9af1f402b3ee64574392"}, + {file = "pydantic_core-2.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4f0f71653b1c1bad0350bc0b4cc057ab87b438ff18fa6392533811ebd01439c"}, + {file = "pydantic_core-2.20.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:16197e6f4fdecb9892ed2436e507e44f0a1aa2cff3b9306d1c879ea2f9200997"}, + {file = "pydantic_core-2.20.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:763602504bf640b3ded3bba3f8ed8a1cc2fc6a87b8d55c1c5689f428c49c947e"}, + {file = "pydantic_core-2.20.0-cp313-none-win32.whl", hash = "sha256:a3f243f318bd9523277fa123b3163f4c005a3e8619d4b867064de02f287a564d"}, + {file = "pydantic_core-2.20.0-cp313-none-win_amd64.whl", hash = "sha256:03aceaf6a5adaad3bec2233edc5a7905026553916615888e53154807e404545c"}, + {file = "pydantic_core-2.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d6f2d8b8da1f03f577243b07bbdd3412eee3d37d1f2fd71d1513cbc76a8c1239"}, + {file = "pydantic_core-2.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a272785a226869416c6b3c1b7e450506152d3844207331f02f27173562c917e0"}, + {file = "pydantic_core-2.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efbb412d55a4ffe73963fed95c09ccb83647ec63b711c4b3752be10a56f0090b"}, + {file = "pydantic_core-2.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1e4f46189d8740561b43655263a41aac75ff0388febcb2c9ec4f1b60a0ec12f3"}, + {file = "pydantic_core-2.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3df115f4a3c8c5e4d5acf067d399c6466d7e604fc9ee9acbe6f0c88a0c3cf"}, + {file = "pydantic_core-2.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a340d2bdebe819d08f605e9705ed551c3feb97e4fd71822d7147c1e4bdbb9508"}, + {file = "pydantic_core-2.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:616b9c2f882393d422ba11b40e72382fe975e806ad693095e9a3b67c59ea6150"}, + {file = "pydantic_core-2.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25c46bb2ff6084859bbcfdf4f1a63004b98e88b6d04053e8bf324e115398e9e7"}, + {file = "pydantic_core-2.20.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:23425eccef8f2c342f78d3a238c824623836c6c874d93c726673dbf7e56c78c0"}, + {file = "pydantic_core-2.20.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:52527e8f223ba29608d999d65b204676398009725007c9336651c2ec2d93cffc"}, + {file = "pydantic_core-2.20.0-cp38-none-win32.whl", hash = "sha256:1c3c5b7f70dd19a6845292b0775295ea81c61540f68671ae06bfe4421b3222c2"}, + {file = "pydantic_core-2.20.0-cp38-none-win_amd64.whl", hash = "sha256:8093473d7b9e908af1cef30025609afc8f5fd2a16ff07f97440fd911421e4432"}, + {file = "pydantic_core-2.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ee7785938e407418795e4399b2bf5b5f3cf6cf728077a7f26973220d58d885cf"}, + {file = "pydantic_core-2.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e75794883d635071cf6b4ed2a5d7a1e50672ab7a051454c76446ef1ebcdcc91"}, + {file = "pydantic_core-2.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:344e352c96e53b4f56b53d24728217c69399b8129c16789f70236083c6ceb2ac"}, + {file = "pydantic_core-2.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:978d4123ad1e605daf1ba5e01d4f235bcf7b6e340ef07e7122e8e9cfe3eb61ab"}, + {file = "pydantic_core-2.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c05eaf6c863781eb834ab41f5963604ab92855822a2062897958089d1335dad"}, + {file = "pydantic_core-2.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc7e43b4a528ffca8c9151b6a2ca34482c2fdc05e6aa24a84b7f475c896fc51d"}, + {file = "pydantic_core-2.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:658287a29351166510ebbe0a75c373600cc4367a3d9337b964dada8d38bcc0f4"}, + {file = "pydantic_core-2.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1dacf660d6de692fe351e8c806e7efccf09ee5184865893afbe8e59be4920b4a"}, + {file = "pydantic_core-2.20.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3e147fc6e27b9a487320d78515c5f29798b539179f7777018cedf51b7749e4f4"}, + {file = "pydantic_core-2.20.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c867230d715a3dd1d962c8d9bef0d3168994ed663e21bf748b6e3a529a129aab"}, + {file = "pydantic_core-2.20.0-cp39-none-win32.whl", hash = "sha256:22b813baf0dbf612752d8143a2dbf8e33ccb850656b7850e009bad2e101fc377"}, + {file = "pydantic_core-2.20.0-cp39-none-win_amd64.whl", hash = "sha256:3a7235b46c1bbe201f09b6f0f5e6c36b16bad3d0532a10493742f91fbdc8035f"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cafde15a6f7feaec2f570646e2ffc5b73412295d29134a29067e70740ec6ee20"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:2aec8eeea0b08fd6bc2213d8e86811a07491849fd3d79955b62d83e32fa2ad5f"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:840200827984f1c4e114008abc2f5ede362d6e11ed0b5931681884dd41852ff1"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ea1d8b7df522e5ced34993c423c3bf3735c53df8b2a15688a2f03a7d678800"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5b8376a867047bf08910573deb95d3c8dfb976eb014ee24f3b5a61ccc5bee1b"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d08264b4460326cefacc179fc1411304d5af388a79910832835e6f641512358b"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7a3639011c2e8a9628466f616ed7fb413f30032b891898e10895a0a8b5857d6c"}, + {file = "pydantic_core-2.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05e83ce2f7eba29e627dd8066aa6c4c0269b2d4f889c0eba157233a353053cea"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:603a843fea76a595c8f661cd4da4d2281dff1e38c4a836a928eac1a2f8fe88e4"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac76f30d5d3454f4c28826d891fe74d25121a346c69523c9810ebba43f3b1cec"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e3b1d4b1b3f6082849f9b28427ef147a5b46a6132a3dbaf9ca1baa40c88609"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2761f71faed820e25ec62eacba670d1b5c2709bb131a19fcdbfbb09884593e5a"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a0586cddbf4380e24569b8a05f234e7305717cc8323f50114dfb2051fcbce2a3"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b8c46a8cf53e849eea7090f331ae2202cd0f1ceb090b00f5902c423bd1e11805"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b4a085bd04af7245e140d1b95619fe8abb445a3d7fdf219b3f80c940853268ef"}, + {file = "pydantic_core-2.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:116b326ac82c8b315e7348390f6d30bcfe6e688a7d3f1de50ff7bcc2042a23c2"}, + {file = "pydantic_core-2.20.0.tar.gz", hash = "sha256:366be8e64e0cb63d87cf79b4e1765c0703dd6313c729b22e7b9e378db6b96877"}, ] [package.dependencies] @@ -5659,28 +5689,29 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.4.10" +version = "0.5.0" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.4.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5c2c4d0859305ac5a16310eec40e4e9a9dec5dcdfbe92697acd99624e8638dac"}, - {file = "ruff-0.4.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a79489607d1495685cdd911a323a35871abfb7a95d4f98fc6f85e799227ac46e"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1dd1681dfa90a41b8376a61af05cc4dc5ff32c8f14f5fe20dba9ff5deb80cd6"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c75c53bb79d71310dc79fb69eb4902fba804a81f374bc86a9b117a8d077a1784"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18238c80ee3d9100d3535d8eb15a59c4a0753b45cc55f8bf38f38d6a597b9739"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d8f71885bce242da344989cae08e263de29752f094233f932d4f5cfb4ef36a81"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:330421543bd3222cdfec481e8ff3460e8702ed1e58b494cf9d9e4bf90db52b9d"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e9b6fb3a37b772628415b00c4fc892f97954275394ed611056a4b8a2631365e"}, - {file = "ruff-0.4.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f54c481b39a762d48f64d97351048e842861c6662d63ec599f67d515cb417f6"}, - {file = "ruff-0.4.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:67fe086b433b965c22de0b4259ddfe6fa541c95bf418499bedb9ad5fb8d1c631"}, - {file = "ruff-0.4.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:acfaaab59543382085f9eb51f8e87bac26bf96b164839955f244d07125a982ef"}, - {file = "ruff-0.4.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3cea07079962b2941244191569cf3a05541477286f5cafea638cd3aa94b56815"}, - {file = "ruff-0.4.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:338a64ef0748f8c3a80d7f05785930f7965d71ca260904a9321d13be24b79695"}, - {file = "ruff-0.4.10-py3-none-win32.whl", hash = "sha256:ffe3cd2f89cb54561c62e5fa20e8f182c0a444934bf430515a4b422f1ab7b7ca"}, - {file = "ruff-0.4.10-py3-none-win_amd64.whl", hash = "sha256:67f67cef43c55ffc8cc59e8e0b97e9e60b4837c8f21e8ab5ffd5d66e196e25f7"}, - {file = "ruff-0.4.10-py3-none-win_arm64.whl", hash = "sha256:dd1fcee327c20addac7916ca4e2653fbbf2e8388d8a6477ce5b4e986b68ae6c0"}, - {file = "ruff-0.4.10.tar.gz", hash = "sha256:3aa4f2bc388a30d346c56524f7cacca85945ba124945fe489952aadb6b5cd804"}, + {file = "ruff-0.5.0-py3-none-linux_armv6l.whl", hash = "sha256:ee770ea8ab38918f34e7560a597cc0a8c9a193aaa01bfbd879ef43cb06bd9c4c"}, + {file = "ruff-0.5.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38f3b8327b3cb43474559d435f5fa65dacf723351c159ed0dc567f7ab735d1b6"}, + {file = "ruff-0.5.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7594f8df5404a5c5c8f64b8311169879f6cf42142da644c7e0ba3c3f14130370"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adc7012d6ec85032bc4e9065110df205752d64010bed5f958d25dbee9ce35de3"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d505fb93b0fabef974b168d9b27c3960714d2ecda24b6ffa6a87ac432905ea38"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dc5cfd3558f14513ed0d5b70ce531e28ea81a8a3b1b07f0f48421a3d9e7d80a"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:db3ca35265de239a1176d56a464b51557fce41095c37d6c406e658cf80bbb362"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1a321c4f68809fddd9b282fab6a8d8db796b270fff44722589a8b946925a2a8"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c4dfcd8d34b143916994b3876b63d53f56724c03f8c1a33a253b7b1e6bf2a7d"}, + {file = "ruff-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81e5facfc9f4a674c6a78c64d38becfbd5e4f739c31fcd9ce44c849f1fad9e4c"}, + {file = "ruff-0.5.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e589e27971c2a3efff3fadafb16e5aef7ff93250f0134ec4b52052b673cf988d"}, + {file = "ruff-0.5.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2ffbc3715a52b037bcb0f6ff524a9367f642cdc5817944f6af5479bbb2eb50e"}, + {file = "ruff-0.5.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:cd096e23c6a4f9c819525a437fa0a99d1c67a1b6bb30948d46f33afbc53596cf"}, + {file = "ruff-0.5.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:46e193b36f2255729ad34a49c9a997d506e58f08555366b2108783b3064a0e1e"}, + {file = "ruff-0.5.0-py3-none-win32.whl", hash = "sha256:49141d267100f5ceff541b4e06552e98527870eafa1acc9dec9139c9ec5af64c"}, + {file = "ruff-0.5.0-py3-none-win_amd64.whl", hash = "sha256:e9118f60091047444c1b90952736ee7b1792910cab56e9b9a9ac20af94cd0440"}, + {file = "ruff-0.5.0-py3-none-win_arm64.whl", hash = "sha256:ed5c4df5c1fb4518abcb57725b576659542bdbe93366f4f329e8f398c4b71178"}, + {file = "ruff-0.5.0.tar.gz", hash = "sha256:eb641b5873492cf9bd45bc9c5ae5320648218e04386a5f0c264ad6ccce8226a1"}, ] [[package]] @@ -5824,18 +5855,18 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "70.1.0" +version = "70.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.1.0-py3-none-any.whl", hash = "sha256:d9b8b771455a97c8a9f3ab3448ebe0b29b5e105f1228bba41028be116985a267"}, - {file = "setuptools-70.1.0.tar.gz", hash = "sha256:01a1e793faa5bd89abc851fa15d0a0db26f160890c7102cd8dce643e886b47f5"}, + {file = "setuptools-70.2.0-py3-none-any.whl", hash = "sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05"}, + {file = "setuptools-70.2.0.tar.gz", hash = "sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shellingham" diff --git a/pyproject.toml b/pyproject.toml index 59db78d..5188268 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "graphrag-solution-accelerator" -version = "0.1.0" +version = "0.0.1" description = "" authors = [ "Josh Bradley ",