From a17c65c4bcc0ab56da3728a6dba6478350e31fe7 Mon Sep 17 00:00:00 2001 From: "heyong.fu" Date: Wed, 6 May 2026 11:35:10 +0800 Subject: [PATCH] feat: rag --- .DS_Store | Bin 0 -> 6148 bytes .env | 2 + .gitignore | 10 + .python-version | 1 + 01pdf.py | 27 + 02word.py | 22 + 03excel.py | 28 + 04ppt.py | 33 + 05html.py | 31 + 06json.py | 22 + 07xml.py | 30 + 08csv.py | 24 + 09text.py | 13 + 10markdown.py | 13 + 11按照字符长度进行分割.py | 23 + 12使用递归字符文本分割器分割.py | 24 + 13transformers.py | 21 + 14语义感知分块策略.py | 90 + 15vector.py | 19 + 16request_vector.py | 25 + README.md | 0 .../data_level0.bin | Bin 0 -> 167600 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 chroma_db/chroma.sqlite3 | Bin 0 -> 200704 bytes chromadb/01ephemeral.py | 31 + chromadb/02persistent.py | 22 + chromadb/03get_collection.py | 23 + chromadb/04add_collection.py | 42 + chromadb/05query_collection.py | 45 + chromadb/06chromadb.py | 64 + .../data_level0.bin | Bin 0 -> 167600 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 .../data_level0.bin | Bin 0 -> 167600 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 chromadb_store/chroma.sqlite3 | Bin 0 -> 225280 bytes example.png | Bin 0 -> 119815 bytes example/example.csv | 5 + example/example.docx | Bin 0 -> 10409 bytes example/example.html | 14 + example/example.json | 5 + example/example.md | 1 + example/example.pdf | Bin 0 -> 6684 bytes example/example.pptx | Bin 0 -> 31754 bytes example/example.txt | 1 + example/example.xlsx | Bin 0 -> 8644 bytes example/example.xml | 12 + main.py | 6 + openai/deepseek.py | 47 + openai/doubao.py | 20 + openai/openai_client.py | 175 + openai/openai_client_a.py | 136 + playweight.py | 25 + pyproject.toml | 23 + qa.js | 9 + qa.py | 117 + .../data_level0.bin | Bin 0 -> 167600 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 rag/chroma_db/chroma.sqlite3 | Bin 0 -> 200704 bytes rag/extract.py | 410 +++ rag/extract_text_auto.py | 57 + rag/llm.py | 55 + rag/query.py | 118 + rag/save.py | 65 + rag/vectorstore.py | 69 + rag/西游记.txt | 1 + text_splitters.py | 5 + uv.lock | 3135 +++++++++++++++++ 75 files changed, 5196 insertions(+) create mode 100644 .DS_Store create mode 100644 .env create mode 100644 .gitignore create mode 100644 .python-version create mode 100644 01pdf.py create mode 100644 02word.py create mode 100644 03excel.py create mode 100644 04ppt.py create mode 100644 05html.py create mode 100644 06json.py create mode 100644 07xml.py create mode 100644 08csv.py create mode 100644 09text.py create mode 100644 10markdown.py create mode 100644 11按照字符长度进行分割.py create mode 100644 12使用递归字符文本分割器分割.py create mode 100644 13transformers.py create mode 100644 14语义感知分块策略.py create mode 100644 15vector.py create mode 100644 16request_vector.py create mode 100644 README.md create mode 100644 chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/data_level0.bin create mode 100644 chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/header.bin create mode 100644 chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/length.bin create mode 100644 chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/link_lists.bin create mode 100644 chroma_db/chroma.sqlite3 create mode 100644 chromadb/01ephemeral.py create mode 100644 chromadb/02persistent.py create mode 100644 chromadb/03get_collection.py create mode 100644 chromadb/04add_collection.py create mode 100644 chromadb/05query_collection.py create mode 100644 chromadb/06chromadb.py create mode 100644 chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/data_level0.bin create mode 100644 chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/header.bin create mode 100644 chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/length.bin create mode 100644 chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/link_lists.bin create mode 100644 chromadb_store/a0cce2ca-f481-474b-887b-ad621960e2e7/data_level0.bin create mode 100644 chromadb_store/a0cce2ca-f481-474b-887b-ad621960e2e7/header.bin create mode 100644 chromadb_store/a0cce2ca-f481-474b-887b-ad621960e2e7/length.bin create mode 100644 chromadb_store/a0cce2ca-f481-474b-887b-ad621960e2e7/link_lists.bin create mode 100644 chromadb_store/chroma.sqlite3 create mode 100644 example.png create mode 100644 example/example.csv create mode 100644 example/example.docx create mode 100644 example/example.html create mode 100644 example/example.json create mode 100644 example/example.md create mode 100644 example/example.pdf create mode 100644 example/example.pptx create mode 100644 example/example.txt create mode 100644 example/example.xlsx create mode 100644 example/example.xml create mode 100644 main.py create mode 100644 openai/deepseek.py create mode 100644 openai/doubao.py create mode 100644 openai/openai_client.py create mode 100644 openai/openai_client_a.py create mode 100644 playweight.py create mode 100644 pyproject.toml create mode 100644 qa.js create mode 100644 qa.py create mode 100644 rag/chroma_db/7903e10c-f89c-483c-a11c-e16f5c77f8bc/data_level0.bin create mode 100644 rag/chroma_db/7903e10c-f89c-483c-a11c-e16f5c77f8bc/header.bin create mode 100644 rag/chroma_db/7903e10c-f89c-483c-a11c-e16f5c77f8bc/length.bin create mode 100644 rag/chroma_db/7903e10c-f89c-483c-a11c-e16f5c77f8bc/link_lists.bin create mode 100644 rag/chroma_db/chroma.sqlite3 create mode 100644 rag/extract.py create mode 100644 rag/extract_text_auto.py create mode 100644 rag/llm.py create mode 100644 rag/query.py create mode 100644 rag/save.py create mode 100644 rag/vectorstore.py create mode 100644 rag/西游记.txt create mode 100644 text_splitters.py create mode 100644 uv.lock diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b73ff0064019fee863f2c647a3830598fc9cd852 GIT binary patch literal 6148 zcmeHKOG-mQ5Ue%<18%Z(IalxoLx?BH1rjj0iBSZ_QQxcg^&4 z&EwVL^=kmO_;`8%<^X1NM;tti&ClIOc2gN6(s{=lcG!Nd-uJuLQT6$Rb8oT57dCkL z&EG%gt>U!ajm~>bTA68GcnoumB&ih-G!+N5k6p#X^ z3QTf4_x}G#zcBxwlC+ZoQs7@HVAJJlx!@~RZymjy_u58Z)4k@K?#6Xc7@{2$qaAbO f?f5>5vab1>=e=-93_9~cC+cUwb&*MdzgFM}lnE7} literal 0 HcmV?d00001 diff --git a/.env b/.env new file mode 100644 index 0000000..1be451a --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +DATABASE_URL=https://ark.cn-beijing.volces.com/api/v3 +API_KEY=79b39c58-56db-4d8a-a8f8-84b95fca08db \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..505a3b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..e4fba21 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/01pdf.py b/01pdf.py new file mode 100644 index 0000000..342a33d --- /dev/null +++ b/01pdf.py @@ -0,0 +1,27 @@ +# 读取pdf文件 +import fitz + + +def extract_pfd_text(pdf_path): + """ + 提取pdf文件中的内容 + 参数:pdf_path(str):pdf文件路径 + 返回: + str:合并后所有页的文本 + """ + # 打开pdf文件 + pdf = fitz.open(pdf_path) + # 存储每一页的信息 + text_list = [] + # 遍历pdf中的每一页 + for page in pdf: + text_list.append(page.get_text("text")) + # 所有内容合并成一个字符串 + all_text = "/n".join(text_list) + return all_text + + +if __name__ == "__main__": + pdf_path = "example/example.pdf" + result_text = extract_pfd_text(pdf_path) + print(result_text) diff --git a/02word.py b/02word.py new file mode 100644 index 0000000..5d24c10 --- /dev/null +++ b/02word.py @@ -0,0 +1,22 @@ +# 读取word文件 +from docx import Document + + +# 定义函数 +def extract_text_from_word(file_path): + """ + 从word文档中提取所有段落,并以字符串返回 + param file_path:文件地址 + return: 返回文本内容字符串 + + """ + # 加载文件 + doc = Document(file_path) + text = "\n".join([para.text for para in doc.paragraphs]) + return text + + +if __name__ == "__main__": + file_path = "example/example.docx" + result = extract_text_from_word(file_path) + print(result) diff --git a/03excel.py b/03excel.py new file mode 100644 index 0000000..55518e4 --- /dev/null +++ b/03excel.py @@ -0,0 +1,28 @@ +import openpyxl + + +def extract_text_from_excel(file_path): + """ + 从Excel文件中提取所有单元格内容为文本,并以字符串返回。 + :param file_path: Excel文件路径 + :return: 文本内容字符串 + """ + # 加载Excel表格 + wb = openpyxl.load_workbook(file_path) + # 获取活动的工作表小 + ws = wb.active + # 初始化用于存储每一行的文本列表 + rows = [] + # 遍历工作区的每一行,values_only = True 标识只获取单元格的值 + for row in ws.iter_rows(values_only=True): + # 将每一行的单元格的数据转为字符串,并用制表符分割,如果为空返回空字符串 + rows.append("\t".join([str(cell) if cell is not None else "" for cell in row])) + all_text = "\n".join(rows) + + return all_text + + +if __name__ == "__main__": + file_path = "example/example.xlsx" + result = extract_text_from_excel(file_path) + print(result) diff --git a/04ppt.py b/04ppt.py new file mode 100644 index 0000000..cad7702 --- /dev/null +++ b/04ppt.py @@ -0,0 +1,33 @@ +# 读取ppt文件 +from pptx import Presentation + +# 定义函数,提取ppt文件中的所有文本内容 + + +def extract_ppt_text(file_path): + """ + 提取PPT文件中的所有文本内容,并以字符串返回。 + :param file_path: PPT文件路径 + :return: 所有文本内容(以换行符分隔) + """ + # 加载ppt文件 + ppt = Presentation(file_path) + # 初始化用于存储ppt文本的列表 + text_list = [] + # 遍历PPT中的每一页幻灯片 + for slide in ppt.slides: + # 遍历幻灯片中的每一个形状 + for shape in slide.shapes: + # 判断该形状是否有text属性(即是否包含文本) + if hasattr(shape, "text"): + # 如果有文本添加到text_list中 + text_list.append(shape.text) + + all_text = "\n".join(text_list) + return all_text + + +if __name__ == "__main__": + file_path = "example/example.pptx" + result = extract_ppt_text(file_path) + print(result) diff --git a/05html.py b/05html.py new file mode 100644 index 0000000..cceb5eb --- /dev/null +++ b/05html.py @@ -0,0 +1,31 @@ +# 读取html文件 + +from bs4 import BeautifulSoup + + +def extract_text_html(file_path): + """ + 从指定HTML文件中提取所有文本内容 + + 参数: + file_path (str): HTML文件路径 + + 返回: + str: 提取的文本内容 + + """ + + with open(file_path, "r", encoding="utf-8") as f: + # 读取整个html文件内容字符串 + html = f.read() + # 使用BeautifulSoup解析html内容 + soup = BeautifulSoup(html, "html.parser") + # 提取所有文本内容,使用换行符分割 + text = soup.get_text(separator="\n") + return text + + +if __name__ == "__main__": + file_path = "example/example.html" + result = extract_text_html(file_path) + print(result) diff --git a/06json.py b/06json.py new file mode 100644 index 0000000..07a5f8d --- /dev/null +++ b/06json.py @@ -0,0 +1,22 @@ +# 读取json文件 +import json + + +def read_json(file_path): + """ + 读取指定JSON文件并以格式化字符串打印内容 + :param file_path: JSON文件路径 + """ + # 以utf-8的格式打开指定的json文件 + with open(file_path, "r", encoding="utf-8") as f: + # 使用json.load读取文件内容为python对象 + data = json.load(f) + # 使用json.dumps将python对象格式化为带有缩进的字符串,确保中文正常显示 + text = json.dumps(data, ensure_ascii=False, indent=2) + return text + + +if __name__ == "__main__": + file_path = "example/example.json" + result = read_json(file_path) + print(result) diff --git a/07xml.py b/07xml.py new file mode 100644 index 0000000..e09e896 --- /dev/null +++ b/07xml.py @@ -0,0 +1,30 @@ +# 读取xml文件格式 + +from lxml import etree + + +def extract_xml_text(file_path): + """ + 读取XML文件并提取所有文本内容 + + 参数: + file_path (str): XML文件路径 + + 返回: + str: 提取的所有文本内容 + """ + # 以utf-8格式打开文件 + with open(file_path, "r", encoding="utf-8") as f: + # 读取xml文件的全部字符串 + xml = f.read() + # 将字符串形式的xml内容解析为xms树结构 + root = etree.fromstring(xml.encode("utf-8")) + # 遍历xml树,提取所有文本内容,并用空格链接 + text = " ".join(root.itertext()) + return text + + +if __name__ == "__main__": + file_path = "example/example.xml" + result = extract_xml_text(file_path) + print(result) diff --git a/08csv.py b/08csv.py new file mode 100644 index 0000000..f51ab84 --- /dev/null +++ b/08csv.py @@ -0,0 +1,24 @@ +# 去读csv文件 +import csv + + +def read_csv_to_text(filename): + """ + 读取CSV文件内容,并将每行用逗号连接,所有行用换行符拼接成一个字符串返回。 + """ + # 以uft-8格式打开文件 + with open(filename, "r", encoding="utf-8") as f: + # 创建csv.reader对象,按行读取csv内容 + reader = csv.reader(f) + # 对每一行,用逗号链接各列,生成字符串列表 + rows = [", ".join(row) for row in reader] + + # 拼接所有文本 + all_text = "\n".join(rows) + return all_text + + +if __name__ == "__main__": + filename = "example/example.csv" + result = read_csv_to_text(filename) + print(result) diff --git a/09text.py b/09text.py new file mode 100644 index 0000000..aa3cd4b --- /dev/null +++ b/09text.py @@ -0,0 +1,13 @@ +# 读取纯文本内容 + + +def read_text_file(filename): + with open(filename, "r", encoding="utf-8") as f: + text = f.read() + return text + + +if __name__ == "__main__": + filename = "example/example.txt" + result = read_text_file(filename) + print(result) diff --git a/10markdown.py b/10markdown.py new file mode 100644 index 0000000..d0d7a22 --- /dev/null +++ b/10markdown.py @@ -0,0 +1,13 @@ +# 读取纯文本内容 + + +def read_markdown_file(filename): + with open(filename, "r", encoding="utf-8") as f: + text = f.read() + return text + + +if __name__ == "__main__": + filename = "example/example.md" + result = read_markdown_file(filename) + print(result) diff --git a/11按照字符长度进行分割.py b/11按照字符长度进行分割.py new file mode 100644 index 0000000..3c2b8b1 --- /dev/null +++ b/11按照字符长度进行分割.py @@ -0,0 +1,23 @@ +from langchain_text_splitters import CharacterTextSplitter + + +# 创建字符分割器实例,设置每个块最大长度为100个字符,不重叠,使用空字符串进行分割 +text_splitters = CharacterTextSplitter( + chunk_size=100, # 每个块的最大长度是100个字符 + chunk_overlap=0, # 块之间不重叠 + separator="", # 使用空白字符串作为分隔符 +) + +# 构建一个长文本 +document = f"""{"1"*100}{"2"*100}{"3"*100}""" + +# 使用分割器split_text方法,将原始文本切割成若干个字块 +texts = text_splitters.split_text(document) + +# 打印原始文本长度 +print(f"原文长度{len(document)}") +# 打印分割后的块的数量 +print(f"分割为{texts}个块") + +for i, text in enumerate(texts, 1): + print(f"\n块{i}({len(text)}字符):{repr(text)}") diff --git a/12使用递归字符文本分割器分割.py b/12使用递归字符文本分割器分割.py new file mode 100644 index 0000000..6ca98ac --- /dev/null +++ b/12使用递归字符文本分割器分割.py @@ -0,0 +1,24 @@ +# RecursiveCharacterTextSplitter 是 LangChain 中最常用的文本分割器,它实现了基于文本结构的分割策略。对于大多数应用场景,这是推荐的默认选择。 + +# 为什么推荐? + +# 在保持上下文完整性和管理块大小之间取得了良好的平衡 +# 开箱即用,默认配置就能很好地工作 +# 只有在需要针对特定应用进行微调时才需要调整参数 + +from langchain_text_splitters import RecursiveCharacterTextSplitter + +# 创建递归文本分割器对象,指定参数 +# chunk_size 表示每块最大允许的字符数100 +# chunk_overlap 表示块与块之间没有重叠(重叠字符数0) +text_splitters = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=0) + + +document = f"""{"1"*100}\n{"2"*99}\n\n{"3"*99}\n{"4"*99}""" + +# 使用文本分割器的split_text 方法将document进行分割成多个字符串的块 +texts = text_splitters.split_text(document) +print(f"共分割出{len(texts)}个块") + +for i, text in enumerate(texts): + print(f"\n块{i}({len(text)}字符):{repr(text)}") diff --git a/13transformers.py b/13transformers.py new file mode 100644 index 0000000..8ffcace --- /dev/null +++ b/13transformers.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# 说明:验证 Sentence Transformers 是否安装成功 + +# 说明:导入 SentenceTransformer 类 +from sentence_transformers import SentenceTransformer + +# 说明:尝试加载一个轻量级模型进行测试 +# "all-MiniLM-L6-v2" 是一个小型的通用模型,适合快速测试 +# 首次运行时会自动下载模型(可能需要一些时间) +print("正在加载模型进行测试...") +model = SentenceTransformer("all-MiniLM-L6-v2") + +# 说明:对一个简单的句子进行编码测试 +sentence = "这是一个测试句子" +embedding = model.encode(sentence) + +# 说明:检查嵌入向量的形状 +print(f"安装成功!嵌入向量维度:{embedding.shape}") +print(f"前 5 个维度值:{embedding[:5]}") + +# 说明:如果没有报错并输出了维度信息,说明安装成功 diff --git a/14语义感知分块策略.py b/14语义感知分块策略.py new file mode 100644 index 0000000..4f01f21 --- /dev/null +++ b/14语义感知分块策略.py @@ -0,0 +1,90 @@ +# 正则表达式 +import re + +from sentence_transformers import SentenceTransformer + +import numpy as np + +# 嵌入模型 +model = SentenceTransformer("all-MiniLM-L6-v2") + + +class Semantic_splitter: + def __init__(self, window_size, threshold): + # 设置每个窗口的大小 + self.window_size = window_size + # 设置相邻窗口的相似度的阈值 + self.threshold = threshold + + def create_documents(self, text): + # 使用正则表达式对文本进行分割 + sentences = re.split(r"(。|!|?|\!|\?|\.|\n)", text) + # print(sentences) + # 初始化句子列表 + sents = [] + for i in range(0, len(sentences) - 1, 2): + s = sentences[i].strip() + sentences[i + 1].strip() + if s.strip(): + sents.append(s) + + print(sents) + + # 开始使用滑动窗口依据window_size进行切块 + # 初始化分块列表 + docs = [] + # 起始位置 + start = 0 + while start < len(sents): + # 结束位置 + end = min(start + self.window_size, len(sents)) + window = sents[start:end] + docs.append("".join(window)) + start = end + print(f"{len(docs)}个块") # 分为了3块,1句和2句,3句和4句,5句 + print(docs) + # 计算每个块的向量值 + embeddings = model.encode(docs) + # 初始化分割点列表,起点为0 + split_points = [0] + print(embeddings) + # 计算余弦相似度 + for i in range(1, len(docs)): + sim = np.dot( + embeddings[i - 1], + embeddings[i] + / (np.linalg.norm(embeddings[i - 1]) * np.linalg.norm(embeddings[i])), + ) + if sim < self.threshold: + print(f"相似度低于阈值{self.threshold},在位置{i}添加分割点") + split_points.append(i) + print(split_points) + + # 初始化最终分块列表 + result = [] + for i in range(len(split_points)): + start = split_points[i] + end = split_points[i + 1] if i + 1 < len(split_points) else len(docs) + chunk = "".join(docs[start:end]) + if chunk.strip(): + result.append(chunk) + + return result + + +long_text = """今天天气晴朗,适合去公园散步。 + +量子力学中的叠加态是描述粒子同时处于多个状态的数学工具。 + +Windows命令行中复制文件可以使用copy命令。 + +大熊猫主要以竹子为食,是中国的国宝。 + +欧拉公式被誉为“最美的数学公式”。""" + +semantic_spitter = Semantic_splitter(window_size=2, threshold=0.85) +documents = semantic_spitter.create_documents(long_text) +print(f"总共分割为{len(documents)}个块") + +for i, doc in enumerate(documents, 1): + print(f"---{i}个块") + print(doc) diff --git a/15vector.py b/15vector.py new file mode 100644 index 0000000..a567379 --- /dev/null +++ b/15vector.py @@ -0,0 +1,19 @@ +# 使用豆包来向量化文本 + +import os +from volcenginesdkarkruntime import Ark + +# 初始化客户端 +client = Ark( + # 从环境变量中读取您的方舟API Key + api_key=os.environ.get("ARK_API_KEY", "79b39c58-56db-4d8a-a8f8-84b95fca08db"), + base_url="https://ark.cn-beijing.volces.com/api/v3", +) +response = client.embeddings.create( + model="doubao-embedding-text-240715", + input="Function Calling 是一种将大模型与外部工具和 API 相连的关键功能", + encoding_format="float", +) +# 打印结果 +print(f"向量维度: {len(response.data[0].embedding)}") +print(f"前10维向量: {response.data[0].embedding[:10]}") diff --git a/16request_vector.py b/16request_vector.py new file mode 100644 index 0000000..1b9b0d5 --- /dev/null +++ b/16request_vector.py @@ -0,0 +1,25 @@ +# 使用豆包来向量化文本 + +import requests + +VOLC_EMBEDDINGS_API_URL = "https://ark.cn-beijing.volces.com/api/v3/embeddings" +VOLC_API_KEY = "79b39c58-56db-4d8a-a8f8-84b95fca08db" + + +def get_doubao_embedding(doc): + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {VOLC_API_KEY}", + } + params = {"model": "doubao-embedding-text-240715", "input": doc} + response = requests.post(VOLC_EMBEDDINGS_API_URL, json=params, headers=headers) + if response.status_code == 200: + data = response.json() + embedding = data["data"][0]["embedding"] + return embedding + else: + raise Exception(f"Embedding API error:{response.text}") + + +embedding = get_doubao_embedding("这是一段文档") +print(embedding) diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/data_level0.bin b/chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..5efb1b9f398d64303b911a57992cc0b9721a21dc GIT binary patch literal 167600 zcmeIuF#!Mo0K%a4Pi+kkh(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj ZFkrxd0RsjM7%*VKfB^#r3>Yx*JTQ*V00961 literal 0 HcmV?d00001 diff --git a/chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/header.bin b/chroma_db/427584e0-3ff2-49ee-8827-81873796b70b/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..bb54792626c8e16cb8f8a2b989bd1998268ad65c GIT binary patch literal 100 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

%v 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 M*z+>Cjhe0bU++|iOaK4? literal 0 HcmV?d00001 diff --git a/chromadb/01ephemeral.py b/chromadb/01ephemeral.py new file mode 100644 index 0000000..a410307 --- /dev/null +++ b/chromadb/01ephemeral.py @@ -0,0 +1,31 @@ +# 创建临时客户端 + +import chromadb + +# 创建一个临时的内存客户端(不会保存到硬盘) +client = chromadb.EphemeralClient() + +# 创建一个集合 +collection = client.create_collection(name="test") + +# 添加一条数据 +collection.add( + documents=["今天天气有风", "很冷", "注意保暖", "加油学习"], + ids=["test_1", "test_2", "test_3", "test_4"], +) + +# 查询数据 +results = collection.query(query_texts=["天气"], n_results=2) + +print(f"打印数据结果{results}") + +# { +# 'ids': [['test_1', 'test_2']], +# 'embeddings': None, +# 'documents': [['今天天气有风', '很冷']], +# 'uris': None, +# 'included': ['metadatas', 'documents', 'distances'], +# 'data': None, +# 'metadatas': [[None, None]], +# 'distances': [[0.2988046705722809, 0.9478188753128052]] +# } diff --git a/chromadb/02persistent.py b/chromadb/02persistent.py new file mode 100644 index 0000000..026cdce --- /dev/null +++ b/chromadb/02persistent.py @@ -0,0 +1,22 @@ +# 持久化存储 + +import chromadb + +# 持久化客户端 +# path指定数据存储的路径 +# 如果目录不存在,Chromadb会自动创建 +persistent_client = chromadb.PersistentClient(path="./chromadb_store") + + +# 创建一个集合(类似创建一个表) +collection = persistent_client.create_collection( + name="notes", metadata={"description": "笔记集合"} # 集合名称 # 集合元数据 +) + +# 列出所有集合,确认创建成功 +# list_collections() 返回所有集合的列表 +collections = persistent_client.list_collections() +print(collections) + +for col in collections: + print(f"-{col.name}") diff --git a/chromadb/03get_collection.py b/chromadb/03get_collection.py new file mode 100644 index 0000000..8ce9608 --- /dev/null +++ b/chromadb/03get_collection.py @@ -0,0 +1,23 @@ +# 获取已经存在的集合 + +# 如果集合已经存在,可以使用get_collection() 或者 get_or_create_collection() 方法 + +import chromadb + +# 创建持久化客户端 +client = chromadb.PersistentClient(path="./chromadb_store") + +# 方法1:获取已存在的集合 +try: + existring_collection = client.get_collection(name="notes") + print("集合已经存在", existring_collection.name) +except Exception as e: + print("集合不存在", e) + + +# 方法2:获取或者创建集合(推荐使用) + +collection = client.get_or_create_collection( + name="notes", metadata={"description": "笔记集合"} +) +print(collection.name) diff --git a/chromadb/04add_collection.py b/chromadb/04add_collection.py new file mode 100644 index 0000000..578ebaa --- /dev/null +++ b/chromadb/04add_collection.py @@ -0,0 +1,42 @@ +# 写入数据 + +import chromadb + +# 创建持久化客户端 + +client = chromadb.PersistentClient(path="./chromadb_store") + + +# 创建集合 +collection = client.get_or_create_collection(name="knowledge_base") + +# 准备说明文档 +documents = [ + "机器学习包含监督学习和无监督学习", + "Python 拥有丰富的数据科学生态", + "数据库可以持久化结构化或非结构化数据", +] + +# 准备元组数据 +metadatas = [ + {"topic": "ml", "level": "intro"}, + {"topic": "python", "level": "beginner"}, + {"topic": "database", "level": "intro"}, +] + +# 准备唯一标识 +# ids 是一个列表,每个元素对应一个文档的唯一ID +# 如果不提供,Chromedb会自动生成 +ids = ["doc_1", "doc_2", "doc_3"] + +# 将数据添加到集合中 +# add() 方法会将文档转为向量 +collection.add(documents=documents, metadatas=metadatas, ids=ids) + +# 获取集合列表 +collections = client.list_collections() +print(collections) + +# 查看集合中的文档 +doc_count = collection.count() +print(doc_count) diff --git a/chromadb/05query_collection.py b/chromadb/05query_collection.py new file mode 100644 index 0000000..5d191bf --- /dev/null +++ b/chromadb/05query_collection.py @@ -0,0 +1,45 @@ +# 查询数据 +import chromadb + +# 创建持久化客户端 +client = chromadb.PersistentClient(path="./chromadb_store") + +# 获取已经存在的集合 +collection = client.get_collection(name="knowledge_base") + +# query_texts 查询文本 +# n_results 返回最相似的两条结果 +results = collection.query(query_texts=["如何入门机器学习"], n_results=2) + +# print(results) + +# { +# "ids": [["doc_1", "doc_2"]], +# "embeddings": None, +# "documents": [ +# ["机器学习包含监督学习和无监督学习", "Python 拥有丰富的数据科学生态"] +# ], +# "uris": None, +# "included": ["metadatas", "documents", "distances"], +# "data": None, +# "metadatas": [ +# [{"level": "intro", "topic": "ml"}, {"topic": "python", "level": "beginner"}] +# ], +# "distances": [[0.24633410573005676, 0.8512163758277893]], +# } + +for idx, (doc, metadata, distances, doc_id) in enumerate( + zip( + results["documents"][0], + results["metadatas"][0], + results["distances"][0], + results["ids"][0], + ), + 1, +): + print(f"结果{idx}") + print(f"文档ID{doc_id}") + print(f"匹配文档{doc}") + print(f"附加信息{metadata}") + print(f"相似度距离{distances}") + print("-" * 50) diff --git a/chromadb/06chromadb.py b/chromadb/06chromadb.py new file mode 100644 index 0000000..46c98d3 --- /dev/null +++ b/chromadb/06chromadb.py @@ -0,0 +1,64 @@ +# 完整流程 + +from chromadb import PersistentClient + +# 创建持久化客户端 +client = PersistentClient(path="./chromadb_store") + +# 获取或者创建集合 +collection = client.get_or_create_collection(name="example") + +# 准备说明文档 +documents = [ + "机器学习包含监督学习和无监督学习", + "Python 拥有丰富的数据科学生态", + "数据库可以持久化结构化或非结构化数据", +] +# 创建元数据 +metadatas = [ + {"topic": "ml", "level": "intro"}, + {"topic": "python", "level": "beginner"}, + {"topic": "database", "level": "intro"}, +] + +# ids +ids = ["doc1", "doc2", "dic3"] + +# 写入数据 +collection.add(documents=documents, metadatas=metadatas, ids=ids) + +abc = collection.get(ids=["doc2"]) +print(abc) + +# 查询 +result = collection.query(query_texts=["如何入门机器学习"], n_results=2) + +# print(result) +# { +# "ids": [["doc1", "doc2"]], +# "embeddings": None, +# "documents": [ +# ["机器学习包含监督学习和无监督学习", "Python 拥有丰富的数据科学生态"] +# ], +# "uris": None, +# "included": ["metadatas", "documents", "distances"], +# "data": None, +# "metadatas": [ +# [{"topic": "ml", "level": "intro"}, {"topic": "python", "level": "beginner"}] +# ], +# "distances": [[0.24633410573005676, 0.8512163758277893]], +# } +# for index, (id, doc, metadata, distance) in enumerate( +# zip( +# result["ids"][0], +# result["documents"][0], +# result["metadatas"][0], +# result["distances"][0], +# ), +# 1, +# ): +# print(f"匹配结果 {index}:") +# print(f" 文档:{doc}") +# print(f" 元数据:{metadata}") +# print(f" 距离:{distance:.4f}") +# print() diff --git a/chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/data_level0.bin b/chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..c96ce8444f5b1981c166073d9a6233634bd11065 GIT binary patch literal 167600 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 literal 0 HcmV?d00001 diff --git a/chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/header.bin b/chromadb_store/01d0f2be-8311-4672-9995-686a8c3fda43/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..bb54792626c8e16cb8f8a2b989bd1998268ad65c GIT binary patch literal 100 rcmZQ%K!6kk6U^#ig9x<1XsG;uC=h`16`(YX|F20q)m`+uJY!>*}uB4C7r?w+V=0{PbPmdp`s%9 z`$R>=iUPTkGVqBi_4ZhVO$Xucb<2N~}k3-K;!hCr!cu7x%QYj;PaWJI^ zgKbXZcdXJ}>^PYu<<Axx+ z`#JLVG?`9EMN`(TRcxADUw^;EUFOYtwep%9S0;U%$6eFDZ4;ht#t=QCt-$Wn7&q_h zY`Bfa32y&MZa@9g4%n^#Hm9)pFWkT~O8D???SZ4HfLcJts?SOfQ&R3n?5y8XGs#U& z*Di>NcEJ%57o3;0h~wAA1(#lMp+I+EaO;H^3WuC+u6ai^ezomIBa}$!hJPT`uO}0s zuG{Fn3r-H3+$;aDh{)RXN5{Up_GoMCf<%;`2yey_aLkNLu2FcgaggL&DF zZ*oDVVfXX9+)p<1+|RWX|F(9=wewHBThdR@6_un9&6QQ9kInhky!DJ-it}D|wnyWu zcic}kJlye!BjUW|Snl|ctF2((Vdz&|R`0Z-`%^Sh{GnJh#631nb7N1DIZb2K8kA!k z^K~}dRpa-$54l|VJ^TYsW%I+8Jq+CQ)s1eR@HSC5y)|S?E8aS4_mJ~a4{6lW6LP-- z3Q>Z#MKz{i~vXOMPT+YAF@3MMR1pVg26Fz9HjZajCdv{T0VQcci!;>-UOBg_iZ3j&I1( zD6}^;YLYYb7gXWFhNk?V@$axI;;5BRc)iWedTwxF zAUbgA5lwB?+b^|m_4f}YhT8nJFsAyVN$P8;KM~WdYOTg4jCf>_=4E^^l^9ICi>X0lz%GzWpvw9}1DEtjyH((7Idz(!WmiRwY7_IW-e^px*;ima z(MZy0u_x4Z8X5EMWGX`M-1wIiZ7qd)-Dl+w?0h z&u-X0xncW6eaA%c&fnSeyIcOrIOa{Nb>lk z7sk8AN1M9TN|y*3v$YPYhFf?ni~J z-x4?d`ij-*MeQBUp$%(1hu`*mLuR|+9M&$lh8%6q`HJB22#vUCYUnVH;Lyd`BbJ0F zD*DUflP(IcQEq!tU;uKGS`W7t1)l9UwIR*;D(7Q##=oW4vyzt4P7znv{Y2|%cjc)T z3>MLbmE;wRHdRl_ikILtrU-|Hf4+=z^R5z!hEu`dL!0+i|07<9dceM`9Y6W>|5F*O zRdv)V+UtL*g7)r$($QBf85j52vl@E(C%0+tF1?K9=7x3dWt%YOs5dLO?LXq)vGFhg zYuo-3ZQE3LHunH4on}F?{%TMT$oaCkL1RDX`YvAy#s^|Uxd?Bs5x=SrrJ#{C=K0BY*?f=9AG7&yWZI4AsP$p$we{nd!s~Vk{ab1wb6vYGt~;(fue+`n z+@!%c>>73sJBAB}MX#HO<(uv|+_ZW-LP=WWkLcmJ5lYd~fL7D~kU?wtfIoim6+N8t zhmy3A#9xa>c%_SkQX%W*Zi_`P>;8*+U+A@He9(|fQ8%rpkz8G2s^lUqu!%%0%Bxu1 zAM&fkX{&wm*y^We(yX*Am9-qT*GT_hGIU9&B|Ozf1(&N;RjgdF59AsaOc|kpB%N~l zTibGrH@yyj*wE>;80?Qn^w?*+Ki?XTB|EJ}jGQ+AwtXtxnJdN1etWyU?s1rZ_8Liz zPcH8k2Ub>{D{W!&A0AAm;{CdDiXZ!M)zOHx%j61h^?Xk2q;1r&Yd^!=;6*yF*tGs0 zJ+_~2J@pWk@3cCSd(o`?X@#b~5YxVRgm?ZBP55wFPo${F(Fi5+!Jwyy$0a}4Y8dlS=L0Ge zr($#tSe~GA-VY}2NguYRK=dj%h4RTY!>~u$HmZDiy`<+w2Wa1*iJJ6Z>7!Qh0n);+ zze6_7dCsZ$Q zYdWo7T#}pe&~p7Tt+DduHOQ)jD|)D5er^so#%jtZZb;rn@i9%2IX}(DJiJMLOk3=X zpK4R`_D6b_+AR5tKz@M4qREt>PI<|}L?UkR`?gj*J(+t)^g`4=B8PoMPlo9Vg1(UX z5y`D;mhu4a>B-GLnu%5h{>)J0=AdygO52Vx7g+|DVNfM&3PkUZbTj;LD z8b8*K7>mWP@JD&BWr;X_3ek~}+DFH6ou+t7AK;IpyFsL};mw#;6-SNy2n`$^8l`WF1nQDe%kgo7xR=!+pbb!+FDTqaY&Q zcfX+pbD6ELPRHps_ao0n*3pQ*OV$K~t9G`naK4Ck@L=2s_72#!@R7AAOF<<5V}F7B^D?I+@;E*F3jj%iPBHxrVKC z{=i&q{X$vcw&LNU8Bd#8u9dHy@YJn1Q5SxE?+k8+)wmw(C%>tlr&xnc89%v}0)Ly< z9-OB8rL_xmzqHn@)=Fz8T-DZt<_m(y=<_a2xpF_ku<|-0l}n&Igxn`ZuY)gi&TGbX zk~W7?O=9r-%fBP}Q>Mx$#LX$E9BJ*#FO7uX-#OAZS+;RP+h{f9p%&yWM0hOlw-23G zwQo7(r3hV!M4Z;8h%0v~QZO%$JyZn`Eo(S=ttyr~K~3hbA3ES$Ewes?hA6^*vwy~| zWfS4n@@bmBCklpNvSGRHP4XwNU0jsWdfFih+|-Jw!TG~=leP>m#rdsYucKKrTta)< zx=6XAz3zNjyCUdFzK+^(T<(K3b$L&gTQqNB^ii)5L}*sh!bC?7!-z&`ami(P_{b>d zPn3PpSfrI} z%{xRMP!0VlA4UtgZnU+ODjH=lR<^jLyFq3AM)u9Pkg zUXuGwe~7k=aCp$*gU-V*joz}oM%p(o){&6zhpfA@R|liiV6Mu(m$5bx3KMvHlUqKd z(UMEgr-fQA(boBpKjUa?w6M{K9dS(!wNq1b>%HAqy+6TsM{%nmN!`9c<3ppOlecGB zyQDgLSsRWz5$5&}RU4hTXwOrPqTy`Bc@O71tNiWb$-UP0@zBoEO*bf|E8AhL=hgZe z%_*ALe?fC+eYbEq~VfMhl*G*}*Ht%G;BV9(B2)i0w1}I~B3oVP7d`CTBL>G3k z=*6I+8+?Ih{5mIFf4|{1(cm4?;G1Eihz$KffTk4y=p_!l$mX+bzQ=LrIK;<2 zqle9(Q`~$Zefg!Lp_uXe9Q8xa7Us~)Y`WRJz{dLH$d5Vo0hthl%Vr;&cIL95%>gz~uz7|P&Ty+b z**(FgiQOqS$2s*f$LSop$cF#yYDC$*!saBK6Kt$ME?R#9wf;Q#n;bXHwVdYADK@=q ztlQS-IbZiY(#Pof}hxBl&LrZ=@Ymey^LM%9{gzLc;O|;(C zD*ss9bXTjrt9kEg6?e7ryPD5(i|=Zs6#l;Ug=y^z4_rmU@jxT9#AdNBE=nBfLNn%c z3*W8XS&hW3Y!JSQv(INW(#1oD3CfnL7wvX%??HW(r*C?2MLAXR%QC}eJVWL%pF$b1x9e1Uq_U{+eWouWymP{=IS95r`D@ksTIs9kV0hz?F$!=}b` zk!v0jR;jXFTPS4ut+-mTN7h6kv%`wpk!v4?vVGz?A&!WV+EHR>1+ABnR*5e@#qo3hI9LmB2m6XP1w6w?W}Xt$*X$n#I|QADo-qwxT_r# zS~<6<v&xy2mskldo z&x^%l&RS8n*s)%eFLtdF-o;%$v4y5|WAlWz!F1QsARW<7jdg7IlBJ6sjr8DWXz*-U zY;cRtg=(#~aiXzfZ0&4g$5dlS=BeAR>BgheHOD5j%0+jJSig8q6p5XSbq=v{vA9u` zEu0owLFw?}UpSc-cPP;P3!hIrmIH;};n&8hX9`==t~)Ek9^Xje*sd8*Yr5c0N##iA zc=t?6N80m&9Y3C$@$5<$EEH?S6(e<{yT>+77qz7MofkKx-5-=xj68mG`+M7GE4NHl zZW%u~UDBTR+$pUbdFtl=_x8_LZJnyxIv$!X4Wx@65nEn6^2M9i-n%xtX4ll3U765y z`QCKdoz-Jkf7h|jGUA=~qy3zH&w(+YQXV>nSTDv2&W4dH_+GDy(3p}P%6Gbyx`9i(ss~P$1&ER{% z*_zg=n%42g%(fZtfpp28Rjd4Yc63HEQqF+P$|Lrz^YCzB^^jb1vWYGjE-lbu~=68pcHCiLBG% zb)<`F5h$t}**)4cwtM`_jOU4Tf$1u;d*FV%Y@t>oPLYv=qesWxGlkn}z%aL2pMT2d zA8Q=nJmcx0!Qw6*K0nep`q-F0t!SRA-~m$HO7DUjJzLo_RoOBwrc1Uw za)__~&hlDex@v6H1#g$~wpW#P6pFHu)+IVQl=0$KWpV@^NmSA^k51})bkfI^S~cm% z{M5YX=fy2m7m7+69=^Io&9U}~pxxJZRHRF2JeAf=)f}2GIh^)n-HoDlq&usTEIlLE z3$NL!`KsQHy%QVVH{Nxt^47U&o(+pG2ki(Rtzmb%ct%^7bw4k}7B0tXCLBkF@MfyB z8moEQp?NFc{oFgB8*LwdJY(GIm@eB#^SSgDf8U?fUe)7+a zIB&d|rSE>qK&Qv{kw{h}$*yyYx{>|79oNz3=UX#cGwE$eJKiptTfZUgyk7G2CBui_ zJ@L+oNv)3O``X!xrm2div4hjaEi}GpdJVmM?VW35V%pP`F37qHL?zcoLRZZnTiXLS z{l_lZ7KbPu^Lyz|C+jfwOjbr3vXPHKngK^PFs-)R8}z?U5QdFYA+<$kW?0pVIOl z+U1odq_5O`!LCnf;6+)#RP!a7F16=Jc6~}G{?hi927ar)U4lu1{$uZ0A>+h{*b+W^|dZv{(946PILurG3(u8i?Ay(!?t=UFl`%OEqJ* zuhjp*Zm-g_(pQ?6zS7J!yS&nb_BYo2QJQhszS4lx_LU~2uQVflrDy+E@{?-Hbfp28 ztWRn}jzgsx8L!loeop`L2UdGcseuAnpVUO2W~8swl)ln{Tb7ra$kUAUm73C58Yq!-1uQae$=9g;bX<(g9 zmzv2_Q~F8+>t%kaw~yPtQvb8IuQYSr_LZ7v{@Na&QZw~3U8eIpH1L?LUuq&xGtyUTN?&Q9MV6PE$kQ?TJf(@vc7CN9=_@r`?R2GyHkn^)CQr>R zGQZToCfA$_H$^pys-%KTCfJZJk#$E2UrU$oQ5q-JC}rKa?iPRQ~~1KZ^Dq$cuI zJ7=dW4M<;UM&?)ABh!^;+U@d6@13`OrI~zY+q^M37IZ6 zk*7T}ztR!uD>Y?)rGdS&KBS9(wSN)xgkrR5jw`jlp5dQQ9S^o&$Pey1K+mO yl_sRGG$Vbbru1|A1-rZ{HSrz!e5v<>wy$)e$M%(uglu2wZRslw{AW8|>Hh}sTm!iP literal 0 HcmV?d00001 diff --git a/chromadb_store/a0cce2ca-f481-474b-887b-ad621960e2e7/header.bin b/chromadb_store/a0cce2ca-f481-474b-887b-ad621960e2e7/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..bb54792626c8e16cb8f8a2b989bd1998268ad65c GIT binary patch literal 100 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 S8`}Qt8`@e<23*|z|NjqH?PTo$ literal 0 HcmV?d00001 diff --git a/example.png b/example.png new file mode 100644 index 0000000000000000000000000000000000000000..28e53bbef7715e137b065394055870bcd7f91aae GIT binary patch literal 119815 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%0DXB>QLmzLJ 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 literal 0 HcmV?d00001 diff --git a/example/example.csv b/example/example.csv new file mode 100644 index 0000000..4903d26 --- /dev/null +++ b/example/example.csv @@ -0,0 +1,5 @@ +姓名,年龄,城市,爱好,数学成绩,英语成绩,物理成绩 +张三,18,北京,编程,95,88,90 +李四,20,上海,篮球,87,92,85 +王五,19,广州,音乐,78,85,80 +赵六,21,深圳,绘画,90,89,88 diff --git a/example/example.docx b/example/example.docx new file mode 100644 index 0000000000000000000000000000000000000000..436bf11fd371ce0c89b4c9938eab4ee5bf494650 GIT binary patch literal 10409 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 Ufvo(cYoUN303Vtl@?YQn2jFa0=Kufz literal 0 HcmV?d00001 diff --git a/example/example.html b/example/example.html new file mode 100644 index 0000000..33cd9da --- /dev/null +++ b/example/example.html @@ -0,0 +1,14 @@ + + + + + + + Document + + + + example html + + + \ No newline at end of file diff --git a/example/example.json b/example/example.json new file mode 100644 index 0000000..e0d9063 --- /dev/null +++ b/example/example.json @@ -0,0 +1,5 @@ +{ + "name": "example", + "age": 18, + "city": "Beijing" +} \ No newline at end of file diff --git a/example/example.md b/example/example.md new file mode 100644 index 0000000..3053f95 --- /dev/null +++ b/example/example.md @@ -0,0 +1 @@ +markdown example \ No newline at end of file diff --git a/example/example.pdf b/example/example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..00e3a862892649d0e240605dc92b51aa04b376d7 GIT binary patch literal 6684 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 literal 0 HcmV?d00001 diff --git a/example/example.pptx b/example/example.pptx new file mode 100644 index 0000000000000000000000000000000000000000..c78b6bce6047791208088e410f28439433834eda GIT binary patch literal 31754 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 literal 0 HcmV?d00001 diff --git a/example/example.txt b/example/example.txt new file mode 100644 index 0000000..59764cd --- /dev/null +++ b/example/example.txt @@ -0,0 +1 @@ +text example \ No newline at end of file diff --git a/example/example.xlsx b/example/example.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..eb25d0ee8441633425a2945e36049de4c15756eb GIT binary patch literal 8644 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 u$^P#3Z^{2I=-)H82*xcU#zdzO;` literal 0 HcmV?d00001 diff --git a/example/example.xml b/example/example.xml new file mode 100644 index 0000000..e8148ff --- /dev/null +++ b/example/example.xml @@ -0,0 +1,12 @@ + + + 张三 + 18 + 北京 + 编程 + + 95 + 88 + 90 + + diff --git a/main.py b/main.py new file mode 100644 index 0000000..899a052 --- /dev/null +++ b/main.py @@ -0,0 +1,6 @@ +def main(): + print("Hello from rag!") + + +if __name__ == "__main__": + main() diff --git a/openai/deepseek.py b/openai/deepseek.py new file mode 100644 index 0000000..2d1b3c5 --- /dev/null +++ b/openai/deepseek.py @@ -0,0 +1,47 @@ +from openai import OpenAI + +# client = OpenAI( +# base_url="https://api.deepseek.com/v1", +# api_key="sk-01931083835f4a539e368b209559c52c", +# ) +# response = client.chat.completions.create( +# model="deepseek-chat", +# messages=[ +# {"role": "system", "content": "你是谁"}, +# ], +# stream=True, +# ) + +# for chunk in response: +# if chunk.choices[0].delta.content is not None: +# print(chunk.choices[0].delta.content, end="", flush=True) + +# 调用自己写的 +from openai_client import OpenAI + +client = OpenAI( + base_url="https://api.deepseek.com", + api_key="sk-cc7b983a00f34cec9a12b19b64060f68", +) +response = client.chat.completions.create( + model="deepseek-chat", + messages=[ + {"role": "system", "content": "西游记作者是谁"}, + ], + stream=True, +) +# print(response.choices[0].message.content) +for chunk in response: + if chunk.choices[0].delta.content is not None: + print(chunk.choices[0].delta.content, end="", flush=True) + + +# ChatCompletion( +# id='f8170d75-875c-4b46-bd3b-82a93d6be4c0', +# choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='你好!我是DeepSeek,一个由深度求索公司创造的AI助手。😊\n\n我是一个纯文本模型,虽然不支持多模态识别功能,但我有文件上传功能,可以帮你处理图像、txt、pdf、ppt、word、excel等文件,并从中读取文字信息进行分析处理。我完全免费使用,拥有128K的上下文长度,还支持联网搜索功能(需要你在Web/App中手动点开联网搜索按键)。\n\n你可以通过官方应用商店下载我的App来使用我。我很乐意帮助你解答问题、处理文档、进行对话交流等等!\n\n有什么我可以帮助你的吗?无论是学习、工作还是日常问题,我都很愿意为你提供帮助!✨', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None))], +# created=1765348625, +# model='deepseek-chat', +# object='chat.completion', +# service_tier=None, +# system_fingerprint='fp_eaab8d114b_prod0820_fp8_kvcache', +# usage=CompletionUsage(completion_tokens=143, prompt_tokens=4, total_tokens=147, completion_tokens_details=None, prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=0), prompt_cache_hit_tokens=0, prompt_cache_miss_tokens=4)) diff --git a/openai/doubao.py b/openai/doubao.py new file mode 100644 index 0000000..0ff9919 --- /dev/null +++ b/openai/doubao.py @@ -0,0 +1,20 @@ +from openai import OpenAI +from dotenv import load_dotenv + +import os +load_dotenv() +DATABASE_URL = os.getenv("DATABASE_URL") +API_KEY = os.getenv("API_KEY") + + +client = OpenAI( + base_url=DATABASE_URL, + api_key=API_KEY, +) +response = client.chat.completions.create( + model="doubao-seed-1-6-lite-251015", + messages=[ + {"role": "system", "content": "你是谁"}, + ], +) +print(response) diff --git a/openai/openai_client.py b/openai/openai_client.py new file mode 100644 index 0000000..a9b73bb --- /dev/null +++ b/openai/openai_client.py @@ -0,0 +1,175 @@ +# 封装统一调用openai的客户端 +from typing import Optional, Iterator +import os + +import requests +import json + + +class Message: + def __init__(self, data): + self.content = data.get("content") + self.role = data.get("role") + + +class Choice: + def __init__(self, choice): + self.index = choice.get("index") + self.finish_reason = choice.get("finish_reason") + self.message = Message(choice.get("message", {})) + + +class ChatCompletionResponse: + def __init__(self, data) -> None: + self.id = data.get("id") + self.object = data.get("object") + self.created = data.get("created") + self.model = data.get("model") + choices_data = data.get("choices", []) + self.choices = [Choice(choice) for choice in choices_data] + usage_data = data.get("usage", {}) + self.usage = { + "prompt_tokens": usage_data.get("prompt_tokens"), + "completion_tokens": usage_data.get("completion_tokens"), + "total_tokens": usage_data.get("total_tokens"), + } + + +class DeltaMessage: + def __init__(self, data) -> None: + self.content = data.get("content") + self.role = data.get("role") + + +class DeltaChoice: + def __init__(self, data): + self.index = data.get("index") + self.finish_reason = data.get("finish_reason") + self.delta = DeltaMessage(data.get("delta", {})) + + +class StreamChunk: + def __init__(self, data): + self.id = data.get("id") + self.object = data.get("object") + self.created = data.get("created") + self.model = data.get("model") + choices_data = data.get("choices", []) + self.choices = [DeltaChoice(choice) for choice in choices_data] + + +class Stream: + def __init__(self, response: requests.Response): + self.response = response + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.response.close() + + def __iter__(self) -> Iterator[StreamChunk]: + # 迭代器方法,逐个返回流式数据块 + try: + # 逐行读取响应的内容(SSE格式) + for line in self.response.iter_lines(decode_unicode=True): + # print(line) + # data: {"id":"3eddf823-6ee6-4b14-a231-b0fd9dbc8087","object":"chat.completion.chunk","created":1765355109,"model":"deepseek-chat","system_fingerprint":"fp_eaab8d114b_prod0820_fp8_kvcache","choices":[{"index":0,"delta":{"content":"观点"},"logprobs":null,"finish_reason":null}]} + if not line.strip(): + continue + if line.startswith("data: "): + json_str = line[6:] + # 如果遇到DONE 结束,说明结束 + if json_str.strip() == "[DONE]": + break + try: + data = json.loads(json_str) + yield StreamChunk(data) + except json.JSONDecodeError: + continue + finally: + self.response.close() + + +class ChatCompletions: + def __init__(self, client): + self._client = client + + def create( + self, + model, + messages, + max_tokens=1024, + temperature=0.7, + stream: bool = False, + **kwargs, + ): + url = f"{self._client.base_url}/chat/completions" + body = { + "model": model, + "messages": messages, + } + if max_tokens is not None: + body["max_tokens"] = max_tokens + if temperature is not None: + body["temperature"] = temperature + if stream: + body["stream"] = True + + # 将其他参数添加到body中 + body.update(kwargs) + headers = { + "Content-Type": "application/json", + "Accept": "application/json", + "Authorization": f"Bearer {self._client.api_key}", + } + if stream: + response = requests.post( + url, + headers=headers, + json=body, + timeout=self._client.timeout, + stream=True, # 告诉openai的服务器我要使用流式输出 + ) + response.raise_for_status() + return Stream(response) + else: + response = requests.post( + url, headers=headers, json=body, timeout=self._client.timeout + ) + # 如果响应状态不是2xx则直接报错 + # response.raise_for_status()是 requests库中一个非常重要的方法,用于自动检查 HTTP 响应状态码,并在状态码表示错误时抛出异常。 + # 如果状态码是 2xx(成功):什么都不做,继续执行 + # 如果状态码是 4xx 或 5xx(客户端或服务器错误):抛出异常 + response.raise_for_status() + return ChatCompletionResponse(response.json()) + + +class ChatResource: + def __init__(self, client): + self.client = client + + @property + def completions(self): + return ChatCompletions(self.client) + + +class OpenAI: + def __init__( + self, + base_url: str = "https://api.deepseek.com/v1", + api_key: Optional[str] = None, + timeout: float = 60.0, + ): + self.api_key = api_key or os.getenv("OPENAI_API_KEY") + if not self.api_key: + raise ValueError( + f"API秘钥未设置,请设置api_key参数或设置环境变量OPENAI_API_KEY" + ) + self.base_url = base_url.rstrip("/") + self.timeout = timeout + + # 可以使用属性.的方式使用方法 + @property + def chat(self): + return ChatResource(self) diff --git a/openai/openai_client_a.py b/openai/openai_client_a.py new file mode 100644 index 0000000..5f80d49 --- /dev/null +++ b/openai/openai_client_a.py @@ -0,0 +1,136 @@ + +from typing import Optional,Iterator +import os +import requests +import json +class Message: + def __init__(self,data): + self.role = data.get('role'), + self.content = data.get('content') +class Choice: + def __init__(self,data): + self.index = data.get('index') + self.message = Message(data.get('message',{})) + self.finish_reason = data.get('finish_reason') +class ChatCompletionResponse: + def __init__(self,data): + self.id = data.get('id') + self.object = data.get('object') + self.created = data.get('created') + self.model = data.get('model') + choices_data = data.get('choices',[]) + self.choices = [ + Choice(choice_data) for choice_data in choices_data + ] + usage_data = data.get('usage',{}) + self.usage = { + "prompt_tokens":usage_data.get("prompt_tokens"), + "completion_tokens":usage_data.get("completion_tokens"), + "total_tokens":usage_data.get("total_tokens"), + } +class DeltaMessage: + def __init__(self,data): + self.content = data.get('content') + self.role = data.get('role') +class DeltaChoice: + def __init__(self,data): + self.index = data.get('index') + self.delta = DeltaMessage(data.get('delta',{}) ) + self.finish_reason = data.get('finish_reason') +#流式响应数据块,表示流式响应中的一个数据块 +class StreamChunk: + def __init__(self,data): + self.id = data.get('id') + self.object = data.get('object') + self.created = data.get('created') + self.model = data.get('model') + choices_data = data.get('choices',[]) + self.choices = [DeltaChoice(choice_data) for choice_data in choices_data] + +class Stream: + def __init__(self,response:requests.Response): + self.response=response + def __enter__(self): + return self + def __exit__(self,exc_type,exc_val,exc_tb): + self.response.close() + def __iter__(self)->Iterator[StreamChunk]: + #迭代器方法,逐个返回流式数据块 + try: + # 逐行读取响应的内容(SSE格式) + for line in self.response.iter_lines(decode_unicode=True): + #print(line) + if not line.strip(): + continue + if line.startswith('data: '): + json_str = line[6:] + # 如果遇到[DONE]说明流式输出结束 + if json_str.strip()=="[DONE]": + break + try: + data = json.loads(json_str) + yield StreamChunk(data) + except json.JSONDecodeError: + continue + + finally: + self.response.close() + +class ChatCompletions: + def __init__(self,client): + self._client = client + def create(self,model,messages,max_tokens=1024,temperature=0.7,stream:bool=False,**kwargs): + url = f"{self._client.base_url}/chat/completions" + body = { + "model":model, + "messages":messages + } + if max_tokens is not None: + body["max_tokens"]=max_tokens + if temperature is not None: + body["temperature"]=temperature + if stream: + body["stream"]=True + #添加额外的参数到请求体中 + body.update(kwargs) + headers = { + "Authorization":f"Bearer {self._client.api_key}", + "Content-Type":"application/json" + } + if stream: + response = requests.post( + url, + headers=headers, + json=body, + timeout=self._client.timeout, + stream=True#告诉openai的服务器我要使用流式输出 + ) + response.raise_for_status() + return Stream(response) + else: + response = requests.post( + url, + headers=headers, + json=body, + timeout=self._client.timeout + ) + # 如果响应的状态不是2XX的话,主抛异常 + response.raise_for_status() + return ChatCompletionResponse(response.json()) + +class ChatResource: + def __init__(self,client): + self._client = client + @property + def completions(self)->ChatCompletions: + return ChatCompletions(self._client) +class OpenAI: + def __init__(self,api_key:Optional[str]=None,base_url:str="https://api.openai.com/v1",timeout:float=60.0): + self.api_key=api_key or os.getenv("OPENAI_API_KEY") + if not self.api_key: + raise ValueError(f"API密钥未设置,请设置api_key参数或者环境变量OPENAI_API_KEY") + self.base_url = base_url.rstrip('/') + self.timeout = timeout + @property + def chat(self)->ChatResource: + return ChatResource(self) diff --git a/playweight.py b/playweight.py new file mode 100644 index 0000000..947b5fb --- /dev/null +++ b/playweight.py @@ -0,0 +1,25 @@ +from playwright.sync_api import sync_playwright + + +def test_website(): + with sync_playwright() as p: + # 启动浏览器 + browser = p.chromium.launch(headless=True) # headless=False 显示浏览器窗口 + page = browser.new_page() + + # 访问网页 + page.goto("https://www.baidu.com") + + # 截图 + page.screenshot(path="example.png") + + # 获取页面标题 + title = page.title() + print(f"页面标题: {title}") + + # 关闭浏览器 + browser.close() + + +if __name__ == "__main__": + test_website() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..744c31e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[project] +name = "rag" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [ + "beautifulsoup4>=4.14.2", + "chromadb>=1.3.5", + "langchain-text-splitters>=1.0.0", + "load-dotenv>=0.1.0", + "lxml>=6.0.2", + "openai>=2.9.0", + "openpyxl>=3.1.5", + "playwright>=1.56.0", + "pymupdf>=1.26.6", + "python-docx>=1.2.0", + "python-dotenv>=1.2.1", + "python-pptx>=1.0.2", + "sentence-transformers>=5.1.2", + "volcengine>=1.0.207", + "volcengine-python-sdk[ark]>=4.0.35", +] diff --git a/qa.js b/qa.js new file mode 100644 index 0000000..67cf3db --- /dev/null +++ b/qa.js @@ -0,0 +1,9 @@ +class Message { + constructor(data) { + this.data = data; + } +} + +const msg = new Message({ o: "000" }); + +console.log(msg.data.o); diff --git a/qa.py b/qa.py new file mode 100644 index 0000000..6d29e0b --- /dev/null +++ b/qa.py @@ -0,0 +1,117 @@ +# for i in range(2, 10): +# print(i) + +# DEFAULT_COLLECTION_NAME = "rag" + + +# def abc(collection_name=DEFAULT_COLLECTION_NAME): +# print(collection_name) + + +# abc() + + +# aaa = " " +# print(not aaa.strip()) + +# o = {"a": 1, "b": 2} +# for value in o.values(): +# # print("k", key) +# print("value", value) + +# from typing import Optional, Iterator + + +# class ChatCompletions: +# def __init__(self, client): +# self._client = client + +# def create(self, model): +# print(f"{model}") + + +# class ChatResource: +# def __init__(self, client): +# self._client = client + +# @property +# def completions(self) -> ChatCompletions: +# return ChatCompletions(self._client) + + +# class OpenAI: +# def __init__( +# self, +# api_key: Optional[str] = None, +# base_url: str = "https://api.openai.com/v1", +# timeout: float = 60.0, +# ): +# self.api_key = "111" +# if not self.api_key: +# raise ValueError( +# f"API密钥未设置,请设置api_key参数或者环境变量OPENAI_API_KEY" +# ) +# self.base_url = base_url.rstrip("/") +# self.timeout = timeout + +# @property +# def chat(self) -> ChatResource: +# return ChatResource(self) + + +# client = OpenAI() +# client.chat.completions.create(model="openai") + + +# class Obj: +# def __init__(self, data): +# self.o = data.get("o") + + +# class Message: +# def __init__(self, data): +# self.obj = Obj(data) + + +# msg = Message({"o": "112"}) +# print(msg.obj.o) + +class Choice: + def __init__(self, data): + self.index = data.get("index") + self.message = data.get("message") + self.finish_reason = data.get("finish_reason") + +class Completion: + def __init__(self, data): + self.id = data.get("id") + self.object = data.get("object") + self.created = data.get("created") + self.model = data.get("model") + self.choices = [Choice(choice) for choice in data.get("choices", [])] + +completion = Completion({"id": "123", "object": "completion", "created": 1718000000, "model": "gpt-3.5-turbo", + "choices": [ + { + "index": 0, + "message": {"role": "assistant", "content": "Hello, how can I help you today?"}, "finish_reason": "stop" + } + ] +}) + +class Student: + def __init__(self, name, age, score): + self.name = name # 实例属性 + self.age = age + self.score = score + + def introduce(self): + print(f"我是{self.name},今年{self.age}岁,分数{self.score}") + + def is_pass(self): + return self.score >= 60 + +# 创建一个学生对象 +stu1 = Student("Alice", 20, 85) +print(stu1.name) + diff --git a/rag/chroma_db/7903e10c-f89c-483c-a11c-e16f5c77f8bc/data_level0.bin b/rag/chroma_db/7903e10c-f89c-483c-a11c-e16f5c77f8bc/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..b6bf73e87739c2fb5e65fba0c9d8b0d6a9eca1c9 GIT binary patch literal 167600 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 literal 0 HcmV?d00001 diff --git a/rag/extract.py b/rag/extract.py new file mode 100644 index 0000000..fe27989 --- /dev/null +++ b/rag/extract.py @@ -0,0 +1,410 @@ +# 导入PyMuPDF库(fitz),用于处理PDF文件 +import fitz # PyMuPDF + +# 导入Optional类型提示 +from typing import Optional + +# 导入日志logging功能 +import logging + +# 获取当前模块日志记录器 +logger = logging.getLogger(__name__) + + +# 定义用于提取PDF所有文本内容的函数 +def extract_pdf_text(pdf_path: str) -> str: + """ + 提取PDF文件中的所有文本内容 + + 参数: + pdf_path (str): PDF文件路径 + + 返回: + str: 合并后的所有页文本 + + 异常: + FileNotFoundError: 文件不存在 + Exception: PDF文件读取失败 + """ + try: + # 打开PDF文件 + pdf = fitz.open(pdf_path) + try: + # 新建一个空列表,用来存储每页文本 + text_list = [] + # 遍历每一页 + for page in pdf: + # 获取当前页文本,并加入列表 + text_list.append(page.get_text("text")) # type: ignore + # 将每页文本用换行拼接成一个大字符串 + all_text = "\n".join(text_list) + # 返回拼接后的文本 + return all_text + finally: + # 确保关闭PDF文件 + pdf.close() + except FileNotFoundError: + # 如果文件未找到,记录错误日志 + logger.error(f"PDF文件不存在: {pdf_path}") + # 向上抛出异常 + raise + except Exception as e: + # 其他异常情况,记录错误信息 + logger.error(f"提取PDF文本失败: {pdf_path}, 错误: {str(e)}") + # 抛出异常 + raise + + +# 导入python-docx的Document类 +from docx import Document + + +# 定义提取Word文档所有段落文本的函数 +def extract_text_from_word(file_path: str) -> str: + """ + 从Word文档中提取所有段落的文本,并以字符串返回。 + + 参数: + file_path (str): Word文档的路径 + + 返回: + str: 文本内容字符串 + + 异常: + FileNotFoundError: 文件不存在 + Exception: Word文件读取失败 + """ + try: + # 加载Word文档 + doc = Document(file_path) + # 取所有段落的文本,并用换行符拼接 + text = "\n".join([para.text for para in doc.paragraphs]) + # 返回拼接好的文本 + return text + except FileNotFoundError: + # 文件未找到时记录日志 + logger.error(f"Word文件不存在: {file_path}") + # 抛出异常 + raise + except Exception as e: + # 其它异常记录错误信息 + logger.error(f"提取Word文本失败: {file_path}, 错误: {str(e)}") + # 抛出异常 + raise + + +# 导入openpyxl库,用于操作Excel文件 +import openpyxl + + +# 定义函数提取Excel文件中的所有文本 +def extract_text_from_excel(file_path: str) -> str: + """ + 从Excel文件中提取所有单元格内容为文本,并以字符串返回。 + + 参数: + file_path (str): Excel文件路径 + + 返回: + str: 文本内容字符串 + + 异常: + FileNotFoundError: 文件不存在 + Exception: Excel文件读取失败 + """ + try: + # 加载Excel工作簿 + wb = openpyxl.load_workbook(file_path, data_only=True) + try: + # 取得活动工作表 + ws = wb.active + # 新建空列表保存每一行字符串 + rows = [] + # 遍历所有行,只取单元格的值 + for row in ws.iter_rows(values_only=True): + # 将每行单元格内容用Tab连接,空值转换为空字符串 + rows.append( + "\t".join([str(cell) if cell is not None else "" for cell in row]) + ) + # 用换行符拼接所有行 + all_text = "\n".join(rows) + # 返回最终文本 + return all_text + finally: + # 关闭Excel工作簿 + wb.close() + except FileNotFoundError: + # 文件未找到时日志记录 + logger.error(f"Excel文件不存在: {file_path}") + raise + except Exception as e: + # 其它异常日志并抛出 + logger.error(f"提取Excel文本失败: {file_path}, 错误: {str(e)}") + raise + + +# 导入python-pptx库的Presentation类 +from pptx import Presentation + + +# 定义函数提取PPT文件所有文本内容 +def extract_ppt_text(file_path: str) -> str: + """ + 提取PPT文件中的所有文本内容,并以字符串返回。 + + 参数: + file_path (str): PPT文件路径 + + 返回: + str: 所有文本内容(以换行符分隔) + + 异常: + FileNotFoundError: 文件不存在 + Exception: PPT文件读取失败 + """ + try: + # 加载PPT文件 + ppt = Presentation(file_path) + # 新建列表存储所有文本内容 + text_list = [] + # 遍历PPT中的每张幻灯片 + for slide in ppt.slides: + # 遍历当前幻灯片的每个形状 + for shape in slide.shapes: + # 判断是否含有文本,且文本不为空 + if hasattr(shape, "text") and shape.text.strip(): + # 有文本时加入结果列表 + text_list.append(shape.text) + # 用换行符拼接所有文本 + all_text = "\n".join(text_list) + # 返回所有文本内容 + return all_text + except FileNotFoundError: + # 文件未找到时日志打印 + logger.error(f"PPT文件不存在: {file_path}") + raise + except Exception as e: + # 处理其它异常 + logger.error(f"提取PPT文本失败: {file_path}, 错误: {str(e)}") + raise + + +# 导入BeautifulSoup用于解析HTML +from bs4 import BeautifulSoup # BeautifulSoup用于解析HTML + + +# 定义函数,从HTML文件提取所有文本内容 +def extract_text_from_html(file_path: str) -> str: + """ + 从指定HTML文件中提取所有文本内容 + + 参数: + file_path (str): HTML文件路径 + + 返回: + str: 提取的文本内容 + + 异常: + FileNotFoundError: 文件不存在 + Exception: HTML文件读取失败 + """ + try: + # 以utf-8编码方式打开HTML文件 + with open(file_path, "r", encoding="utf-8") as f: + # 读取HTML文件所有内容 + html = f.read() + # 创建BeautifulSoup对象 + soup = BeautifulSoup(html, "html.parser") + # 用换行分隔符获取全部文本 + text = soup.get_text(separator="\n", strip=True) + # 返回文本 + return text + except FileNotFoundError: + # 文件不存在,记录日志 + logger.error(f"HTML文件不存在: {file_path}") + raise + except Exception as e: + # 其它异常记录并抛出 + logger.error(f"提取HTML文本失败: {file_path}, 错误: {str(e)}") + raise + + +# 导入内置json库 +import json + + +# 定义提取JSON文件文本内容的函数 +def extract_text_from_json(filename: str) -> str: + """ + 从JSON文件中提取文本内容并格式化为字符串 + + 参数: + filename (str): JSON文件路径 + + 返回: + str: 格式化后的JSON文本内容 + + 异常: + FileNotFoundError: 文件不存在 + json.JSONDecodeError: JSON解析失败 + """ + try: + # 以utf-8编码打开JSON文件 + with open(filename, "r", encoding="utf-8") as f: + # 加载JSON内容到Python对象 + data = json.load(f) + # 格式化JSON为缩进文本,显示中文 + text = json.dumps(data, ensure_ascii=False, indent=2) + # 返回字符串格式JSON内容 + return text + except FileNotFoundError: + # 文件不存在时记录日志 + logger.error(f"JSON文件不存在: {filename}") + raise + except json.JSONDecodeError as e: + # JSON解析异常日志 + logger.error(f"JSON解析失败: {filename}, 错误: {str(e)}") + raise + + +# 导入lxml库的etree模块用于XML处理 +from lxml import etree + + +# 定义函数,从XML文件提取所有文本内容 +def extract_xml_text(file_path: str) -> str: + """ + 读取XML文件并提取所有文本内容 + + 参数: + file_path (str): XML文件路径 + + 返回: + str: 提取的所有文本内容 + + 异常: + FileNotFoundError: 文件不存在 + etree.XMLSyntaxError: XML解析失败 + """ + try: + # 用utf-8编码打开XML文件 + with open(file_path, "r", encoding="utf-8") as f: + # 读取XML字符串内容 + xml = f.read() + # 解析为XML树结构对象 + root = etree.fromstring(xml.encode("utf-8")) + # 遍历所有文本节点并用空格拼接 + text = " ".join(root.itertext()) + # 返回拼接后的文本 + return text + except FileNotFoundError: + # 文件不存在日志 + logger.error(f"XML文件不存在: {file_path}") + raise + except etree.XMLSyntaxError as e: + # XML语法异常日志 + logger.error(f"XML解析失败: {file_path}, 错误: {str(e)}") + raise + except Exception as e: + # 其它异常日志 + logger.error(f"提取XML文本失败: {file_path}, 错误: {str(e)}") + raise + + +# 导入csv模块 +import csv + + +# 定义读取CSV内容并串成字符串的函数 +def read_csv_to_text(filename: str) -> str: + """ + 读取CSV文件内容,并将每行用逗号连接,所有行用换行符拼接成一个字符串返回。 + + 参数: + filename (str): CSV文件路径 + + 返回: + str: 拼接后的字符串 + + 异常: + FileNotFoundError: 文件不存在 + """ + try: + # 以utf-8编码方式打开CSV文件 + with open(filename, "r", encoding="utf-8") as f: + # 创建csv.reader对象逐行读取 + reader = csv.reader(f) + # 每行用逗号拼接并放到列表 + rows = [", ".join(row) for row in reader] + # 用换行拼接所有行 + all_text = "\n".join(rows) + # 返回结果 + return all_text + except FileNotFoundError: + # 文件不存在日志 + logger.error(f"CSV文件不存在: {filename}") + raise + except Exception as e: + # 其它异常日志 + logger.error(f"读取CSV文件失败: {filename}, 错误: {str(e)}") + raise + + +# 定义读取文本文件内容的函数 +def read_text_file(filename: str) -> str: + """ + 读取指定文本文件内容并返回 + + 参数: + filename (str): 文件路径 + + 返回: + str: 文件内容字符串 + + 异常: + FileNotFoundError: 文件不存在 + """ + try: + # 以utf-8只读方式打开文本文件 + with open(filename, "r", encoding="utf-8") as f: + # 读取文件的所有内容 + text = f.read() + # 返回字符串 + return text + except FileNotFoundError: + # 文件未找到记录日志 + logger.error(f"文本文件不存在: {filename}") + raise + except Exception as e: + # 其它异常情况日志记录 + logger.error(f"读取文本文件失败: {filename}, 错误: {str(e)}") + raise + + +# 定义读取Markdown文件内容的函数 +def read_markdown_file(file_path: str) -> str: + """ + 读取Markdown文件内容并返回 + + 参数: + file_path (str): Markdown文件路径 + + 返回: + str: 文件内容字符串 + + 异常: + FileNotFoundError: 文件不存在 + """ + try: + # 以utf-8编码只读打开Markdown文件 + with open(file_path, "r", encoding="utf-8") as f: + # 读取并返回全部内容 + return f.read() + except FileNotFoundError: + # 文件不存在日志 + logger.error(f"Markdown文件不存在: {file_path}") + raise + except Exception as e: + # 其它异常日志 + logger.error(f"读取Markdown文件失败: {file_path}, 错误: {str(e)}") + raise diff --git a/rag/extract_text_auto.py b/rag/extract_text_auto.py new file mode 100644 index 0000000..2b5a1ee --- /dev/null +++ b/rag/extract_text_auto.py @@ -0,0 +1,57 @@ +import os +import logging + +import extract + +logger = logging.getLogger(__name__) + + +def extractTextAuto(file_path: str) -> str: + if not os.path.exists(file_path): + raise FileNotFoundError(f"文件不存在:{file_path}") + # 获取文件拓展名 + ext = os.path.splitext(file_path)[-1].lower() + try: + # 如果是pdf文件 + if ext == ".pdf": + logger.info(f"检测到PDF文件,开始提取文本: {file_path}") + return extract.extract_pdf_text(file_path) + # 如果是Word文档 + elif ext in [".docx", ".doc"]: + logger.info(f"检测到Word文件,开始提取文本: {file_path}") + return extract.extract_text_from_word(file_path) + # 如果是Excel文件 + elif ext in [".xlsx", ".xls"]: + logger.info(f"检测到Excel文件,开始提取文本: {file_path}") + return extract.extract_text_from_excel(file_path) + # 如果是PPT文件 + elif ext in [".pptx", ".ppt"]: + logger.info(f"检测到PPT文件,开始提取文本: {file_path}") + return extract.extract_ppt_text(file_path) + # 如果是HTML文件 + elif ext in [".html", ".htm"]: + logger.info(f"检测到HTML文件,开始提取文本: {file_path}") + return extract.extract_text_from_html(file_path) + # 如果是XML文件 + elif ext == ".xml": + logger.info(f"检测到XML文件,开始提取文本: {file_path}") + return extract.extract_xml_text(file_path) + # 如果是CSV文件 + elif ext == ".csv": + logger.info(f"检测到CSV文件,开始提取文本: {file_path}") + return extract.read_csv_to_text(file_path) + # 如果是JSON文件 + elif ext == ".json": + logger.info(f"检测到JSON文件,开始提取文本: {file_path}") + return extract.extract_text_from_json(file_path) + # 如果是纯文本、Markdown、JSONL文件 + elif ext in [".md", ".txt", ".jsonl"]: + logger.info(f"检测到文本/Markdown/JSONL文件,开始读取: {file_path}") + return extract.read_text_file(file_path) + # 其余不支持的文件类型 + else: + logger.error(f"不支持的文件类型: {ext}") + raise ValueError(f"不支持的文件类型: {ext}") + + except Exception as e: + raise diff --git a/rag/llm.py b/rag/llm.py new file mode 100644 index 0000000..5b5b14e --- /dev/null +++ b/rag/llm.py @@ -0,0 +1,55 @@ +import os + +# Install SDK: pip install 'volcengine-python-sdk[ark]' +# from volcenginesdkarkruntime import Ark + +# client = Ark( +# # The base URL for model invocation +# base_url="https://ark.cn-beijing.volces.com/api/v3/chat/completions", +# api_key=os.getenv("ARK_API_KEY", "79b39c58-56db-4d8a-a8f8-84b95fca08db"), +# ) + +# completion = client.chat.completions.create( +# # Replace with Model ID +# model="doubao-seed-1-6-lite-251015", +# messages=[ +# { +# "role": "system", +# "content": "请将下面内容进行结构化处理:火山方舟是火山引擎推出的大模型服务平台,提供模型训练、推理、评测、精调等全方位功能与服务,并重点支撑大模型生态。 火山方舟通过稳定可靠的安全互信方案,保障模型提供方的模型安全与模型使用者的信息安全,加速大模型能力渗透到千行百业,助力模型提供方和使用者实现商业新增长。", +# }, +# ], +# ) + +# print(completion.choices[0].message.content) + +# 使用豆包来向量化文本 + +import requests + +VOLC_EMBEDDINGS_API_URL = "https://ark.cn-beijing.volces.com/api/v3/chat/completions" +VOLC_API_KEY = "79b39c58-56db-4d8a-a8f8-84b95fca08db" + + +def get_doubao_llm(prompt): + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {VOLC_API_KEY}", + } + params = { + "model": "doubao-seed-1-6-lite-251015", + "messages": [ + {"role": "system", "content": f"{prompt}"}, + ], + } + response = requests.post(VOLC_EMBEDDINGS_API_URL, json=params, headers=headers) + if response.status_code == 200: + data = response.json() + print(data) + message = data["choices"][0]["message"]["content"] + return message + else: + raise Exception(f"Embedding API error:{response.text}") + + +answer = get_doubao_llm("红楼梦的作者是谁") +print(answer) diff --git a/rag/query.py b/rag/query.py new file mode 100644 index 0000000..8fa3eed --- /dev/null +++ b/rag/query.py @@ -0,0 +1,118 @@ +import os +from typing import Optional, List +import logging + +import chromadb +from sentence_transformers import SentenceTransformer + +from llm import get_doubao_llm + +logging.basicConfig( + level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s" +) +logger = logging.getLogger(__name__) + +# 默认集合的名称 +DEFAULT_COLLECTION_NAME = "rag_system" +# 返回几条数据 +DEFAULT_N_RESULTS = 2 +# 默认向量化模型的名称 +DEFAULT_MODEL_NAME = "all-MiniLM-L6-v2" +# 定义向量模型的全局变量 +_mode: Optional[SentenceTransformer] = None +# 定义chromadb客户端 +_client: Optional[chromadb.PersistentClient] = None +_collection: Optional[chromadb.Collection] = None + +# 默认数据库存放路径 +DEFAULT_DB_PATH = "./chroma_db" + + +def _get_model(): + global _mode + if _mode is None: + _mode = SentenceTransformer(DEFAULT_MODEL_NAME) + return _mode + + +def _get_client(): + global _client + if _client is None: + _client = chromadb.PersistentClient(path=DEFAULT_DB_PATH) + return _client + + +def get_query_embedding(query: str) -> List[float]: + model = _get_model() + embedding = model.encode([query])[0].tolist() + return embedding + + +def _get_collection(collection_name: str = DEFAULT_COLLECTION_NAME): + global _collection + if _collection is None: + client = _get_client() + _collection = client.get_or_create_collection(collection_name) + return _collection + + +def retrieve_relate_chunks( + query_embedding: List[float], + n_results: int = DEFAULT_N_RESULTS, + collection_name: str = DEFAULT_COLLECTION_NAME, +): + try: + collection = _get_collection(collection_name) + # print(n_results) + # 去指定集合查找相似度检索,找到数据 + results = collection.query( + query_embeddings=[query_embedding], n_results=n_results + ) + related_chunks = results.get("documents") + if not related_chunks or not related_chunks[0]: + raise ValueError("未找到相关内容") + return related_chunks[0] + + except Exception as e: + logger.error(f"向量检索失败:{str(e)}") + raise + + +def query_rag( + query: str, + n_results: int = DEFAULT_N_RESULTS, + collection_name: str = DEFAULT_COLLECTION_NAME, +): + """ + 查询函数: + query:用户查询的问题 + n_results:检索数量 + collection_name: 集合名字 + """ + # 1. 将查询问题转为向量 + query_embedding = get_query_embedding(query) + # print(query_embedding) + # 基于查询向量做检索 + related_chunks = retrieve_relate_chunks( + query_embedding, n_results, collection_name=collection_name + ) + # print("related_chunks", related_chunks) + content = "\n".join(related_chunks) + prompt = f""" + 已知信息:{content} + 请根据上述内容回答用户问题:{query} + """ + print(prompt) + answer = get_doubao_llm(prompt) + return answer + + +query = "西游记是谁写的" + +try: + answer = query_rag(query, n_results=1) + print(f"答案:", answer) +except ValueError as e: + print(f"错误{e}") +except Exception as e: + print(f"错误{e}") diff --git a/rag/save.py b/rag/save.py new file mode 100644 index 0000000..86eab52 --- /dev/null +++ b/rag/save.py @@ -0,0 +1,65 @@ +from typing import Optional +import logging +import os + + +from langchain_text_splitters import RecursiveCharacterTextSplitter +from vectorstore import save_text_to_db +from extract_text_auto import extractTextAuto + +# 日志打印格式 +logging.basicConfig( + level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s" +) +logger = logging.getLogger(__name__) + +# 默认保存chromadb集合名称 +DEFAULT_COLLECTION_NAME = "rag_system" +# 默认分块大小 +DEFAULT_CHUNK_SIZE = 200 +# 默认分块重叠度 +DEFAULT_CHUNK_OVERLAP = 30 + + +def doc_to_vectorstore( + file_path: str, + collection_name: str = DEFAULT_COLLECTION_NAME, + chunk_size: int = DEFAULT_CHUNK_SIZE, + chunk_overlap: int = DEFAULT_CHUNK_OVERLAP, +) -> int: + """ + 提供文档内容,并分块保存到向量数据库中 + 参数: + file_path:文件路径 + collection_name:集合名称 + chunk_size:分块大小 + chunk_overlap:分块重叠 + """ + # 1. 先加载文件 + text = extractTextAuto(file_path) + print(text) + if not text.strip(): + logger.warning(f"文件内容为空:{file_path}") + return 0 + + # 2.进行分块 + text_splitter = RecursiveCharacterTextSplitter( + chunk_size=chunk_size, chunk_overlap=chunk_overlap + ) + chunks = text_splitter.split_text(text) + logger.info(f"文件分块完成,共分为{len(chunks)}块") + + # 3.将分好的块,保存到向量化,且保存到向量数据库中 + success_count = 0 + for idx, chunk in enumerate(chunks): + try: + save_text_to_db(chunk, collection_name=collection_name) + success_count += 1 + except Exception as e: + logger.error(f"保存第{idx+1}块失败:{str(e)}") + logger.info( + f"文件{file_path}已经完成向量化并入库,成功保存{success_count}/{len(chunks)}" + ) + + +doc_to_vectorstore("西游记.txt") diff --git a/rag/vectorstore.py b/rag/vectorstore.py new file mode 100644 index 0000000..e4779d2 --- /dev/null +++ b/rag/vectorstore.py @@ -0,0 +1,69 @@ +import chromadb +from typing import Optional +import logging +import os +import hashlib + +from sentence_transformers import SentenceTransformer + +logger = logging.getLogger(__name__) + +# 默认集合名称 +DEFAULT_COLLECTION_NAME = "rag" +# 默认向量化模型名称 +DEFAULT_MODEL_NAME = "all-MiniLM-L6-v2" +# 默认数据库存放路径 +DEFAULT_DB_PATH = "./chroma_db" + +# 定义全局mode +_model: Optional[SentenceTransformer] = None +# 定义全局客户端 +_client: Optional[chromadb.PersistentClient] = None + + +def _get_mode(): + global _model + if _model is None: + _model = SentenceTransformer(DEFAULT_MODEL_NAME) + return _model + + +def _get_client(): + global _client + if _client is None: + _client = chromadb.PersistentClient(path=DEFAULT_DB_PATH) + return _client + + +def save_text_to_db(text: str, collection_name=DEFAULT_COLLECTION_NAME): + try: + if not text or not text.strip(): + logger.warning("空文本,已跳过") + return "" + + # 获取模型 + mode = _get_mode() + # 获取客户端 + client = _get_client() + # 创建集合 + collection = client.get_or_create_collection(collection_name) + # 创建hash id + text_id = hashlib.md5(text.encode("utf-8")).hexdigest() + existing = collection.get(ids=[text_id]) + if existing and existing.get("ids"): + logger.info(f"此文本已保存过,跳过保存,id={text_id}") + return text_id + # 生成文本的embedding模型处理结果 ndarray,通过tolist转为列表 + embedding = mode.encode([text])[0].tolist() + + # 添加到向量数据库中 + collection.add( + documents=[text], + embeddings=[embedding], + ids=[text_id], + metadatas=[{"source": "document"}], + ) + return text_id + except Exception as e: + logger.error(f"保存文本向量库失败{str(e)}") + raise diff --git a/rag/西游记.txt b/rag/西游记.txt new file mode 100644 index 0000000..439afa8 --- /dev/null +++ b/rag/西游记.txt @@ -0,0 +1 @@ +西游记作者吴承恩 \ No newline at end of file diff --git a/text_splitters.py b/text_splitters.py new file mode 100644 index 0000000..f79c3c5 --- /dev/null +++ b/text_splitters.py @@ -0,0 +1,5 @@ +# 尝试导入文本分割器类 +from langchain_text_splitters import RecursiveCharacterTextSplitter + +# 如果没有报错,说明安装成功 +print("langchain-text-splitters 安装成功!") diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..4bec5f3 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3135 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version < '3.13'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/78/7d432127c41b50bccba979505f272c16cbcadcc33645d5fa3a738110ae75/anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4", size = 219094, upload-time = "2025-09-23T09:19:12.58Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc", size = 109097, upload-time = "2025-09-23T09:19:10.601Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "backoff" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" }, +] + +[[package]] +name = "bcrypt" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/36/3329e2518d70ad8e2e5817d5a4cac6bba05a47767ec416c7d020a965f408/bcrypt-5.0.0.tar.gz", hash = "sha256:f748f7c2d6fd375cc93d3fba7ef4a9e3a092421b8dbf34d8d4dc06be9492dfdd", size = 25386, upload-time = "2025-09-25T19:50:47.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/85/3e65e01985fddf25b64ca67275bb5bdb4040bd1a53b66d355c6c37c8a680/bcrypt-5.0.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f3c08197f3039bec79cee59a606d62b96b16669cff3949f21e74796b6e3cd2be", size = 481806, upload-time = "2025-09-25T19:49:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/44/dc/01eb79f12b177017a726cbf78330eb0eb442fae0e7b3dfd84ea2849552f3/bcrypt-5.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:200af71bc25f22006f4069060c88ed36f8aa4ff7f53e67ff04d2ab3f1e79a5b2", size = 268626, upload-time = "2025-09-25T19:49:06.723Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cf/e82388ad5959c40d6afd94fb4743cc077129d45b952d46bdc3180310e2df/bcrypt-5.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:baade0a5657654c2984468efb7d6c110db87ea63ef5a4b54732e7e337253e44f", size = 271853, upload-time = "2025-09-25T19:49:08.028Z" }, + { url = "https://files.pythonhosted.org/packages/ec/86/7134b9dae7cf0efa85671651341f6afa695857fae172615e960fb6a466fa/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c58b56cdfb03202b3bcc9fd8daee8e8e9b6d7e3163aa97c631dfcfcc24d36c86", size = 269793, upload-time = "2025-09-25T19:49:09.727Z" }, + { url = "https://files.pythonhosted.org/packages/cc/82/6296688ac1b9e503d034e7d0614d56e80c5d1a08402ff856a4549cb59207/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4bfd2a34de661f34d0bda43c3e4e79df586e4716ef401fe31ea39d69d581ef23", size = 289930, upload-time = "2025-09-25T19:49:11.204Z" }, + { url = "https://files.pythonhosted.org/packages/d1/18/884a44aa47f2a3b88dd09bc05a1e40b57878ecd111d17e5bba6f09f8bb77/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ed2e1365e31fc73f1825fa830f1c8f8917ca1b3ca6185773b349c20fd606cec2", size = 272194, upload-time = "2025-09-25T19:49:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/0e/8f/371a3ab33c6982070b674f1788e05b656cfbf5685894acbfef0c65483a59/bcrypt-5.0.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:83e787d7a84dbbfba6f250dd7a5efd689e935f03dd83b0f919d39349e1f23f83", size = 269381, upload-time = "2025-09-25T19:49:14.308Z" }, + { url = "https://files.pythonhosted.org/packages/b1/34/7e4e6abb7a8778db6422e88b1f06eb07c47682313997ee8a8f9352e5a6f1/bcrypt-5.0.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:137c5156524328a24b9fac1cb5db0ba618bc97d11970b39184c1d87dc4bf1746", size = 271750, upload-time = "2025-09-25T19:49:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1b/54f416be2499bd72123c70d98d36c6cd61a4e33d9b89562c22481c81bb30/bcrypt-5.0.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:38cac74101777a6a7d3b3e3cfefa57089b5ada650dce2baf0cbdd9d65db22a9e", size = 303757, upload-time = "2025-09-25T19:49:17.244Z" }, + { url = "https://files.pythonhosted.org/packages/13/62/062c24c7bcf9d2826a1a843d0d605c65a755bc98002923d01fd61270705a/bcrypt-5.0.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d8d65b564ec849643d9f7ea05c6d9f0cd7ca23bdd4ac0c2dbef1104ab504543d", size = 306740, upload-time = "2025-09-25T19:49:18.693Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c8/1fdbfc8c0f20875b6b4020f3c7dc447b8de60aa0be5faaf009d24242aec9/bcrypt-5.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:741449132f64b3524e95cd30e5cd3343006ce146088f074f31ab26b94e6c75ba", size = 334197, upload-time = "2025-09-25T19:49:20.523Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c1/8b84545382d75bef226fbc6588af0f7b7d095f7cd6a670b42a86243183cd/bcrypt-5.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:212139484ab3207b1f0c00633d3be92fef3c5f0af17cad155679d03ff2ee1e41", size = 352974, upload-time = "2025-09-25T19:49:22.254Z" }, + { url = "https://files.pythonhosted.org/packages/10/a6/ffb49d4254ed085e62e3e5dd05982b4393e32fe1e49bb1130186617c29cd/bcrypt-5.0.0-cp313-cp313t-win32.whl", hash = "sha256:9d52ed507c2488eddd6a95bccee4e808d3234fa78dd370e24bac65a21212b861", size = 148498, upload-time = "2025-09-25T19:49:24.134Z" }, + { url = "https://files.pythonhosted.org/packages/48/a9/259559edc85258b6d5fc5471a62a3299a6aa37a6611a169756bf4689323c/bcrypt-5.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f6984a24db30548fd39a44360532898c33528b74aedf81c26cf29c51ee47057e", size = 145853, upload-time = "2025-09-25T19:49:25.702Z" }, + { url = "https://files.pythonhosted.org/packages/2d/df/9714173403c7e8b245acf8e4be8876aac64a209d1b392af457c79e60492e/bcrypt-5.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9fffdb387abe6aa775af36ef16f55e318dcda4194ddbf82007a6f21da29de8f5", size = 139626, upload-time = "2025-09-25T19:49:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/f8/14/c18006f91816606a4abe294ccc5d1e6f0e42304df5a33710e9e8e95416e1/bcrypt-5.0.0-cp314-cp314t-macosx_10_12_universal2.whl", hash = "sha256:4870a52610537037adb382444fefd3706d96d663ac44cbb2f37e3919dca3d7ef", size = 481862, upload-time = "2025-09-25T19:49:28.365Z" }, + { url = "https://files.pythonhosted.org/packages/67/49/dd074d831f00e589537e07a0725cf0e220d1f0d5d8e85ad5bbff251c45aa/bcrypt-5.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48f753100931605686f74e27a7b49238122aa761a9aefe9373265b8b7aa43ea4", size = 268544, upload-time = "2025-09-25T19:49:30.39Z" }, + { url = "https://files.pythonhosted.org/packages/f5/91/50ccba088b8c474545b034a1424d05195d9fcbaaf802ab8bfe2be5a4e0d7/bcrypt-5.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f70aadb7a809305226daedf75d90379c397b094755a710d7014b8b117df1ebbf", size = 271787, upload-time = "2025-09-25T19:49:32.144Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e7/d7dba133e02abcda3b52087a7eea8c0d4f64d3e593b4fffc10c31b7061f3/bcrypt-5.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:744d3c6b164caa658adcb72cb8cc9ad9b4b75c7db507ab4bc2480474a51989da", size = 269753, upload-time = "2025-09-25T19:49:33.885Z" }, + { url = "https://files.pythonhosted.org/packages/33/fc/5b145673c4b8d01018307b5c2c1fc87a6f5a436f0ad56607aee389de8ee3/bcrypt-5.0.0-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a28bc05039bdf3289d757f49d616ab3efe8cf40d8e8001ccdd621cd4f98f4fc9", size = 289587, upload-time = "2025-09-25T19:49:35.144Z" }, + { url = "https://files.pythonhosted.org/packages/27/d7/1ff22703ec6d4f90e62f1a5654b8867ef96bafb8e8102c2288333e1a6ca6/bcrypt-5.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7f277a4b3390ab4bebe597800a90da0edae882c6196d3038a73adf446c4f969f", size = 272178, upload-time = "2025-09-25T19:49:36.793Z" }, + { url = "https://files.pythonhosted.org/packages/c8/88/815b6d558a1e4d40ece04a2f84865b0fef233513bd85fd0e40c294272d62/bcrypt-5.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:79cfa161eda8d2ddf29acad370356b47f02387153b11d46042e93a0a95127493", size = 269295, upload-time = "2025-09-25T19:49:38.164Z" }, + { url = "https://files.pythonhosted.org/packages/51/8c/e0db387c79ab4931fc89827d37608c31cc57b6edc08ccd2386139028dc0d/bcrypt-5.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a5393eae5722bcef046a990b84dff02b954904c36a194f6cfc817d7dca6c6f0b", size = 271700, upload-time = "2025-09-25T19:49:39.917Z" }, + { url = "https://files.pythonhosted.org/packages/06/83/1570edddd150f572dbe9fc00f6203a89fc7d4226821f67328a85c330f239/bcrypt-5.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7f4c94dec1b5ab5d522750cb059bb9409ea8872d4494fd152b53cca99f1ddd8c", size = 334034, upload-time = "2025-09-25T19:49:41.227Z" }, + { url = "https://files.pythonhosted.org/packages/c9/f2/ea64e51a65e56ae7a8a4ec236c2bfbdd4b23008abd50ac33fbb2d1d15424/bcrypt-5.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0cae4cb350934dfd74c020525eeae0a5f79257e8a201c0c176f4b84fdbf2a4b4", size = 352766, upload-time = "2025-09-25T19:49:43.08Z" }, + { url = "https://files.pythonhosted.org/packages/d7/d4/1a388d21ee66876f27d1a1f41287897d0c0f1712ef97d395d708ba93004c/bcrypt-5.0.0-cp314-cp314t-win32.whl", hash = "sha256:b17366316c654e1ad0306a6858e189fc835eca39f7eb2cafd6aaca8ce0c40a2e", size = 152449, upload-time = "2025-09-25T19:49:44.971Z" }, + { url = "https://files.pythonhosted.org/packages/3f/61/3291c2243ae0229e5bca5d19f4032cecad5dfb05a2557169d3a69dc0ba91/bcrypt-5.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:92864f54fb48b4c718fc92a32825d0e42265a627f956bc0361fe869f1adc3e7d", size = 149310, upload-time = "2025-09-25T19:49:46.162Z" }, + { url = "https://files.pythonhosted.org/packages/3e/89/4b01c52ae0c1a681d4021e5dd3e45b111a8fb47254a274fa9a378d8d834b/bcrypt-5.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dd19cf5184a90c873009244586396a6a884d591a5323f0e8a5922560718d4993", size = 143761, upload-time = "2025-09-25T19:49:47.345Z" }, + { url = "https://files.pythonhosted.org/packages/84/29/6237f151fbfe295fe3e074ecc6d44228faa1e842a81f6d34a02937ee1736/bcrypt-5.0.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:fc746432b951e92b58317af8e0ca746efe93e66555f1b40888865ef5bf56446b", size = 494553, upload-time = "2025-09-25T19:49:49.006Z" }, + { url = "https://files.pythonhosted.org/packages/45/b6/4c1205dde5e464ea3bd88e8742e19f899c16fa8916fb8510a851fae985b5/bcrypt-5.0.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c2388ca94ffee269b6038d48747f4ce8df0ffbea43f31abfa18ac72f0218effb", size = 275009, upload-time = "2025-09-25T19:49:50.581Z" }, + { url = "https://files.pythonhosted.org/packages/3b/71/427945e6ead72ccffe77894b2655b695ccf14ae1866cd977e185d606dd2f/bcrypt-5.0.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:560ddb6ec730386e7b3b26b8b4c88197aaed924430e7b74666a586ac997249ef", size = 278029, upload-time = "2025-09-25T19:49:52.533Z" }, + { url = "https://files.pythonhosted.org/packages/17/72/c344825e3b83c5389a369c8a8e58ffe1480b8a699f46c127c34580c4666b/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d79e5c65dcc9af213594d6f7f1fa2c98ad3fc10431e7aa53c176b441943efbdd", size = 275907, upload-time = "2025-09-25T19:49:54.709Z" }, + { url = "https://files.pythonhosted.org/packages/0b/7e/d4e47d2df1641a36d1212e5c0514f5291e1a956a7749f1e595c07a972038/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2b732e7d388fa22d48920baa267ba5d97cca38070b69c0e2d37087b381c681fd", size = 296500, upload-time = "2025-09-25T19:49:56.013Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c3/0ae57a68be2039287ec28bc463b82e4b8dc23f9d12c0be331f4782e19108/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0c8e093ea2532601a6f686edbc2c6b2ec24131ff5c52f7610dd64fa4553b5464", size = 278412, upload-time = "2025-09-25T19:49:57.356Z" }, + { url = "https://files.pythonhosted.org/packages/45/2b/77424511adb11e6a99e3a00dcc7745034bee89036ad7d7e255a7e47be7d8/bcrypt-5.0.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5b1589f4839a0899c146e8892efe320c0fa096568abd9b95593efac50a87cb75", size = 275486, upload-time = "2025-09-25T19:49:59.116Z" }, + { url = "https://files.pythonhosted.org/packages/43/0a/405c753f6158e0f3f14b00b462d8bca31296f7ecfc8fc8bc7919c0c7d73a/bcrypt-5.0.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:89042e61b5e808b67daf24a434d89bab164d4de1746b37a8d173b6b14f3db9ff", size = 277940, upload-time = "2025-09-25T19:50:00.869Z" }, + { url = "https://files.pythonhosted.org/packages/62/83/b3efc285d4aadc1fa83db385ec64dcfa1707e890eb42f03b127d66ac1b7b/bcrypt-5.0.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:e3cf5b2560c7b5a142286f69bde914494b6d8f901aaa71e453078388a50881c4", size = 310776, upload-time = "2025-09-25T19:50:02.393Z" }, + { url = "https://files.pythonhosted.org/packages/95/7d/47ee337dacecde6d234890fe929936cb03ebc4c3a7460854bbd9c97780b8/bcrypt-5.0.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f632fd56fc4e61564f78b46a2269153122db34988e78b6be8b32d28507b7eaeb", size = 312922, upload-time = "2025-09-25T19:50:04.232Z" }, + { url = "https://files.pythonhosted.org/packages/d6/3a/43d494dfb728f55f4e1cf8fd435d50c16a2d75493225b54c8d06122523c6/bcrypt-5.0.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:801cad5ccb6b87d1b430f183269b94c24f248dddbbc5c1f78b6ed231743e001c", size = 341367, upload-time = "2025-09-25T19:50:05.559Z" }, + { url = "https://files.pythonhosted.org/packages/55/ab/a0727a4547e383e2e22a630e0f908113db37904f58719dc48d4622139b5c/bcrypt-5.0.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3cf67a804fc66fc217e6914a5635000259fbbbb12e78a99488e4d5ba445a71eb", size = 359187, upload-time = "2025-09-25T19:50:06.916Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bb/461f352fdca663524b4643d8b09e8435b4990f17fbf4fea6bc2a90aa0cc7/bcrypt-5.0.0-cp38-abi3-win32.whl", hash = "sha256:3abeb543874b2c0524ff40c57a4e14e5d3a66ff33fb423529c88f180fd756538", size = 153752, upload-time = "2025-09-25T19:50:08.515Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/4190e60921927b7056820291f56fc57d00d04757c8b316b2d3c0d1d6da2c/bcrypt-5.0.0-cp38-abi3-win_amd64.whl", hash = "sha256:35a77ec55b541e5e583eb3436ffbbf53b0ffa1fa16ca6782279daf95d146dcd9", size = 150881, upload-time = "2025-09-25T19:50:09.742Z" }, + { url = "https://files.pythonhosted.org/packages/54/12/cd77221719d0b39ac0b55dbd39358db1cd1246e0282e104366ebbfb8266a/bcrypt-5.0.0-cp38-abi3-win_arm64.whl", hash = "sha256:cde08734f12c6a4e28dc6755cd11d3bdfea608d93d958fffbe95a7026ebe4980", size = 144931, upload-time = "2025-09-25T19:50:11.016Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ba/2af136406e1c3839aea9ecadc2f6be2bcd1eff255bd451dd39bcf302c47a/bcrypt-5.0.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0c418ca99fd47e9c59a301744d63328f17798b5947b0f791e9af3c1c499c2d0a", size = 495313, upload-time = "2025-09-25T19:50:12.309Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ee/2f4985dbad090ace5ad1f7dd8ff94477fe089b5fab2040bd784a3d5f187b/bcrypt-5.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddb4e1500f6efdd402218ffe34d040a1196c072e07929b9820f363a1fd1f4191", size = 275290, upload-time = "2025-09-25T19:50:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/e4/6e/b77ade812672d15cf50842e167eead80ac3514f3beacac8902915417f8b7/bcrypt-5.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7aeef54b60ceddb6f30ee3db090351ecf0d40ec6e2abf41430997407a46d2254", size = 278253, upload-time = "2025-09-25T19:50:15.089Z" }, + { url = "https://files.pythonhosted.org/packages/36/c4/ed00ed32f1040f7990dac7115f82273e3c03da1e1a1587a778d8cea496d8/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f0ce778135f60799d89c9693b9b398819d15f1921ba15fe719acb3178215a7db", size = 276084, upload-time = "2025-09-25T19:50:16.699Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c4/fa6e16145e145e87f1fa351bbd54b429354fd72145cd3d4e0c5157cf4c70/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a71f70ee269671460b37a449f5ff26982a6f2ba493b3eabdd687b4bf35f875ac", size = 297185, upload-time = "2025-09-25T19:50:18.525Z" }, + { url = "https://files.pythonhosted.org/packages/24/b4/11f8a31d8b67cca3371e046db49baa7c0594d71eb40ac8121e2fc0888db0/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8429e1c410b4073944f03bd778a9e066e7fad723564a52ff91841d278dfc822", size = 278656, upload-time = "2025-09-25T19:50:19.809Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/79f11865f8078e192847d2cb526e3fa27c200933c982c5b2869720fa5fce/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:edfcdcedd0d0f05850c52ba3127b1fce70b9f89e0fe5ff16517df7e81fa3cbb8", size = 275662, upload-time = "2025-09-25T19:50:21.567Z" }, + { url = "https://files.pythonhosted.org/packages/d4/8d/5e43d9584b3b3591a6f9b68f755a4da879a59712981ef5ad2a0ac1379f7a/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:611f0a17aa4a25a69362dcc299fda5c8a3d4f160e2abb3831041feb77393a14a", size = 278240, upload-time = "2025-09-25T19:50:23.305Z" }, + { url = "https://files.pythonhosted.org/packages/89/48/44590e3fc158620f680a978aafe8f87a4c4320da81ed11552f0323aa9a57/bcrypt-5.0.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:db99dca3b1fdc3db87d7c57eac0c82281242d1eabf19dcb8a6b10eb29a2e72d1", size = 311152, upload-time = "2025-09-25T19:50:24.597Z" }, + { url = "https://files.pythonhosted.org/packages/5f/85/e4fbfc46f14f47b0d20493669a625da5827d07e8a88ee460af6cd9768b44/bcrypt-5.0.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:5feebf85a9cefda32966d8171f5db7e3ba964b77fdfe31919622256f80f9cf42", size = 313284, upload-time = "2025-09-25T19:50:26.268Z" }, + { url = "https://files.pythonhosted.org/packages/25/ae/479f81d3f4594456a01ea2f05b132a519eff9ab5768a70430fa1132384b1/bcrypt-5.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3ca8a166b1140436e058298a34d88032ab62f15aae1c598580333dc21d27ef10", size = 341643, upload-time = "2025-09-25T19:50:28.02Z" }, + { url = "https://files.pythonhosted.org/packages/df/d2/36a086dee1473b14276cd6ea7f61aef3b2648710b5d7f1c9e032c29b859f/bcrypt-5.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:61afc381250c3182d9078551e3ac3a41da14154fbff647ddf52a769f588c4172", size = 359698, upload-time = "2025-09-25T19:50:31.347Z" }, + { url = "https://files.pythonhosted.org/packages/c0/f6/688d2cd64bfd0b14d805ddb8a565e11ca1fb0fd6817175d58b10052b6d88/bcrypt-5.0.0-cp39-abi3-win32.whl", hash = "sha256:64d7ce196203e468c457c37ec22390f1a61c85c6f0b8160fd752940ccfb3a683", size = 153725, upload-time = "2025-09-25T19:50:34.384Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b9/9d9a641194a730bda138b3dfe53f584d61c58cd5230e37566e83ec2ffa0d/bcrypt-5.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:64ee8434b0da054d830fa8e89e1c8bf30061d539044a39524ff7dec90481e5c2", size = 150912, upload-time = "2025-09-25T19:50:35.69Z" }, + { url = "https://files.pythonhosted.org/packages/27/44/d2ef5e87509158ad2187f4dd0852df80695bb1ee0cfe0a684727b01a69e0/bcrypt-5.0.0-cp39-abi3-win_arm64.whl", hash = "sha256:f2347d3534e76bf50bca5500989d6c1d05ed64b440408057a37673282c654927", size = 144953, upload-time = "2025-09-25T19:50:37.32Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/77/e9/df2358efd7659577435e2177bfa69cba6c33216681af51a707193dec162a/beautifulsoup4-4.14.2.tar.gz", hash = "sha256:2a98ab9f944a11acee9cc848508ec28d9228abfd522ef0fad6a02a72e0ded69e", size = 625822, upload-time = "2025-09-29T10:05:42.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl", hash = "sha256:5ef6fa3a8cbece8488d66985560f97ed091e22bbc4e9c2338508a9d5de6d4515", size = 106392, upload-time = "2025-09-29T10:05:43.771Z" }, +] + +[[package]] +name = "build" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "os_name == 'nt'" }, + { name = "packaging" }, + { name = "pyproject-hooks" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/1c/23e33405a7c9eac261dff640926b8b5adaed6a6eb3e1767d441ed611d0c0/build-1.3.0.tar.gz", hash = "sha256:698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397", size = 48544, upload-time = "2025-08-01T21:27:09.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/8c/2b30c12155ad8de0cf641d76a8b396a16d2c36bc6d50b621a62b7c4567c1/build-1.3.0-py3-none-any.whl", hash = "sha256:7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4", size = 23382, upload-time = "2025-08-01T21:27:07.844Z" }, +] + +[[package]] +name = "cachetools" +version = "6.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" }, +] + +[[package]] +name = "certifi" +version = "2025.11.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, + { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, + { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, + { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, + { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, + { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, + { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, + { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, + { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, + { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "chromadb" +version = "1.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bcrypt" }, + { name = "build" }, + { name = "grpcio" }, + { name = "httpx" }, + { name = "importlib-resources" }, + { name = "jsonschema" }, + { name = "kubernetes" }, + { name = "mmh3" }, + { name = "numpy" }, + { name = "onnxruntime" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-grpc" }, + { name = "opentelemetry-sdk" }, + { name = "orjson" }, + { name = "overrides" }, + { name = "posthog" }, + { name = "pybase64" }, + { name = "pydantic" }, + { name = "pypika" }, + { name = "pyyaml" }, + { name = "rich" }, + { name = "tenacity" }, + { name = "tokenizers" }, + { name = "tqdm" }, + { name = "typer" }, + { name = "typing-extensions" }, + { name = "uvicorn", extra = ["standard"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/24/b9/78cc62bcfe34cebc61026fa76829bc303bb8d5fcaee5576fae3c64543452/chromadb-1.3.5.tar.gz", hash = "sha256:ca45b9423b083f5dd49373f89af23ff9d94fe6884233cd826e8b1a50abe74166", size = 1921436, upload-time = "2025-11-18T10:08:31.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/3b/1808d649037164cdf860b248a3468ab4c07b414d08d61ef39c789406cf0b/chromadb-1.3.5-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d4e5b3bd1bf879a4fffa5644ccb175b98ee18799d8447140f3f893d350068d1b", size = 20613684, upload-time = "2025-11-18T10:08:29.376Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c7/7d251fdc15969bc00dcd70ca973ad6f1e2f1f25e8e097dbec75ffcc7a210/chromadb-1.3.5-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:59d35ea15a5765da751e2bc0804054b7ade81f564119c88a1b3310c18c696d92", size = 19897327, upload-time = "2025-11-18T10:08:26.447Z" }, + { url = "https://files.pythonhosted.org/packages/93/11/6af17eb3eebaf9afd410b03d5bb1a8c1054bd0377502022005c22d0d949f/chromadb-1.3.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e5fad35a4e686668efa956d576e4daea511a42225dbe9c975d9b2889608f53", size = 20476163, upload-time = "2025-11-18T10:08:20.144Z" }, + { url = "https://files.pythonhosted.org/packages/84/66/3ac136143658714adab6a8717d22a44d11e46a01bb7896add9653af39f4f/chromadb-1.3.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86d33e9b1153bc1eda48f98fc9c2d54d7dac2a460198a58aec715206d234c7f1", size = 21389003, upload-time = "2025-11-18T10:08:23.293Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2b/d99e8559c6cf6d615e768367cd8c45b168cfa00cb3ac4c6032ddbcfc396d/chromadb-1.3.5-cp39-abi3-win_amd64.whl", hash = "sha256:5ecf6345025abf84095fd9a65bb9855f2019c63e0f42373720aecabadce08cf0", size = 21685628, upload-time = "2025-11-18T10:08:33.573Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coloredlogs" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "humanfriendly" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/c7/eed8f27100517e8c0e6b923d5f0845d0cb99763da6fdee00478f91db7325/coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0", size = 278520, upload-time = "2021-06-11T10:22:45.202Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934", size = 46018, upload-time = "2021-06-11T10:22:42.561Z" }, +] + +[[package]] +name = "cryptography" +version = "46.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" }, + { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" }, + { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" }, + { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" }, + { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" }, + { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" }, + { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" }, + { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" }, + { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" }, + { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" }, + { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" }, + { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" }, + { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" }, + { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" }, + { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" }, + { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" }, + { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" }, + { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" }, + { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" }, + { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" }, + { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" }, + { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" }, + { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" }, + { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" }, + { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" }, + { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" }, + { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" }, + { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" }, + { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" }, + { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" }, + { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" }, + { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, +] + +[[package]] +name = "durationpy" +version = "0.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/a4/e44218c2b394e31a6dd0d6b095c4e1f32d0be54c2a4b250032d717647bab/durationpy-0.10.tar.gz", hash = "sha256:1fa6893409a6e739c9c72334fc65cca1f355dbdd93405d30f726deb5bde42fba", size = 3335, upload-time = "2025-05-17T13:52:37.26Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/0d/9feae160378a3553fa9a339b0e9c1a048e147a4127210e286ef18b730f03/durationpy-0.10-py3-none-any.whl", hash = "sha256:3b41e1b601234296b4fb368338fdcd3e13e0b4fb5b67345948f4f2bf9868b286", size = 3922, upload-time = "2025-05-17T13:52:36.463Z" }, +] + +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + +[[package]] +name = "filelock" +version = "3.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" }, +] + +[[package]] +name = "flatbuffers" +version = "25.9.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/1f/3ee70b0a55137442038f2a33469cc5fddd7e0ad2abf83d7497c18a2b6923/flatbuffers-25.9.23.tar.gz", hash = "sha256:676f9fa62750bb50cf531b42a0a2a118ad8f7f797a511eda12881c016f093b12", size = 22067, upload-time = "2025-09-24T05:25:30.106Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/1b/00a78aa2e8fbd63f9af08c9c19e6deb3d5d66b4dda677a0f61654680ee89/flatbuffers-25.9.23-py2.py3-none-any.whl", hash = "sha256:255538574d6cb6d0a79a17ec8bc0d30985913b87513a01cce8bcdb6b4c44d0e2", size = 30869, upload-time = "2025-09-24T05:25:28.912Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/7f/2747c0d332b9acfa75dc84447a066fdf812b5a6b8d30472b74d309bfe8cb/fsspec-2025.10.0.tar.gz", hash = "sha256:b6789427626f068f9a83ca4e8a3cc050850b6c0f71f99ddb4f542b8266a26a59", size = 309285, upload-time = "2025-10-30T14:58:44.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/02/a6b21098b1d5d6249b7c5ab69dde30108a71e4e819d4a9778f1de1d5b70d/fsspec-2025.10.0-py3-none-any.whl", hash = "sha256:7c7712353ae7d875407f97715f0e1ffcc21e33d5b24556cb1e090ae9409ec61d", size = 200966, upload-time = "2025-10-30T14:58:42.53Z" }, +] + +[[package]] +name = "google" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/97/b49c69893cddea912c7a660a4b6102c6b02cd268f8c7162dd70b7c16f753/google-3.0.0.tar.gz", hash = "sha256:143530122ee5130509ad5e989f0512f7cb218b2d4eddbafbad40fd10e8d8ccbe", size = 44978, upload-time = "2020-07-11T14:50:45.678Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/35/17c9141c4ae21e9a29a43acdfd848e3e468a810517f862cad07977bf8fe9/google-3.0.0-py2.py3-none-any.whl", hash = "sha256:889cf695f84e4ae2c55fbc0cfdaf4c1e729417fa52ab1db0485202ba173e4935", size = 45258, upload-time = "2020-07-11T14:49:58.287Z" }, +] + +[[package]] +name = "google-auth" +version = "2.43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/ef/66d14cf0e01b08d2d51ffc3c20410c4e134a1548fc246a6081eae585a4fe/google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483", size = 296359, upload-time = "2025-11-06T00:13:36.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, +] + +[[package]] +name = "greenlet" +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260, upload-time = "2025-08-07T13:24:33.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, + { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, + { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185, upload-time = "2025-08-07T13:45:27.624Z" }, + { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926, upload-time = "2025-08-07T13:53:15.251Z" }, + { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839, upload-time = "2025-08-07T13:18:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142, upload-time = "2025-08-07T13:18:22.981Z" }, + { url = "https://files.pythonhosted.org/packages/27/45/80935968b53cfd3f33cf99ea5f08227f2646e044568c9b1555b58ffd61c2/greenlet-3.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee7a6ec486883397d70eec05059353b8e83eca9168b9f3f9a361971e77e0bcd0", size = 1564846, upload-time = "2025-11-04T12:42:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/69/02/b7c30e5e04752cb4db6202a3858b149c0710e5453b71a3b2aec5d78a1aab/greenlet-3.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:326d234cbf337c9c3def0676412eb7040a35a768efc92504b947b3e9cfc7543d", size = 1633814, upload-time = "2025-11-04T12:42:17.175Z" }, + { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899, upload-time = "2025-08-07T13:38:53.448Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, + { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, + { url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191, upload-time = "2025-08-07T13:45:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516, upload-time = "2025-08-07T13:53:16.314Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169, upload-time = "2025-08-07T13:18:32.861Z" }, + { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, + { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, + { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759, upload-time = "2025-11-04T12:42:19.395Z" }, + { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288, upload-time = "2025-11-04T12:42:21.174Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, + { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, + { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, + { url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218, upload-time = "2025-08-07T13:45:30.969Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, + { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, + { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508, upload-time = "2025-11-04T12:42:23.427Z" }, + { url = "https://files.pythonhosted.org/packages/0d/da/343cd760ab2f92bac1845ca07ee3faea9fe52bee65f7bcb19f16ad7de08b/greenlet-3.2.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:015d48959d4add5d6c9f6c5210ee3803a830dce46356e3bc326d6776bde54681", size = 1680760, upload-time = "2025-11-04T12:42:25.341Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425, upload-time = "2025-08-07T13:32:27.59Z" }, +] + +[[package]] +name = "grpcio" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/e0/318c1ce3ae5a17894d5791e87aea147587c9e702f24122cc7a5c8bbaeeb1/grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", size = 12785182, upload-time = "2025-10-21T16:23:12.106Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/05/8e29121994b8d959ffa0afd28996d452f291b48cfc0875619de0bde2c50c/grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8", size = 5799718, upload-time = "2025-10-21T16:21:17.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/75/11d0e66b3cdf998c996489581bdad8900db79ebd83513e45c19548f1cba4/grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280", size = 11825627, upload-time = "2025-10-21T16:21:20.466Z" }, + { url = "https://files.pythonhosted.org/packages/28/50/2f0aa0498bc188048f5d9504dcc5c2c24f2eb1a9337cd0fa09a61a2e75f0/grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4", size = 6359167, upload-time = "2025-10-21T16:21:23.122Z" }, + { url = "https://files.pythonhosted.org/packages/66/e5/bbf0bb97d29ede1d59d6588af40018cfc345b17ce979b7b45424628dc8bb/grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11", size = 7044267, upload-time = "2025-10-21T16:21:25.995Z" }, + { url = "https://files.pythonhosted.org/packages/f5/86/f6ec2164f743d9609691115ae8ece098c76b894ebe4f7c94a655c6b03e98/grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6", size = 6573963, upload-time = "2025-10-21T16:21:28.631Z" }, + { url = "https://files.pythonhosted.org/packages/60/bc/8d9d0d8505feccfdf38a766d262c71e73639c165b311c9457208b56d92ae/grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8", size = 7164484, upload-time = "2025-10-21T16:21:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/67/e6/5d6c2fc10b95edf6df9b8f19cf10a34263b7fd48493936fffd5085521292/grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980", size = 8127777, upload-time = "2025-10-21T16:21:33.577Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c8/dce8ff21c86abe025efe304d9e31fdb0deaaa3b502b6a78141080f206da0/grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882", size = 7594014, upload-time = "2025-10-21T16:21:41.882Z" }, + { url = "https://files.pythonhosted.org/packages/e0/42/ad28191ebf983a5d0ecef90bab66baa5a6b18f2bfdef9d0a63b1973d9f75/grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958", size = 3984750, upload-time = "2025-10-21T16:21:44.006Z" }, + { url = "https://files.pythonhosted.org/packages/9e/00/7bd478cbb851c04a48baccaa49b75abaa8e4122f7d86da797500cccdd771/grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", size = 4704003, upload-time = "2025-10-21T16:21:46.244Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ed/71467ab770effc9e8cef5f2e7388beb2be26ed642d567697bb103a790c72/grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", size = 5807716, upload-time = "2025-10-21T16:21:48.475Z" }, + { url = "https://files.pythonhosted.org/packages/2c/85/c6ed56f9817fab03fa8a111ca91469941fb514e3e3ce6d793cb8f1e1347b/grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", size = 11821522, upload-time = "2025-10-21T16:21:51.142Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/2b8a235ab40c39cbc141ef647f8a6eb7b0028f023015a4842933bc0d6831/grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", size = 6362558, upload-time = "2025-10-21T16:21:54.213Z" }, + { url = "https://files.pythonhosted.org/packages/bd/64/9784eab483358e08847498ee56faf8ff6ea8e0a4592568d9f68edc97e9e9/grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", size = 7049990, upload-time = "2025-10-21T16:21:56.476Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/8c12319a6369434e7a184b987e8e9f3b49a114c489b8315f029e24de4837/grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", size = 6575387, upload-time = "2025-10-21T16:21:59.051Z" }, + { url = "https://files.pythonhosted.org/packages/15/0f/f12c32b03f731f4a6242f771f63039df182c8b8e2cf8075b245b409259d4/grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", size = 7166668, upload-time = "2025-10-21T16:22:02.049Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2d/3ec9ce0c2b1d92dd59d1c3264aaec9f0f7c817d6e8ac683b97198a36ed5a/grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", size = 8124928, upload-time = "2025-10-21T16:22:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/1a/74/fd3317be5672f4856bcdd1a9e7b5e17554692d3db9a3b273879dc02d657d/grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", size = 7589983, upload-time = "2025-10-21T16:22:07.881Z" }, + { url = "https://files.pythonhosted.org/packages/45/bb/ca038cf420f405971f19821c8c15bcbc875505f6ffadafe9ffd77871dc4c/grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", size = 3984727, upload-time = "2025-10-21T16:22:10.032Z" }, + { url = "https://files.pythonhosted.org/packages/41/80/84087dc56437ced7cdd4b13d7875e7439a52a261e3ab4e06488ba6173b0a/grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", size = 4702799, upload-time = "2025-10-21T16:22:12.709Z" }, + { url = "https://files.pythonhosted.org/packages/b4/46/39adac80de49d678e6e073b70204091e76631e03e94928b9ea4ecf0f6e0e/grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62", size = 5808417, upload-time = "2025-10-21T16:22:15.02Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f5/a4531f7fb8b4e2a60b94e39d5d924469b7a6988176b3422487be61fe2998/grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd", size = 11828219, upload-time = "2025-10-21T16:22:17.954Z" }, + { url = "https://files.pythonhosted.org/packages/4b/1c/de55d868ed7a8bd6acc6b1d6ddc4aa36d07a9f31d33c912c804adb1b971b/grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc", size = 6367826, upload-time = "2025-10-21T16:22:20.721Z" }, + { url = "https://files.pythonhosted.org/packages/59/64/99e44c02b5adb0ad13ab3adc89cb33cb54bfa90c74770f2607eea629b86f/grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a", size = 7049550, upload-time = "2025-10-21T16:22:23.637Z" }, + { url = "https://files.pythonhosted.org/packages/43/28/40a5be3f9a86949b83e7d6a2ad6011d993cbe9b6bd27bea881f61c7788b6/grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba", size = 6575564, upload-time = "2025-10-21T16:22:26.016Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a9/1be18e6055b64467440208a8559afac243c66a8b904213af6f392dc2212f/grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09", size = 7176236, upload-time = "2025-10-21T16:22:28.362Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/dba05d3fcc151ce6e81327541d2cc8394f442f6b350fead67401661bf041/grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc", size = 8125795, upload-time = "2025-10-21T16:22:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/4a/45/122df922d05655f63930cf42c9e3f72ba20aadb26c100ee105cad4ce4257/grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc", size = 7592214, upload-time = "2025-10-21T16:22:33.831Z" }, + { url = "https://files.pythonhosted.org/packages/4a/6e/0b899b7f6b66e5af39e377055fb4a6675c9ee28431df5708139df2e93233/grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e", size = 4062961, upload-time = "2025-10-21T16:22:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/19/41/0b430b01a2eb38ee887f88c1f07644a1df8e289353b78e82b37ef988fb64/grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e", size = 4834462, upload-time = "2025-10-21T16:22:39.772Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "hf-xet" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/6e/0f11bacf08a67f7fb5ee09740f2ca54163863b07b70d579356e9222ce5d8/hf_xet-1.2.0.tar.gz", hash = "sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f", size = 506020, upload-time = "2025-10-24T19:04:32.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a5/85ef910a0aa034a2abcfadc360ab5ac6f6bc4e9112349bd40ca97551cff0/hf_xet-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:ceeefcd1b7aed4956ae8499e2199607765fbd1c60510752003b6cc0b8413b649", size = 2861870, upload-time = "2025-10-24T19:04:11.422Z" }, + { url = "https://files.pythonhosted.org/packages/ea/40/e2e0a7eb9a51fe8828ba2d47fe22a7e74914ea8a0db68a18c3aa7449c767/hf_xet-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b70218dd548e9840224df5638fdc94bd033552963cfa97f9170829381179c813", size = 2717584, upload-time = "2025-10-24T19:04:09.586Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7d/daf7f8bc4594fdd59a8a596f9e3886133fdc68e675292218a5e4c1b7e834/hf_xet-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d40b18769bb9a8bc82a9ede575ce1a44c75eb80e7375a01d76259089529b5dc", size = 3315004, upload-time = "2025-10-24T19:04:00.314Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ba/45ea2f605fbf6d81c8b21e4d970b168b18a53515923010c312c06cd83164/hf_xet-1.2.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd3a6027d59cfb60177c12d6424e31f4b5ff13d8e3a1247b3a584bf8977e6df5", size = 3222636, upload-time = "2025-10-24T19:03:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1d/04513e3cab8f29ab8c109d309ddd21a2705afab9d52f2ba1151e0c14f086/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6de1fc44f58f6dd937956c8d304d8c2dea264c80680bcfa61ca4a15e7b76780f", size = 3408448, upload-time = "2025-10-24T19:04:20.951Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7c/60a2756d7feec7387db3a1176c632357632fbe7849fce576c5559d4520c7/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f182f264ed2acd566c514e45da9f2119110e48a87a327ca271027904c70c5832", size = 3503401, upload-time = "2025-10-24T19:04:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/4e/64/48fffbd67fb418ab07451e4ce641a70de1c40c10a13e25325e24858ebe5a/hf_xet-1.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:293a7a3787e5c95d7be1857358a9130694a9c6021de3f27fa233f37267174382", size = 2900866, upload-time = "2025-10-24T19:04:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/51/f7e2caae42f80af886db414d4e9885fac959330509089f97cccb339c6b87/hf_xet-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:10bfab528b968c70e062607f663e21e34e2bba349e8038db546646875495179e", size = 2861861, upload-time = "2025-10-24T19:04:19.01Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1d/a641a88b69994f9371bd347f1dd35e5d1e2e2460a2e350c8d5165fc62005/hf_xet-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a212e842647b02eb6a911187dc878e79c4aa0aa397e88dd3b26761676e8c1f8", size = 2717699, upload-time = "2025-10-24T19:04:17.306Z" }, + { url = "https://files.pythonhosted.org/packages/df/e0/e5e9bba7d15f0318955f7ec3f4af13f92e773fbb368c0b8008a5acbcb12f/hf_xet-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e06daccb3a7d4c065f34fc26c14c74f4653069bb2b194e7f18f17cbe9939c0", size = 3314885, upload-time = "2025-10-24T19:04:07.642Z" }, + { url = "https://files.pythonhosted.org/packages/21/90/b7fe5ff6f2b7b8cbdf1bd56145f863c90a5807d9758a549bf3d916aa4dec/hf_xet-1.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:29c8fc913a529ec0a91867ce3d119ac1aac966e098cf49501800c870328cc090", size = 3221550, upload-time = "2025-10-24T19:04:05.55Z" }, + { url = "https://files.pythonhosted.org/packages/6f/cb/73f276f0a7ce46cc6a6ec7d6c7d61cbfe5f2e107123d9bbd0193c355f106/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e159cbfcfbb29f920db2c09ed8b660eb894640d284f102ada929b6e3dc410a", size = 3408010, upload-time = "2025-10-24T19:04:28.598Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1e/d642a12caa78171f4be64f7cd9c40e3ca5279d055d0873188a58c0f5fbb9/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9c91d5ae931510107f148874e9e2de8a16052b6f1b3ca3c1b12f15ccb491390f", size = 3503264, upload-time = "2025-10-24T19:04:30.397Z" }, + { url = "https://files.pythonhosted.org/packages/17/b5/33764714923fa1ff922770f7ed18c2daae034d21ae6e10dbf4347c854154/hf_xet-1.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:210d577732b519ac6ede149d2f2f34049d44e8622bf14eb3d63bbcd2d4b332dc", size = 2901071, upload-time = "2025-10-24T19:04:37.463Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/22338486473df5923a9ab7107d375dbef9173c338ebef5098ef593d2b560/hf_xet-1.2.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848", size = 2866099, upload-time = "2025-10-24T19:04:15.366Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8c/c5becfa53234299bc2210ba314eaaae36c2875e0045809b82e40a9544f0c/hf_xet-1.2.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:27df617a076420d8845bea087f59303da8be17ed7ec0cd7ee3b9b9f579dff0e4", size = 2722178, upload-time = "2025-10-24T19:04:13.695Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/cf3ab0b652b082e66876d08da57fcc6fa2f0e6c70dfbbafbd470bb73eb47/hf_xet-1.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3651fd5bfe0281951b988c0facbe726aa5e347b103a675f49a3fa8144c7968fd", size = 3320214, upload-time = "2025-10-24T19:04:03.596Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/3f7ec4a1b6a65bf45b059b6d4a5d38988f63e193056de2f420137e3c3244/hf_xet-1.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d06fa97c8562fb3ee7a378dd9b51e343bc5bc8190254202c9771029152f5e08c", size = 3229054, upload-time = "2025-10-24T19:04:01.949Z" }, + { url = "https://files.pythonhosted.org/packages/0b/dd/7ac658d54b9fb7999a0ccb07ad863b413cbaf5cf172f48ebcd9497ec7263/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4c1428c9ae73ec0939410ec73023c4f842927f39db09b063b9482dac5a3bb737", size = 3413812, upload-time = "2025-10-24T19:04:24.585Z" }, + { url = "https://files.pythonhosted.org/packages/92/68/89ac4e5b12a9ff6286a12174c8538a5930e2ed662091dd2572bbe0a18c8a/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a55558084c16b09b5ed32ab9ed38421e2d87cf3f1f89815764d1177081b99865", size = 3508920, upload-time = "2025-10-24T19:04:26.927Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/870d44b30e1dcfb6a65932e3e1506c103a8a5aea9103c337e7a53180322c/hf_xet-1.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:e6584a52253f72c9f52f9e549d5895ca7a471608495c4ecaa6cc73dba2b24d69", size = 2905735, upload-time = "2025-10-24T19:04:35.928Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload-time = "2025-10-10T03:55:08.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/7f/403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed/httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:38e0c83a2ea9746ebbd643bdfb521b9aa4a91703e2cd705c20443405d2fd16a5", size = 206280, upload-time = "2025-10-10T03:54:39.274Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b/httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f25bbaf1235e27704f1a7b86cd3304eabc04f569c828101d94a0e605ef7205a5", size = 110004, upload-time = "2025-10-10T03:54:40.403Z" }, + { url = "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03", size = 517655, upload-time = "2025-10-10T03:54:41.347Z" }, + { url = "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2", size = 511440, upload-time = "2025-10-10T03:54:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362", size = 495186, upload-time = "2025-10-10T03:54:43.937Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c", size = 499192, upload-time = "2025-10-10T03:54:45.003Z" }, + { url = "https://files.pythonhosted.org/packages/6d/de/40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f/httptools-0.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3e14f530fefa7499334a79b0cf7e7cd2992870eb893526fb097d51b4f2d0f321", size = 86694, upload-time = "2025-10-10T03:54:45.923Z" }, + { url = "https://files.pythonhosted.org/packages/09/8f/c77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90/httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6babce6cfa2a99545c60bfef8bee0cc0545413cb0018f617c8059a30ad985de3", size = 202889, upload-time = "2025-10-10T03:54:47.089Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1a/22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517/httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:601b7628de7504077dd3dcb3791c6b8694bbd967148a6d1f01806509254fb1ca", size = 108180, upload-time = "2025-10-10T03:54:48.052Z" }, + { url = "https://files.pythonhosted.org/packages/32/6a/6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011/httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04c6c0e6c5fb0739c5b8a9eb046d298650a0ff38cf42537fc372b28dc7e4472c", size = 478596, upload-time = "2025-10-10T03:54:48.919Z" }, + { url = "https://files.pythonhosted.org/packages/6d/70/023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6/httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69d4f9705c405ae3ee83d6a12283dc9feba8cc6aaec671b412917e644ab4fa66", size = 473268, upload-time = "2025-10-10T03:54:49.993Z" }, + { url = "https://files.pythonhosted.org/packages/32/4d/9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7/httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:44c8f4347d4b31269c8a9205d8a5ee2df5322b09bbbd30f8f862185bb6b05346", size = 455517, upload-time = "2025-10-10T03:54:51.066Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/a6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be/httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:465275d76db4d554918aba40bf1cbebe324670f3dfc979eaffaa5d108e2ed650", size = 458337, upload-time = "2025-10-10T03:54:52.196Z" }, + { url = "https://files.pythonhosted.org/packages/fd/82/88e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582/httptools-0.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:322d00c2068d125bd570f7bf78b2d367dad02b919d8581d7476d8b75b294e3e6", size = 85743, upload-time = "2025-10-10T03:54:53.448Z" }, + { url = "https://files.pythonhosted.org/packages/34/50/9d095fcbb6de2d523e027a2f304d4551855c2f46e0b82befd718b8b20056/httptools-0.7.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:c08fe65728b8d70b6923ce31e3956f859d5e1e8548e6f22ec520a962c6757270", size = 203619, upload-time = "2025-10-10T03:54:54.321Z" }, + { url = "https://files.pythonhosted.org/packages/07/f0/89720dc5139ae54b03f861b5e2c55a37dba9a5da7d51e1e824a1f343627f/httptools-0.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7aea2e3c3953521c3c51106ee11487a910d45586e351202474d45472db7d72d3", size = 108714, upload-time = "2025-10-10T03:54:55.163Z" }, + { url = "https://files.pythonhosted.org/packages/b3/cb/eea88506f191fb552c11787c23f9a405f4c7b0c5799bf73f2249cd4f5228/httptools-0.7.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0e68b8582f4ea9166be62926077a3334064d422cf08ab87d8b74664f8e9058e1", size = 472909, upload-time = "2025-10-10T03:54:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4a/a548bdfae6369c0d078bab5769f7b66f17f1bfaa6fa28f81d6be6959066b/httptools-0.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df091cf961a3be783d6aebae963cc9b71e00d57fa6f149025075217bc6a55a7b", size = 470831, upload-time = "2025-10-10T03:54:57.219Z" }, + { url = "https://files.pythonhosted.org/packages/4d/31/14df99e1c43bd132eec921c2e7e11cda7852f65619bc0fc5bdc2d0cb126c/httptools-0.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f084813239e1eb403ddacd06a30de3d3e09a9b76e7894dcda2b22f8a726e9c60", size = 452631, upload-time = "2025-10-10T03:54:58.219Z" }, + { url = "https://files.pythonhosted.org/packages/22/d2/b7e131f7be8d854d48cb6d048113c30f9a46dca0c9a8b08fcb3fcd588cdc/httptools-0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7347714368fb2b335e9063bc2b96f2f87a9ceffcd9758ac295f8bbcd3ffbc0ca", size = 452910, upload-time = "2025-10-10T03:54:59.366Z" }, + { url = "https://files.pythonhosted.org/packages/53/cf/878f3b91e4e6e011eff6d1fa9ca39f7eb17d19c9d7971b04873734112f30/httptools-0.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:cfabda2a5bb85aa2a904ce06d974a3f30fb36cc63d7feaddec05d2050acede96", size = 88205, upload-time = "2025-10-10T03:55:00.389Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "huggingface-hub" +version = "0.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/63/4910c5fa9128fdadf6a9c5ac138e8b1b6cee4ca44bf7915bbfbce4e355ee/huggingface_hub-0.36.0.tar.gz", hash = "sha256:47b3f0e2539c39bf5cde015d63b72ec49baff67b6931c3d97f3f84532e2b8d25", size = 463358, upload-time = "2025-10-23T12:12:01.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/bd/1a875e0d592d447cbc02805fd3fe0f497714d6a2583f59d14fa9ebad96eb/huggingface_hub-0.36.0-py3-none-any.whl", hash = "sha256:7bcc9ad17d5b3f07b57c78e79d527102d08313caa278a641993acddcb894548d", size = 566094, upload-time = "2025-10-23T12:11:59.557Z" }, +] + +[[package]] +name = "humanfriendly" +version = "10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyreadline3", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/3f/2c29224acb2e2df4d2046e4c73ee2662023c58ff5b113c4c1adac0886c43/humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc", size = 360702, upload-time = "2021-09-17T21:40:43.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477", size = 86794, upload-time = "2021-09-17T21:40:39.897Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jiter" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/9d/e0660989c1370e25848bb4c52d061c71837239738ad937e83edca174c273/jiter-0.12.0.tar.gz", hash = "sha256:64dfcd7d5c168b38d3f9f8bba7fc639edb3418abcc74f22fdbe6b8938293f30b", size = 168294, upload-time = "2025-11-09T20:49:23.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/c9/5b9f7b4983f1b542c64e84165075335e8a236fa9e2ea03a0c79780062be8/jiter-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:305e061fa82f4680607a775b2e8e0bcb071cd2205ac38e6ef48c8dd5ebe1cf37", size = 314449, upload-time = "2025-11-09T20:47:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/98/6e/e8efa0e78de00db0aee82c0cf9e8b3f2027efd7f8a71f859d8f4be8e98ef/jiter-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c1860627048e302a528333c9307c818c547f214d8659b0705d2195e1a94b274", size = 319855, upload-time = "2025-11-09T20:47:24.779Z" }, + { url = "https://files.pythonhosted.org/packages/20/26/894cd88e60b5d58af53bec5c6759d1292bd0b37a8b5f60f07abf7a63ae5f/jiter-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df37577a4f8408f7e0ec3205d2a8f87672af8f17008358063a4d6425b6081ce3", size = 350171, upload-time = "2025-11-09T20:47:26.469Z" }, + { url = "https://files.pythonhosted.org/packages/f5/27/a7b818b9979ac31b3763d25f3653ec3a954044d5e9f5d87f2f247d679fd1/jiter-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:75fdd787356c1c13a4f40b43c2156276ef7a71eb487d98472476476d803fb2cf", size = 365590, upload-time = "2025-11-09T20:47:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7e/e46195801a97673a83746170b17984aa8ac4a455746354516d02ca5541b4/jiter-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1eb5db8d9c65b112aacf14fcd0faae9913d07a8afea5ed06ccdd12b724e966a1", size = 479462, upload-time = "2025-11-09T20:47:29.654Z" }, + { url = "https://files.pythonhosted.org/packages/ca/75/f833bfb009ab4bd11b1c9406d333e3b4357709ed0570bb48c7c06d78c7dd/jiter-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73c568cc27c473f82480abc15d1301adf333a7ea4f2e813d6a2c7d8b6ba8d0df", size = 378983, upload-time = "2025-11-09T20:47:31.026Z" }, + { url = "https://files.pythonhosted.org/packages/71/b3/7a69d77943cc837d30165643db753471aff5df39692d598da880a6e51c24/jiter-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4321e8a3d868919bcb1abb1db550d41f2b5b326f72df29e53b2df8b006eb9403", size = 361328, upload-time = "2025-11-09T20:47:33.286Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ac/a78f90caf48d65ba70d8c6efc6f23150bc39dc3389d65bbec2a95c7bc628/jiter-0.12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a51bad79f8cc9cac2b4b705039f814049142e0050f30d91695a2d9a6611f126", size = 386740, upload-time = "2025-11-09T20:47:34.703Z" }, + { url = "https://files.pythonhosted.org/packages/39/b6/5d31c2cc8e1b6a6bcf3c5721e4ca0a3633d1ab4754b09bc7084f6c4f5327/jiter-0.12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2a67b678f6a5f1dd6c36d642d7db83e456bc8b104788262aaefc11a22339f5a9", size = 520875, upload-time = "2025-11-09T20:47:36.058Z" }, + { url = "https://files.pythonhosted.org/packages/30/b5/4df540fae4e9f68c54b8dab004bd8c943a752f0b00efd6e7d64aa3850339/jiter-0.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efe1a211fe1fd14762adea941e3cfd6c611a136e28da6c39272dbb7a1bbe6a86", size = 511457, upload-time = "2025-11-09T20:47:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/07/65/86b74010e450a1a77b2c1aabb91d4a91dd3cd5afce99f34d75fd1ac64b19/jiter-0.12.0-cp312-cp312-win32.whl", hash = "sha256:d779d97c834b4278276ec703dc3fc1735fca50af63eb7262f05bdb4e62203d44", size = 204546, upload-time = "2025-11-09T20:47:40.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c7/6659f537f9562d963488e3e55573498a442503ced01f7e169e96a6110383/jiter-0.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e8269062060212b373316fe69236096aaf4c49022d267c6736eebd66bbbc60bb", size = 205196, upload-time = "2025-11-09T20:47:41.794Z" }, + { url = "https://files.pythonhosted.org/packages/21/f4/935304f5169edadfec7f9c01eacbce4c90bb9a82035ac1de1f3bd2d40be6/jiter-0.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:06cb970936c65de926d648af0ed3d21857f026b1cf5525cb2947aa5e01e05789", size = 186100, upload-time = "2025-11-09T20:47:43.007Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a6/97209693b177716e22576ee1161674d1d58029eb178e01866a0422b69224/jiter-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6cc49d5130a14b732e0612bc76ae8db3b49898732223ef8b7599aa8d9810683e", size = 313658, upload-time = "2025-11-09T20:47:44.424Z" }, + { url = "https://files.pythonhosted.org/packages/06/4d/125c5c1537c7d8ee73ad3d530a442d6c619714b95027143f1b61c0b4dfe0/jiter-0.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37f27a32ce36364d2fa4f7fdc507279db604d27d239ea2e044c8f148410defe1", size = 318605, upload-time = "2025-11-09T20:47:45.973Z" }, + { url = "https://files.pythonhosted.org/packages/99/bf/a840b89847885064c41a5f52de6e312e91fa84a520848ee56c97e4fa0205/jiter-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbc0944aa3d4b4773e348cda635252824a78f4ba44328e042ef1ff3f6080d1cf", size = 349803, upload-time = "2025-11-09T20:47:47.535Z" }, + { url = "https://files.pythonhosted.org/packages/8a/88/e63441c28e0db50e305ae23e19c1d8fae012d78ed55365da392c1f34b09c/jiter-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da25c62d4ee1ffbacb97fac6dfe4dcd6759ebdc9015991e92a6eae5816287f44", size = 365120, upload-time = "2025-11-09T20:47:49.284Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7c/49b02714af4343970eb8aca63396bc1c82fa01197dbb1e9b0d274b550d4e/jiter-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:048485c654b838140b007390b8182ba9774621103bd4d77c9c3f6f117474ba45", size = 479918, upload-time = "2025-11-09T20:47:50.807Z" }, + { url = "https://files.pythonhosted.org/packages/69/ba/0a809817fdd5a1db80490b9150645f3aae16afad166960bcd562be194f3b/jiter-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:635e737fbb7315bef0037c19b88b799143d2d7d3507e61a76751025226b3ac87", size = 379008, upload-time = "2025-11-09T20:47:52.211Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c3/c9fc0232e736c8877d9e6d83d6eeb0ba4e90c6c073835cc2e8f73fdeef51/jiter-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e017c417b1ebda911bd13b1e40612704b1f5420e30695112efdbed8a4b389ed", size = 361785, upload-time = "2025-11-09T20:47:53.512Z" }, + { url = "https://files.pythonhosted.org/packages/96/61/61f69b7e442e97ca6cd53086ddc1cf59fb830549bc72c0a293713a60c525/jiter-0.12.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:89b0bfb8b2bf2351fba36bb211ef8bfceba73ef58e7f0c68fb67b5a2795ca2f9", size = 386108, upload-time = "2025-11-09T20:47:54.893Z" }, + { url = "https://files.pythonhosted.org/packages/e9/2e/76bb3332f28550c8f1eba3bf6e5efe211efda0ddbbaf24976bc7078d42a5/jiter-0.12.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f5aa5427a629a824a543672778c9ce0c5e556550d1569bb6ea28a85015287626", size = 519937, upload-time = "2025-11-09T20:47:56.253Z" }, + { url = "https://files.pythonhosted.org/packages/84/d6/fa96efa87dc8bff2094fb947f51f66368fa56d8d4fc9e77b25d7fbb23375/jiter-0.12.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed53b3d6acbcb0fd0b90f20c7cb3b24c357fe82a3518934d4edfa8c6898e498c", size = 510853, upload-time = "2025-11-09T20:47:58.32Z" }, + { url = "https://files.pythonhosted.org/packages/8a/28/93f67fdb4d5904a708119a6ab58a8f1ec226ff10a94a282e0215402a8462/jiter-0.12.0-cp313-cp313-win32.whl", hash = "sha256:4747de73d6b8c78f2e253a2787930f4fffc68da7fa319739f57437f95963c4de", size = 204699, upload-time = "2025-11-09T20:47:59.686Z" }, + { url = "https://files.pythonhosted.org/packages/c4/1f/30b0eb087045a0abe2a5c9c0c0c8da110875a1d3be83afd4a9a4e548be3c/jiter-0.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:e25012eb0c456fcc13354255d0338cd5397cce26c77b2832b3c4e2e255ea5d9a", size = 204258, upload-time = "2025-11-09T20:48:01.01Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f4/2b4daf99b96bce6fc47971890b14b2a36aef88d7beb9f057fafa032c6141/jiter-0.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:c97b92c54fe6110138c872add030a1f99aea2401ddcdaa21edf74705a646dd60", size = 185503, upload-time = "2025-11-09T20:48:02.35Z" }, + { url = "https://files.pythonhosted.org/packages/39/ca/67bb15a7061d6fe20b9b2a2fd783e296a1e0f93468252c093481a2f00efa/jiter-0.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:53839b35a38f56b8be26a7851a48b89bc47e5d88e900929df10ed93b95fea3d6", size = 317965, upload-time = "2025-11-09T20:48:03.783Z" }, + { url = "https://files.pythonhosted.org/packages/18/af/1788031cd22e29c3b14bc6ca80b16a39a0b10e611367ffd480c06a259831/jiter-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94f669548e55c91ab47fef8bddd9c954dab1938644e715ea49d7e117015110a4", size = 345831, upload-time = "2025-11-09T20:48:05.55Z" }, + { url = "https://files.pythonhosted.org/packages/05/17/710bf8472d1dff0d3caf4ced6031060091c1320f84ee7d5dcbed1f352417/jiter-0.12.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:351d54f2b09a41600ffea43d081522d792e81dcfb915f6d2d242744c1cc48beb", size = 361272, upload-time = "2025-11-09T20:48:06.951Z" }, + { url = "https://files.pythonhosted.org/packages/fb/f1/1dcc4618b59761fef92d10bcbb0b038b5160be653b003651566a185f1a5c/jiter-0.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2a5e90604620f94bf62264e7c2c038704d38217b7465b863896c6d7c902b06c7", size = 204604, upload-time = "2025-11-09T20:48:08.328Z" }, + { url = "https://files.pythonhosted.org/packages/d9/32/63cb1d9f1c5c6632a783c0052cde9ef7ba82688f7065e2f0d5f10a7e3edb/jiter-0.12.0-cp313-cp313t-win_arm64.whl", hash = "sha256:88ef757017e78d2860f96250f9393b7b577b06a956ad102c29c8237554380db3", size = 185628, upload-time = "2025-11-09T20:48:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/a8/99/45c9f0dbe4a1416b2b9a8a6d1236459540f43d7fb8883cff769a8db0612d/jiter-0.12.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:c46d927acd09c67a9fb1416df45c5a04c27e83aae969267e98fba35b74e99525", size = 312478, upload-time = "2025-11-09T20:48:10.898Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a7/54ae75613ba9e0f55fcb0bc5d1f807823b5167cc944e9333ff322e9f07dd/jiter-0.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:774ff60b27a84a85b27b88cd5583899c59940bcc126caca97eb2a9df6aa00c49", size = 318706, upload-time = "2025-11-09T20:48:12.266Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/2aa241ad2c10774baf6c37f8b8e1f39c07db358f1329f4eb40eba179c2a2/jiter-0.12.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5433fab222fb072237df3f637d01b81f040a07dcac1cb4a5c75c7aa9ed0bef1", size = 351894, upload-time = "2025-11-09T20:48:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/54/4f/0f2759522719133a9042781b18cc94e335b6d290f5e2d3e6899d6af933e3/jiter-0.12.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8c593c6e71c07866ec6bfb790e202a833eeec885022296aff6b9e0b92d6a70e", size = 365714, upload-time = "2025-11-09T20:48:15.083Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6f/806b895f476582c62a2f52c453151edd8a0fde5411b0497baaa41018e878/jiter-0.12.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:90d32894d4c6877a87ae00c6b915b609406819dce8bc0d4e962e4de2784e567e", size = 478989, upload-time = "2025-11-09T20:48:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/86/6c/012d894dc6e1033acd8db2b8346add33e413ec1c7c002598915278a37f79/jiter-0.12.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:798e46eed9eb10c3adbbacbd3bdb5ecd4cf7064e453d00dbef08802dae6937ff", size = 378615, upload-time = "2025-11-09T20:48:18.614Z" }, + { url = "https://files.pythonhosted.org/packages/87/30/d718d599f6700163e28e2c71c0bbaf6dace692e7df2592fd793ac9276717/jiter-0.12.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3f1368f0a6719ea80013a4eb90ba72e75d7ea67cfc7846db2ca504f3df0169a", size = 364745, upload-time = "2025-11-09T20:48:20.117Z" }, + { url = "https://files.pythonhosted.org/packages/8f/85/315b45ce4b6ddc7d7fceca24068543b02bdc8782942f4ee49d652e2cc89f/jiter-0.12.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65f04a9d0b4406f7e51279710b27484af411896246200e461d80d3ba0caa901a", size = 386502, upload-time = "2025-11-09T20:48:21.543Z" }, + { url = "https://files.pythonhosted.org/packages/74/0b/ce0434fb40c5b24b368fe81b17074d2840748b4952256bab451b72290a49/jiter-0.12.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:fd990541982a24281d12b67a335e44f117e4c6cbad3c3b75c7dea68bf4ce3a67", size = 519845, upload-time = "2025-11-09T20:48:22.964Z" }, + { url = "https://files.pythonhosted.org/packages/e8/a3/7a7a4488ba052767846b9c916d208b3ed114e3eb670ee984e4c565b9cf0d/jiter-0.12.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:b111b0e9152fa7df870ecaebb0bd30240d9f7fff1f2003bcb4ed0f519941820b", size = 510701, upload-time = "2025-11-09T20:48:24.483Z" }, + { url = "https://files.pythonhosted.org/packages/c3/16/052ffbf9d0467b70af24e30f91e0579e13ded0c17bb4a8eb2aed3cb60131/jiter-0.12.0-cp314-cp314-win32.whl", hash = "sha256:a78befb9cc0a45b5a5a0d537b06f8544c2ebb60d19d02c41ff15da28a9e22d42", size = 205029, upload-time = "2025-11-09T20:48:25.749Z" }, + { url = "https://files.pythonhosted.org/packages/e4/18/3cf1f3f0ccc789f76b9a754bdb7a6977e5d1d671ee97a9e14f7eb728d80e/jiter-0.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:e1fe01c082f6aafbe5c8faf0ff074f38dfb911d53f07ec333ca03f8f6226debf", size = 204960, upload-time = "2025-11-09T20:48:27.415Z" }, + { url = "https://files.pythonhosted.org/packages/02/68/736821e52ecfdeeb0f024b8ab01b5a229f6b9293bbdb444c27efade50b0f/jiter-0.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:d72f3b5a432a4c546ea4bedc84cce0c3404874f1d1676260b9c7f048a9855451", size = 185529, upload-time = "2025-11-09T20:48:29.125Z" }, + { url = "https://files.pythonhosted.org/packages/30/61/12ed8ee7a643cce29ac97c2281f9ce3956eb76b037e88d290f4ed0d41480/jiter-0.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e6ded41aeba3603f9728ed2b6196e4df875348ab97b28fc8afff115ed42ba7a7", size = 318974, upload-time = "2025-11-09T20:48:30.87Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c6/f3041ede6d0ed5e0e79ff0de4c8f14f401bbf196f2ef3971cdbe5fd08d1d/jiter-0.12.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a947920902420a6ada6ad51892082521978e9dd44a802663b001436e4b771684", size = 345932, upload-time = "2025-11-09T20:48:32.658Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5d/4d94835889edd01ad0e2dbfc05f7bdfaed46292e7b504a6ac7839aa00edb/jiter-0.12.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:add5e227e0554d3a52cf390a7635edaffdf4f8fce4fdbcef3cc2055bb396a30c", size = 367243, upload-time = "2025-11-09T20:48:34.093Z" }, + { url = "https://files.pythonhosted.org/packages/fd/76/0051b0ac2816253a99d27baf3dda198663aff882fa6ea7deeb94046da24e/jiter-0.12.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f9b1cda8fcb736250d7e8711d4580ebf004a46771432be0ae4796944b5dfa5d", size = 479315, upload-time = "2025-11-09T20:48:35.507Z" }, + { url = "https://files.pythonhosted.org/packages/70/ae/83f793acd68e5cb24e483f44f482a1a15601848b9b6f199dacb970098f77/jiter-0.12.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb12a2223fe0135c7ff1356a143d57f95bbf1f4a66584f1fc74df21d86b993", size = 380714, upload-time = "2025-11-09T20:48:40.014Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/4808a88338ad2c228b1126b93fcd8ba145e919e886fe910d578230dabe3b/jiter-0.12.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c596cc0f4cb574877550ce4ecd51f8037469146addd676d7c1a30ebe6391923f", size = 365168, upload-time = "2025-11-09T20:48:41.462Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d4/04619a9e8095b42aef436b5aeb4c0282b4ff1b27d1db1508df9f5dc82750/jiter-0.12.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ab4c823b216a4aeab3fdbf579c5843165756bd9ad87cc6b1c65919c4715f783", size = 387893, upload-time = "2025-11-09T20:48:42.921Z" }, + { url = "https://files.pythonhosted.org/packages/17/ea/d3c7e62e4546fdc39197fa4a4315a563a89b95b6d54c0d25373842a59cbe/jiter-0.12.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:e427eee51149edf962203ff8db75a7514ab89be5cb623fb9cea1f20b54f1107b", size = 520828, upload-time = "2025-11-09T20:48:44.278Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0b/c6d3562a03fd767e31cb119d9041ea7958c3c80cb3d753eafb19b3b18349/jiter-0.12.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:edb868841f84c111255ba5e80339d386d937ec1fdce419518ce1bd9370fac5b6", size = 511009, upload-time = "2025-11-09T20:48:45.726Z" }, + { url = "https://files.pythonhosted.org/packages/aa/51/2cb4468b3448a8385ebcd15059d325c9ce67df4e2758d133ab9442b19834/jiter-0.12.0-cp314-cp314t-win32.whl", hash = "sha256:8bbcfe2791dfdb7c5e48baf646d37a6a3dcb5a97a032017741dea9f817dca183", size = 205110, upload-time = "2025-11-09T20:48:47.033Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c5/ae5ec83dec9c2d1af805fd5fe8f74ebded9c8670c5210ec7820ce0dbeb1e/jiter-0.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2fa940963bf02e1d8226027ef461e36af472dea85d36054ff835aeed944dd873", size = 205223, upload-time = "2025-11-09T20:48:49.076Z" }, + { url = "https://files.pythonhosted.org/packages/97/9a/3c5391907277f0e55195550cf3fa8e293ae9ee0c00fb402fec1e38c0c82f/jiter-0.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:506c9708dd29b27288f9f8f1140c3cb0e3d8ddb045956d7757b1fa0e0f39a473", size = 185564, upload-time = "2025-11-09T20:48:50.376Z" }, + { url = "https://files.pythonhosted.org/packages/cb/f5/12efb8ada5f5c9edc1d4555fe383c1fb2eac05ac5859258a72d61981d999/jiter-0.12.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:e8547883d7b96ef2e5fe22b88f8a4c8725a56e7f4abafff20fd5272d634c7ecb", size = 309974, upload-time = "2025-11-09T20:49:17.187Z" }, + { url = "https://files.pythonhosted.org/packages/85/15/d6eb3b770f6a0d332675141ab3962fd4a7c270ede3515d9f3583e1d28276/jiter-0.12.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:89163163c0934854a668ed783a2546a0617f71706a2551a4a0666d91ab365d6b", size = 304233, upload-time = "2025-11-09T20:49:18.734Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3e/e7e06743294eea2cf02ced6aa0ff2ad237367394e37a0e2b4a1108c67a36/jiter-0.12.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d96b264ab7d34bbb2312dedc47ce07cd53f06835eacbc16dde3761f47c3a9e7f", size = 338537, upload-time = "2025-11-09T20:49:20.317Z" }, + { url = "https://files.pythonhosted.org/packages/2f/9c/6753e6522b8d0ef07d3a3d239426669e984fb0eba15a315cdbc1253904e4/jiter-0.12.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24e864cb30ab82311c6425655b0cdab0a98c5d973b065c66a3f020740c2324c", size = 346110, upload-time = "2025-11-09T20:49:21.817Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload-time = "2025-08-27T12:15:46.575Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload-time = "2025-08-27T12:15:45.188Z" }, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpointer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload-time = "2023-06-26T12:07:29.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload-time = "2023-06-16T21:01:28.466Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "kubernetes" +version = "34.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "durationpy" }, + { name = "google-auth" }, + { name = "python-dateutil" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "requests-oauthlib" }, + { name = "six" }, + { name = "urllib3" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/55/3f880ef65f559cbed44a9aa20d3bdbc219a2c3a3bac4a30a513029b03ee9/kubernetes-34.1.0.tar.gz", hash = "sha256:8fe8edb0b5d290a2f3ac06596b23f87c658977d46b5f8df9d0f4ea83d0003912", size = 1083771, upload-time = "2025-09-29T20:23:49.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/ec/65f7d563aa4a62dd58777e8f6aa882f15db53b14eb29aba0c28a20f7eb26/kubernetes-34.1.0-py2.py3-none-any.whl", hash = "sha256:bffba2272534e224e6a7a74d582deb0b545b7c9879d2cd9e4aae9481d1f2cc2a", size = 2008380, upload-time = "2025-09-29T20:23:47.684Z" }, +] + +[[package]] +name = "langchain-core" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpatch" }, + { name = "langsmith" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "tenacity" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1e/17/67c1cc2ace919e2b02dd9d783154d7fb3f1495a4ef835d9cd163b7855ac2/langchain_core-1.1.0.tar.gz", hash = "sha256:2b76a82d427922c8bc51c08404af4fc2a29e9f161dfe2297cb05091e810201e7", size = 781995, upload-time = "2025-11-21T21:01:26.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/1e/e129fc471a2d2a7b3804480a937b5ab9319cab9f4142624fcb115f925501/langchain_core-1.1.0-py3-none-any.whl", hash = "sha256:2c9f27dadc6d21ed4aa46506a37a56e6a7e2d2f9141922dc5c251ba921822ee6", size = 473752, upload-time = "2025-11-21T21:01:25.841Z" }, +] + +[[package]] +name = "langchain-text-splitters" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/2e/c833dcc379c1c086453708ef5eef7d4d1f808559ca4458bd6569d5d83ad7/langchain_text_splitters-1.0.0.tar.gz", hash = "sha256:d8580a20ad7ed10b432feb273e5758b2cc0902d094919629cec0e1ad691a6744", size = 264257, upload-time = "2025-10-17T14:33:41.743Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/97/d362353ab04f865af6f81d4d46e7aa428734aa032de0017934b771fc34b7/langchain_text_splitters-1.0.0-py3-none-any.whl", hash = "sha256:f00c8219d3468f2c5bd951b708b6a7dd9bc3c62d0cfb83124c377f7170f33b2e", size = 33851, upload-time = "2025-10-17T14:33:40.46Z" }, +] + +[[package]] +name = "langsmith" +version = "0.4.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, + { name = "orjson", marker = "platform_python_implementation != 'PyPy'" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "zstandard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/03/e8/c91f5e34aa0e7cba90d31e3915866d655507732d0f67dd3986dbaf8eff63/langsmith-0.4.46.tar.gz", hash = "sha256:0b73d47ebd0a27ea10edec1717f36f6a865cb9ffc7f4e6a419e2cea1ab3c5b1e", size = 986987, upload-time = "2025-11-21T23:00:04.985Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/cb/02610a918e7630687d7fae0f668035b92def7ba0e1a7956bdf1f7098a32c/langsmith-0.4.46-py3-none-any.whl", hash = "sha256:783c16ef108c42a16ec2d8bc68067b969f3652e2fe82ca1289007baf947e4500", size = 411938, upload-time = "2025-11-21T23:00:03.514Z" }, +] + +[[package]] +name = "load-dotenv" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/95/055d123dde74bd54b99b27a3c2d8c6e218f544e0bd437480f61ccf85a07f/load-dotenv-0.1.0.tar.gz", hash = "sha256:bbe5f40072d4a61eadca66de6c222df5a2d935d6d41b703be1ff75396f635145", size = 6404, upload-time = "2022-09-02T19:55:01.349Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/2e/268a528dfa1f76999435634b0453fdd917ea878a818a6d5981632f7acffb/load_dotenv-0.1.0-py3-none-any.whl", hash = "sha256:614803f720153fb8a5f97124a72aaa3930a67aa5547cbe8603d01ea7f9ac1adf", size = 7175, upload-time = "2022-09-02T19:54:59.85Z" }, +] + +[[package]] +name = "lxml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, + { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, + { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, + { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, + { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, + { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, + { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, + { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, + { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, + { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, + { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, + { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mmh3" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/af/f28c2c2f51f31abb4725f9a64bc7863d5f491f6539bd26aee2a1d21a649e/mmh3-5.2.0.tar.gz", hash = "sha256:1efc8fec8478e9243a78bb993422cf79f8ff85cb4cf6b79647480a31e0d950a8", size = 33582, upload-time = "2025-07-29T07:43:48.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/6a/d5aa7edb5c08e0bd24286c7d08341a0446f9a2fbbb97d96a8a6dd81935ee/mmh3-5.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:384eda9361a7bf83a85e09447e1feafe081034af9dd428893701b959230d84be", size = 56141, upload-time = "2025-07-29T07:42:13.456Z" }, + { url = "https://files.pythonhosted.org/packages/08/49/131d0fae6447bc4a7299ebdb1a6fb9d08c9f8dcf97d75ea93e8152ddf7ab/mmh3-5.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2c9da0d568569cc87315cb063486d761e38458b8ad513fedd3dc9263e1b81bcd", size = 40681, upload-time = "2025-07-29T07:42:14.306Z" }, + { url = "https://files.pythonhosted.org/packages/8f/6f/9221445a6bcc962b7f5ff3ba18ad55bba624bacdc7aa3fc0a518db7da8ec/mmh3-5.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86d1be5d63232e6eb93c50881aea55ff06eb86d8e08f9b5417c8c9b10db9db96", size = 40062, upload-time = "2025-07-29T07:42:15.08Z" }, + { url = "https://files.pythonhosted.org/packages/1e/d4/6bb2d0fef81401e0bb4c297d1eb568b767de4ce6fc00890bc14d7b51ecc4/mmh3-5.2.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bf7bee43e17e81671c447e9c83499f53d99bf440bc6d9dc26a841e21acfbe094", size = 97333, upload-time = "2025-07-29T07:42:16.436Z" }, + { url = "https://files.pythonhosted.org/packages/44/e0/ccf0daff8134efbb4fbc10a945ab53302e358c4b016ada9bf97a6bdd50c1/mmh3-5.2.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7aa18cdb58983ee660c9c400b46272e14fa253c675ed963d3812487f8ca42037", size = 103310, upload-time = "2025-07-29T07:42:17.796Z" }, + { url = "https://files.pythonhosted.org/packages/02/63/1965cb08a46533faca0e420e06aff8bbaf9690a6f0ac6ae6e5b2e4544687/mmh3-5.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ae9d032488fcec32d22be6542d1a836f00247f40f320844dbb361393b5b22773", size = 106178, upload-time = "2025-07-29T07:42:19.281Z" }, + { url = "https://files.pythonhosted.org/packages/c2/41/c883ad8e2c234013f27f92061200afc11554ea55edd1bcf5e1accd803a85/mmh3-5.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1861fb6b1d0453ed7293200139c0a9011eeb1376632e048e3766945b13313c5", size = 113035, upload-time = "2025-07-29T07:42:20.356Z" }, + { url = "https://files.pythonhosted.org/packages/df/b5/1ccade8b1fa625d634a18bab7bf08a87457e09d5ec8cf83ca07cbea9d400/mmh3-5.2.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:99bb6a4d809aa4e528ddfe2c85dd5239b78b9dd14be62cca0329db78505e7b50", size = 120784, upload-time = "2025-07-29T07:42:21.377Z" }, + { url = "https://files.pythonhosted.org/packages/77/1c/919d9171fcbdcdab242e06394464ccf546f7d0f3b31e0d1e3a630398782e/mmh3-5.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1f8d8b627799f4e2fcc7c034fed8f5f24dc7724ff52f69838a3d6d15f1ad4765", size = 99137, upload-time = "2025-07-29T07:42:22.344Z" }, + { url = "https://files.pythonhosted.org/packages/66/8a/1eebef5bd6633d36281d9fc83cf2e9ba1ba0e1a77dff92aacab83001cee4/mmh3-5.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b5995088dd7023d2d9f310a0c67de5a2b2e06a570ecfd00f9ff4ab94a67cde43", size = 98664, upload-time = "2025-07-29T07:42:23.269Z" }, + { url = "https://files.pythonhosted.org/packages/13/41/a5d981563e2ee682b21fb65e29cc0f517a6734a02b581359edd67f9d0360/mmh3-5.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1a5f4d2e59d6bba8ef01b013c472741835ad961e7c28f50c82b27c57748744a4", size = 106459, upload-time = "2025-07-29T07:42:24.238Z" }, + { url = "https://files.pythonhosted.org/packages/24/31/342494cd6ab792d81e083680875a2c50fa0c5df475ebf0b67784f13e4647/mmh3-5.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fd6e6c3d90660d085f7e73710eab6f5545d4854b81b0135a3526e797009dbda3", size = 110038, upload-time = "2025-07-29T07:42:25.629Z" }, + { url = "https://files.pythonhosted.org/packages/28/44/efda282170a46bb4f19c3e2b90536513b1d821c414c28469a227ca5a1789/mmh3-5.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c4a2f3d83879e3de2eb8cbf562e71563a8ed15ee9b9c2e77ca5d9f73072ac15c", size = 97545, upload-time = "2025-07-29T07:42:27.04Z" }, + { url = "https://files.pythonhosted.org/packages/68/8f/534ae319c6e05d714f437e7206f78c17e66daca88164dff70286b0e8ea0c/mmh3-5.2.0-cp312-cp312-win32.whl", hash = "sha256:2421b9d665a0b1ad724ec7332fb5a98d075f50bc51a6ff854f3a1882bd650d49", size = 40805, upload-time = "2025-07-29T07:42:28.032Z" }, + { url = "https://files.pythonhosted.org/packages/b8/f6/f6abdcfefcedab3c964868048cfe472764ed358c2bf6819a70dd4ed4ed3a/mmh3-5.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:72d80005b7634a3a2220f81fbeb94775ebd12794623bb2e1451701ea732b4aa3", size = 41597, upload-time = "2025-07-29T07:42:28.894Z" }, + { url = "https://files.pythonhosted.org/packages/15/fd/f7420e8cbce45c259c770cac5718badf907b302d3a99ec587ba5ce030237/mmh3-5.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:3d6bfd9662a20c054bc216f861fa330c2dac7c81e7fb8307b5e32ab5b9b4d2e0", size = 39350, upload-time = "2025-07-29T07:42:29.794Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fa/27f6ab93995ef6ad9f940e96593c5dd24744d61a7389532b0fec03745607/mmh3-5.2.0-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:e79c00eba78f7258e5b354eccd4d7907d60317ced924ea4a5f2e9d83f5453065", size = 40874, upload-time = "2025-07-29T07:42:30.662Z" }, + { url = "https://files.pythonhosted.org/packages/11/9c/03d13bcb6a03438bc8cac3d2e50f80908d159b31a4367c2e1a7a077ded32/mmh3-5.2.0-cp313-cp313-android_21_x86_64.whl", hash = "sha256:956127e663d05edbeec54df38885d943dfa27406594c411139690485128525de", size = 42012, upload-time = "2025-07-29T07:42:31.539Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/0865d9765408a7d504f1789944e678f74e0888b96a766d578cb80b040999/mmh3-5.2.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:c3dca4cb5b946ee91b3d6bb700d137b1cd85c20827f89fdf9c16258253489044", size = 39197, upload-time = "2025-07-29T07:42:32.374Z" }, + { url = "https://files.pythonhosted.org/packages/3e/12/76c3207bd186f98b908b6706c2317abb73756d23a4e68ea2bc94825b9015/mmh3-5.2.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:e651e17bfde5840e9e4174b01e9e080ce49277b70d424308b36a7969d0d1af73", size = 39840, upload-time = "2025-07-29T07:42:33.227Z" }, + { url = "https://files.pythonhosted.org/packages/5d/0d/574b6cce5555c9f2b31ea189ad44986755eb14e8862db28c8b834b8b64dc/mmh3-5.2.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:9f64bf06f4bf623325fda3a6d02d36cd69199b9ace99b04bb2d7fd9f89688504", size = 40644, upload-time = "2025-07-29T07:42:34.099Z" }, + { url = "https://files.pythonhosted.org/packages/52/82/3731f8640b79c46707f53ed72034a58baad400be908c87b0088f1f89f986/mmh3-5.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ddc63328889bcaee77b743309e5c7d2d52cee0d7d577837c91b6e7cc9e755e0b", size = 56153, upload-time = "2025-07-29T07:42:35.031Z" }, + { url = "https://files.pythonhosted.org/packages/4f/34/e02dca1d4727fd9fdeaff9e2ad6983e1552804ce1d92cc796e5b052159bb/mmh3-5.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bb0fdc451fb6d86d81ab8f23d881b8d6e37fc373a2deae1c02d27002d2ad7a05", size = 40684, upload-time = "2025-07-29T07:42:35.914Z" }, + { url = "https://files.pythonhosted.org/packages/8f/36/3dee40767356e104967e6ed6d102ba47b0b1ce2a89432239b95a94de1b89/mmh3-5.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b29044e1ffdb84fe164d0a7ea05c7316afea93c00f8ed9449cf357c36fc4f814", size = 40057, upload-time = "2025-07-29T07:42:36.755Z" }, + { url = "https://files.pythonhosted.org/packages/31/58/228c402fccf76eb39a0a01b8fc470fecf21965584e66453b477050ee0e99/mmh3-5.2.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:58981d6ea9646dbbf9e59a30890cbf9f610df0e4a57dbfe09215116fd90b0093", size = 97344, upload-time = "2025-07-29T07:42:37.675Z" }, + { url = "https://files.pythonhosted.org/packages/34/82/fc5ce89006389a6426ef28e326fc065b0fbaaed230373b62d14c889f47ea/mmh3-5.2.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7e5634565367b6d98dc4aa2983703526ef556b3688ba3065edb4b9b90ede1c54", size = 103325, upload-time = "2025-07-29T07:42:38.591Z" }, + { url = "https://files.pythonhosted.org/packages/09/8c/261e85777c6aee1ebd53f2f17e210e7481d5b0846cd0b4a5c45f1e3761b8/mmh3-5.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0271ac12415afd3171ab9a3c7cbfc71dee2c68760a7dc9d05bf8ed6ddfa3a7a", size = 106240, upload-time = "2025-07-29T07:42:39.563Z" }, + { url = "https://files.pythonhosted.org/packages/70/73/2f76b3ad8a3d431824e9934403df36c0ddacc7831acf82114bce3c4309c8/mmh3-5.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:45b590e31bc552c6f8e2150ff1ad0c28dd151e9f87589e7eaf508fbdd8e8e908", size = 113060, upload-time = "2025-07-29T07:42:40.585Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b9/7ea61a34e90e50a79a9d87aa1c0b8139a7eaf4125782b34b7d7383472633/mmh3-5.2.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bdde97310d59604f2a9119322f61b31546748499a21b44f6715e8ced9308a6c5", size = 120781, upload-time = "2025-07-29T07:42:41.618Z" }, + { url = "https://files.pythonhosted.org/packages/0f/5b/ae1a717db98c7894a37aeedbd94b3f99e6472a836488f36b6849d003485b/mmh3-5.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc9c5f280438cf1c1a8f9abb87dc8ce9630a964120cfb5dd50d1e7ce79690c7a", size = 99174, upload-time = "2025-07-29T07:42:42.587Z" }, + { url = "https://files.pythonhosted.org/packages/e3/de/000cce1d799fceebb6d4487ae29175dd8e81b48e314cba7b4da90bcf55d7/mmh3-5.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c903e71fd8debb35ad2a4184c1316b3cb22f64ce517b4e6747f25b0a34e41266", size = 98734, upload-time = "2025-07-29T07:42:43.996Z" }, + { url = "https://files.pythonhosted.org/packages/79/19/0dc364391a792b72fbb22becfdeacc5add85cc043cd16986e82152141883/mmh3-5.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:eed4bba7ff8a0d37106ba931ab03bdd3915fbb025bcf4e1f0aa02bc8114960c5", size = 106493, upload-time = "2025-07-29T07:42:45.07Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b1/bc8c28e4d6e807bbb051fefe78e1156d7f104b89948742ad310612ce240d/mmh3-5.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1fdb36b940e9261aff0b5177c5b74a36936b902f473180f6c15bde26143681a9", size = 110089, upload-time = "2025-07-29T07:42:46.122Z" }, + { url = "https://files.pythonhosted.org/packages/3b/a2/d20f3f5c95e9c511806686c70d0a15479cc3941c5f322061697af1c1ff70/mmh3-5.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7303aab41e97adcf010a09efd8f1403e719e59b7705d5e3cfed3dd7571589290", size = 97571, upload-time = "2025-07-29T07:42:47.18Z" }, + { url = "https://files.pythonhosted.org/packages/7b/23/665296fce4f33488deec39a750ffd245cfc07aafb0e3ef37835f91775d14/mmh3-5.2.0-cp313-cp313-win32.whl", hash = "sha256:03e08c6ebaf666ec1e3d6ea657a2d363bb01effd1a9acfe41f9197decaef0051", size = 40806, upload-time = "2025-07-29T07:42:48.166Z" }, + { url = "https://files.pythonhosted.org/packages/59/b0/92e7103f3b20646e255b699e2d0327ce53a3f250e44367a99dc8be0b7c7a/mmh3-5.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:7fddccd4113e7b736706e17a239a696332360cbaddf25ae75b57ba1acce65081", size = 41600, upload-time = "2025-07-29T07:42:49.371Z" }, + { url = "https://files.pythonhosted.org/packages/99/22/0b2bd679a84574647de538c5b07ccaa435dbccc37815067fe15b90fe8dad/mmh3-5.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:fa0c966ee727aad5406d516375593c5f058c766b21236ab8985693934bb5085b", size = 39349, upload-time = "2025-07-29T07:42:50.268Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ca/a20db059a8a47048aaf550da14a145b56e9c7386fb8280d3ce2962dcebf7/mmh3-5.2.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:e5015f0bb6eb50008bed2d4b1ce0f2a294698a926111e4bb202c0987b4f89078", size = 39209, upload-time = "2025-07-29T07:42:51.559Z" }, + { url = "https://files.pythonhosted.org/packages/98/dd/e5094799d55c7482d814b979a0fd608027d0af1b274bfb4c3ea3e950bfd5/mmh3-5.2.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:e0f3ed828d709f5b82d8bfe14f8856120718ec4bd44a5b26102c3030a1e12501", size = 39843, upload-time = "2025-07-29T07:42:52.536Z" }, + { url = "https://files.pythonhosted.org/packages/f4/6b/7844d7f832c85400e7cc89a1348e4e1fdd38c5a38415bb5726bbb8fcdb6c/mmh3-5.2.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:f35727c5118aba95f0397e18a1a5b8405425581bfe53e821f0fb444cbdc2bc9b", size = 40648, upload-time = "2025-07-29T07:42:53.392Z" }, + { url = "https://files.pythonhosted.org/packages/1f/bf/71f791f48a21ff3190ba5225807cbe4f7223360e96862c376e6e3fb7efa7/mmh3-5.2.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3bc244802ccab5220008cb712ca1508cb6a12f0eb64ad62997156410579a1770", size = 56164, upload-time = "2025-07-29T07:42:54.267Z" }, + { url = "https://files.pythonhosted.org/packages/70/1f/f87e3d34d83032b4f3f0f528c6d95a98290fcacf019da61343a49dccfd51/mmh3-5.2.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ff3d50dc3fe8a98059f99b445dfb62792b5d006c5e0b8f03c6de2813b8376110", size = 40692, upload-time = "2025-07-29T07:42:55.234Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e2/db849eaed07117086f3452feca8c839d30d38b830ac59fe1ce65af8be5ad/mmh3-5.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:37a358cc881fe796e099c1db6ce07ff757f088827b4e8467ac52b7a7ffdca647", size = 40068, upload-time = "2025-07-29T07:42:56.158Z" }, + { url = "https://files.pythonhosted.org/packages/df/6b/209af927207af77425b044e32f77f49105a0b05d82ff88af6971d8da4e19/mmh3-5.2.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b9a87025121d1c448f24f27ff53a5fe7b6ef980574b4a4f11acaabe702420d63", size = 97367, upload-time = "2025-07-29T07:42:57.037Z" }, + { url = "https://files.pythonhosted.org/packages/ca/e0/78adf4104c425606a9ce33fb351f790c76a6c2314969c4a517d1ffc92196/mmh3-5.2.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ba55d6ca32eeef8b2625e1e4bfc3b3db52bc63014bd7e5df8cc11bf2b036b12", size = 103306, upload-time = "2025-07-29T07:42:58.522Z" }, + { url = "https://files.pythonhosted.org/packages/a3/79/c2b89f91b962658b890104745b1b6c9ce38d50a889f000b469b91eeb1b9e/mmh3-5.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9ff37ba9f15637e424c2ab57a1a590c52897c845b768e4e0a4958084ec87f22", size = 106312, upload-time = "2025-07-29T07:42:59.552Z" }, + { url = "https://files.pythonhosted.org/packages/4b/14/659d4095528b1a209be90934778c5ffe312177d51e365ddcbca2cac2ec7c/mmh3-5.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a094319ec0db52a04af9fdc391b4d39a1bc72bc8424b47c4411afb05413a44b5", size = 113135, upload-time = "2025-07-29T07:43:00.745Z" }, + { url = "https://files.pythonhosted.org/packages/8d/6f/cd7734a779389a8a467b5c89a48ff476d6f2576e78216a37551a97e9e42a/mmh3-5.2.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c5584061fd3da584659b13587f26c6cad25a096246a481636d64375d0c1f6c07", size = 120775, upload-time = "2025-07-29T07:43:02.124Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ca/8256e3b96944408940de3f9291d7e38a283b5761fe9614d4808fcf27bd62/mmh3-5.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecbfc0437ddfdced5e7822d1ce4855c9c64f46819d0fdc4482c53f56c707b935", size = 99178, upload-time = "2025-07-29T07:43:03.182Z" }, + { url = "https://files.pythonhosted.org/packages/8a/32/39e2b3cf06b6e2eb042c984dab8680841ac2a0d3ca6e0bea30db1f27b565/mmh3-5.2.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7b986d506a8e8ea345791897ba5d8ba0d9d8820cd4fc3e52dbe6de19388de2e7", size = 98738, upload-time = "2025-07-29T07:43:04.207Z" }, + { url = "https://files.pythonhosted.org/packages/61/d3/7bbc8e0e8cf65ebbe1b893ffa0467b7ecd1bd07c3bbf6c9db4308ada22ec/mmh3-5.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:38d899a156549da8ef6a9f1d6f7ef231228d29f8f69bce2ee12f5fba6d6fd7c5", size = 106510, upload-time = "2025-07-29T07:43:05.656Z" }, + { url = "https://files.pythonhosted.org/packages/10/99/b97e53724b52374e2f3859046f0eb2425192da356cb19784d64bc17bb1cf/mmh3-5.2.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d86651fa45799530885ba4dab3d21144486ed15285e8784181a0ab37a4552384", size = 110053, upload-time = "2025-07-29T07:43:07.204Z" }, + { url = "https://files.pythonhosted.org/packages/ac/62/3688c7d975ed195155671df68788c83fed6f7909b6ec4951724c6860cb97/mmh3-5.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c463d7c1c4cfc9d751efeaadd936bbba07b5b0ed81a012b3a9f5a12f0872bd6e", size = 97546, upload-time = "2025-07-29T07:43:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/ca/3b/c6153250f03f71a8b7634cded82939546cdfba02e32f124ff51d52c6f991/mmh3-5.2.0-cp314-cp314-win32.whl", hash = "sha256:bb4fe46bdc6104fbc28db7a6bacb115ee6368ff993366bbd8a2a7f0076e6f0c0", size = 41422, upload-time = "2025-07-29T07:43:09.216Z" }, + { url = "https://files.pythonhosted.org/packages/74/01/a27d98bab083a435c4c07e9d1d720d4c8a578bf4c270bae373760b1022be/mmh3-5.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:7c7f0b342fd06044bedd0b6e72177ddc0076f54fd89ee239447f8b271d919d9b", size = 42135, upload-time = "2025-07-29T07:43:10.183Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c9/dbba5507e95429b8b380e2ba091eff5c20a70a59560934dff0ad8392b8c8/mmh3-5.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:3193752fc05ea72366c2b63ff24b9a190f422e32d75fdeae71087c08fff26115", size = 39879, upload-time = "2025-07-29T07:43:11.106Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d1/c8c0ef839c17258b9de41b84f663574fabcf8ac2007b7416575e0f65ff6e/mmh3-5.2.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:69fc339d7202bea69ef9bd7c39bfdf9fdabc8e6822a01eba62fb43233c1b3932", size = 57696, upload-time = "2025-07-29T07:43:11.989Z" }, + { url = "https://files.pythonhosted.org/packages/2f/55/95e2b9ff201e89f9fe37036037ab61a6c941942b25cdb7b6a9df9b931993/mmh3-5.2.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:12da42c0a55c9d86ab566395324213c319c73ecb0c239fad4726324212b9441c", size = 41421, upload-time = "2025-07-29T07:43:13.269Z" }, + { url = "https://files.pythonhosted.org/packages/77/79/9be23ad0b7001a4b22752e7693be232428ecc0a35068a4ff5c2f14ef8b20/mmh3-5.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f7f9034c7cf05ddfaac8d7a2e63a3c97a840d4615d0a0e65ba8bdf6f8576e3be", size = 40853, upload-time = "2025-07-29T07:43:14.888Z" }, + { url = "https://files.pythonhosted.org/packages/ac/1b/96b32058eda1c1dee8264900c37c359a7325c1f11f5ff14fd2be8e24eff9/mmh3-5.2.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:11730eeb16dfcf9674fdea9bb6b8e6dd9b40813b7eb839bc35113649eef38aeb", size = 109694, upload-time = "2025-07-29T07:43:15.816Z" }, + { url = "https://files.pythonhosted.org/packages/8d/6f/a2ae44cd7dad697b6dea48390cbc977b1e5ca58fda09628cbcb2275af064/mmh3-5.2.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:932a6eec1d2e2c3c9e630d10f7128d80e70e2d47fe6b8c7ea5e1afbd98733e65", size = 117438, upload-time = "2025-07-29T07:43:16.865Z" }, + { url = "https://files.pythonhosted.org/packages/a0/08/bfb75451c83f05224a28afeaf3950c7b793c0b71440d571f8e819cfb149a/mmh3-5.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ca975c51c5028947bbcfc24966517aac06a01d6c921e30f7c5383c195f87991", size = 120409, upload-time = "2025-07-29T07:43:18.207Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ea/8b118b69b2ff8df568f742387d1a159bc654a0f78741b31437dd047ea28e/mmh3-5.2.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5b0b58215befe0f0e120b828f7645e97719bbba9f23b69e268ed0ac7adde8645", size = 125909, upload-time = "2025-07-29T07:43:19.39Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/168cc0b6a30650032e351a3b89b8a47382da541993a03af91e1ba2501234/mmh3-5.2.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29c2b9ce61886809d0492a274a5a53047742dea0f703f9c4d5d223c3ea6377d3", size = 135331, upload-time = "2025-07-29T07:43:20.435Z" }, + { url = "https://files.pythonhosted.org/packages/31/05/e3a9849b1c18a7934c64e831492c99e67daebe84a8c2f2c39a7096a830e3/mmh3-5.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a367d4741ac0103f8198c82f429bccb9359f543ca542b06a51f4f0332e8de279", size = 110085, upload-time = "2025-07-29T07:43:21.92Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d5/a96bcc306e3404601418b2a9a370baec92af84204528ba659fdfe34c242f/mmh3-5.2.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:5a5dba98e514fb26241868f6eb90a7f7ca0e039aed779342965ce24ea32ba513", size = 111195, upload-time = "2025-07-29T07:43:23.066Z" }, + { url = "https://files.pythonhosted.org/packages/af/29/0fd49801fec5bff37198684e0849b58e0dab3a2a68382a357cfffb0fafc3/mmh3-5.2.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:941603bfd75a46023807511c1ac2f1b0f39cccc393c15039969806063b27e6db", size = 116919, upload-time = "2025-07-29T07:43:24.178Z" }, + { url = "https://files.pythonhosted.org/packages/2d/04/4f3c32b0a2ed762edca45d8b46568fc3668e34f00fb1e0a3b5451ec1281c/mmh3-5.2.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:132dd943451a7c7546978863d2f5a64977928410782e1a87d583cb60eb89e667", size = 123160, upload-time = "2025-07-29T07:43:25.26Z" }, + { url = "https://files.pythonhosted.org/packages/91/76/3d29eaa38821730633d6a240d36fa8ad2807e9dfd432c12e1a472ed211eb/mmh3-5.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f698733a8a494466432d611a8f0d1e026f5286dee051beea4b3c3146817e35d5", size = 110206, upload-time = "2025-07-29T07:43:26.699Z" }, + { url = "https://files.pythonhosted.org/packages/44/1c/ccf35892684d3a408202e296e56843743e0b4fb1629e59432ea88cdb3909/mmh3-5.2.0-cp314-cp314t-win32.whl", hash = "sha256:6d541038b3fc360ec538fc116de87462627944765a6750308118f8b509a8eec7", size = 41970, upload-time = "2025-07-29T07:43:27.666Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/b9e4f1e5adb5e21eb104588fcee2cd1eaa8308255173481427d5ecc4284e/mmh3-5.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e912b19cf2378f2967d0c08e86ff4c6c360129887f678e27e4dde970d21b3f4d", size = 43063, upload-time = "2025-07-29T07:43:28.582Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fc/0e61d9a4e29c8679356795a40e48f647b4aad58d71bfc969f0f8f56fb912/mmh3-5.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:e7884931fe5e788163e7b3c511614130c2c59feffdc21112290a194487efb2e9", size = 40455, upload-time = "2025-07-29T07:43:29.563Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "networkx" +version = "3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/fc/7b6fd4d22c8c4dc5704430140d8b3f520531d4fe7328b8f8d03f5a7950e8/networkx-3.6.tar.gz", hash = "sha256:285276002ad1f7f7da0f7b42f004bcba70d381e936559166363707fdad3d72ad", size = 2511464, upload-time = "2025-11-24T03:03:47.158Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/c7/d64168da60332c17d24c0d2f08bdf3987e8d1ae9d84b5bbd0eec2eb26a55/networkx-3.6-py3-none-any.whl", hash = "sha256:cdb395b105806062473d3be36458d8f1459a4e4b98e236a66c3a48996e07684f", size = 2063713, upload-time = "2025-11-24T03:03:45.21Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/37/e669fe6cbb2b96c62f6bbedc6a81c0f3b7362f6a59230b23caa673a85721/numpy-2.3.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", size = 16733873, upload-time = "2025-11-16T22:49:49.84Z" }, + { url = "https://files.pythonhosted.org/packages/c5/65/df0db6c097892c9380851ab9e44b52d4f7ba576b833996e0080181c0c439/numpy-2.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", size = 12259838, upload-time = "2025-11-16T22:49:52.863Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e1/1ee06e70eb2136797abe847d386e7c0e830b67ad1d43f364dd04fa50d338/numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", size = 5088378, upload-time = "2025-11-16T22:49:55.055Z" }, + { url = "https://files.pythonhosted.org/packages/6d/9c/1ca85fb86708724275103b81ec4cf1ac1d08f465368acfc8da7ab545bdae/numpy-2.3.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", size = 6628559, upload-time = "2025-11-16T22:49:57.371Z" }, + { url = "https://files.pythonhosted.org/packages/74/78/fcd41e5a0ce4f3f7b003da85825acddae6d7ecb60cf25194741b036ca7d6/numpy-2.3.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", size = 14250702, upload-time = "2025-11-16T22:49:59.632Z" }, + { url = "https://files.pythonhosted.org/packages/b6/23/2a1b231b8ff672b4c450dac27164a8b2ca7d9b7144f9c02d2396518352eb/numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", size = 16606086, upload-time = "2025-11-16T22:50:02.127Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c5/5ad26fbfbe2012e190cc7d5003e4d874b88bb18861d0829edc140a713021/numpy-2.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", size = 16025985, upload-time = "2025-11-16T22:50:04.536Z" }, + { url = "https://files.pythonhosted.org/packages/d2/fa/dd48e225c46c819288148d9d060b047fd2a6fb1eb37eae25112ee4cb4453/numpy-2.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", size = 18542976, upload-time = "2025-11-16T22:50:07.557Z" }, + { url = "https://files.pythonhosted.org/packages/05/79/ccbd23a75862d95af03d28b5c6901a1b7da4803181513d52f3b86ed9446e/numpy-2.3.5-cp312-cp312-win32.whl", hash = "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", size = 6285274, upload-time = "2025-11-16T22:50:10.746Z" }, + { url = "https://files.pythonhosted.org/packages/2d/57/8aeaf160312f7f489dea47ab61e430b5cb051f59a98ae68b7133ce8fa06a/numpy-2.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", size = 12782922, upload-time = "2025-11-16T22:50:12.811Z" }, + { url = "https://files.pythonhosted.org/packages/78/a6/aae5cc2ca78c45e64b9ef22f089141d661516856cf7c8a54ba434576900d/numpy-2.3.5-cp312-cp312-win_arm64.whl", hash = "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", size = 10194667, upload-time = "2025-11-16T22:50:16.16Z" }, + { url = "https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", size = 16728251, upload-time = "2025-11-16T22:50:19.013Z" }, + { url = "https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", size = 12254652, upload-time = "2025-11-16T22:50:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/78/da/8c7738060ca9c31b30e9301ee0cf6c5ffdbf889d9593285a1cead337f9a5/numpy-2.3.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", size = 5083172, upload-time = "2025-11-16T22:50:24.562Z" }, + { url = "https://files.pythonhosted.org/packages/a4/b4/ee5bb2537fb9430fd2ef30a616c3672b991a4129bb1c7dcc42aa0abbe5d7/numpy-2.3.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", size = 6622990, upload-time = "2025-11-16T22:50:26.47Z" }, + { url = "https://files.pythonhosted.org/packages/95/03/dc0723a013c7d7c19de5ef29e932c3081df1c14ba582b8b86b5de9db7f0f/numpy-2.3.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", size = 14248902, upload-time = "2025-11-16T22:50:28.861Z" }, + { url = "https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", size = 16597430, upload-time = "2025-11-16T22:50:31.56Z" }, + { url = "https://files.pythonhosted.org/packages/2a/51/c1e29be863588db58175175f057286900b4b3327a1351e706d5e0f8dd679/numpy-2.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", size = 16024551, upload-time = "2025-11-16T22:50:34.242Z" }, + { url = "https://files.pythonhosted.org/packages/83/68/8236589d4dbb87253d28259d04d9b814ec0ecce7cb1c7fed29729f4c3a78/numpy-2.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", size = 18533275, upload-time = "2025-11-16T22:50:37.651Z" }, + { url = "https://files.pythonhosted.org/packages/40/56/2932d75b6f13465239e3b7b7e511be27f1b8161ca2510854f0b6e521c395/numpy-2.3.5-cp313-cp313-win32.whl", hash = "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", size = 6277637, upload-time = "2025-11-16T22:50:40.11Z" }, + { url = "https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", size = 12779090, upload-time = "2025-11-16T22:50:42.503Z" }, + { url = "https://files.pythonhosted.org/packages/8f/88/3f41e13a44ebd4034ee17baa384acac29ba6a4fcc2aca95f6f08ca0447d1/numpy-2.3.5-cp313-cp313-win_arm64.whl", hash = "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", size = 10194710, upload-time = "2025-11-16T22:50:44.971Z" }, + { url = "https://files.pythonhosted.org/packages/13/cb/71744144e13389d577f867f745b7df2d8489463654a918eea2eeb166dfc9/numpy-2.3.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", size = 16827292, upload-time = "2025-11-16T22:50:47.715Z" }, + { url = "https://files.pythonhosted.org/packages/71/80/ba9dc6f2a4398e7f42b708a7fdc841bb638d353be255655498edbf9a15a8/numpy-2.3.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", size = 12378897, upload-time = "2025-11-16T22:50:51.327Z" }, + { url = "https://files.pythonhosted.org/packages/2e/6d/db2151b9f64264bcceccd51741aa39b50150de9b602d98ecfe7e0c4bff39/numpy-2.3.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", size = 5207391, upload-time = "2025-11-16T22:50:54.542Z" }, + { url = "https://files.pythonhosted.org/packages/80/ae/429bacace5ccad48a14c4ae5332f6aa8ab9f69524193511d60ccdfdc65fa/numpy-2.3.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", size = 6721275, upload-time = "2025-11-16T22:50:56.794Z" }, + { url = "https://files.pythonhosted.org/packages/74/5b/1919abf32d8722646a38cd527bc3771eb229a32724ee6ba340ead9b92249/numpy-2.3.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", size = 14306855, upload-time = "2025-11-16T22:50:59.208Z" }, + { url = "https://files.pythonhosted.org/packages/a5/87/6831980559434973bebc30cd9c1f21e541a0f2b0c280d43d3afd909b66d0/numpy-2.3.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", size = 16657359, upload-time = "2025-11-16T22:51:01.991Z" }, + { url = "https://files.pythonhosted.org/packages/dd/91/c797f544491ee99fd00495f12ebb7802c440c1915811d72ac5b4479a3356/numpy-2.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", size = 16093374, upload-time = "2025-11-16T22:51:05.291Z" }, + { url = "https://files.pythonhosted.org/packages/74/a6/54da03253afcbe7a72785ec4da9c69fb7a17710141ff9ac5fcb2e32dbe64/numpy-2.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", size = 18594587, upload-time = "2025-11-16T22:51:08.585Z" }, + { url = "https://files.pythonhosted.org/packages/80/e9/aff53abbdd41b0ecca94285f325aff42357c6b5abc482a3fcb4994290b18/numpy-2.3.5-cp313-cp313t-win32.whl", hash = "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", size = 6405940, upload-time = "2025-11-16T22:51:11.541Z" }, + { url = "https://files.pythonhosted.org/packages/d5/81/50613fec9d4de5480de18d4f8ef59ad7e344d497edbef3cfd80f24f98461/numpy-2.3.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", size = 12920341, upload-time = "2025-11-16T22:51:14.312Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ab/08fd63b9a74303947f34f0bd7c5903b9c5532c2d287bead5bdf4c556c486/numpy-2.3.5-cp313-cp313t-win_arm64.whl", hash = "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", size = 10262507, upload-time = "2025-11-16T22:51:16.846Z" }, + { url = "https://files.pythonhosted.org/packages/ba/97/1a914559c19e32d6b2e233cf9a6a114e67c856d35b1d6babca571a3e880f/numpy-2.3.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82", size = 16735706, upload-time = "2025-11-16T22:51:19.558Z" }, + { url = "https://files.pythonhosted.org/packages/57/d4/51233b1c1b13ecd796311216ae417796b88b0616cfd8a33ae4536330748a/numpy-2.3.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0", size = 12264507, upload-time = "2025-11-16T22:51:22.492Z" }, + { url = "https://files.pythonhosted.org/packages/45/98/2fe46c5c2675b8306d0b4a3ec3494273e93e1226a490f766e84298576956/numpy-2.3.5-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63", size = 5093049, upload-time = "2025-11-16T22:51:25.171Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0e/0698378989bb0ac5f1660c81c78ab1fe5476c1a521ca9ee9d0710ce54099/numpy-2.3.5-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9", size = 6626603, upload-time = "2025-11-16T22:51:27Z" }, + { url = "https://files.pythonhosted.org/packages/5e/a6/9ca0eecc489640615642a6cbc0ca9e10df70df38c4d43f5a928ff18d8827/numpy-2.3.5-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b", size = 14262696, upload-time = "2025-11-16T22:51:29.402Z" }, + { url = "https://files.pythonhosted.org/packages/c8/f6/07ec185b90ec9d7217a00eeeed7383b73d7e709dae2a9a021b051542a708/numpy-2.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520", size = 16597350, upload-time = "2025-11-16T22:51:32.167Z" }, + { url = "https://files.pythonhosted.org/packages/75/37/164071d1dde6a1a84c9b8e5b414fa127981bad47adf3a6b7e23917e52190/numpy-2.3.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c", size = 16040190, upload-time = "2025-11-16T22:51:35.403Z" }, + { url = "https://files.pythonhosted.org/packages/08/3c/f18b82a406b04859eb026d204e4e1773eb41c5be58410f41ffa511d114ae/numpy-2.3.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8", size = 18536749, upload-time = "2025-11-16T22:51:39.698Z" }, + { url = "https://files.pythonhosted.org/packages/40/79/f82f572bf44cf0023a2fe8588768e23e1592585020d638999f15158609e1/numpy-2.3.5-cp314-cp314-win32.whl", hash = "sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248", size = 6335432, upload-time = "2025-11-16T22:51:42.476Z" }, + { url = "https://files.pythonhosted.org/packages/a3/2e/235b4d96619931192c91660805e5e49242389742a7a82c27665021db690c/numpy-2.3.5-cp314-cp314-win_amd64.whl", hash = "sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e", size = 12919388, upload-time = "2025-11-16T22:51:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/07/2b/29fd75ce45d22a39c61aad74f3d718e7ab67ccf839ca8b60866054eb15f8/numpy-2.3.5-cp314-cp314-win_arm64.whl", hash = "sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2", size = 10476651, upload-time = "2025-11-16T22:51:47.749Z" }, + { url = "https://files.pythonhosted.org/packages/17/e1/f6a721234ebd4d87084cfa68d081bcba2f5cfe1974f7de4e0e8b9b2a2ba1/numpy-2.3.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41", size = 16834503, upload-time = "2025-11-16T22:51:50.443Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1c/baf7ffdc3af9c356e1c135e57ab7cf8d247931b9554f55c467efe2c69eff/numpy-2.3.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad", size = 12381612, upload-time = "2025-11-16T22:51:53.609Z" }, + { url = "https://files.pythonhosted.org/packages/74/91/f7f0295151407ddc9ba34e699013c32c3c91944f9b35fcf9281163dc1468/numpy-2.3.5-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39", size = 5210042, upload-time = "2025-11-16T22:51:56.213Z" }, + { url = "https://files.pythonhosted.org/packages/2e/3b/78aebf345104ec50dd50a4d06ddeb46a9ff5261c33bcc58b1c4f12f85ec2/numpy-2.3.5-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20", size = 6724502, upload-time = "2025-11-16T22:51:58.584Z" }, + { url = "https://files.pythonhosted.org/packages/02/c6/7c34b528740512e57ef1b7c8337ab0b4f0bddf34c723b8996c675bc2bc91/numpy-2.3.5-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52", size = 14308962, upload-time = "2025-11-16T22:52:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/09d433c5262bc32d725bafc619e095b6a6651caf94027a03da624146f655/numpy-2.3.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b", size = 16655054, upload-time = "2025-11-16T22:52:04.267Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ab/6a7b259703c09a88804fa2430b43d6457b692378f6b74b356155283566ac/numpy-2.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3", size = 16091613, upload-time = "2025-11-16T22:52:08.651Z" }, + { url = "https://files.pythonhosted.org/packages/c2/88/330da2071e8771e60d1038166ff9d73f29da37b01ec3eb43cb1427464e10/numpy-2.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227", size = 18591147, upload-time = "2025-11-16T22:52:11.453Z" }, + { url = "https://files.pythonhosted.org/packages/51/41/851c4b4082402d9ea860c3626db5d5df47164a712cb23b54be028b184c1c/numpy-2.3.5-cp314-cp314t-win32.whl", hash = "sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5", size = 6479806, upload-time = "2025-11-16T22:52:14.641Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/d48bde1dfd93332fa557cff1972fbc039e055a52021fbef4c2c4b1eefd17/numpy-2.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf", size = 13105760, upload-time = "2025-11-16T22:52:17.975Z" }, + { url = "https://files.pythonhosted.org/packages/2d/fd/4b5eb0b3e888d86aee4d198c23acec7d214baaf17ea93c1adec94c9518b9/numpy-2.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42", size = 10545459, upload-time = "2025-11-16T22:52:20.55Z" }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.8.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.10.2.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.3.3.83" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, +] + +[[package]] +name = "nvidia-cufile-cu12" +version = "1.13.1.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.9.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.3.90" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, + { name = "nvidia-cusparse-cu12" }, + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.8.93" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu12" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.27.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.3.20" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/6c/99acb2f9eb85c29fc6f3a7ac4dccfd992e22666dd08a642b303311326a97/nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d00f26d3f9b2e3c3065be895e3059d6479ea5c638a3f38c9fec49b1b9dd7c1e5", size = 124657145, upload-time = "2025-08-04T20:25:19.995Z" }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "onnxruntime" +version = "1.23.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coloredlogs" }, + { name = "flatbuffers" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "sympy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/9e/f748cd64161213adeef83d0cb16cb8ace1e62fa501033acdd9f9341fff57/onnxruntime-1.23.2-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:b8f029a6b98d3cf5be564d52802bb50a8489ab73409fa9db0bf583eabb7c2321", size = 17195929, upload-time = "2025-10-22T03:47:36.24Z" }, + { url = "https://files.pythonhosted.org/packages/91/9d/a81aafd899b900101988ead7fb14974c8a58695338ab6a0f3d6b0100f30b/onnxruntime-1.23.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:218295a8acae83905f6f1aed8cacb8e3eb3bd7513a13fe4ba3b2664a19fc4a6b", size = 19157705, upload-time = "2025-10-22T03:46:40.415Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/4e40f2fba272a6698d62be2cd21ddc3675edfc1a4b9ddefcc4648f115315/onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76ff670550dc23e58ea9bc53b5149b99a44e63b34b524f7b8547469aaa0dcb8c", size = 15226915, upload-time = "2025-10-22T03:46:27.773Z" }, + { url = "https://files.pythonhosted.org/packages/ef/88/9cc25d2bafe6bc0d4d3c1db3ade98196d5b355c0b273e6a5dc09c5d5d0d5/onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f9b4ae77f8e3c9bee50c27bc1beede83f786fe1d52e99ac85aa8d65a01e9b77", size = 17382649, upload-time = "2025-10-22T03:47:02.782Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b4/569d298f9fc4d286c11c45e85d9ffa9e877af12ace98af8cab52396e8f46/onnxruntime-1.23.2-cp312-cp312-win_amd64.whl", hash = "sha256:25de5214923ce941a3523739d34a520aac30f21e631de53bba9174dc9c004435", size = 13470528, upload-time = "2025-10-22T03:47:28.106Z" }, + { url = "https://files.pythonhosted.org/packages/3d/41/fba0cabccecefe4a1b5fc8020c44febb334637f133acefc7ec492029dd2c/onnxruntime-1.23.2-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:2ff531ad8496281b4297f32b83b01cdd719617e2351ffe0dba5684fb283afa1f", size = 17196337, upload-time = "2025-10-22T03:46:35.168Z" }, + { url = "https://files.pythonhosted.org/packages/fe/f9/2d49ca491c6a986acce9f1d1d5fc2099108958cc1710c28e89a032c9cfe9/onnxruntime-1.23.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:162f4ca894ec3de1a6fd53589e511e06ecdc3ff646849b62a9da7489dee9ce95", size = 19157691, upload-time = "2025-10-22T03:46:43.518Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a1/428ee29c6eaf09a6f6be56f836213f104618fb35ac6cc586ff0f477263eb/onnxruntime-1.23.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45d127d6e1e9b99d1ebeae9bcd8f98617a812f53f46699eafeb976275744826b", size = 15226898, upload-time = "2025-10-22T03:46:30.039Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2b/b57c8a2466a3126dbe0a792f56ad7290949b02f47b86216cd47d857e4b77/onnxruntime-1.23.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bace4e0d46480fbeeb7bbe1ffe1f080e6663a42d1086ff95c1551f2d39e7872", size = 17382518, upload-time = "2025-10-22T03:47:05.407Z" }, + { url = "https://files.pythonhosted.org/packages/4a/93/aba75358133b3a941d736816dd392f687e7eab77215a6e429879080b76b6/onnxruntime-1.23.2-cp313-cp313-win_amd64.whl", hash = "sha256:1f9cc0a55349c584f083c1c076e611a7c35d5b867d5d6e6d6c823bf821978088", size = 13470276, upload-time = "2025-10-22T03:47:31.193Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3d/6830fa61c69ca8e905f237001dbfc01689a4e4ab06147020a4518318881f/onnxruntime-1.23.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d2385e774f46ac38f02b3a91a91e30263d41b2f1f4f26ae34805b2a9ddef466", size = 15229610, upload-time = "2025-10-22T03:46:32.239Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ca/862b1e7a639460f0ca25fd5b6135fb42cf9deea86d398a92e44dfda2279d/onnxruntime-1.23.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2b9233c4947907fd1818d0e581c049c41ccc39b2856cc942ff6d26317cee145", size = 17394184, upload-time = "2025-10-22T03:47:08.127Z" }, +] + +[[package]] +name = "openai" +version = "2.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/516290f38745cc1e72856f50e8afed4a7f9ac396a5a18f39e892ab89dfc2/openai-2.9.0.tar.gz", hash = "sha256:b52ec65727fc8f1eed2fbc86c8eac0998900c7ef63aa2eb5c24b69717c56fa5f", size = 608202, upload-time = "2025-12-04T18:15:09.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fd/ae2da789cd923dd033c99b8d544071a827c92046b150db01cfa5cea5b3fd/openai-2.9.0-py3-none-any.whl", hash = "sha256:0d168a490fbb45630ad508a6f3022013c155a68fd708069b6a1a01a5e8f0ffad", size = 1030836, upload-time = "2025-12-04T18:15:07.063Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "opentelemetry-api" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/d8/0f354c375628e048bd0570645b310797299754730079853095bf000fba69/opentelemetry_api-1.38.0.tar.gz", hash = "sha256:f4c193b5e8acb0912b06ac5b16321908dd0843d75049c091487322284a3eea12", size = 65242, upload-time = "2025-10-16T08:35:50.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/a2/d86e01c28300bd41bab8f18afd613676e2bd63515417b77636fc1add426f/opentelemetry_api-1.38.0-py3-none-any.whl", hash = "sha256:2891b0197f47124454ab9f0cf58f3be33faca394457ac3e09daba13ff50aa582", size = 65947, upload-time = "2025-10-16T08:35:30.23Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-common" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-proto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/83/dd4660f2956ff88ed071e9e0e36e830df14b8c5dc06722dbde1841accbe8/opentelemetry_exporter_otlp_proto_common-1.38.0.tar.gz", hash = "sha256:e333278afab4695aa8114eeb7bf4e44e65c6607d54968271a249c180b2cb605c", size = 20431, upload-time = "2025-10-16T08:35:53.285Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/9e/55a41c9601191e8cd8eb626b54ee6827b9c9d4a46d736f32abc80d8039fc/opentelemetry_exporter_otlp_proto_common-1.38.0-py3-none-any.whl", hash = "sha256:03cb76ab213300fe4f4c62b7d8f17d97fcfd21b89f0b5ce38ea156327ddda74a", size = 18359, upload-time = "2025-10-16T08:35:34.099Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-grpc" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-common" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/c0/43222f5b97dc10812bc4f0abc5dc7cd0a2525a91b5151d26c9e2e958f52e/opentelemetry_exporter_otlp_proto_grpc-1.38.0.tar.gz", hash = "sha256:2473935e9eac71f401de6101d37d6f3f0f1831db92b953c7dcc912536158ebd6", size = 24676, upload-time = "2025-10-16T08:35:53.83Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/f0/bd831afbdba74ca2ce3982142a2fad707f8c487e8a3b6fef01f1d5945d1b/opentelemetry_exporter_otlp_proto_grpc-1.38.0-py3-none-any.whl", hash = "sha256:7c49fd9b4bd0dbe9ba13d91f764c2d20b0025649a6e4ac35792fb8d84d764bc7", size = 19695, upload-time = "2025-10-16T08:35:35.053Z" }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/14/f0c4f0f6371b9cb7f9fa9ee8918bfd59ac7040c7791f1e6da32a1839780d/opentelemetry_proto-1.38.0.tar.gz", hash = "sha256:88b161e89d9d372ce723da289b7da74c3a8354a8e5359992be813942969ed468", size = 46152, upload-time = "2025-10-16T08:36:01.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/6a/82b68b14efca5150b2632f3692d627afa76b77378c4999f2648979409528/opentelemetry_proto-1.38.0-py3-none-any.whl", hash = "sha256:b6ebe54d3217c42e45462e2a1ae28c3e2bf2ec5a5645236a490f55f45f1a0a18", size = 72535, upload-time = "2025-10-16T08:35:45.749Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/cb/f0eee1445161faf4c9af3ba7b848cc22a50a3d3e2515051ad8628c35ff80/opentelemetry_sdk-1.38.0.tar.gz", hash = "sha256:93df5d4d871ed09cb4272305be4d996236eedb232253e3ab864c8620f051cebe", size = 171942, upload-time = "2025-10-16T08:36:02.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/2e/e93777a95d7d9c40d270a371392b6d6f1ff170c2a3cb32d6176741b5b723/opentelemetry_sdk-1.38.0-py3-none-any.whl", hash = "sha256:1c66af6564ecc1553d72d811a01df063ff097cdc82ce188da9951f93b8d10f6b", size = 132349, upload-time = "2025-10-16T08:35:46.995Z" }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.59b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/bc/8b9ad3802cd8ac6583a4eb7de7e5d7db004e89cb7efe7008f9c8a537ee75/opentelemetry_semantic_conventions-0.59b0.tar.gz", hash = "sha256:7a6db3f30d70202d5bf9fa4b69bc866ca6a30437287de6c510fb594878aed6b0", size = 129861, upload-time = "2025-10-16T08:36:03.346Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/7d/c88d7b15ba8fe5c6b8f93be50fc11795e9fc05386c44afaf6b76fe191f9b/opentelemetry_semantic_conventions-0.59b0-py3-none-any.whl", hash = "sha256:35d3b8833ef97d614136e253c1da9342b4c3c083bbaf29ce31d572a1c3825eed", size = 207954, upload-time = "2025-10-16T08:35:48.054Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/fe/ed708782d6709cc60eb4c2d8a361a440661f74134675c72990f2c48c785f/orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d", size = 5945188, upload-time = "2025-10-24T15:50:38.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/51/6b556192a04595b93e277a9ff71cd0cc06c21a7df98bcce5963fa0f5e36f/orjson-3.11.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d4371de39319d05d3f482f372720b841c841b52f5385bd99c61ed69d55d9ab50", size = 243571, upload-time = "2025-10-24T15:49:10.008Z" }, + { url = "https://files.pythonhosted.org/packages/1c/2c/2602392ddf2601d538ff11848b98621cd465d1a1ceb9db9e8043181f2f7b/orjson-3.11.4-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:e41fd3b3cac850eaae78232f37325ed7d7436e11c471246b87b2cd294ec94853", size = 128891, upload-time = "2025-10-24T15:49:11.297Z" }, + { url = "https://files.pythonhosted.org/packages/4e/47/bf85dcf95f7a3a12bf223394a4f849430acd82633848d52def09fa3f46ad/orjson-3.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600e0e9ca042878c7fdf189cf1b028fe2c1418cc9195f6cb9824eb6ed99cb938", size = 130137, upload-time = "2025-10-24T15:49:12.544Z" }, + { url = "https://files.pythonhosted.org/packages/b4/4d/a0cb31007f3ab6f1fd2a1b17057c7c349bc2baf8921a85c0180cc7be8011/orjson-3.11.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7bbf9b333f1568ef5da42bc96e18bf30fd7f8d54e9ae066d711056add508e415", size = 129152, upload-time = "2025-10-24T15:49:13.754Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ef/2811def7ce3d8576b19e3929fff8f8f0d44bc5eb2e0fdecb2e6e6cc6c720/orjson-3.11.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4806363144bb6e7297b8e95870e78d30a649fdc4e23fc84daa80c8ebd366ce44", size = 136834, upload-time = "2025-10-24T15:49:15.307Z" }, + { url = "https://files.pythonhosted.org/packages/00/d4/9aee9e54f1809cec8ed5abd9bc31e8a9631d19460e3b8470145d25140106/orjson-3.11.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad355e8308493f527d41154e9053b86a5be892b3b359a5c6d5d95cda23601cb2", size = 137519, upload-time = "2025-10-24T15:49:16.557Z" }, + { url = "https://files.pythonhosted.org/packages/db/ea/67bfdb5465d5679e8ae8d68c11753aaf4f47e3e7264bad66dc2f2249e643/orjson-3.11.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a7517482667fb9f0ff1b2f16fe5829296ed7a655d04d68cd9711a4d8a4e708", size = 136749, upload-time = "2025-10-24T15:49:17.796Z" }, + { url = "https://files.pythonhosted.org/packages/01/7e/62517dddcfce6d53a39543cd74d0dccfcbdf53967017c58af68822100272/orjson-3.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97eb5942c7395a171cbfecc4ef6701fc3c403e762194683772df4c54cfbb2210", size = 136325, upload-time = "2025-10-24T15:49:19.347Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/40516739f99ab4c7ec3aaa5cc242d341fcb03a45d89edeeaabc5f69cb2cf/orjson-3.11.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:149d95d5e018bdd822e3f38c103b1a7c91f88d38a88aada5c4e9b3a73a244241", size = 140204, upload-time = "2025-10-24T15:49:20.545Z" }, + { url = "https://files.pythonhosted.org/packages/82/18/ff5734365623a8916e3a4037fcef1cd1782bfc14cf0992afe7940c5320bf/orjson-3.11.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:624f3951181eb46fc47dea3d221554e98784c823e7069edb5dbd0dc826ac909b", size = 406242, upload-time = "2025-10-24T15:49:21.884Z" }, + { url = "https://files.pythonhosted.org/packages/e1/43/96436041f0a0c8c8deca6a05ebeaf529bf1de04839f93ac5e7c479807aec/orjson-3.11.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:03bfa548cf35e3f8b3a96c4e8e41f753c686ff3d8e182ce275b1751deddab58c", size = 150013, upload-time = "2025-10-24T15:49:23.185Z" }, + { url = "https://files.pythonhosted.org/packages/1b/48/78302d98423ed8780479a1e682b9aecb869e8404545d999d34fa486e573e/orjson-3.11.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:525021896afef44a68148f6ed8a8bf8375553d6066c7f48537657f64823565b9", size = 139951, upload-time = "2025-10-24T15:49:24.428Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7b/ad613fdcdaa812f075ec0875143c3d37f8654457d2af17703905425981bf/orjson-3.11.4-cp312-cp312-win32.whl", hash = "sha256:b58430396687ce0f7d9eeb3dd47761ca7d8fda8e9eb92b3077a7a353a75efefa", size = 136049, upload-time = "2025-10-24T15:49:25.973Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3c/9cf47c3ff5f39b8350fb21ba65d789b6a1129d4cbb3033ba36c8a9023520/orjson-3.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:c6dbf422894e1e3c80a177133c0dda260f81428f9de16d61041949f6a2e5c140", size = 131461, upload-time = "2025-10-24T15:49:27.259Z" }, + { url = "https://files.pythonhosted.org/packages/c6/3b/e2425f61e5825dc5b08c2a5a2b3af387eaaca22a12b9c8c01504f8614c36/orjson-3.11.4-cp312-cp312-win_arm64.whl", hash = "sha256:d38d2bc06d6415852224fcc9c0bfa834c25431e466dc319f0edd56cca81aa96e", size = 126167, upload-time = "2025-10-24T15:49:28.511Z" }, + { url = "https://files.pythonhosted.org/packages/23/15/c52aa7112006b0f3d6180386c3a46ae057f932ab3425bc6f6ac50431cca1/orjson-3.11.4-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2d6737d0e616a6e053c8b4acc9eccea6b6cce078533666f32d140e4f85002534", size = 243525, upload-time = "2025-10-24T15:49:29.737Z" }, + { url = "https://files.pythonhosted.org/packages/ec/38/05340734c33b933fd114f161f25a04e651b0c7c33ab95e9416ade5cb44b8/orjson-3.11.4-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:afb14052690aa328cc118a8e09f07c651d301a72e44920b887c519b313d892ff", size = 128871, upload-time = "2025-10-24T15:49:31.109Z" }, + { url = "https://files.pythonhosted.org/packages/55/b9/ae8d34899ff0c012039b5a7cb96a389b2476e917733294e498586b45472d/orjson-3.11.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38aa9e65c591febb1b0aed8da4d469eba239d434c218562df179885c94e1a3ad", size = 130055, upload-time = "2025-10-24T15:49:33.382Z" }, + { url = "https://files.pythonhosted.org/packages/33/aa/6346dd5073730451bee3681d901e3c337e7ec17342fb79659ec9794fc023/orjson-3.11.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2cf4dfaf9163b0728d061bebc1e08631875c51cd30bf47cb9e3293bfbd7dcd5", size = 129061, upload-time = "2025-10-24T15:49:34.935Z" }, + { url = "https://files.pythonhosted.org/packages/39/e4/8eea51598f66a6c853c380979912d17ec510e8e66b280d968602e680b942/orjson-3.11.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89216ff3dfdde0e4070932e126320a1752c9d9a758d6a32ec54b3b9334991a6a", size = 136541, upload-time = "2025-10-24T15:49:36.923Z" }, + { url = "https://files.pythonhosted.org/packages/9a/47/cb8c654fa9adcc60e99580e17c32b9e633290e6239a99efa6b885aba9dbc/orjson-3.11.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9daa26ca8e97fae0ce8aa5d80606ef8f7914e9b129b6b5df9104266f764ce436", size = 137535, upload-time = "2025-10-24T15:49:38.307Z" }, + { url = "https://files.pythonhosted.org/packages/43/92/04b8cc5c2b729f3437ee013ce14a60ab3d3001465d95c184758f19362f23/orjson-3.11.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c8b2769dc31883c44a9cd126560327767f848eb95f99c36c9932f51090bfce9", size = 136703, upload-time = "2025-10-24T15:49:40.795Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fd/d0733fcb9086b8be4ebcfcda2d0312865d17d0d9884378b7cffb29d0763f/orjson-3.11.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1469d254b9884f984026bd9b0fa5bbab477a4bfe558bba6848086f6d43eb5e73", size = 136293, upload-time = "2025-10-24T15:49:42.347Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/3c5514e806837c210492d72ae30ccf050ce3f940f45bf085bab272699ef4/orjson-3.11.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:68e44722541983614e37117209a194e8c3ad07838ccb3127d96863c95ec7f1e0", size = 140131, upload-time = "2025-10-24T15:49:43.638Z" }, + { url = "https://files.pythonhosted.org/packages/9c/dd/ba9d32a53207babf65bd510ac4d0faaa818bd0df9a9c6f472fe7c254f2e3/orjson-3.11.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8e7805fda9672c12be2f22ae124dcd7b03928d6c197544fe12174b86553f3196", size = 406164, upload-time = "2025-10-24T15:49:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f9/f68ad68f4af7c7bde57cd514eaa2c785e500477a8bc8f834838eb696a685/orjson-3.11.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:04b69c14615fb4434ab867bf6f38b2d649f6f300af30a6705397e895f7aec67a", size = 149859, upload-time = "2025-10-24T15:49:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d2/7f847761d0c26818395b3d6b21fb6bc2305d94612a35b0a30eae65a22728/orjson-3.11.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:639c3735b8ae7f970066930e58cf0ed39a852d417c24acd4a25fc0b3da3c39a6", size = 139926, upload-time = "2025-10-24T15:49:48.321Z" }, + { url = "https://files.pythonhosted.org/packages/9f/37/acd14b12dc62db9a0e1d12386271b8661faae270b22492580d5258808975/orjson-3.11.4-cp313-cp313-win32.whl", hash = "sha256:6c13879c0d2964335491463302a6ca5ad98105fc5db3565499dcb80b1b4bd839", size = 136007, upload-time = "2025-10-24T15:49:49.938Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a9/967be009ddf0a1fffd7a67de9c36656b28c763659ef91352acc02cbe364c/orjson-3.11.4-cp313-cp313-win_amd64.whl", hash = "sha256:09bf242a4af98732db9f9a1ec57ca2604848e16f132e3f72edfd3c5c96de009a", size = 131314, upload-time = "2025-10-24T15:49:51.248Z" }, + { url = "https://files.pythonhosted.org/packages/cb/db/399abd6950fbd94ce125cb8cd1a968def95174792e127b0642781e040ed4/orjson-3.11.4-cp313-cp313-win_arm64.whl", hash = "sha256:a85f0adf63319d6c1ba06fb0dbf997fced64a01179cf17939a6caca662bf92de", size = 126152, upload-time = "2025-10-24T15:49:52.922Z" }, + { url = "https://files.pythonhosted.org/packages/25/e3/54ff63c093cc1697e758e4fceb53164dd2661a7d1bcd522260ba09f54533/orjson-3.11.4-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:42d43a1f552be1a112af0b21c10a5f553983c2a0938d2bbb8ecd8bc9fb572803", size = 243501, upload-time = "2025-10-24T15:49:54.288Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7d/e2d1076ed2e8e0ae9badca65bf7ef22710f93887b29eaa37f09850604e09/orjson-3.11.4-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:26a20f3fbc6c7ff2cb8e89c4c5897762c9d88cf37330c6a117312365d6781d54", size = 128862, upload-time = "2025-10-24T15:49:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/9f/37/ca2eb40b90621faddfa9517dfe96e25f5ae4d8057a7c0cdd613c17e07b2c/orjson-3.11.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3f20be9048941c7ffa8fc523ccbd17f82e24df1549d1d1fe9317712d19938e", size = 130047, upload-time = "2025-10-24T15:49:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/c7/62/1021ed35a1f2bad9040f05fa4cc4f9893410df0ba3eaa323ccf899b1c90a/orjson-3.11.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aac364c758dc87a52e68e349924d7e4ded348dedff553889e4d9f22f74785316", size = 129073, upload-time = "2025-10-24T15:49:58.782Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3f/f84d966ec2a6fd5f73b1a707e7cd876813422ae4bf9f0145c55c9c6a0f57/orjson-3.11.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5c54a6d76e3d741dcc3f2707f8eeb9ba2a791d3adbf18f900219b62942803b1", size = 136597, upload-time = "2025-10-24T15:50:00.12Z" }, + { url = "https://files.pythonhosted.org/packages/32/78/4fa0aeca65ee82bbabb49e055bd03fa4edea33f7c080c5c7b9601661ef72/orjson-3.11.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28485bdca8617b79d44627f5fb04336897041dfd9fa66d383a49d09d86798bc", size = 137515, upload-time = "2025-10-24T15:50:01.57Z" }, + { url = "https://files.pythonhosted.org/packages/c1/9d/0c102e26e7fde40c4c98470796d050a2ec1953897e2c8ab0cb95b0759fa2/orjson-3.11.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2a484cad3585e4ba61985a6062a4c2ed5c7925db6d39f1fa267c9d166487f", size = 136703, upload-time = "2025-10-24T15:50:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/2de7188705b4cdfaf0b6c97d2f7849c17d2003232f6e70df98602173f788/orjson-3.11.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e34dbd508cb91c54f9c9788923daca129fe5b55c5b4eebe713bf5ed3791280cf", size = 136311, upload-time = "2025-10-24T15:50:04.441Z" }, + { url = "https://files.pythonhosted.org/packages/e0/52/847fcd1a98407154e944feeb12e3b4d487a0e264c40191fb44d1269cbaa1/orjson-3.11.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b13c478fa413d4b4ee606ec8e11c3b2e52683a640b006bb586b3041c2ca5f606", size = 140127, upload-time = "2025-10-24T15:50:07.398Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ae/21d208f58bdb847dd4d0d9407e2929862561841baa22bdab7aea10ca088e/orjson-3.11.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:724ca721ecc8a831b319dcd72cfa370cc380db0bf94537f08f7edd0a7d4e1780", size = 406201, upload-time = "2025-10-24T15:50:08.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/55/0789d6de386c8366059db098a628e2ad8798069e94409b0d8935934cbcb9/orjson-3.11.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:977c393f2e44845ce1b540e19a786e9643221b3323dae190668a98672d43fb23", size = 149872, upload-time = "2025-10-24T15:50:10.234Z" }, + { url = "https://files.pythonhosted.org/packages/cc/1d/7ff81ea23310e086c17b41d78a72270d9de04481e6113dbe2ac19118f7fb/orjson-3.11.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e539e382cf46edec157ad66b0b0872a90d829a6b71f17cb633d6c160a223155", size = 139931, upload-time = "2025-10-24T15:50:11.623Z" }, + { url = "https://files.pythonhosted.org/packages/77/92/25b886252c50ed64be68c937b562b2f2333b45afe72d53d719e46a565a50/orjson-3.11.4-cp314-cp314-win32.whl", hash = "sha256:d63076d625babab9db5e7836118bdfa086e60f37d8a174194ae720161eb12394", size = 136065, upload-time = "2025-10-24T15:50:13.025Z" }, + { url = "https://files.pythonhosted.org/packages/63/b8/718eecf0bb7e9d64e4956afaafd23db9f04c776d445f59fe94f54bdae8f0/orjson-3.11.4-cp314-cp314-win_amd64.whl", hash = "sha256:0a54d6635fa3aaa438ae32e8570b9f0de36f3f6562c308d2a2a452e8b0592db1", size = 131310, upload-time = "2025-10-24T15:50:14.46Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bf/def5e25d4d8bfce296a9a7c8248109bf58622c21618b590678f945a2c59c/orjson-3.11.4-cp314-cp314-win_arm64.whl", hash = "sha256:78b999999039db3cf58f6d230f524f04f75f129ba3d1ca2ed121f8657e575d3d", size = 126151, upload-time = "2025-10-24T15:50:15.878Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pillow" +version = "12.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, + { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a4/a0a31467e3f83b94d37568294b01d22b43ae3c5d85f2811769b9c66389dd/pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", size = 5249132, upload-time = "2025-10-15T18:22:30.641Z" }, + { url = "https://files.pythonhosted.org/packages/83/06/48eab21dd561de2914242711434c0c0eb992ed08ff3f6107a5f44527f5e9/pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", size = 4650099, upload-time = "2025-10-15T18:22:32.73Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/69ed99fd46a8dba7c1887156d3572fe4484e3f031405fcc5a92e31c04035/pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", size = 6230808, upload-time = "2025-10-15T18:22:34.337Z" }, + { url = "https://files.pythonhosted.org/packages/ea/94/8fad659bcdbf86ed70099cb60ae40be6acca434bbc8c4c0d4ef356d7e0de/pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", size = 8037804, upload-time = "2025-10-15T18:22:36.402Z" }, + { url = "https://files.pythonhosted.org/packages/20/39/c685d05c06deecfd4e2d1950e9a908aa2ca8bc4e6c3b12d93b9cafbd7837/pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", size = 6345553, upload-time = "2025-10-15T18:22:38.066Z" }, + { url = "https://files.pythonhosted.org/packages/38/57/755dbd06530a27a5ed74f8cb0a7a44a21722ebf318edbe67ddbd7fb28f88/pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", size = 7037729, upload-time = "2025-10-15T18:22:39.769Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/7e94f4c41d238615674d06ed677c14883103dce1c52e4af16f000338cfd7/pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", size = 6459789, upload-time = "2025-10-15T18:22:41.437Z" }, + { url = "https://files.pythonhosted.org/packages/9c/14/4448bb0b5e0f22dd865290536d20ec8a23b64e2d04280b89139f09a36bb6/pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", size = 7130917, upload-time = "2025-10-15T18:22:43.152Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ca/16c6926cc1c015845745d5c16c9358e24282f1e588237a4c36d2b30f182f/pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", size = 6302391, upload-time = "2025-10-15T18:22:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/6d/2a/dd43dcfd6dae9b6a49ee28a8eedb98c7d5ff2de94a5d834565164667b97b/pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", size = 7007477, upload-time = "2025-10-15T18:22:46.838Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/72ea067f4b5ae5ead653053212af05ce3705807906ba3f3e8f58ddf617e6/pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", size = 2435918, upload-time = "2025-10-15T18:22:48.399Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5e/9046b423735c21f0487ea6cb5b10f89ea8f8dfbe32576fe052b5ba9d4e5b/pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", size = 5251406, upload-time = "2025-10-15T18:22:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/12/66/982ceebcdb13c97270ef7a56c3969635b4ee7cd45227fa707c94719229c5/pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", size = 4653218, upload-time = "2025-10-15T18:22:51.587Z" }, + { url = "https://files.pythonhosted.org/packages/16/b3/81e625524688c31859450119bf12674619429cab3119eec0e30a7a1029cb/pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", size = 6266564, upload-time = "2025-10-15T18:22:53.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/59/dfb38f2a41240d2408096e1a76c671d0a105a4a8471b1871c6902719450c/pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", size = 8069260, upload-time = "2025-10-15T18:22:54.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/3d/378dbea5cd1874b94c312425ca77b0f47776c78e0df2df751b820c8c1d6c/pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", size = 6379248, upload-time = "2025-10-15T18:22:56.605Z" }, + { url = "https://files.pythonhosted.org/packages/84/b0/d525ef47d71590f1621510327acec75ae58c721dc071b17d8d652ca494d8/pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", size = 7066043, upload-time = "2025-10-15T18:22:58.53Z" }, + { url = "https://files.pythonhosted.org/packages/61/2c/aced60e9cf9d0cde341d54bf7932c9ffc33ddb4a1595798b3a5150c7ec4e/pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", size = 6490915, upload-time = "2025-10-15T18:23:00.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/26/69dcb9b91f4e59f8f34b2332a4a0a951b44f547c4ed39d3e4dcfcff48f89/pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", size = 7157998, upload-time = "2025-10-15T18:23:02.627Z" }, + { url = "https://files.pythonhosted.org/packages/61/2b/726235842220ca95fa441ddf55dd2382b52ab5b8d9c0596fe6b3f23dafe8/pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", size = 6306201, upload-time = "2025-10-15T18:23:04.709Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/2afaf4e840b2df71344ababf2f8edd75a705ce500e5dc1e7227808312ae1/pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", size = 7013165, upload-time = "2025-10-15T18:23:06.46Z" }, + { url = "https://files.pythonhosted.org/packages/6f/75/3fa09aa5cf6ed04bee3fa575798ddf1ce0bace8edb47249c798077a81f7f/pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", size = 2437834, upload-time = "2025-10-15T18:23:08.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/2a/9a8c6ba2c2c07b71bec92cf63e03370ca5e5f5c5b119b742bcc0cde3f9c5/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9", size = 4045531, upload-time = "2025-10-15T18:23:10.121Z" }, + { url = "https://files.pythonhosted.org/packages/84/54/836fdbf1bfb3d66a59f0189ff0b9f5f666cee09c6188309300df04ad71fa/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2", size = 4120554, upload-time = "2025-10-15T18:23:12.14Z" }, + { url = "https://files.pythonhosted.org/packages/0d/cd/16aec9f0da4793e98e6b54778a5fbce4f375c6646fe662e80600b8797379/pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a", size = 3576812, upload-time = "2025-10-15T18:23:13.962Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b7/13957fda356dc46339298b351cae0d327704986337c3c69bb54628c88155/pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b", size = 5252689, upload-time = "2025-10-15T18:23:15.562Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/eae31a306341d8f331f43edb2e9122c7661b975433de5e447939ae61c5da/pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad", size = 4650186, upload-time = "2025-10-15T18:23:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/86/62/2a88339aa40c4c77e79108facbd307d6091e2c0eb5b8d3cf4977cfca2fe6/pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01", size = 6230308, upload-time = "2025-10-15T18:23:18.971Z" }, + { url = "https://files.pythonhosted.org/packages/c7/33/5425a8992bcb32d1cb9fa3dd39a89e613d09a22f2c8083b7bf43c455f760/pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c", size = 8039222, upload-time = "2025-10-15T18:23:20.909Z" }, + { url = "https://files.pythonhosted.org/packages/d8/61/3f5d3b35c5728f37953d3eec5b5f3e77111949523bd2dd7f31a851e50690/pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e", size = 6346657, upload-time = "2025-10-15T18:23:23.077Z" }, + { url = "https://files.pythonhosted.org/packages/3a/be/ee90a3d79271227e0f0a33c453531efd6ed14b2e708596ba5dd9be948da3/pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e", size = 7038482, upload-time = "2025-10-15T18:23:25.005Z" }, + { url = "https://files.pythonhosted.org/packages/44/34/a16b6a4d1ad727de390e9bd9f19f5f669e079e5826ec0f329010ddea492f/pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9", size = 6461416, upload-time = "2025-10-15T18:23:27.009Z" }, + { url = "https://files.pythonhosted.org/packages/b6/39/1aa5850d2ade7d7ba9f54e4e4c17077244ff7a2d9e25998c38a29749eb3f/pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab", size = 7131584, upload-time = "2025-10-15T18:23:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/bf/db/4fae862f8fad0167073a7733973bfa955f47e2cac3dc3e3e6257d10fab4a/pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b", size = 6400621, upload-time = "2025-10-15T18:23:32.06Z" }, + { url = "https://files.pythonhosted.org/packages/2b/24/b350c31543fb0107ab2599464d7e28e6f856027aadda995022e695313d94/pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b", size = 7142916, upload-time = "2025-10-15T18:23:34.71Z" }, + { url = "https://files.pythonhosted.org/packages/0f/9b/0ba5a6fd9351793996ef7487c4fdbde8d3f5f75dbedc093bb598648fddf0/pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0", size = 2523836, upload-time = "2025-10-15T18:23:36.967Z" }, + { url = "https://files.pythonhosted.org/packages/f5/7a/ceee0840aebc579af529b523d530840338ecf63992395842e54edc805987/pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6", size = 5255092, upload-time = "2025-10-15T18:23:38.573Z" }, + { url = "https://files.pythonhosted.org/packages/44/76/20776057b4bfd1aef4eeca992ebde0f53a4dce874f3ae693d0ec90a4f79b/pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6", size = 4653158, upload-time = "2025-10-15T18:23:40.238Z" }, + { url = "https://files.pythonhosted.org/packages/82/3f/d9ff92ace07be8836b4e7e87e6a4c7a8318d47c2f1463ffcf121fc57d9cb/pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1", size = 6267882, upload-time = "2025-10-15T18:23:42.434Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7a/4f7ff87f00d3ad33ba21af78bfcd2f032107710baf8280e3722ceec28cda/pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e", size = 8071001, upload-time = "2025-10-15T18:23:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/75/87/fcea108944a52dad8cca0715ae6247e271eb80459364a98518f1e4f480c1/pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca", size = 6380146, upload-time = "2025-10-15T18:23:46.065Z" }, + { url = "https://files.pythonhosted.org/packages/91/52/0d31b5e571ef5fd111d2978b84603fce26aba1b6092f28e941cb46570745/pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925", size = 7067344, upload-time = "2025-10-15T18:23:47.898Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f4/2dd3d721f875f928d48e83bb30a434dee75a2531bca839bb996bb0aa5a91/pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8", size = 6491864, upload-time = "2025-10-15T18:23:49.607Z" }, + { url = "https://files.pythonhosted.org/packages/30/4b/667dfcf3d61fc309ba5a15b141845cece5915e39b99c1ceab0f34bf1d124/pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4", size = 7158911, upload-time = "2025-10-15T18:23:51.351Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/16cabcc6426c32218ace36bf0d55955e813f2958afddbf1d391849fee9d1/pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52", size = 6408045, upload-time = "2025-10-15T18:23:53.177Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/e29aa0c9c666cf787628d3f0dcf379f4791fba79f4936d02f8b37165bdf8/pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a", size = 7148282, upload-time = "2025-10-15T18:23:55.316Z" }, + { url = "https://files.pythonhosted.org/packages/c1/70/6b41bdcddf541b437bbb9f47f94d2db5d9ddef6c37ccab8c9107743748a4/pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7", size = 2525630, upload-time = "2025-10-15T18:23:57.149Z" }, +] + +[[package]] +name = "playwright" +version = "1.56.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet" }, + { name = "pyee" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/31/a5362cee43f844509f1f10d8a27c9cc0e2f7bdce5353d304d93b2151c1b1/playwright-1.56.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b33eb89c516cbc6723f2e3523bada4a4eb0984a9c411325c02d7016a5d625e9c", size = 40611424, upload-time = "2025-11-11T18:39:10.175Z" }, + { url = "https://files.pythonhosted.org/packages/ef/95/347eef596d8778fb53590dc326c344d427fa19ba3d42b646fce2a4572eb3/playwright-1.56.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b228b3395212b9472a4ee5f1afe40d376eef9568eb039fcb3e563de8f4f4657b", size = 39400228, upload-time = "2025-11-11T18:39:13.915Z" }, + { url = "https://files.pythonhosted.org/packages/b9/54/6ad97b08b2ca1dfcb4fbde4536c4f45c0d9d8b1857a2d20e7bbfdf43bf15/playwright-1.56.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:0ef7e6fd653267798a8a968ff7aa2dcac14398b7dd7440ef57524e01e0fbbd65", size = 40611424, upload-time = "2025-11-11T18:39:17.093Z" }, + { url = "https://files.pythonhosted.org/packages/e4/76/6d409e37e82cdd5dda3df1ab958130ae32b46e42458bd4fc93d7eb8749cb/playwright-1.56.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:404be089b49d94bc4c1fe0dfb07664bda5ffe87789034a03bffb884489bdfb5c", size = 46263122, upload-time = "2025-11-11T18:39:20.619Z" }, + { url = "https://files.pythonhosted.org/packages/4f/84/fb292cc5d45f3252e255ea39066cd1d2385c61c6c1596548dfbf59c88605/playwright-1.56.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64cda7cf4e51c0d35dab55190841bfcdfb5871685ec22cb722cd0ad2df183e34", size = 46110645, upload-time = "2025-11-11T18:39:24.005Z" }, + { url = "https://files.pythonhosted.org/packages/61/bd/8c02c3388ae14edc374ac9f22cbe4e14826c6a51b2d8eaf86e89fabee264/playwright-1.56.0-py3-none-win32.whl", hash = "sha256:d87b79bcb082092d916a332c27ec9732e0418c319755d235d93cc6be13bdd721", size = 35639837, upload-time = "2025-11-11T18:39:27.174Z" }, + { url = "https://files.pythonhosted.org/packages/64/27/f13b538fbc6b7a00152f4379054a49f6abc0bf55ac86f677ae54bc49fb82/playwright-1.56.0-py3-none-win_amd64.whl", hash = "sha256:3c7fc49bb9e673489bf2622855f9486d41c5101bbed964638552b864c4591f94", size = 35639843, upload-time = "2025-11-11T18:39:30.851Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c7/3ee8b556107995846576b4fe42a08ed49b8677619421f2afacf6ee421138/playwright-1.56.0-py3-none-win_arm64.whl", hash = "sha256:2745490ae8dd58d27e5ea4d9aa28402e8e2991eb84fb4b2fd5fbde2106716f6f", size = 31248959, upload-time = "2025-11-11T18:39:33.998Z" }, +] + +[[package]] +name = "posthog" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backoff" }, + { name = "distro" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/20/60ae67bb9d82f00427946218d49e2e7e80fb41c15dc5019482289ec9ce8d/posthog-5.4.0.tar.gz", hash = "sha256:701669261b8d07cdde0276e5bc096b87f9e200e3b9589c5ebff14df658c5893c", size = 88076, upload-time = "2025-06-20T23:19:23.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/98/e480cab9a08d1c09b1c59a93dade92c1bb7544826684ff2acbfd10fcfbd4/posthog-5.4.0-py3-none-any.whl", hash = "sha256:284dfa302f64353484420b52d4ad81ff5c2c2d1d607c4e2db602ac72761831bd", size = 105364, upload-time = "2025-06-20T23:19:22.001Z" }, +] + +[[package]] +name = "protobuf" +version = "6.33.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/03/a1440979a3f74f16cab3b75b0da1a1a7f922d56a8ddea96092391998edc0/protobuf-6.33.1.tar.gz", hash = "sha256:97f65757e8d09870de6fd973aeddb92f85435607235d20b2dfed93405d00c85b", size = 443432, upload-time = "2025-11-13T16:44:18.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/f1/446a9bbd2c60772ca36556bac8bfde40eceb28d9cc7838755bc41e001d8f/protobuf-6.33.1-cp310-abi3-win32.whl", hash = "sha256:f8d3fdbc966aaab1d05046d0240dd94d40f2a8c62856d41eaa141ff64a79de6b", size = 425593, upload-time = "2025-11-13T16:44:06.275Z" }, + { url = "https://files.pythonhosted.org/packages/a6/79/8780a378c650e3df849b73de8b13cf5412f521ca2ff9b78a45c247029440/protobuf-6.33.1-cp310-abi3-win_amd64.whl", hash = "sha256:923aa6d27a92bf44394f6abf7ea0500f38769d4b07f4be41cb52bd8b1123b9ed", size = 436883, upload-time = "2025-11-13T16:44:09.222Z" }, + { url = "https://files.pythonhosted.org/packages/cd/93/26213ff72b103ae55bb0d73e7fb91ea570ef407c3ab4fd2f1f27cac16044/protobuf-6.33.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:fe34575f2bdde76ac429ec7b570235bf0c788883e70aee90068e9981806f2490", size = 427522, upload-time = "2025-11-13T16:44:10.475Z" }, + { url = "https://files.pythonhosted.org/packages/c2/32/df4a35247923393aa6b887c3b3244a8c941c32a25681775f96e2b418f90e/protobuf-6.33.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:f8adba2e44cde2d7618996b3fc02341f03f5bc3f2748be72dc7b063319276178", size = 324445, upload-time = "2025-11-13T16:44:11.869Z" }, + { url = "https://files.pythonhosted.org/packages/8e/d0/d796e419e2ec93d2f3fa44888861c3f88f722cde02b7c3488fcc6a166820/protobuf-6.33.1-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:0f4cf01222c0d959c2b399142deb526de420be8236f22c71356e2a544e153c53", size = 339161, upload-time = "2025-11-13T16:44:12.778Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2a/3c5f05a4af06649547027d288747f68525755de692a26a7720dced3652c0/protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:8fd7d5e0eb08cd5b87fd3df49bc193f5cfd778701f47e11d127d0afc6c39f1d1", size = 323171, upload-time = "2025-11-13T16:44:14.035Z" }, + { url = "https://files.pythonhosted.org/packages/08/b4/46310463b4f6ceef310f8348786f3cff181cea671578e3d9743ba61a459e/protobuf-6.33.1-py3-none-any.whl", hash = "sha256:d595a9fd694fdeb061a62fbe10eb039cc1e444df81ec9bb70c7fc59ebcb1eafa", size = 170477, upload-time = "2025-11-13T16:44:17.633Z" }, +] + +[[package]] +name = "py" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc/py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", size = 207796, upload-time = "2021-11-04T17:17:01.377Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378", size = 98708, upload-time = "2021-11-04T17:17:00.152Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pybase64" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/14/43297a7b7f0c1bf0c00b596f754ee3ac946128c64d21047ccf9c9bbc5165/pybase64-1.4.2.tar.gz", hash = "sha256:46cdefd283ed9643315d952fe44de80dc9b9a811ce6e3ec97fd1827af97692d0", size = 137246, upload-time = "2025-07-27T13:08:57.808Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/6d/11ede991e800797b9f5ebd528013b34eee5652df93de61ffb24503393fa5/pybase64-1.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:db2c75d1388855b5a1015b65096d7dbcc708e7de3245dcbedeb872ec05a09326", size = 38326, upload-time = "2025-07-27T13:03:09.065Z" }, + { url = "https://files.pythonhosted.org/packages/fe/84/87f1f565f42e2397e2aaa2477c86419f5173c3699881c42325c090982f0a/pybase64-1.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b621a972a01841368fdb9dedc55fd3c6e0c7217d0505ba3b1ebe95e7ef1b493", size = 31661, upload-time = "2025-07-27T13:03:10.295Z" }, + { url = "https://files.pythonhosted.org/packages/cb/2a/a24c810e7a61d2cc6f73fe9ee4872a03030887fa8654150901b15f376f65/pybase64-1.4.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:f48c32ac6a16cbf57a5a96a073fef6ff7e3526f623cd49faa112b7f9980bafba", size = 68192, upload-time = "2025-07-27T13:03:11.467Z" }, + { url = "https://files.pythonhosted.org/packages/ee/87/d9baf98cbfc37b8657290ad4421f3a3c36aa0eafe4872c5859cfb52f3448/pybase64-1.4.2-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ace8b23093a6bb862477080d9059b784096ab2f97541e8bfc40d42f062875149", size = 71587, upload-time = "2025-07-27T13:03:12.719Z" }, + { url = "https://files.pythonhosted.org/packages/0b/89/3df043cc56ef3b91b7aa0c26ae822a2d7ec8da0b0fd7c309c879b0eb5988/pybase64-1.4.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1772c7532a7fb6301baea3dd3e010148dbf70cd1136a83c2f5f91bdc94822145", size = 59910, upload-time = "2025-07-27T13:03:14.266Z" }, + { url = "https://files.pythonhosted.org/packages/75/4f/6641e9edf37aeb4d4524dc7ba2168eff8d96c90e77f6283c2be3400ab380/pybase64-1.4.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:f86f7faddcba5cbfea475f8ab96567834c28bf09ca6c7c3d66ee445adac80d8f", size = 56701, upload-time = "2025-07-27T13:03:15.6Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7f/20d8ac1046f12420a0954a45a13033e75f98aade36eecd00c64e3549b071/pybase64-1.4.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:0b8c8e275b5294089f314814b4a50174ab90af79d6a4850f6ae11261ff6a7372", size = 59288, upload-time = "2025-07-27T13:03:16.823Z" }, + { url = "https://files.pythonhosted.org/packages/17/ea/9c0ca570e3e50b3c6c3442e280c83b321a0464c86a9db1f982a4ff531550/pybase64-1.4.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:864d85a0470c615807ae8b97d724d068b940a2d10ac13a5f1b9e75a3ce441758", size = 60267, upload-time = "2025-07-27T13:03:18.132Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46894929d71ccedebbfb0284173b0fea96bc029cd262654ba8451a7035d6/pybase64-1.4.2-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:47254d97ed2d8351e30ecfdb9e2414547f66ba73f8a09f932c9378ff75cd10c5", size = 54801, upload-time = "2025-07-27T13:03:19.669Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/02c95218ea964f0b2469717c2c69b48e63f4ca9f18af01a5b2a29e4c1216/pybase64-1.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:264b65ecc4f0ee73f3298ab83bbd8008f7f9578361b8df5b448f985d8c63e02a", size = 58599, upload-time = "2025-07-27T13:03:20.951Z" }, + { url = "https://files.pythonhosted.org/packages/15/45/ccc21004930789b8fb439d43e3212a6c260ccddb2bf450c39a20db093f33/pybase64-1.4.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fbcc2b30cd740c16c9699f596f22c7a9e643591311ae72b1e776f2d539e9dd9d", size = 52388, upload-time = "2025-07-27T13:03:23.064Z" }, + { url = "https://files.pythonhosted.org/packages/c4/45/22e46e549710c4c237d77785b6fb1bc4c44c288a5c44237ba9daf5c34b82/pybase64-1.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cda9f79c22d51ee4508f5a43b673565f1d26af4330c99f114e37e3186fdd3607", size = 68802, upload-time = "2025-07-27T13:03:24.673Z" }, + { url = "https://files.pythonhosted.org/packages/55/0c/232c6261b81296e5593549b36e6e7884a5da008776d12665923446322c36/pybase64-1.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0c91c6d2a7232e2a1cd10b3b75a8bb657defacd4295a1e5e80455df2dfc84d4f", size = 57841, upload-time = "2025-07-27T13:03:25.948Z" }, + { url = "https://files.pythonhosted.org/packages/20/8a/b35a615ae6f04550d696bb179c414538b3b477999435fdd4ad75b76139e4/pybase64-1.4.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:a370dea7b1cee2a36a4d5445d4e09cc243816c5bc8def61f602db5a6f5438e52", size = 54320, upload-time = "2025-07-27T13:03:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a9/8bd4f9bcc53689f1b457ecefed1eaa080e4949d65a62c31a38b7253d5226/pybase64-1.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9aa4de83f02e462a6f4e066811c71d6af31b52d7484de635582d0e3ec3d6cc3e", size = 56482, upload-time = "2025-07-27T13:03:28.942Z" }, + { url = "https://files.pythonhosted.org/packages/75/e5/4a7735b54a1191f61c3f5c2952212c85c2d6b06eb5fb3671c7603395f70c/pybase64-1.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:83a1c2f9ed00fee8f064d548c8654a480741131f280e5750bb32475b7ec8ee38", size = 70959, upload-time = "2025-07-27T13:03:30.171Z" }, + { url = "https://files.pythonhosted.org/packages/d3/67/e2b6cb32c782e12304d467418e70da0212567f42bd4d3b5eb1fdf64920ad/pybase64-1.4.2-cp312-cp312-win32.whl", hash = "sha256:a6e5688b18d558e8c6b8701cc8560836c4bbeba61d33c836b4dba56b19423716", size = 33683, upload-time = "2025-07-27T13:03:31.775Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bc/d5c277496063a09707486180f17abbdbdebbf2f5c4441b20b11d3cb7dc7c/pybase64-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:c995d21b8bd08aa179cd7dd4db0695c185486ecc72da1e8f6c37ec86cadb8182", size = 35817, upload-time = "2025-07-27T13:03:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/e6/69/e4be18ae685acff0ae77f75d4586590f29d2cd187bf603290cf1d635cad4/pybase64-1.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:e254b9258c40509c2ea063a7784f6994988f3f26099d6e08704e3c15dfed9a55", size = 30900, upload-time = "2025-07-27T13:03:34.499Z" }, + { url = "https://files.pythonhosted.org/packages/f4/56/5337f27a8b8d2d6693f46f7b36bae47895e5820bfa259b0072574a4e1057/pybase64-1.4.2-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:0f331aa59549de21f690b6ccc79360ffed1155c3cfbc852eb5c097c0b8565a2b", size = 33888, upload-time = "2025-07-27T13:03:35.698Z" }, + { url = "https://files.pythonhosted.org/packages/4c/09/f3f4b11fc9beda7e8625e29fb0f549958fcbb34fea3914e1c1d95116e344/pybase64-1.4.2-cp313-cp313-android_21_x86_64.whl", hash = "sha256:9dad20bf1f3ed9e6fe566c4c9d07d9a6c04f5a280daebd2082ffb8620b0a880d", size = 40796, upload-time = "2025-07-27T13:03:36.927Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ff/470768f0fe6de0aa302a8cb1bdf2f9f5cffc3f69e60466153be68bc953aa/pybase64-1.4.2-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:69d3f0445b0faeef7bb7f93bf8c18d850785e2a77f12835f49e524cc54af04e7", size = 30914, upload-time = "2025-07-27T13:03:38.475Z" }, + { url = "https://files.pythonhosted.org/packages/75/6b/d328736662665e0892409dc410353ebef175b1be5eb6bab1dad579efa6df/pybase64-1.4.2-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:2372b257b1f4dd512f317fb27e77d313afd137334de64c87de8374027aacd88a", size = 31380, upload-time = "2025-07-27T13:03:39.7Z" }, + { url = "https://files.pythonhosted.org/packages/ca/96/7ff718f87c67f4147c181b73d0928897cefa17dc75d7abc6e37730d5908f/pybase64-1.4.2-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:fb794502b4b1ec91c4ca5d283ae71aef65e3de7721057bd9e2b3ec79f7a62d7d", size = 38230, upload-time = "2025-07-27T13:03:41.637Z" }, + { url = "https://files.pythonhosted.org/packages/4d/58/a3307b048d799ff596a3c7c574fcba66f9b6b8c899a3c00a698124ca7ad5/pybase64-1.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d5c532b03fd14a5040d6cf6571299a05616f925369c72ddf6fe2fb643eb36fed", size = 38319, upload-time = "2025-07-27T13:03:42.847Z" }, + { url = "https://files.pythonhosted.org/packages/08/a7/0bda06341b0a2c830d348c6e1c4d348caaae86c53dc9a046e943467a05e9/pybase64-1.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f699514dc1d5689ca9cf378139e0214051922732f9adec9404bc680a8bef7c0", size = 31655, upload-time = "2025-07-27T13:03:44.426Z" }, + { url = "https://files.pythonhosted.org/packages/87/df/e1d6e8479e0c5113c2c63c7b44886935ce839c2d99884c7304ca9e86547c/pybase64-1.4.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:cd3e8713cbd32c8c6aa935feaf15c7670e2b7e8bfe51c24dc556811ebd293a29", size = 68232, upload-time = "2025-07-27T13:03:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/ab/db4dbdfccb9ca874d6ce34a0784761471885d96730de85cee3d300381529/pybase64-1.4.2-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d377d48acf53abf4b926c2a7a24a19deb092f366a04ffd856bf4b3aa330b025d", size = 71608, upload-time = "2025-07-27T13:03:47.01Z" }, + { url = "https://files.pythonhosted.org/packages/11/e9/508df958563951045d728bbfbd3be77465f9231cf805cb7ccaf6951fc9f1/pybase64-1.4.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d83c076e78d619b9e1dd674e2bf5fb9001aeb3e0b494b80a6c8f6d4120e38cd9", size = 59912, upload-time = "2025-07-27T13:03:48.277Z" }, + { url = "https://files.pythonhosted.org/packages/f2/58/7f2cef1ceccc682088958448d56727369de83fa6b29148478f4d2acd107a/pybase64-1.4.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:ab9cdb6a8176a5cb967f53e6ad60e40c83caaa1ae31c5e1b29e5c8f507f17538", size = 56413, upload-time = "2025-07-27T13:03:49.908Z" }, + { url = "https://files.pythonhosted.org/packages/08/7c/7e0af5c5728fa7e2eb082d88eca7c6bd17429be819d58518e74919d42e66/pybase64-1.4.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:adf0c103ad559dbfb9fe69edfd26a15c65d9c991a5ab0a25b04770f9eb0b9484", size = 59311, upload-time = "2025-07-27T13:03:51.238Z" }, + { url = "https://files.pythonhosted.org/packages/03/8b/09825d0f37e45b9a3f546e5f990b6cf2dd838e54ea74122c2464646e0c77/pybase64-1.4.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:0d03ef2f253d97ce0685d3624bf5e552d716b86cacb8a6c971333ba4b827e1fc", size = 60282, upload-time = "2025-07-27T13:03:52.56Z" }, + { url = "https://files.pythonhosted.org/packages/9c/3f/3711d2413f969bfd5b9cc19bc6b24abae361b7673ff37bcb90c43e199316/pybase64-1.4.2-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:e565abf906efee76ae4be1aef5df4aed0fda1639bc0d7732a3dafef76cb6fc35", size = 54845, upload-time = "2025-07-27T13:03:54.167Z" }, + { url = "https://files.pythonhosted.org/packages/c6/3c/4c7ce1ae4d828c2bb56d144322f81bffbaaac8597d35407c3d7cbb0ff98f/pybase64-1.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3c6a5f15fd03f232fc6f295cce3684f7bb08da6c6d5b12cc771f81c9f125cc6", size = 58615, upload-time = "2025-07-27T13:03:55.494Z" }, + { url = "https://files.pythonhosted.org/packages/f5/8f/c2fc03bf4ed038358620065c75968a30184d5d3512d09d3ef9cc3bd48592/pybase64-1.4.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:bad9e3db16f448728138737bbd1af9dc2398efd593a8bdd73748cc02cd33f9c6", size = 52434, upload-time = "2025-07-27T13:03:56.808Z" }, + { url = "https://files.pythonhosted.org/packages/e2/0a/757d6df0a60327c893cfae903e15419914dd792092dc8cc5c9523d40bc9b/pybase64-1.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2683ef271328365c31afee0ed8fa29356fb8fb7c10606794656aa9ffb95e92be", size = 68824, upload-time = "2025-07-27T13:03:58.735Z" }, + { url = "https://files.pythonhosted.org/packages/a0/14/84abe2ed8c29014239be1cfab45dfebe5a5ca779b177b8b6f779bd8b69da/pybase64-1.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:265b20089cd470079114c09bb74b101b3bfc3c94ad6b4231706cf9eff877d570", size = 57898, upload-time = "2025-07-27T13:04:00.379Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c6/d193031f90c864f7b59fa6d1d1b5af41f0f5db35439988a8b9f2d1b32a13/pybase64-1.4.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e53173badead10ef8b839aa5506eecf0067c7b75ad16d9bf39bc7144631f8e67", size = 54319, upload-time = "2025-07-27T13:04:01.742Z" }, + { url = "https://files.pythonhosted.org/packages/cb/37/ec0c7a610ff8f994ee6e0c5d5d66b6b6310388b96ebb347b03ae39870fdf/pybase64-1.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5823b8dcf74da7da0f761ed60c961e8928a6524e520411ad05fe7f9f47d55b40", size = 56472, upload-time = "2025-07-27T13:04:03.089Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/e585b74f85cedd261d271e4c2ef333c5cfce7e80750771808f56fee66b98/pybase64-1.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1237f66c54357d325390da60aa5e21c6918fbcd1bf527acb9c1f4188c62cb7d5", size = 70966, upload-time = "2025-07-27T13:04:04.361Z" }, + { url = "https://files.pythonhosted.org/packages/ad/20/1b2fdd98b4ba36008419668c813025758214c543e362c66c49214ecd1127/pybase64-1.4.2-cp313-cp313-win32.whl", hash = "sha256:b0b851eb4f801d16040047f6889cca5e9dfa102b3e33f68934d12511245cef86", size = 33681, upload-time = "2025-07-27T13:04:06.126Z" }, + { url = "https://files.pythonhosted.org/packages/ff/64/3df4067d169c047054889f34b5a946cbe3785bca43404b93c962a5461a41/pybase64-1.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:19541c6e26d17d9522c02680fe242206ae05df659c82a657aabadf209cd4c6c7", size = 35822, upload-time = "2025-07-27T13:04:07.752Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fd/db505188adf812e60ee923f196f9deddd8a1895b2b29b37f5db94afc3b1c/pybase64-1.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:77a191863d576c0a5dd81f8a568a5ca15597cc980ae809dce62c717c8d42d8aa", size = 30899, upload-time = "2025-07-27T13:04:09.062Z" }, + { url = "https://files.pythonhosted.org/packages/d9/27/5f5fecd206ec1e06e1608a380af18dcb76a6ab08ade6597a3251502dcdb2/pybase64-1.4.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2e194bbabe3fdf9e47ba9f3e157394efe0849eb226df76432126239b3f44992c", size = 38677, upload-time = "2025-07-27T13:04:10.334Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0f/abe4b5a28529ef5f74e8348fa6a9ef27d7d75fbd98103d7664cf485b7d8f/pybase64-1.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:39aef1dadf4a004f11dd09e703abaf6528a87c8dbd39c448bb8aebdc0a08c1be", size = 32066, upload-time = "2025-07-27T13:04:11.641Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7e/ea0ce6a7155cada5526017ec588b6d6185adea4bf9331565272f4ef583c2/pybase64-1.4.2-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:91cb920c7143e36ec8217031282c8651da3b2206d70343f068fac0e7f073b7f9", size = 72300, upload-time = "2025-07-27T13:04:12.969Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/e64c7a056c9ec48dfe130d1295e47a8c2b19c3984488fc08e5eaa1e86c88/pybase64-1.4.2-cp313-cp313t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6958631143fb9e71f9842000da042ec2f6686506b6706e2dfda29e97925f6aa0", size = 75520, upload-time = "2025-07-27T13:04:14.374Z" }, + { url = "https://files.pythonhosted.org/packages/43/e0/e5f93b2e1cb0751a22713c4baa6c6eaf5f307385e369180486c8316ed21e/pybase64-1.4.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dc35f14141ef3f1ac70d963950a278a2593af66fe5a1c7a208e185ca6278fa25", size = 65384, upload-time = "2025-07-27T13:04:16.204Z" }, + { url = "https://files.pythonhosted.org/packages/ff/23/8c645a1113ad88a1c6a3d0e825e93ef8b74ad3175148767853a0a4d7626e/pybase64-1.4.2-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:5d949d2d677859c3a8507e1b21432a039d2b995e0bd3fe307052b6ded80f207a", size = 60471, upload-time = "2025-07-27T13:04:17.947Z" }, + { url = "https://files.pythonhosted.org/packages/8b/81/edd0f7d8b0526b91730a0dd4ce6b4c8be2136cd69d424afe36235d2d2a06/pybase64-1.4.2-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:09caacdd3e15fe7253a67781edd10a6a918befab0052a2a3c215fe5d1f150269", size = 63945, upload-time = "2025-07-27T13:04:19.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a5/edc224cd821fd65100b7af7c7e16b8f699916f8c0226c9c97bbae5a75e71/pybase64-1.4.2-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:e44b0e793b23f28ea0f15a9754bd0c960102a2ac4bccb8fafdedbd4cc4d235c0", size = 64858, upload-time = "2025-07-27T13:04:20.807Z" }, + { url = "https://files.pythonhosted.org/packages/11/3b/92853f968f1af7e42b7e54d21bdd319097b367e7dffa2ca20787361df74c/pybase64-1.4.2-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:849f274d0bcb90fc6f642c39274082724d108e41b15f3a17864282bd41fc71d5", size = 58557, upload-time = "2025-07-27T13:04:22.229Z" }, + { url = "https://files.pythonhosted.org/packages/76/09/0ec6bd2b2303b0ea5c6da7535edc9a608092075ef8c0cdd96e3e726cd687/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:528dba7ef1357bd7ce1aea143084501f47f5dd0fff7937d3906a68565aa59cfe", size = 63624, upload-time = "2025-07-27T13:04:23.952Z" }, + { url = "https://files.pythonhosted.org/packages/73/6e/52cb1ced2a517a3118b2e739e9417432049013ac7afa15d790103059e8e4/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:1da54be743d9a68671700cfe56c3ab8c26e8f2f5cc34eface905c55bc3a9af94", size = 56174, upload-time = "2025-07-27T13:04:25.419Z" }, + { url = "https://files.pythonhosted.org/packages/5b/9d/820fe79347467e48af985fe46180e1dd28e698ade7317bebd66de8a143f5/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9b07c0406c3eaa7014499b0aacafb21a6d1146cfaa85d56f0aa02e6d542ee8f3", size = 72640, upload-time = "2025-07-27T13:04:26.824Z" }, + { url = "https://files.pythonhosted.org/packages/53/58/e863e10d08361e694935c815b73faad7e1ab03f99ae154d86c4e2f331896/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:312f2aa4cf5d199a97fbcaee75d2e59ebbaafcd091993eb373b43683498cdacb", size = 62453, upload-time = "2025-07-27T13:04:28.562Z" }, + { url = "https://files.pythonhosted.org/packages/95/f0/c392c4ac8ccb7a34b28377c21faa2395313e3c676d76c382642e19a20703/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ad59362fc267bf15498a318c9e076686e4beeb0dfe09b457fabbc2b32468b97a", size = 58103, upload-time = "2025-07-27T13:04:29.996Z" }, + { url = "https://files.pythonhosted.org/packages/32/30/00ab21316e7df8f526aa3e3dc06f74de6711d51c65b020575d0105a025b2/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:01593bd064e7dcd6c86d04e94e44acfe364049500c20ac68ca1e708fbb2ca970", size = 60779, upload-time = "2025-07-27T13:04:31.549Z" }, + { url = "https://files.pythonhosted.org/packages/a6/65/114ca81839b1805ce4a2b7d58bc16e95634734a2059991f6382fc71caf3e/pybase64-1.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5b81547ad8ea271c79fdf10da89a1e9313cb15edcba2a17adf8871735e9c02a0", size = 74684, upload-time = "2025-07-27T13:04:32.976Z" }, + { url = "https://files.pythonhosted.org/packages/54/8f/aa9d445b9bb693b8f6bb1456bd6d8576d79b7a63bf6c69af3a539235b15f/pybase64-1.4.2-cp313-cp313t-win32.whl", hash = "sha256:7edbe70b5654545a37e6e6b02de738303b1bbdfcde67f6cfec374cfb5cc4099e", size = 33961, upload-time = "2025-07-27T13:04:34.806Z" }, + { url = "https://files.pythonhosted.org/packages/0e/e5/da37cfb173c646fd4fc7c6aae2bc41d40de2ee49529854af8f4e6f498b45/pybase64-1.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:385690addf87c25d6366fab5d8ff512eed8a7ecb18da9e8152af1c789162f208", size = 36199, upload-time = "2025-07-27T13:04:36.223Z" }, + { url = "https://files.pythonhosted.org/packages/66/3e/1eb68fb7d00f2cec8bd9838e2a30d183d6724ae06e745fd6e65216f170ff/pybase64-1.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c2070d0aa88580f57fe15ca88b09f162e604d19282915a95a3795b5d3c1c05b5", size = 31221, upload-time = "2025-07-27T13:04:37.704Z" }, + { url = "https://files.pythonhosted.org/packages/99/bf/00a87d951473ce96c8c08af22b6983e681bfabdb78dd2dcf7ee58eac0932/pybase64-1.4.2-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:4157ad277a32cf4f02a975dffc62a3c67d73dfa4609b2c1978ef47e722b18b8e", size = 30924, upload-time = "2025-07-27T13:04:39.189Z" }, + { url = "https://files.pythonhosted.org/packages/ae/43/dee58c9d60e60e6fb32dc6da722d84592e22f13c277297eb4ce6baf99a99/pybase64-1.4.2-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:e113267dc349cf624eb4f4fbf53fd77835e1aa048ac6877399af426aab435757", size = 31390, upload-time = "2025-07-27T13:04:40.995Z" }, + { url = "https://files.pythonhosted.org/packages/e1/11/b28906fc2e330b8b1ab4bc845a7bef808b8506734e90ed79c6062b095112/pybase64-1.4.2-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:cea5aaf218fd9c5c23afacfe86fd4464dfedc1a0316dd3b5b4075b068cc67df0", size = 38212, upload-time = "2025-07-27T13:04:42.729Z" }, + { url = "https://files.pythonhosted.org/packages/24/9e/868d1e104413d14b19feaf934fc7fad4ef5b18946385f8bb79684af40f24/pybase64-1.4.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:41213497abbd770435c7a9c8123fb02b93709ac4cf60155cd5aefc5f3042b600", size = 38303, upload-time = "2025-07-27T13:04:44.095Z" }, + { url = "https://files.pythonhosted.org/packages/a3/73/f7eac96ca505df0600280d6bfc671a9e2e2f947c2b04b12a70e36412f7eb/pybase64-1.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c8b522df7ee00f2ac1993ccd5e1f6608ae7482de3907668c2ff96a83ef213925", size = 31669, upload-time = "2025-07-27T13:04:45.845Z" }, + { url = "https://files.pythonhosted.org/packages/c6/43/8e18bea4fd455100112d6a73a83702843f067ef9b9272485b6bdfd9ed2f0/pybase64-1.4.2-cp314-cp314-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:06725022e540c5b098b978a0418ca979773e2cbdbb76f10bd97536f2ad1c5b49", size = 68452, upload-time = "2025-07-27T13:04:47.788Z" }, + { url = "https://files.pythonhosted.org/packages/e4/2e/851eb51284b97354ee5dfa1309624ab90920696e91a33cd85b13d20cc5c1/pybase64-1.4.2-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a3e54dcf0d0305ec88473c9d0009f698cabf86f88a8a10090efeff2879c421bb", size = 71674, upload-time = "2025-07-27T13:04:49.294Z" }, + { url = "https://files.pythonhosted.org/packages/57/0d/5cf1e5dc64aec8db43e8dee4e4046856d639a72bcb0fb3e716be42ced5f1/pybase64-1.4.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:67675cee727a60dc91173d2790206f01aa3c7b3fbccfa84fd5c1e3d883fe6caa", size = 60027, upload-time = "2025-07-27T13:04:50.769Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8e/3479266bc0e65f6cc48b3938d4a83bff045330649869d950a378f2ddece0/pybase64-1.4.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:753da25d4fd20be7bda2746f545935773beea12d5cb5ec56ec2d2960796477b1", size = 56461, upload-time = "2025-07-27T13:04:52.37Z" }, + { url = "https://files.pythonhosted.org/packages/20/b6/f2b6cf59106dd78bae8717302be5b814cec33293504ad409a2eb752ad60c/pybase64-1.4.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a78c768ce4ca550885246d14babdb8923e0f4a848dfaaeb63c38fc99e7ea4052", size = 59446, upload-time = "2025-07-27T13:04:53.967Z" }, + { url = "https://files.pythonhosted.org/packages/16/70/3417797dfccdfdd0a54e4ad17c15b0624f0fc2d6a362210f229f5c4e8fd0/pybase64-1.4.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:51b17f36d890c92f0618fb1c8db2ccc25e6ed07afa505bab616396fc9b0b0492", size = 60350, upload-time = "2025-07-27T13:04:55.881Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c6/6e4269dd98d150ae95d321b311a345eae0f7fd459d97901b4a586d7513bb/pybase64-1.4.2-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f92218d667049ab4f65d54fa043a88ffdb2f07fff1f868789ef705a5221de7ec", size = 54989, upload-time = "2025-07-27T13:04:57.436Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e8/18c1b0c255f964fafd0412b0d5a163aad588aeccb8f84b9bf9c8611d80f6/pybase64-1.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:3547b3d1499919a06491b3f879a19fbe206af2bd1a424ecbb4e601eb2bd11fea", size = 58724, upload-time = "2025-07-27T13:04:59.406Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ad/ddfbd2125fc20b94865fb232b2e9105376fa16eee492e4b7786d42a86cbf/pybase64-1.4.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:958af7b0e09ddeb13e8c2330767c47b556b1ade19c35370f6451d139cde9f2a9", size = 52285, upload-time = "2025-07-27T13:05:01.198Z" }, + { url = "https://files.pythonhosted.org/packages/b6/4c/b9d4ec9224add33c84b925a03d1a53cd4106efb449ea8e0ae7795fed7bf7/pybase64-1.4.2-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:4facc57f6671e2229a385a97a618273e7be36a9ea0a9d1c1b9347f14d19ceba8", size = 69036, upload-time = "2025-07-27T13:05:03.109Z" }, + { url = "https://files.pythonhosted.org/packages/92/38/7b96794da77bed3d9b4fea40f14ae563648fba83a696e7602fabe60c0eb7/pybase64-1.4.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:a32fc57d05d73a7c9b0ca95e9e265e21cf734195dc6873829a890058c35f5cfd", size = 57938, upload-time = "2025-07-27T13:05:04.744Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c5/ae8bbce3c322d1b074e79f51f5df95961fe90cb8748df66c6bc97616e974/pybase64-1.4.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3dc853243c81ce89cc7318e6946f860df28ddb7cd2a0648b981652d9ad09ee5a", size = 54474, upload-time = "2025-07-27T13:05:06.662Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/c09887c4bb1b43c03fc352e2671ef20c6686c6942a99106a45270ee5b840/pybase64-1.4.2-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:0e6d863a86b3e7bc6ac9bd659bebda4501b9da842521111b0b0e54eb51295df5", size = 56533, upload-time = "2025-07-27T13:05:08.368Z" }, + { url = "https://files.pythonhosted.org/packages/4f/0f/d5114d63d35d085639606a880cb06e2322841cd4b213adfc14d545c1186f/pybase64-1.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6579475140ff2067903725d8aca47f5747bcb211597a1edd60b58f6d90ada2bd", size = 71030, upload-time = "2025-07-27T13:05:10.3Z" }, + { url = "https://files.pythonhosted.org/packages/40/0e/fe6f1ed22ea52eb99f490a8441815ba21de288f4351aeef4968d71d20d2d/pybase64-1.4.2-cp314-cp314-win32.whl", hash = "sha256:373897f728d7b4f241a1f803ac732c27b6945d26d86b2741ad9b75c802e4e378", size = 34174, upload-time = "2025-07-27T13:05:12.254Z" }, + { url = "https://files.pythonhosted.org/packages/71/46/0e15bea52ffc63e8ae7935e945accbaf635e0aefa26d3e31fdf9bc9dcd01/pybase64-1.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:1afe3361344617d298c1d08bc657ef56d0f702d6b72cb65d968b2771017935aa", size = 36308, upload-time = "2025-07-27T13:05:13.898Z" }, + { url = "https://files.pythonhosted.org/packages/4f/dc/55849fee2577bda77c1e078da04cc9237e8e474a8c8308deb702a26f2511/pybase64-1.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:f131c9360babe522f3d90f34da3f827cba80318125cf18d66f2ee27e3730e8c4", size = 31341, upload-time = "2025-07-27T13:05:15.553Z" }, + { url = "https://files.pythonhosted.org/packages/39/44/c69d088e28b25e70ac742b6789cde038473815b2a69345c4bae82d5e244d/pybase64-1.4.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2583ac304131c1bd6e3120b0179333610f18816000db77c0a2dd6da1364722a8", size = 38678, upload-time = "2025-07-27T13:05:17.544Z" }, + { url = "https://files.pythonhosted.org/packages/00/93/2860ec067497b9cbb06242f96d44caebbd9eed32174e4eb8c1ffef760f94/pybase64-1.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:75a8116be4ea4cdd30a5c4f1a6f3b038e0d457eb03c8a2685d8ce2aa00ef8f92", size = 32066, upload-time = "2025-07-27T13:05:19.18Z" }, + { url = "https://files.pythonhosted.org/packages/d3/55/1e96249a38759332e8a01b31c370d88c60ceaf44692eb6ba4f0f451ee496/pybase64-1.4.2-cp314-cp314t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:217ea776a098d7c08668e5526b9764f5048bbfd28cac86834217ddfe76a4e3c4", size = 72465, upload-time = "2025-07-27T13:05:20.866Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ab/0f468605b899f3e35dbb7423fba3ff98aeed1ec16abb02428468494a58f4/pybase64-1.4.2-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4ec14683e343c95b14248cdfdfa78c052582be7a3865fd570aa7cffa5ab5cf37", size = 75693, upload-time = "2025-07-27T13:05:22.896Z" }, + { url = "https://files.pythonhosted.org/packages/91/d1/9980a0159b699e2489baba05b71b7c953b29249118ba06fdbb3e9ea1b9b5/pybase64-1.4.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:480ecf21e1e956c5a10d3cf7b3b7e75bce3f9328cf08c101e4aab1925d879f34", size = 65577, upload-time = "2025-07-27T13:05:25Z" }, + { url = "https://files.pythonhosted.org/packages/16/86/b27e7b95f9863d245c0179a7245582eda3d262669d8f822777364d8fd7d5/pybase64-1.4.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:1fe1ebdc55e9447142e2f6658944aadfb5a4fbf03dbd509be34182585515ecc1", size = 60662, upload-time = "2025-07-27T13:05:27.138Z" }, + { url = "https://files.pythonhosted.org/packages/28/87/a7f0dde0abc26bfbee761f1d3558eb4b139f33ddd9fe1f6825ffa7daa22d/pybase64-1.4.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c793a2b06753accdaf5e1a8bbe5d800aab2406919e5008174f989a1ca0081411", size = 64179, upload-time = "2025-07-27T13:05:28.996Z" }, + { url = "https://files.pythonhosted.org/packages/1e/88/5d6fa1c60e1363b4cac4c396978f39e9df4689e75225d7d9c0a5998e3a14/pybase64-1.4.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6acae6e1d1f7ebe40165f08076c7a73692b2bf9046fefe673f350536e007f556", size = 64968, upload-time = "2025-07-27T13:05:30.818Z" }, + { url = "https://files.pythonhosted.org/packages/20/6e/2ed585af5b2211040445d9849326dd2445320c9316268794f5453cfbaf30/pybase64-1.4.2-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:88b91cd0949358aadcea75f8de5afbcf3c8c5fb9ec82325bd24285b7119cf56e", size = 58738, upload-time = "2025-07-27T13:05:32.629Z" }, + { url = "https://files.pythonhosted.org/packages/ce/94/e2960b56322eabb3fbf303fc5a72e6444594c1b90035f3975c6fe666db5c/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:53316587e1b1f47a11a5ff068d3cbd4a3911c291f2aec14882734973684871b2", size = 63802, upload-time = "2025-07-27T13:05:34.687Z" }, + { url = "https://files.pythonhosted.org/packages/95/47/312139d764c223f534f751528ce3802887c279125eac64f71cd3b4e05abc/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:caa7f20f43d00602cf9043b5ba758d54f5c41707d3709b2a5fac17361579c53c", size = 56341, upload-time = "2025-07-27T13:05:36.554Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d7/aec9a6ed53b128dac32f8768b646ca5730c88eef80934054d7fa7d02f3ef/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:2d93817e24fdd79c534ed97705df855af6f1d2535ceb8dfa80da9de75482a8d7", size = 72838, upload-time = "2025-07-27T13:05:38.459Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a8/6ccc54c5f1f7c3450ad7c56da10c0f131d85ebe069ea6952b5b42f2e92d9/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:63cd769b51474d8d08f7f2ce73b30380d9b4078ec92ea6b348ea20ed1e1af88a", size = 62633, upload-time = "2025-07-27T13:05:40.624Z" }, + { url = "https://files.pythonhosted.org/packages/34/22/2b9d89f8ff6f2a01d6d6a88664b20a4817049cfc3f2c62caca040706660c/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cd07e6a9993c392ec8eb03912a43c6a6b21b2deb79ee0d606700fe276e9a576f", size = 58282, upload-time = "2025-07-27T13:05:42.565Z" }, + { url = "https://files.pythonhosted.org/packages/b2/14/dbf6266177532a6a11804ac080ebffcee272f491b92820c39886ee20f201/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:6a8944e8194adff4668350504bc6b7dbde2dab9244c88d99c491657d145b5af5", size = 60948, upload-time = "2025-07-27T13:05:44.48Z" }, + { url = "https://files.pythonhosted.org/packages/fd/7a/b2ae9046a66dd5746cd72836a41386517b1680bea5ce02f2b4f1c9ebc688/pybase64-1.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:04ab398ec4b6a212af57f6a21a6336d5a1d754ff4ccb215951366ab9080481b2", size = 74854, upload-time = "2025-07-27T13:05:46.416Z" }, + { url = "https://files.pythonhosted.org/packages/ef/7e/9856f6d6c38a7b730e001123d2d9fa816b8b1a45f0cdee1d509d5947b047/pybase64-1.4.2-cp314-cp314t-win32.whl", hash = "sha256:3b9201ecdcb1c3e23be4caebd6393a4e6615bd0722528f5413b58e22e3792dd3", size = 34490, upload-time = "2025-07-27T13:05:48.304Z" }, + { url = "https://files.pythonhosted.org/packages/c7/38/8523a9dc1ec8704dedbe5ccc95192ae9a7585f7eec85cc62946fe3cacd32/pybase64-1.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:36e9b0cad8197136d73904ef5a71d843381d063fd528c5ab203fc4990264f682", size = 36680, upload-time = "2025-07-27T13:05:50.264Z" }, + { url = "https://files.pythonhosted.org/packages/3c/52/5600104ef7b85f89fb8ec54f73504ead3f6f0294027e08d281f3cafb5c1a/pybase64-1.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:f25140496b02db0e7401567cd869fb13b4c8118bf5c2428592ec339987146d8b", size = 31600, upload-time = "2025-07-27T13:05:52.24Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pycryptodome" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/a6/8452177684d5e906854776276ddd34eca30d1b1e15aa1ee9cefc289a33f5/pycryptodome-3.23.0.tar.gz", hash = "sha256:447700a657182d60338bab09fdb27518f8856aecd80ae4c6bdddb67ff5da44ef", size = 4921276, upload-time = "2025-05-17T17:21:45.242Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/5d/bdb09489b63cd34a976cc9e2a8d938114f7a53a74d3dd4f125ffa49dce82/pycryptodome-3.23.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0011f7f00cdb74879142011f95133274741778abba114ceca229adbf8e62c3e4", size = 2495152, upload-time = "2025-05-17T17:20:20.833Z" }, + { url = "https://files.pythonhosted.org/packages/a7/ce/7840250ed4cc0039c433cd41715536f926d6e86ce84e904068eb3244b6a6/pycryptodome-3.23.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:90460fc9e088ce095f9ee8356722d4f10f86e5be06e2354230a9880b9c549aae", size = 1639348, upload-time = "2025-05-17T17:20:23.171Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f0/991da24c55c1f688d6a3b5a11940567353f74590734ee4a64294834ae472/pycryptodome-3.23.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4764e64b269fc83b00f682c47443c2e6e85b18273712b98aa43bcb77f8570477", size = 2184033, upload-time = "2025-05-17T17:20:25.424Z" }, + { url = "https://files.pythonhosted.org/packages/54/16/0e11882deddf00f68b68dd4e8e442ddc30641f31afeb2bc25588124ac8de/pycryptodome-3.23.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb8f24adb74984aa0e5d07a2368ad95276cf38051fe2dc6605cbcf482e04f2a7", size = 2270142, upload-time = "2025-05-17T17:20:27.808Z" }, + { url = "https://files.pythonhosted.org/packages/d5/fc/4347fea23a3f95ffb931f383ff28b3f7b1fe868739182cb76718c0da86a1/pycryptodome-3.23.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d97618c9c6684a97ef7637ba43bdf6663a2e2e77efe0f863cce97a76af396446", size = 2309384, upload-time = "2025-05-17T17:20:30.765Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d9/c5261780b69ce66d8cfab25d2797bd6e82ba0241804694cd48be41add5eb/pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a53a4fe5cb075075d515797d6ce2f56772ea7e6a1e5e4b96cf78a14bac3d265", size = 2183237, upload-time = "2025-05-17T17:20:33.736Z" }, + { url = "https://files.pythonhosted.org/packages/5a/6f/3af2ffedd5cfa08c631f89452c6648c4d779e7772dfc388c77c920ca6bbf/pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:763d1d74f56f031788e5d307029caef067febf890cd1f8bf61183ae142f1a77b", size = 2343898, upload-time = "2025-05-17T17:20:36.086Z" }, + { url = "https://files.pythonhosted.org/packages/9a/dc/9060d807039ee5de6e2f260f72f3d70ac213993a804f5e67e0a73a56dd2f/pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:954af0e2bd7cea83ce72243b14e4fb518b18f0c1649b576d114973e2073b273d", size = 2269197, upload-time = "2025-05-17T17:20:38.414Z" }, + { url = "https://files.pythonhosted.org/packages/f9/34/e6c8ca177cb29dcc4967fef73f5de445912f93bd0343c9c33c8e5bf8cde8/pycryptodome-3.23.0-cp313-cp313t-win32.whl", hash = "sha256:257bb3572c63ad8ba40b89f6fc9d63a2a628e9f9708d31ee26560925ebe0210a", size = 1768600, upload-time = "2025-05-17T17:20:40.688Z" }, + { url = "https://files.pythonhosted.org/packages/e4/1d/89756b8d7ff623ad0160f4539da571d1f594d21ee6d68be130a6eccb39a4/pycryptodome-3.23.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6501790c5b62a29fcb227bd6b62012181d886a767ce9ed03b303d1f22eb5c625", size = 1799740, upload-time = "2025-05-17T17:20:42.413Z" }, + { url = "https://files.pythonhosted.org/packages/5d/61/35a64f0feaea9fd07f0d91209e7be91726eb48c0f1bfc6720647194071e4/pycryptodome-3.23.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9a77627a330ab23ca43b48b130e202582e91cc69619947840ea4d2d1be21eb39", size = 1703685, upload-time = "2025-05-17T17:20:44.388Z" }, + { url = "https://files.pythonhosted.org/packages/db/6c/a1f71542c969912bb0e106f64f60a56cc1f0fabecf9396f45accbe63fa68/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:187058ab80b3281b1de11c2e6842a357a1f71b42cb1e15bce373f3d238135c27", size = 2495627, upload-time = "2025-05-17T17:20:47.139Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4e/a066527e079fc5002390c8acdd3aca431e6ea0a50ffd7201551175b47323/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cfb5cd445280c5b0a4e6187a7ce8de5a07b5f3f897f235caa11f1f435f182843", size = 1640362, upload-time = "2025-05-17T17:20:50.392Z" }, + { url = "https://files.pythonhosted.org/packages/50/52/adaf4c8c100a8c49d2bd058e5b551f73dfd8cb89eb4911e25a0c469b6b4e/pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67bd81fcbe34f43ad9422ee8fd4843c8e7198dd88dd3d40e6de42ee65fbe1490", size = 2182625, upload-time = "2025-05-17T17:20:52.866Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e9/a09476d436d0ff1402ac3867d933c61805ec2326c6ea557aeeac3825604e/pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8987bd3307a39bc03df5c8e0e3d8be0c4c3518b7f044b0f4c15d1aa78f52575", size = 2268954, upload-time = "2025-05-17T17:20:55.027Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c5/ffe6474e0c551d54cab931918127c46d70cab8f114e0c2b5a3c071c2f484/pycryptodome-3.23.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa0698f65e5b570426fc31b8162ed4603b0c2841cbb9088e2b01641e3065915b", size = 2308534, upload-time = "2025-05-17T17:20:57.279Z" }, + { url = "https://files.pythonhosted.org/packages/18/28/e199677fc15ecf43010f2463fde4c1a53015d1fe95fb03bca2890836603a/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:53ecbafc2b55353edcebd64bf5da94a2a2cdf5090a6915bcca6eca6cc452585a", size = 2181853, upload-time = "2025-05-17T17:20:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ea/4fdb09f2165ce1365c9eaefef36625583371ee514db58dc9b65d3a255c4c/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:156df9667ad9f2ad26255926524e1c136d6664b741547deb0a86a9acf5ea631f", size = 2342465, upload-time = "2025-05-17T17:21:03.83Z" }, + { url = "https://files.pythonhosted.org/packages/22/82/6edc3fc42fe9284aead511394bac167693fb2b0e0395b28b8bedaa07ef04/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:dea827b4d55ee390dc89b2afe5927d4308a8b538ae91d9c6f7a5090f397af1aa", size = 2267414, upload-time = "2025-05-17T17:21:06.72Z" }, + { url = "https://files.pythonhosted.org/packages/59/fe/aae679b64363eb78326c7fdc9d06ec3de18bac68be4b612fc1fe8902693c/pycryptodome-3.23.0-cp37-abi3-win32.whl", hash = "sha256:507dbead45474b62b2bbe318eb1c4c8ee641077532067fec9c1aa82c31f84886", size = 1768484, upload-time = "2025-05-17T17:21:08.535Z" }, + { url = "https://files.pythonhosted.org/packages/54/2f/e97a1b8294db0daaa87012c24a7bb714147c7ade7656973fd6c736b484ff/pycryptodome-3.23.0-cp37-abi3-win_amd64.whl", hash = "sha256:c75b52aacc6c0c260f204cbdd834f76edc9fb0d8e0da9fbf8352ef58202564e2", size = 1799636, upload-time = "2025-05-17T17:21:10.393Z" }, + { url = "https://files.pythonhosted.org/packages/18/3d/f9441a0d798bf2b1e645adc3265e55706aead1255ccdad3856dbdcffec14/pycryptodome-3.23.0-cp37-abi3-win_arm64.whl", hash = "sha256:11eeeb6917903876f134b56ba11abe95c0b0fd5e3330def218083c7d98bbcb3c", size = 1703675, upload-time = "2025-05-17T17:21:13.146Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/ad/a17bc283d7d81837c061c49e3eaa27a45991759a1b7eae1031921c6bd924/pydantic-2.12.4.tar.gz", hash = "sha256:0f8cb9555000a4b5b617f66bfd2566264c4984b27589d3b845685983e8ea85ac", size = 821038, upload-time = "2025-11-05T10:50:08.59Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/2f/e68750da9b04856e2a7ec56fc6f034a5a79775e9b9a81882252789873798/pydantic-2.12.4-py3-none-any.whl", hash = "sha256:92d3d202a745d46f9be6df459ac5a064fdaa3c1c4cd8adcfa332ccf3c05f871e", size = 463400, upload-time = "2025-11-05T10:50:06.732Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, +] + +[[package]] +name = "pyee" +version = "13.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/03/1fd98d5841cd7964a27d729ccf2199602fe05eb7a405c1462eb7277945ed/pyee-13.0.0.tar.gz", hash = "sha256:b391e3c5a434d1f5118a25615001dbc8f669cf410ab67d04c4d4e07c55481c37", size = 31250, upload-time = "2025-03-17T18:53:15.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/4d/b9add7c84060d4c1906abe9a7e5359f2a60f7a9a4f67268b2766673427d8/pyee-13.0.0-py3-none-any.whl", hash = "sha256:48195a3cddb3b1515ce0695ed76036b5ccc2ef3a9f963ff9f77aec0139845498", size = 15730, upload-time = "2025-03-17T18:53:14.532Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pymupdf" +version = "1.26.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/d7/a6f0e03a117fa2ad79c4b898203bb212b17804f92558a6a339298faca7bb/pymupdf-1.26.6.tar.gz", hash = "sha256:a2b4531cd4ab36d6f1f794bb6d3c33b49bda22f36d58bb1f3e81cbc10183bd2b", size = 84322494, upload-time = "2025-11-05T15:20:46.786Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/5c/dec354eee5fe4966c715f33818ed4193e0e6c986cf8484de35b6c167fb8e/pymupdf-1.26.6-cp310-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e46f320a136ad55e5219e8f0f4061bdf3e4c12b126d2740d5a49f73fae7ea176", size = 23178988, upload-time = "2025-11-05T14:31:19.834Z" }, + { url = "https://files.pythonhosted.org/packages/ec/a0/11adb742d18142bd623556cd3b5d64649816decc5eafd30efc9498657e76/pymupdf-1.26.6-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:6844cd2396553c0fa06de4869d5d5ecb1260e6fc3b9d85abe8fa35f14dd9d688", size = 22469764, upload-time = "2025-11-05T14:32:34.654Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c8/377cf20e31f58d4c243bfcf2d3cb7466d5b97003b10b9f1161f11eb4a994/pymupdf-1.26.6-cp310-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:617ba69e02c44f0da1c0e039ea4a26cf630849fd570e169c71daeb8ac52a81d6", size = 23502227, upload-time = "2025-11-06T11:03:56.934Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/6e02e3d84b32c137c71a0a3dcdba8f2f6e9950619a3bc272245c7c06a051/pymupdf-1.26.6-cp310-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7777d0b7124c2ebc94849536b6a1fb85d158df3b9d873935e63036559391534c", size = 24115381, upload-time = "2025-11-05T14:33:54.338Z" }, + { url = "https://files.pythonhosted.org/packages/ab/9d/30f7fcb3776bfedde66c06297960debe4883b1667294a1ee9426c942e94d/pymupdf-1.26.6-cp310-abi3-win32.whl", hash = "sha256:8f3ef05befc90ca6bb0f12983200a7048d5bff3e1c1edef1bb3de60b32cb5274", size = 17203613, upload-time = "2025-11-05T17:19:47.494Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e8/989f4eaa369c7166dc24f0eaa3023f13788c40ff1b96701f7047421554a8/pymupdf-1.26.6-cp310-abi3-win_amd64.whl", hash = "sha256:ce02ca96ed0d1acfd00331a4d41a34c98584d034155b06fd4ec0f051718de7ba", size = 18405680, upload-time = "2025-11-05T14:34:48.672Z" }, +] + +[[package]] +name = "pypika" +version = "0.48.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/2c/94ed7b91db81d61d7096ac8f2d325ec562fc75e35f3baea8749c85b28784/PyPika-0.48.9.tar.gz", hash = "sha256:838836a61747e7c8380cd1b7ff638694b7a7335345d0f559b04b2cd832ad5378", size = 67259, upload-time = "2022-03-15T11:22:57.066Z" } + +[[package]] +name = "pyproject-hooks" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", size = 19228, upload-time = "2024-09-29T09:24:13.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216, upload-time = "2024-09-29T09:24:11.978Z" }, +] + +[[package]] +name = "pyreadline3" +version = "3.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/49/4cea918a08f02817aabae639e3d0ac046fef9f9180518a3ad394e22da148/pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7", size = 99839, upload-time = "2024-09-19T02:40:10.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6", size = 83178, upload-time = "2024-09-19T02:40:08.598Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-docx" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/f7/eddfe33871520adab45aaa1a71f0402a2252050c14c7e3009446c8f4701c/python_docx-1.2.0.tar.gz", hash = "sha256:7bc9d7b7d8a69c9c02ca09216118c86552704edc23bac179283f2e38f86220ce", size = 5723256, upload-time = "2025-06-16T20:46:27.921Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/00/1e03a4989fa5795da308cd774f05b704ace555a70f9bf9d3be057b680bcf/python_docx-1.2.0-py3-none-any.whl", hash = "sha256:3fd478f3250fbbbfd3b94fe1e985955737c145627498896a8a6bf81f4baf66c7", size = 252987, upload-time = "2025-06-16T20:46:22.506Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, +] + +[[package]] +name = "python-pptx" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "pillow" }, + { name = "typing-extensions" }, + { name = "xlsxwriter" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/a9/0c0db8d37b2b8a645666f7fd8accea4c6224e013c42b1d5c17c93590cd06/python_pptx-1.0.2.tar.gz", hash = "sha256:479a8af0eaf0f0d76b6f00b0887732874ad2e3188230315290cd1f9dd9cc7095", size = 10109297, upload-time = "2024-08-07T17:33:37.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/4f/00be2196329ebbff56ce564aa94efb0fbc828d00de250b1980de1a34ab49/python_pptx-1.0.2-py3-none-any.whl", hash = "sha256:160838e0b8565a8b1f67947675886e9fea18aa5e795db7ae531606d68e785cba", size = 472788, upload-time = "2024-08-07T17:33:28.192Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "rag" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "chromadb" }, + { name = "langchain-text-splitters" }, + { name = "load-dotenv" }, + { name = "lxml" }, + { name = "openai" }, + { name = "openpyxl" }, + { name = "playwright" }, + { name = "pymupdf" }, + { name = "python-docx" }, + { name = "python-dotenv" }, + { name = "python-pptx" }, + { name = "sentence-transformers" }, + { name = "volcengine" }, + { name = "volcengine-python-sdk", extra = ["ark"] }, +] + +[package.metadata] +requires-dist = [ + { name = "beautifulsoup4", specifier = ">=4.14.2" }, + { name = "chromadb", specifier = ">=1.3.5" }, + { name = "langchain-text-splitters", specifier = ">=1.0.0" }, + { name = "load-dotenv", specifier = ">=0.1.0" }, + { name = "lxml", specifier = ">=6.0.2" }, + { name = "openai", specifier = ">=2.9.0" }, + { name = "openpyxl", specifier = ">=3.1.5" }, + { name = "playwright", specifier = ">=1.56.0" }, + { name = "pymupdf", specifier = ">=1.26.6" }, + { name = "python-docx", specifier = ">=1.2.0" }, + { name = "python-dotenv", specifier = ">=1.2.1" }, + { name = "python-pptx", specifier = ">=1.0.2" }, + { name = "sentence-transformers", specifier = ">=5.1.2" }, + { name = "volcengine", specifier = ">=1.0.207" }, + { name = "volcengine-python-sdk", extras = ["ark"], specifier = ">=4.0.35" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "regex" +version = "2025.11.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/a9/546676f25e573a4cf00fe8e119b78a37b6a8fe2dc95cda877b30889c9c45/regex-2025.11.3.tar.gz", hash = "sha256:1fedc720f9bb2494ce31a58a1631f9c82df6a09b49c19517ea5cc280b4541e01", size = 414669, upload-time = "2025-11-03T21:34:22.089Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/74/18f04cb53e58e3fb107439699bd8375cf5a835eec81084e0bddbd122e4c2/regex-2025.11.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bc8ab71e2e31b16e40868a40a69007bc305e1109bd4658eb6cad007e0bf67c41", size = 489312, upload-time = "2025-11-03T21:31:34.343Z" }, + { url = "https://files.pythonhosted.org/packages/78/3f/37fcdd0d2b1e78909108a876580485ea37c91e1acf66d3bb8e736348f441/regex-2025.11.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:22b29dda7e1f7062a52359fca6e58e548e28c6686f205e780b02ad8ef710de36", size = 291256, upload-time = "2025-11-03T21:31:35.675Z" }, + { url = "https://files.pythonhosted.org/packages/bf/26/0a575f58eb23b7ebd67a45fccbc02ac030b737b896b7e7a909ffe43ffd6a/regex-2025.11.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a91e4a29938bc1a082cc28fdea44be420bf2bebe2665343029723892eb073e1", size = 288921, upload-time = "2025-11-03T21:31:37.07Z" }, + { url = "https://files.pythonhosted.org/packages/ea/98/6a8dff667d1af907150432cf5abc05a17ccd32c72a3615410d5365ac167a/regex-2025.11.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08b884f4226602ad40c5d55f52bf91a9df30f513864e0054bad40c0e9cf1afb7", size = 798568, upload-time = "2025-11-03T21:31:38.784Z" }, + { url = "https://files.pythonhosted.org/packages/64/15/92c1db4fa4e12733dd5a526c2dd2b6edcbfe13257e135fc0f6c57f34c173/regex-2025.11.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3e0b11b2b2433d1c39c7c7a30e3f3d0aeeea44c2a8d0bae28f6b95f639927a69", size = 864165, upload-time = "2025-11-03T21:31:40.559Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e7/3ad7da8cdee1ce66c7cd37ab5ab05c463a86ffeb52b1a25fe7bd9293b36c/regex-2025.11.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:87eb52a81ef58c7ba4d45c3ca74e12aa4b4e77816f72ca25258a85b3ea96cb48", size = 912182, upload-time = "2025-11-03T21:31:42.002Z" }, + { url = "https://files.pythonhosted.org/packages/84/bd/9ce9f629fcb714ffc2c3faf62b6766ecb7a585e1e885eb699bcf130a5209/regex-2025.11.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a12ab1f5c29b4e93db518f5e3872116b7e9b1646c9f9f426f777b50d44a09e8c", size = 803501, upload-time = "2025-11-03T21:31:43.815Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0f/8dc2e4349d8e877283e6edd6c12bdcebc20f03744e86f197ab6e4492bf08/regex-2025.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7521684c8c7c4f6e88e35ec89680ee1aa8358d3f09d27dfbdf62c446f5d4c695", size = 787842, upload-time = "2025-11-03T21:31:45.353Z" }, + { url = "https://files.pythonhosted.org/packages/f9/73/cff02702960bc185164d5619c0c62a2f598a6abff6695d391b096237d4ab/regex-2025.11.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7fe6e5440584e94cc4b3f5f4d98a25e29ca12dccf8873679a635638349831b98", size = 858519, upload-time = "2025-11-03T21:31:46.814Z" }, + { url = "https://files.pythonhosted.org/packages/61/83/0e8d1ae71e15bc1dc36231c90b46ee35f9d52fab2e226b0e039e7ea9c10a/regex-2025.11.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8e026094aa12b43f4fd74576714e987803a315c76edb6b098b9809db5de58f74", size = 850611, upload-time = "2025-11-03T21:31:48.289Z" }, + { url = "https://files.pythonhosted.org/packages/c8/f5/70a5cdd781dcfaa12556f2955bf170cd603cb1c96a1827479f8faea2df97/regex-2025.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:435bbad13e57eb5606a68443af62bed3556de2f46deb9f7d4237bc2f1c9fb3a0", size = 789759, upload-time = "2025-11-03T21:31:49.759Z" }, + { url = "https://files.pythonhosted.org/packages/59/9b/7c29be7903c318488983e7d97abcf8ebd3830e4c956c4c540005fcfb0462/regex-2025.11.3-cp312-cp312-win32.whl", hash = "sha256:3839967cf4dc4b985e1570fd8d91078f0c519f30491c60f9ac42a8db039be204", size = 266194, upload-time = "2025-11-03T21:31:51.53Z" }, + { url = "https://files.pythonhosted.org/packages/1a/67/3b92df89f179d7c367be654ab5626ae311cb28f7d5c237b6bb976cd5fbbb/regex-2025.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:e721d1b46e25c481dc5ded6f4b3f66c897c58d2e8cfdf77bbced84339108b0b9", size = 277069, upload-time = "2025-11-03T21:31:53.151Z" }, + { url = "https://files.pythonhosted.org/packages/d7/55/85ba4c066fe5094d35b249c3ce8df0ba623cfd35afb22d6764f23a52a1c5/regex-2025.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:64350685ff08b1d3a6fff33f45a9ca183dc1d58bbfe4981604e70ec9801bbc26", size = 270330, upload-time = "2025-11-03T21:31:54.514Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a7/dda24ebd49da46a197436ad96378f17df30ceb40e52e859fc42cac45b850/regex-2025.11.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c1e448051717a334891f2b9a620fe36776ebf3dd8ec46a0b877c8ae69575feb4", size = 489081, upload-time = "2025-11-03T21:31:55.9Z" }, + { url = "https://files.pythonhosted.org/packages/19/22/af2dc751aacf88089836aa088a1a11c4f21a04707eb1b0478e8e8fb32847/regex-2025.11.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9b5aca4d5dfd7fbfbfbdaf44850fcc7709a01146a797536a8f84952e940cca76", size = 291123, upload-time = "2025-11-03T21:31:57.758Z" }, + { url = "https://files.pythonhosted.org/packages/a3/88/1a3ea5672f4b0a84802ee9891b86743438e7c04eb0b8f8c4e16a42375327/regex-2025.11.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:04d2765516395cf7dda331a244a3282c0f5ae96075f728629287dfa6f76ba70a", size = 288814, upload-time = "2025-11-03T21:32:01.12Z" }, + { url = "https://files.pythonhosted.org/packages/fb/8c/f5987895bf42b8ddeea1b315c9fedcfe07cadee28b9c98cf50d00adcb14d/regex-2025.11.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d9903ca42bfeec4cebedba8022a7c97ad2aab22e09573ce9976ba01b65e4361", size = 798592, upload-time = "2025-11-03T21:32:03.006Z" }, + { url = "https://files.pythonhosted.org/packages/99/2a/6591ebeede78203fa77ee46a1c36649e02df9eaa77a033d1ccdf2fcd5d4e/regex-2025.11.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:639431bdc89d6429f6721625e8129413980ccd62e9d3f496be618a41d205f160", size = 864122, upload-time = "2025-11-03T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/94/d6/be32a87cf28cf8ed064ff281cfbd49aefd90242a83e4b08b5a86b38e8eb4/regex-2025.11.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f117efad42068f9715677c8523ed2be1518116d1c49b1dd17987716695181efe", size = 912272, upload-time = "2025-11-03T21:32:06.148Z" }, + { url = "https://files.pythonhosted.org/packages/62/11/9bcef2d1445665b180ac7f230406ad80671f0fc2a6ffb93493b5dd8cd64c/regex-2025.11.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4aecb6f461316adf9f1f0f6a4a1a3d79e045f9b71ec76055a791affa3b285850", size = 803497, upload-time = "2025-11-03T21:32:08.162Z" }, + { url = "https://files.pythonhosted.org/packages/e5/a7/da0dc273d57f560399aa16d8a68ae7f9b57679476fc7ace46501d455fe84/regex-2025.11.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3b3a5f320136873cc5561098dfab677eea139521cb9a9e8db98b7e64aef44cbc", size = 787892, upload-time = "2025-11-03T21:32:09.769Z" }, + { url = "https://files.pythonhosted.org/packages/da/4b/732a0c5a9736a0b8d6d720d4945a2f1e6f38f87f48f3173559f53e8d5d82/regex-2025.11.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:75fa6f0056e7efb1f42a1c34e58be24072cb9e61a601340cc1196ae92326a4f9", size = 858462, upload-time = "2025-11-03T21:32:11.769Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f5/a2a03df27dc4c2d0c769220f5110ba8c4084b0bfa9ab0f9b4fcfa3d2b0fc/regex-2025.11.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:dbe6095001465294f13f1adcd3311e50dd84e5a71525f20a10bd16689c61ce0b", size = 850528, upload-time = "2025-11-03T21:32:13.906Z" }, + { url = "https://files.pythonhosted.org/packages/d6/09/e1cd5bee3841c7f6eb37d95ca91cdee7100b8f88b81e41c2ef426910891a/regex-2025.11.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:454d9b4ae7881afbc25015b8627c16d88a597479b9dea82b8c6e7e2e07240dc7", size = 789866, upload-time = "2025-11-03T21:32:15.748Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/702f5ea74e2a9c13d855a6a85b7f80c30f9e72a95493260193c07f3f8d74/regex-2025.11.3-cp313-cp313-win32.whl", hash = "sha256:28ba4d69171fc6e9896337d4fc63a43660002b7da53fc15ac992abcf3410917c", size = 266189, upload-time = "2025-11-03T21:32:17.493Z" }, + { url = "https://files.pythonhosted.org/packages/8b/00/6e29bb314e271a743170e53649db0fdb8e8ff0b64b4f425f5602f4eb9014/regex-2025.11.3-cp313-cp313-win_amd64.whl", hash = "sha256:bac4200befe50c670c405dc33af26dad5a3b6b255dd6c000d92fe4629f9ed6a5", size = 277054, upload-time = "2025-11-03T21:32:19.042Z" }, + { url = "https://files.pythonhosted.org/packages/25/f1/b156ff9f2ec9ac441710764dda95e4edaf5f36aca48246d1eea3f1fd96ec/regex-2025.11.3-cp313-cp313-win_arm64.whl", hash = "sha256:2292cd5a90dab247f9abe892ac584cb24f0f54680c73fcb4a7493c66c2bf2467", size = 270325, upload-time = "2025-11-03T21:32:21.338Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/fd0c63357caefe5680b8ea052131acbd7f456893b69cc2a90cc3e0dc90d4/regex-2025.11.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:1eb1ebf6822b756c723e09f5186473d93236c06c579d2cc0671a722d2ab14281", size = 491984, upload-time = "2025-11-03T21:32:23.466Z" }, + { url = "https://files.pythonhosted.org/packages/df/ec/7014c15626ab46b902b3bcc4b28a7bae46d8f281fc7ea9c95e22fcaaa917/regex-2025.11.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1e00ec2970aab10dc5db34af535f21fcf32b4a31d99e34963419636e2f85ae39", size = 292673, upload-time = "2025-11-03T21:32:25.034Z" }, + { url = "https://files.pythonhosted.org/packages/23/ab/3b952ff7239f20d05f1f99e9e20188513905f218c81d52fb5e78d2bf7634/regex-2025.11.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a4cb042b615245d5ff9b3794f56be4138b5adc35a4166014d31d1814744148c7", size = 291029, upload-time = "2025-11-03T21:32:26.528Z" }, + { url = "https://files.pythonhosted.org/packages/21/7e/3dc2749fc684f455f162dcafb8a187b559e2614f3826877d3844a131f37b/regex-2025.11.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44f264d4bf02f3176467d90b294d59bf1db9fe53c141ff772f27a8b456b2a9ed", size = 807437, upload-time = "2025-11-03T21:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/1b/0b/d529a85ab349c6a25d1ca783235b6e3eedf187247eab536797021f7126c6/regex-2025.11.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7be0277469bf3bd7a34a9c57c1b6a724532a0d235cd0dc4e7f4316f982c28b19", size = 873368, upload-time = "2025-11-03T21:32:30.4Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/2d868155f8c9e3e9d8f9e10c64e9a9f496bb8f7e037a88a8bed26b435af6/regex-2025.11.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0d31e08426ff4b5b650f68839f5af51a92a5b51abd8554a60c2fbc7c71f25d0b", size = 914921, upload-time = "2025-11-03T21:32:32.123Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/9d72ff0f354fa783fe2ba913c8734c3b433b86406117a8db4ea2bf1c7a2f/regex-2025.11.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e43586ce5bd28f9f285a6e729466841368c4a0353f6fd08d4ce4630843d3648a", size = 812708, upload-time = "2025-11-03T21:32:34.305Z" }, + { url = "https://files.pythonhosted.org/packages/e7/19/ce4bf7f5575c97f82b6e804ffb5c4e940c62609ab2a0d9538d47a7fdf7d4/regex-2025.11.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:0f9397d561a4c16829d4e6ff75202c1c08b68a3bdbfe29dbfcdb31c9830907c6", size = 795472, upload-time = "2025-11-03T21:32:36.364Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/fd1063a176ffb7b2315f9a1b08d17b18118b28d9df163132615b835a26ee/regex-2025.11.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:dd16e78eb18ffdb25ee33a0682d17912e8cc8a770e885aeee95020046128f1ce", size = 868341, upload-time = "2025-11-03T21:32:38.042Z" }, + { url = "https://files.pythonhosted.org/packages/12/43/103fb2e9811205e7386366501bc866a164a0430c79dd59eac886a2822950/regex-2025.11.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:ffcca5b9efe948ba0661e9df0fa50d2bc4b097c70b9810212d6b62f05d83b2dd", size = 854666, upload-time = "2025-11-03T21:32:40.079Z" }, + { url = "https://files.pythonhosted.org/packages/7d/22/e392e53f3869b75804762c7c848bd2dd2abf2b70fb0e526f58724638bd35/regex-2025.11.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c56b4d162ca2b43318ac671c65bd4d563e841a694ac70e1a976ac38fcf4ca1d2", size = 799473, upload-time = "2025-11-03T21:32:42.148Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f9/8bd6b656592f925b6845fcbb4d57603a3ac2fb2373344ffa1ed70aa6820a/regex-2025.11.3-cp313-cp313t-win32.whl", hash = "sha256:9ddc42e68114e161e51e272f667d640f97e84a2b9ef14b7477c53aac20c2d59a", size = 268792, upload-time = "2025-11-03T21:32:44.13Z" }, + { url = "https://files.pythonhosted.org/packages/e5/87/0e7d603467775ff65cd2aeabf1b5b50cc1c3708556a8b849a2fa4dd1542b/regex-2025.11.3-cp313-cp313t-win_amd64.whl", hash = "sha256:7a7c7fdf755032ffdd72c77e3d8096bdcb0eb92e89e17571a196f03d88b11b3c", size = 280214, upload-time = "2025-11-03T21:32:45.853Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d0/2afc6f8e94e2b64bfb738a7c2b6387ac1699f09f032d363ed9447fd2bb57/regex-2025.11.3-cp313-cp313t-win_arm64.whl", hash = "sha256:df9eb838c44f570283712e7cff14c16329a9f0fb19ca492d21d4b7528ee6821e", size = 271469, upload-time = "2025-11-03T21:32:48.026Z" }, + { url = "https://files.pythonhosted.org/packages/31/e9/f6e13de7e0983837f7b6d238ad9458800a874bf37c264f7923e63409944c/regex-2025.11.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9697a52e57576c83139d7c6f213d64485d3df5bf84807c35fa409e6c970801c6", size = 489089, upload-time = "2025-11-03T21:32:50.027Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5c/261f4a262f1fa65141c1b74b255988bd2fa020cc599e53b080667d591cfc/regex-2025.11.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e18bc3f73bd41243c9b38a6d9f2366cd0e0137a9aebe2d8ff76c5b67d4c0a3f4", size = 291059, upload-time = "2025-11-03T21:32:51.682Z" }, + { url = "https://files.pythonhosted.org/packages/8e/57/f14eeb7f072b0e9a5a090d1712741fd8f214ec193dba773cf5410108bb7d/regex-2025.11.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:61a08bcb0ec14ff4e0ed2044aad948d0659604f824cbd50b55e30b0ec6f09c73", size = 288900, upload-time = "2025-11-03T21:32:53.569Z" }, + { url = "https://files.pythonhosted.org/packages/3c/6b/1d650c45e99a9b327586739d926a1cd4e94666b1bd4af90428b36af66dc7/regex-2025.11.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9c30003b9347c24bcc210958c5d167b9e4f9be786cb380a7d32f14f9b84674f", size = 799010, upload-time = "2025-11-03T21:32:55.222Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/d66dcbc6b628ce4e3f7f0cbbb84603aa2fc0ffc878babc857726b8aab2e9/regex-2025.11.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4e1e592789704459900728d88d41a46fe3969b82ab62945560a31732ffc19a6d", size = 864893, upload-time = "2025-11-03T21:32:57.239Z" }, + { url = "https://files.pythonhosted.org/packages/bf/2d/f238229f1caba7ac87a6c4153d79947fb0261415827ae0f77c304260c7d3/regex-2025.11.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6538241f45eb5a25aa575dbba1069ad786f68a4f2773a29a2bd3dd1f9de787be", size = 911522, upload-time = "2025-11-03T21:32:59.274Z" }, + { url = "https://files.pythonhosted.org/packages/bd/3d/22a4eaba214a917c80e04f6025d26143690f0419511e0116508e24b11c9b/regex-2025.11.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce22519c989bb72a7e6b36a199384c53db7722fe669ba891da75907fe3587db", size = 803272, upload-time = "2025-11-03T21:33:01.393Z" }, + { url = "https://files.pythonhosted.org/packages/84/b1/03188f634a409353a84b5ef49754b97dbcc0c0f6fd6c8ede505a8960a0a4/regex-2025.11.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:66d559b21d3640203ab9075797a55165d79017520685fb407b9234d72ab63c62", size = 787958, upload-time = "2025-11-03T21:33:03.379Z" }, + { url = "https://files.pythonhosted.org/packages/99/6a/27d072f7fbf6fadd59c64d210305e1ff865cc3b78b526fd147db768c553b/regex-2025.11.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:669dcfb2e38f9e8c69507bace46f4889e3abbfd9b0c29719202883c0a603598f", size = 859289, upload-time = "2025-11-03T21:33:05.374Z" }, + { url = "https://files.pythonhosted.org/packages/9a/70/1b3878f648e0b6abe023172dacb02157e685564853cc363d9961bcccde4e/regex-2025.11.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:32f74f35ff0f25a5021373ac61442edcb150731fbaa28286bbc8bb1582c89d02", size = 850026, upload-time = "2025-11-03T21:33:07.131Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d5/68e25559b526b8baab8e66839304ede68ff6727237a47727d240006bd0ff/regex-2025.11.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e6c7a21dffba883234baefe91bc3388e629779582038f75d2a5be918e250f0ed", size = 789499, upload-time = "2025-11-03T21:33:09.141Z" }, + { url = "https://files.pythonhosted.org/packages/fc/df/43971264857140a350910d4e33df725e8c94dd9dee8d2e4729fa0d63d49e/regex-2025.11.3-cp314-cp314-win32.whl", hash = "sha256:795ea137b1d809eb6836b43748b12634291c0ed55ad50a7d72d21edf1cd565c4", size = 271604, upload-time = "2025-11-03T21:33:10.9Z" }, + { url = "https://files.pythonhosted.org/packages/01/6f/9711b57dc6894a55faf80a4c1b5aa4f8649805cb9c7aef46f7d27e2b9206/regex-2025.11.3-cp314-cp314-win_amd64.whl", hash = "sha256:9f95fbaa0ee1610ec0fc6b26668e9917a582ba80c52cc6d9ada15e30aa9ab9ad", size = 280320, upload-time = "2025-11-03T21:33:12.572Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/f6eaa207d4377481f5e1775cdeb5a443b5a59b392d0065f3417d31d80f87/regex-2025.11.3-cp314-cp314-win_arm64.whl", hash = "sha256:dfec44d532be4c07088c3de2876130ff0fbeeacaa89a137decbbb5f665855a0f", size = 273372, upload-time = "2025-11-03T21:33:14.219Z" }, + { url = "https://files.pythonhosted.org/packages/c3/06/49b198550ee0f5e4184271cee87ba4dfd9692c91ec55289e6282f0f86ccf/regex-2025.11.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ba0d8a5d7f04f73ee7d01d974d47c5834f8a1b0224390e4fe7c12a3a92a78ecc", size = 491985, upload-time = "2025-11-03T21:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/ce/bf/abdafade008f0b1c9da10d934034cb670432d6cf6cbe38bbb53a1cfd6cf8/regex-2025.11.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:442d86cf1cfe4faabf97db7d901ef58347efd004934da045c745e7b5bd57ac49", size = 292669, upload-time = "2025-11-03T21:33:18.32Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ef/0c357bb8edbd2ad8e273fcb9e1761bc37b8acbc6e1be050bebd6475f19c1/regex-2025.11.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fd0a5e563c756de210bb964789b5abe4f114dacae9104a47e1a649b910361536", size = 291030, upload-time = "2025-11-03T21:33:20.048Z" }, + { url = "https://files.pythonhosted.org/packages/79/06/edbb67257596649b8fb088d6aeacbcb248ac195714b18a65e018bf4c0b50/regex-2025.11.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf3490bcbb985a1ae97b2ce9ad1c0f06a852d5b19dde9b07bdf25bf224248c95", size = 807674, upload-time = "2025-11-03T21:33:21.797Z" }, + { url = "https://files.pythonhosted.org/packages/f4/d9/ad4deccfce0ea336296bd087f1a191543bb99ee1c53093dcd4c64d951d00/regex-2025.11.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3809988f0a8b8c9dcc0f92478d6501fac7200b9ec56aecf0ec21f4a2ec4b6009", size = 873451, upload-time = "2025-11-03T21:33:23.741Z" }, + { url = "https://files.pythonhosted.org/packages/13/75/a55a4724c56ef13e3e04acaab29df26582f6978c000ac9cd6810ad1f341f/regex-2025.11.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f4ff94e58e84aedb9c9fce66d4ef9f27a190285b451420f297c9a09f2b9abee9", size = 914980, upload-time = "2025-11-03T21:33:25.999Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/a1657ee15bd9116f70d4a530c736983eed997b361e20ecd8f5ca3759d5c5/regex-2025.11.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eb542fd347ce61e1321b0a6b945d5701528dca0cd9759c2e3bb8bd57e47964d", size = 812852, upload-time = "2025-11-03T21:33:27.852Z" }, + { url = "https://files.pythonhosted.org/packages/b8/6f/f7516dde5506a588a561d296b2d0044839de06035bb486b326065b4c101e/regex-2025.11.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d6c2d5919075a1f2e413c00b056ea0c2f065b3f5fe83c3d07d325ab92dce51d6", size = 795566, upload-time = "2025-11-03T21:33:32.364Z" }, + { url = "https://files.pythonhosted.org/packages/d9/dd/3d10b9e170cc16fb34cb2cef91513cf3df65f440b3366030631b2984a264/regex-2025.11.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3f8bf11a4827cc7ce5a53d4ef6cddd5ad25595d3c1435ef08f76825851343154", size = 868463, upload-time = "2025-11-03T21:33:34.459Z" }, + { url = "https://files.pythonhosted.org/packages/f5/8e/935e6beff1695aa9085ff83195daccd72acc82c81793df480f34569330de/regex-2025.11.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:22c12d837298651e5550ac1d964e4ff57c3f56965fc1812c90c9fb2028eaf267", size = 854694, upload-time = "2025-11-03T21:33:36.793Z" }, + { url = "https://files.pythonhosted.org/packages/92/12/10650181a040978b2f5720a6a74d44f841371a3d984c2083fc1752e4acf6/regex-2025.11.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:62ba394a3dda9ad41c7c780f60f6e4a70988741415ae96f6d1bf6c239cf01379", size = 799691, upload-time = "2025-11-03T21:33:39.079Z" }, + { url = "https://files.pythonhosted.org/packages/67/90/8f37138181c9a7690e7e4cb388debbd389342db3c7381d636d2875940752/regex-2025.11.3-cp314-cp314t-win32.whl", hash = "sha256:4bf146dca15cdd53224a1bf46d628bd7590e4a07fbb69e720d561aea43a32b38", size = 274583, upload-time = "2025-11-03T21:33:41.302Z" }, + { url = "https://files.pythonhosted.org/packages/8f/cd/867f5ec442d56beb56f5f854f40abcfc75e11d10b11fdb1869dd39c63aaf/regex-2025.11.3-cp314-cp314t-win_amd64.whl", hash = "sha256:adad1a1bcf1c9e76346e091d22d23ac54ef28e1365117d99521631078dfec9de", size = 284286, upload-time = "2025-11-03T21:33:43.324Z" }, + { url = "https://files.pythonhosted.org/packages/20/31/32c0c4610cbc070362bf1d2e4ea86d1ea29014d400a6d6c2486fcfd57766/regex-2025.11.3-cp314-cp314t-win_arm64.whl", hash = "sha256:c54f768482cef41e219720013cd05933b6f971d9562544d691c68699bf2b6801", size = 274741, upload-time = "2025-11-03T21:33:45.557Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650, upload-time = "2024-03-22T20:32:29.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "retry" +version = "0.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "decorator" }, + { name = "py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/72/75d0b85443fbc8d9f38d08d2b1b67cc184ce35280e4a3813cda2f445f3a4/retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4", size = 6448, upload-time = "2016-05-11T13:58:51.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/0d/53aea75710af4528a25ed6837d71d117602b01946b307a3912cb3cfcbcba/retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606", size = 7986, upload-time = "2016-05-11T13:58:39.925Z" }, +] + +[[package]] +name = "rich" +version = "14.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.29.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/33/23b3b3419b6a3e0f559c7c0d2ca8fc1b9448382b25245033788785921332/rpds_py-0.29.0.tar.gz", hash = "sha256:fe55fe686908f50154d1dc599232016e50c243b438c3b7432f24e2895b0e5359", size = 69359, upload-time = "2025-11-16T14:50:39.532Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/50/bc0e6e736d94e420df79be4deb5c9476b63165c87bb8f19ef75d100d21b3/rpds_py-0.29.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a0891cfd8db43e085c0ab93ab7e9b0c8fee84780d436d3b266b113e51e79f954", size = 376000, upload-time = "2025-11-16T14:48:19.141Z" }, + { url = "https://files.pythonhosted.org/packages/3e/3a/46676277160f014ae95f24de53bed0e3b7ea66c235e7de0b9df7bd5d68ba/rpds_py-0.29.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3897924d3f9a0361472d884051f9a2460358f9a45b1d85a39a158d2f8f1ad71c", size = 360575, upload-time = "2025-11-16T14:48:20.443Z" }, + { url = "https://files.pythonhosted.org/packages/75/ba/411d414ed99ea1afdd185bbabeeaac00624bd1e4b22840b5e9967ade6337/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a21deb8e0d1571508c6491ce5ea5e25669b1dd4adf1c9d64b6314842f708b5d", size = 392159, upload-time = "2025-11-16T14:48:22.12Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b1/e18aa3a331f705467a48d0296778dc1fea9d7f6cf675bd261f9a846c7e90/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9efe71687d6427737a0a2de9ca1c0a216510e6cd08925c44162be23ed7bed2d5", size = 410602, upload-time = "2025-11-16T14:48:23.563Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/04f27f0c9f2299274c76612ac9d2c36c5048bb2c6c2e52c38c60bf3868d9/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40f65470919dc189c833e86b2c4bd21bd355f98436a2cef9e0a9a92aebc8e57e", size = 515808, upload-time = "2025-11-16T14:48:24.949Z" }, + { url = "https://files.pythonhosted.org/packages/83/56/a8412aa464fb151f8bc0d91fb0bb888adc9039bd41c1c6ba8d94990d8cf8/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:def48ff59f181130f1a2cb7c517d16328efac3ec03951cca40c1dc2049747e83", size = 416015, upload-time = "2025-11-16T14:48:26.782Z" }, + { url = "https://files.pythonhosted.org/packages/04/4c/f9b8a05faca3d9e0a6397c90d13acb9307c9792b2bff621430c58b1d6e76/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad7bd570be92695d89285a4b373006930715b78d96449f686af422debb4d3949", size = 395325, upload-time = "2025-11-16T14:48:28.055Z" }, + { url = "https://files.pythonhosted.org/packages/34/60/869f3bfbf8ed7b54f1ad9a5543e0fdffdd40b5a8f587fe300ee7b4f19340/rpds_py-0.29.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:5a572911cd053137bbff8e3a52d31c5d2dba51d3a67ad902629c70185f3f2181", size = 410160, upload-time = "2025-11-16T14:48:29.338Z" }, + { url = "https://files.pythonhosted.org/packages/91/aa/e5b496334e3aba4fe4c8a80187b89f3c1294c5c36f2a926da74338fa5a73/rpds_py-0.29.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d583d4403bcbf10cffc3ab5cee23d7643fcc960dff85973fd3c2d6c86e8dbb0c", size = 425309, upload-time = "2025-11-16T14:48:30.691Z" }, + { url = "https://files.pythonhosted.org/packages/85/68/4e24a34189751ceb6d66b28f18159922828dd84155876551f7ca5b25f14f/rpds_py-0.29.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:070befbb868f257d24c3bb350dbd6e2f645e83731f31264b19d7231dd5c396c7", size = 574644, upload-time = "2025-11-16T14:48:31.964Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cf/474a005ea4ea9c3b4f17b6108b6b13cebfc98ebaff11d6e1b193204b3a93/rpds_py-0.29.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fc935f6b20b0c9f919a8ff024739174522abd331978f750a74bb68abd117bd19", size = 601605, upload-time = "2025-11-16T14:48:33.252Z" }, + { url = "https://files.pythonhosted.org/packages/f4/b1/c56f6a9ab8c5f6bb5c65c4b5f8229167a3a525245b0773f2c0896686b64e/rpds_py-0.29.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8c5a8ecaa44ce2d8d9d20a68a2483a74c07f05d72e94a4dff88906c8807e77b0", size = 564593, upload-time = "2025-11-16T14:48:34.643Z" }, + { url = "https://files.pythonhosted.org/packages/b3/13/0494cecce4848f68501e0a229432620b4b57022388b071eeff95f3e1e75b/rpds_py-0.29.0-cp312-cp312-win32.whl", hash = "sha256:ba5e1aeaf8dd6d8f6caba1f5539cddda87d511331714b7b5fc908b6cfc3636b7", size = 223853, upload-time = "2025-11-16T14:48:36.419Z" }, + { url = "https://files.pythonhosted.org/packages/1f/6a/51e9aeb444a00cdc520b032a28b07e5f8dc7bc328b57760c53e7f96997b4/rpds_py-0.29.0-cp312-cp312-win_amd64.whl", hash = "sha256:b5f6134faf54b3cb83375db0f113506f8b7770785be1f95a631e7e2892101977", size = 239895, upload-time = "2025-11-16T14:48:37.956Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d4/8bce56cdad1ab873e3f27cb31c6a51d8f384d66b022b820525b879f8bed1/rpds_py-0.29.0-cp312-cp312-win_arm64.whl", hash = "sha256:b016eddf00dca7944721bf0cd85b6af7f6c4efaf83ee0b37c4133bd39757a8c7", size = 230321, upload-time = "2025-11-16T14:48:39.71Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d9/c5de60d9d371bbb186c3e9bf75f4fc5665e11117a25a06a6b2e0afb7380e/rpds_py-0.29.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1585648d0760b88292eecab5181f5651111a69d90eff35d6b78aa32998886a61", size = 375710, upload-time = "2025-11-16T14:48:41.063Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b3/0860cdd012291dc21272895ce107f1e98e335509ba986dd83d72658b82b9/rpds_py-0.29.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:521807963971a23996ddaf764c682b3e46459b3c58ccd79fefbe16718db43154", size = 360582, upload-time = "2025-11-16T14:48:42.423Z" }, + { url = "https://files.pythonhosted.org/packages/92/8a/a18c2f4a61b3407e56175f6aab6deacdf9d360191a3d6f38566e1eaf7266/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a8896986efaa243ab713c69e6491a4138410f0fe36f2f4c71e18bd5501e8014", size = 391172, upload-time = "2025-11-16T14:48:43.75Z" }, + { url = "https://files.pythonhosted.org/packages/fd/49/e93354258508c50abc15cdcd5fcf7ac4117f67bb6233ad7859f75e7372a0/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d24564a700ef41480a984c5ebed62b74e6ce5860429b98b1fede76049e953e6", size = 409586, upload-time = "2025-11-16T14:48:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/5a/8d/a27860dae1c19a6bdc901f90c81f0d581df1943355802961a57cdb5b6cd1/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6596b93c010d386ae46c9fba9bfc9fc5965fa8228edeac51576299182c2e31c", size = 516339, upload-time = "2025-11-16T14:48:47.308Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ad/a75e603161e79b7110c647163d130872b271c6b28712c803c65d492100f7/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5cc58aac218826d054c7da7f95821eba94125d88be673ff44267bb89d12a5866", size = 416201, upload-time = "2025-11-16T14:48:48.615Z" }, + { url = "https://files.pythonhosted.org/packages/b9/42/555b4ee17508beafac135c8b450816ace5a96194ce97fefc49d58e5652ea/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de73e40ebc04dd5d9556f50180395322193a78ec247e637e741c1b954810f295", size = 395095, upload-time = "2025-11-16T14:48:50.027Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f0/c90b671b9031e800ec45112be42ea9f027f94f9ac25faaac8770596a16a1/rpds_py-0.29.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:295ce5ac7f0cf69a651ea75c8f76d02a31f98e5698e82a50a5f4d4982fbbae3b", size = 410077, upload-time = "2025-11-16T14:48:51.515Z" }, + { url = "https://files.pythonhosted.org/packages/3d/80/9af8b640b81fe21e6f718e9dec36c0b5f670332747243130a5490f292245/rpds_py-0.29.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ea59b23ea931d494459c8338056fe7d93458c0bf3ecc061cd03916505369d55", size = 424548, upload-time = "2025-11-16T14:48:53.237Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0b/b5647446e991736e6a495ef510e6710df91e880575a586e763baeb0aa770/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f49d41559cebd608042fdcf54ba597a4a7555b49ad5c1c0c03e0af82692661cd", size = 573661, upload-time = "2025-11-16T14:48:54.769Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b3/1b1c9576839ff583d1428efbf59f9ee70498d8ce6c0b328ac02f1e470879/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:05a2bd42768ea988294ca328206efbcc66e220d2d9b7836ee5712c07ad6340ea", size = 600937, upload-time = "2025-11-16T14:48:56.247Z" }, + { url = "https://files.pythonhosted.org/packages/6c/7b/b6cfca2f9fee4c4494ce54f7fb1b9f578867495a9aa9fc0d44f5f735c8e0/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33ca7bdfedd83339ca55da3a5e1527ee5870d4b8369456b5777b197756f3ca22", size = 564496, upload-time = "2025-11-16T14:48:57.691Z" }, + { url = "https://files.pythonhosted.org/packages/b9/fb/ba29ec7f0f06eb801bac5a23057a9ff7670623b5e8013bd59bec4aa09de8/rpds_py-0.29.0-cp313-cp313-win32.whl", hash = "sha256:20c51ae86a0bb9accc9ad4e6cdeec58d5ebb7f1b09dd4466331fc65e1766aae7", size = 223126, upload-time = "2025-11-16T14:48:59.058Z" }, + { url = "https://files.pythonhosted.org/packages/3c/6b/0229d3bed4ddaa409e6d90b0ae967ed4380e4bdd0dad6e59b92c17d42457/rpds_py-0.29.0-cp313-cp313-win_amd64.whl", hash = "sha256:6410e66f02803600edb0b1889541f4b5cc298a5ccda0ad789cc50ef23b54813e", size = 239771, upload-time = "2025-11-16T14:49:00.872Z" }, + { url = "https://files.pythonhosted.org/packages/e4/38/d2868f058b164f8efd89754d85d7b1c08b454f5c07ac2e6cc2e9bd4bd05b/rpds_py-0.29.0-cp313-cp313-win_arm64.whl", hash = "sha256:56838e1cd9174dc23c5691ee29f1d1be9eab357f27efef6bded1328b23e1ced2", size = 229994, upload-time = "2025-11-16T14:49:02.673Z" }, + { url = "https://files.pythonhosted.org/packages/52/91/5de91c5ec7d41759beec9b251630824dbb8e32d20c3756da1a9a9d309709/rpds_py-0.29.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:37d94eadf764d16b9a04307f2ab1d7af6dc28774bbe0535c9323101e14877b4c", size = 365886, upload-time = "2025-11-16T14:49:04.133Z" }, + { url = "https://files.pythonhosted.org/packages/85/7c/415d8c1b016d5f47ecec5145d9d6d21002d39dce8761b30f6c88810b455a/rpds_py-0.29.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d472cf73efe5726a067dce63eebe8215b14beabea7c12606fd9994267b3cfe2b", size = 355262, upload-time = "2025-11-16T14:49:05.543Z" }, + { url = "https://files.pythonhosted.org/packages/3d/14/bf83e2daa4f980e4dc848aed9299792a8b84af95e12541d9e7562f84a6ef/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72fdfd5ff8992e4636621826371e3ac5f3e3b8323e9d0e48378e9c13c3dac9d0", size = 384826, upload-time = "2025-11-16T14:49:07.301Z" }, + { url = "https://files.pythonhosted.org/packages/33/b8/53330c50a810ae22b4fbba5e6cf961b68b9d72d9bd6780a7c0a79b070857/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2549d833abdf8275c901313b9e8ff8fba57e50f6a495035a2a4e30621a2f7cc4", size = 394234, upload-time = "2025-11-16T14:49:08.782Z" }, + { url = "https://files.pythonhosted.org/packages/cc/32/01e2e9645cef0e584f518cfde4567563e57db2257244632b603f61b40e50/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4448dad428f28a6a767c3e3b80cde3446a22a0efbddaa2360f4bb4dc836d0688", size = 520008, upload-time = "2025-11-16T14:49:10.253Z" }, + { url = "https://files.pythonhosted.org/packages/98/c3/0d1b95a81affae2b10f950782e33a1fd2edd6ce2a479966cac98c9a66f57/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:115f48170fd4296a33938d8c11f697f5f26e0472e43d28f35624764173a60e4d", size = 409569, upload-time = "2025-11-16T14:49:12.478Z" }, + { url = "https://files.pythonhosted.org/packages/fa/60/aa3b8678f3f009f675b99174fa2754302a7fbfe749162e8043d111de2d88/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e5bb73ffc029820f4348e9b66b3027493ae00bca6629129cd433fd7a76308ee", size = 385188, upload-time = "2025-11-16T14:49:13.88Z" }, + { url = "https://files.pythonhosted.org/packages/92/02/5546c1c8aa89c18d40c1fcffdcc957ba730dee53fb7c3ca3a46f114761d2/rpds_py-0.29.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:b1581fcde18fcdf42ea2403a16a6b646f8eb1e58d7f90a0ce693da441f76942e", size = 398587, upload-time = "2025-11-16T14:49:15.339Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e0/ad6eeaf47e236eba052fa34c4073078b9e092bd44da6bbb35aaae9580669/rpds_py-0.29.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16e9da2bda9eb17ea318b4c335ec9ac1818e88922cbe03a5743ea0da9ecf74fb", size = 416641, upload-time = "2025-11-16T14:49:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/1a/93/0acedfd50ad9cdd3879c615a6dc8c5f1ce78d2fdf8b87727468bb5bb4077/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:28fd300326dd21198f311534bdb6d7e989dd09b3418b3a91d54a0f384c700967", size = 566683, upload-time = "2025-11-16T14:49:18.342Z" }, + { url = "https://files.pythonhosted.org/packages/62/53/8c64e0f340a9e801459fc6456821abc15b3582cb5dc3932d48705a9d9ac7/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2aba991e041d031c7939e1358f583ae405a7bf04804ca806b97a5c0e0af1ea5e", size = 592730, upload-time = "2025-11-16T14:49:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/85/ef/3109b6584f8c4b0d2490747c916df833c127ecfa82be04d9a40a376f2090/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7f437026dbbc3f08c99cc41a5b2570c6e1a1ddbe48ab19a9b814254128d4ea7a", size = 557361, upload-time = "2025-11-16T14:49:21.574Z" }, + { url = "https://files.pythonhosted.org/packages/ff/3b/61586475e82d57f01da2c16edb9115a618afe00ce86fe1b58936880b15af/rpds_py-0.29.0-cp313-cp313t-win32.whl", hash = "sha256:6e97846e9800a5d0fe7be4d008f0c93d0feeb2700da7b1f7528dabafb31dfadb", size = 211227, upload-time = "2025-11-16T14:49:23.03Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3a/12dc43f13594a54ea0c9d7e9d43002116557330e3ad45bc56097ddf266e2/rpds_py-0.29.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f49196aec7c4b406495f60e6f947ad71f317a765f956d74bbd83996b9edc0352", size = 225248, upload-time = "2025-11-16T14:49:24.841Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/0b1474e7899371d9540d3bbb2a499a3427ae1fc39c998563fe9035a1073b/rpds_py-0.29.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:394d27e4453d3b4d82bb85665dc1fcf4b0badc30fc84282defed71643b50e1a1", size = 363731, upload-time = "2025-11-16T14:49:26.683Z" }, + { url = "https://files.pythonhosted.org/packages/28/12/3b7cf2068d0a334ed1d7b385a9c3c8509f4c2bcba3d4648ea71369de0881/rpds_py-0.29.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55d827b2ae95425d3be9bc9a5838b6c29d664924f98146557f7715e331d06df8", size = 354343, upload-time = "2025-11-16T14:49:28.24Z" }, + { url = "https://files.pythonhosted.org/packages/eb/73/5afcf8924bc02a749416eda64e17ac9c9b28f825f4737385295a0e99b0c1/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc31a07ed352e5462d3ee1b22e89285f4ce97d5266f6d1169da1142e78045626", size = 385406, upload-time = "2025-11-16T14:49:29.943Z" }, + { url = "https://files.pythonhosted.org/packages/c8/37/5db736730662508535221737a21563591b6f43c77f2e388951c42f143242/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4695dd224212f6105db7ea62197144230b808d6b2bba52238906a2762f1d1e7", size = 396162, upload-time = "2025-11-16T14:49:31.833Z" }, + { url = "https://files.pythonhosted.org/packages/70/0d/491c1017d14f62ce7bac07c32768d209a50ec567d76d9f383b4cfad19b80/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcae1770b401167f8b9e1e3f566562e6966ffa9ce63639916248a9e25fa8a244", size = 517719, upload-time = "2025-11-16T14:49:33.804Z" }, + { url = "https://files.pythonhosted.org/packages/d7/25/b11132afcb17cd5d82db173f0c8dab270ffdfaba43e5ce7a591837ae9649/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:90f30d15f45048448b8da21c41703b31c61119c06c216a1bf8c245812a0f0c17", size = 409498, upload-time = "2025-11-16T14:49:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7d/e6543cedfb2e6403a1845710a5ab0e0ccf8fc288e0b5af9a70bfe2c12053/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44a91e0ab77bdc0004b43261a4b8cd6d6b451e8d443754cfda830002b5745b32", size = 382743, upload-time = "2025-11-16T14:49:36.704Z" }, + { url = "https://files.pythonhosted.org/packages/75/11/a4ebc9f654293ae9fefb83b2b6be7f3253e85ea42a5db2f77d50ad19aaeb/rpds_py-0.29.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:4aa195e5804d32c682e453b34474f411ca108e4291c6a0f824ebdc30a91c973c", size = 400317, upload-time = "2025-11-16T14:49:39.132Z" }, + { url = "https://files.pythonhosted.org/packages/52/18/97677a60a81c7f0e5f64e51fb3f8271c5c8fcabf3a2df18e97af53d7c2bf/rpds_py-0.29.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7971bdb7bf4ee0f7e6f67fa4c7fbc6019d9850cc977d126904392d363f6f8318", size = 416979, upload-time = "2025-11-16T14:49:40.575Z" }, + { url = "https://files.pythonhosted.org/packages/f0/69/28ab391a9968f6c746b2a2db181eaa4d16afaa859fedc9c2f682d19f7e18/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8ae33ad9ce580c7a47452c3b3f7d8a9095ef6208e0a0c7e4e2384f9fc5bf8212", size = 567288, upload-time = "2025-11-16T14:49:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/3b/d3/0c7afdcdb830eee94f5611b64e71354ffe6ac8df82d00c2faf2bfffd1d4e/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c661132ab2fb4eeede2ef69670fd60da5235209874d001a98f1542f31f2a8a94", size = 593157, upload-time = "2025-11-16T14:49:43.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ac/a0fcbc2feed4241cf26d32268c195eb88ddd4bd862adfc9d4b25edfba535/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bb78b3a0d31ac1bde132c67015a809948db751cb4e92cdb3f0b242e430b6ed0d", size = 554741, upload-time = "2025-11-16T14:49:45.557Z" }, + { url = "https://files.pythonhosted.org/packages/0f/f1/fcc24137c470df8588674a677f33719d5800ec053aaacd1de8a5d5d84d9e/rpds_py-0.29.0-cp314-cp314-win32.whl", hash = "sha256:f475f103488312e9bd4000bc890a95955a07b2d0b6e8884aef4be56132adbbf1", size = 215508, upload-time = "2025-11-16T14:49:47.562Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c7/1d169b2045512eac019918fc1021ea07c30e84a4343f9f344e3e0aa8c788/rpds_py-0.29.0-cp314-cp314-win_amd64.whl", hash = "sha256:b9cf2359a4fca87cfb6801fae83a76aedf66ee1254a7a151f1341632acf67f1b", size = 228125, upload-time = "2025-11-16T14:49:49.064Z" }, + { url = "https://files.pythonhosted.org/packages/be/36/0cec88aaba70ec4a6e381c444b0d916738497d27f0c30406e3d9fcbd3bc2/rpds_py-0.29.0-cp314-cp314-win_arm64.whl", hash = "sha256:9ba8028597e824854f0f1733d8b964e914ae3003b22a10c2c664cb6927e0feb9", size = 221992, upload-time = "2025-11-16T14:49:50.777Z" }, + { url = "https://files.pythonhosted.org/packages/b1/fa/a2e524631717c9c0eb5d90d30f648cfba6b731047821c994acacb618406c/rpds_py-0.29.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:e71136fd0612556b35c575dc2726ae04a1669e6a6c378f2240312cf5d1a2ab10", size = 366425, upload-time = "2025-11-16T14:49:52.691Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a4/6d43ebe0746ff694a30233f63f454aed1677bd50ab7a59ff6b2bb5ac61f2/rpds_py-0.29.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:76fe96632d53f3bf0ea31ede2f53bbe3540cc2736d4aec3b3801b0458499ef3a", size = 355282, upload-time = "2025-11-16T14:49:54.292Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a7/52fd8270e0320b09eaf295766ae81dd175f65394687906709b3e75c71d06/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9459a33f077130dbb2c7c3cea72ee9932271fb3126404ba2a2661e4fe9eb7b79", size = 384968, upload-time = "2025-11-16T14:49:55.857Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7d/e6bc526b7a14e1ef80579a52c1d4ad39260a058a51d66c6039035d14db9d/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5c9546cfdd5d45e562cc0444b6dddc191e625c62e866bf567a2c69487c7ad28a", size = 394714, upload-time = "2025-11-16T14:49:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3f/f0ade3954e7db95c791e7eaf978aa7e08a756d2046e8bdd04d08146ed188/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12597d11d97b8f7e376c88929a6e17acb980e234547c92992f9f7c058f1a7310", size = 520136, upload-time = "2025-11-16T14:49:59.162Z" }, + { url = "https://files.pythonhosted.org/packages/87/b3/07122ead1b97009715ab9d4082be6d9bd9546099b2b03fae37c3116f72be/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28de03cf48b8a9e6ec10318f2197b83946ed91e2891f651a109611be4106ac4b", size = 409250, upload-time = "2025-11-16T14:50:00.698Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c6/dcbee61fd1dc892aedcb1b489ba661313101aa82ec84b1a015d4c63ebfda/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd7951c964069039acc9d67a8ff1f0a7f34845ae180ca542b17dc1456b1f1808", size = 384940, upload-time = "2025-11-16T14:50:02.312Z" }, + { url = "https://files.pythonhosted.org/packages/47/11/914ecb6f3574cf9bf8b38aced4063e0f787d6e1eb30b181a7efbc6c1da9a/rpds_py-0.29.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:c07d107b7316088f1ac0177a7661ca0c6670d443f6fe72e836069025e6266761", size = 399392, upload-time = "2025-11-16T14:50:03.829Z" }, + { url = "https://files.pythonhosted.org/packages/f5/fd/2f4bd9433f58f816434bb934313584caa47dbc6f03ce5484df8ac8980561/rpds_py-0.29.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de2345af363d25696969befc0c1688a6cb5e8b1d32b515ef84fc245c6cddba3", size = 416796, upload-time = "2025-11-16T14:50:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/79/a5/449f0281af33efa29d5c71014399d74842342ae908d8cd38260320167692/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:00e56b12d2199ca96068057e1ae7f9998ab6e99cda82431afafd32f3ec98cca9", size = 566843, upload-time = "2025-11-16T14:50:07.243Z" }, + { url = "https://files.pythonhosted.org/packages/ab/32/0a6a1ccee2e37fcb1b7ba9afde762b77182dbb57937352a729c6cd3cf2bb/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3919a3bbecee589300ed25000b6944174e07cd20db70552159207b3f4bbb45b8", size = 593956, upload-time = "2025-11-16T14:50:09.029Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3d/eb820f95dce4306f07a495ede02fb61bef36ea201d9137d4fcd5ab94ec1e/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7fa2ccc312bbd91e43aa5e0869e46bc03278a3dddb8d58833150a18b0f0283a", size = 557288, upload-time = "2025-11-16T14:50:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f8/b8ff786f40470462a252918e0836e0db903c28e88e3eec66bc4a7856ee5d/rpds_py-0.29.0-cp314-cp314t-win32.whl", hash = "sha256:97c817863ffc397f1e6a6e9d2d89fe5408c0a9922dac0329672fb0f35c867ea5", size = 211382, upload-time = "2025-11-16T14:50:12.827Z" }, + { url = "https://files.pythonhosted.org/packages/c9/7f/1a65ae870bc9d0576aebb0c501ea5dccf1ae2178fe2821042150ebd2e707/rpds_py-0.29.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2023473f444752f0f82a58dfcbee040d0a1b3d1b3c2ec40e884bd25db6d117d2", size = 225919, upload-time = "2025-11-16T14:50:14.734Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + +[[package]] +name = "safetensors" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload-time = "2025-11-19T15:18:43.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload-time = "2025-11-19T15:18:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/e8/00/374c0c068e30cd31f1e1b46b4b5738168ec79e7689ca82ee93ddfea05109/safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57", size = 447058, upload-time = "2025-11-19T15:18:34.416Z" }, + { url = "https://files.pythonhosted.org/packages/f1/06/578ffed52c2296f93d7fd2d844cabfa92be51a587c38c8afbb8ae449ca89/safetensors-0.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542", size = 491748, upload-time = "2025-11-19T15:18:09.79Z" }, + { url = "https://files.pythonhosted.org/packages/ae/33/1debbbb70e4791dde185edb9413d1fe01619255abb64b300157d7f15dddd/safetensors-0.7.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104", size = 503881, upload-time = "2025-11-19T15:18:16.145Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1c/40c2ca924d60792c3be509833df711b553c60effbd91da6f5284a83f7122/safetensors-0.7.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d", size = 623463, upload-time = "2025-11-19T15:18:21.11Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3a/13784a9364bd43b0d61eef4bea2845039bc2030458b16594a1bd787ae26e/safetensors-0.7.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a", size = 532855, upload-time = "2025-11-19T15:18:25.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/429e9b1cb3fc651937727befe258ea24122d9663e4d5709a48c9cbfceecb/safetensors-0.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48", size = 507152, upload-time = "2025-11-19T15:18:33.023Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a8/4b45e4e059270d17af60359713ffd83f97900d45a6afa73aaa0d737d48b6/safetensors-0.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981", size = 541856, upload-time = "2025-11-19T15:18:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/06/87/d26d8407c44175d8ae164a95b5a62707fcc445f3c0c56108e37d98070a3d/safetensors-0.7.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b", size = 674060, upload-time = "2025-11-19T15:18:37.211Z" }, + { url = "https://files.pythonhosted.org/packages/11/f5/57644a2ff08dc6325816ba7217e5095f17269dada2554b658442c66aed51/safetensors-0.7.0-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85", size = 771715, upload-time = "2025-11-19T15:18:38.689Z" }, + { url = "https://files.pythonhosted.org/packages/86/31/17883e13a814bd278ae6e266b13282a01049b0c81341da7fd0e3e71a80a3/safetensors-0.7.0-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0", size = 714377, upload-time = "2025-11-19T15:18:40.162Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d8/0c8a7dc9b41dcac53c4cbf9df2b9c83e0e0097203de8b37a712b345c0be5/safetensors-0.7.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4", size = 677368, upload-time = "2025-11-19T15:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/05/e5/cb4b713c8a93469e3c5be7c3f8d77d307e65fe89673e731f5c2bfd0a9237/safetensors-0.7.0-cp38-abi3-win32.whl", hash = "sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba", size = 326423, upload-time = "2025-11-19T15:18:45.74Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload-time = "2025-11-19T15:18:44.427Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload-time = "2025-09-09T08:20:54.731Z" }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload-time = "2025-09-09T08:20:57.313Z" }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload-time = "2025-09-09T08:20:59.671Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload-time = "2025-09-09T08:21:01.71Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload-time = "2025-09-09T08:21:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload-time = "2025-09-09T08:21:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload-time = "2025-09-09T08:21:08.628Z" }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload-time = "2025-09-09T08:21:11.486Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload-time = "2025-09-09T08:21:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload-time = "2025-09-09T08:21:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906, upload-time = "2025-09-09T08:21:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836, upload-time = "2025-09-09T08:21:20.695Z" }, + { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236, upload-time = "2025-09-09T08:21:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593, upload-time = "2025-09-09T08:21:24.65Z" }, + { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007, upload-time = "2025-09-09T08:21:26.713Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/ca/d8ace4f98322d01abcd52d381134344bf7b431eba7ed8b42bdea5a3c2ac9/scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb", size = 30597883, upload-time = "2025-10-28T17:38:54.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/41/5bf55c3f386b1643812f3a5674edf74b26184378ef0f3e7c7a09a7e2ca7f/scipy-1.16.3-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6", size = 36659043, upload-time = "2025-10-28T17:32:40.285Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0f/65582071948cfc45d43e9870bf7ca5f0e0684e165d7c9ef4e50d783073eb/scipy-1.16.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07", size = 28898986, upload-time = "2025-10-28T17:32:45.325Z" }, + { url = "https://files.pythonhosted.org/packages/96/5e/36bf3f0ac298187d1ceadde9051177d6a4fe4d507e8f59067dc9dd39e650/scipy-1.16.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9", size = 20889814, upload-time = "2025-10-28T17:32:49.277Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/178d9d0c35394d5d5211bbff7ac4f2986c5488b59506fef9e1de13ea28d3/scipy-1.16.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686", size = 23565795, upload-time = "2025-10-28T17:32:53.337Z" }, + { url = "https://files.pythonhosted.org/packages/fa/46/d1146ff536d034d02f83c8afc3c4bab2eddb634624d6529a8512f3afc9da/scipy-1.16.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203", size = 33349476, upload-time = "2025-10-28T17:32:58.353Z" }, + { url = "https://files.pythonhosted.org/packages/79/2e/415119c9ab3e62249e18c2b082c07aff907a273741b3f8160414b0e9193c/scipy-1.16.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1", size = 35676692, upload-time = "2025-10-28T17:33:03.88Z" }, + { url = "https://files.pythonhosted.org/packages/27/82/df26e44da78bf8d2aeaf7566082260cfa15955a5a6e96e6a29935b64132f/scipy-1.16.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe", size = 36019345, upload-time = "2025-10-28T17:33:09.773Z" }, + { url = "https://files.pythonhosted.org/packages/82/31/006cbb4b648ba379a95c87262c2855cd0d09453e500937f78b30f02fa1cd/scipy-1.16.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70", size = 38678975, upload-time = "2025-10-28T17:33:15.809Z" }, + { url = "https://files.pythonhosted.org/packages/c2/7f/acbd28c97e990b421af7d6d6cd416358c9c293fc958b8529e0bd5d2a2a19/scipy-1.16.3-cp312-cp312-win_amd64.whl", hash = "sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc", size = 38555926, upload-time = "2025-10-28T17:33:21.388Z" }, + { url = "https://files.pythonhosted.org/packages/ce/69/c5c7807fd007dad4f48e0a5f2153038dc96e8725d3345b9ee31b2b7bed46/scipy-1.16.3-cp312-cp312-win_arm64.whl", hash = "sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2", size = 25463014, upload-time = "2025-10-28T17:33:25.975Z" }, + { url = "https://files.pythonhosted.org/packages/72/f1/57e8327ab1508272029e27eeef34f2302ffc156b69e7e233e906c2a5c379/scipy-1.16.3-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c", size = 36617856, upload-time = "2025-10-28T17:33:31.375Z" }, + { url = "https://files.pythonhosted.org/packages/44/13/7e63cfba8a7452eb756306aa2fd9b37a29a323b672b964b4fdeded9a3f21/scipy-1.16.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d", size = 28874306, upload-time = "2025-10-28T17:33:36.516Z" }, + { url = "https://files.pythonhosted.org/packages/15/65/3a9400efd0228a176e6ec3454b1fa998fbbb5a8defa1672c3f65706987db/scipy-1.16.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9", size = 20865371, upload-time = "2025-10-28T17:33:42.094Z" }, + { url = "https://files.pythonhosted.org/packages/33/d7/eda09adf009a9fb81827194d4dd02d2e4bc752cef16737cc4ef065234031/scipy-1.16.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4", size = 23524877, upload-time = "2025-10-28T17:33:48.483Z" }, + { url = "https://files.pythonhosted.org/packages/7d/6b/3f911e1ebc364cb81320223a3422aab7d26c9c7973109a9cd0f27c64c6c0/scipy-1.16.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959", size = 33342103, upload-time = "2025-10-28T17:33:56.495Z" }, + { url = "https://files.pythonhosted.org/packages/21/f6/4bfb5695d8941e5c570a04d9fcd0d36bce7511b7d78e6e75c8f9791f82d0/scipy-1.16.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88", size = 35697297, upload-time = "2025-10-28T17:34:04.722Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6496dadbc80d8d896ff72511ecfe2316b50313bfc3ebf07a3f580f08bd8c/scipy-1.16.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234", size = 36021756, upload-time = "2025-10-28T17:34:13.482Z" }, + { url = "https://files.pythonhosted.org/packages/fe/bd/a8c7799e0136b987bda3e1b23d155bcb31aec68a4a472554df5f0937eef7/scipy-1.16.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d", size = 38696566, upload-time = "2025-10-28T17:34:22.384Z" }, + { url = "https://files.pythonhosted.org/packages/cd/01/1204382461fcbfeb05b6161b594f4007e78b6eba9b375382f79153172b4d/scipy-1.16.3-cp313-cp313-win_amd64.whl", hash = "sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304", size = 38529877, upload-time = "2025-10-28T17:35:51.076Z" }, + { url = "https://files.pythonhosted.org/packages/7f/14/9d9fbcaa1260a94f4bb5b64ba9213ceb5d03cd88841fe9fd1ffd47a45b73/scipy-1.16.3-cp313-cp313-win_arm64.whl", hash = "sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2", size = 25455366, upload-time = "2025-10-28T17:35:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a3/9ec205bd49f42d45d77f1730dbad9ccf146244c1647605cf834b3a8c4f36/scipy-1.16.3-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b", size = 37027931, upload-time = "2025-10-28T17:34:31.451Z" }, + { url = "https://files.pythonhosted.org/packages/25/06/ca9fd1f3a4589cbd825b1447e5db3a8ebb969c1eaf22c8579bd286f51b6d/scipy-1.16.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079", size = 29400081, upload-time = "2025-10-28T17:34:39.087Z" }, + { url = "https://files.pythonhosted.org/packages/6a/56/933e68210d92657d93fb0e381683bc0e53a965048d7358ff5fbf9e6a1b17/scipy-1.16.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a", size = 21391244, upload-time = "2025-10-28T17:34:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/a8/7e/779845db03dc1418e215726329674b40576879b91814568757ff0014ad65/scipy-1.16.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119", size = 23929753, upload-time = "2025-10-28T17:34:51.793Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4b/f756cf8161d5365dcdef9e5f460ab226c068211030a175d2fc7f3f41ca64/scipy-1.16.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c", size = 33496912, upload-time = "2025-10-28T17:34:59.8Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/222b1e49a58668f23839ca1542a6322bb095ab8d6590d4f71723869a6c2c/scipy-1.16.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e", size = 35802371, upload-time = "2025-10-28T17:35:08.173Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8d/5964ef68bb31829bde27611f8c9deeac13764589fe74a75390242b64ca44/scipy-1.16.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135", size = 36190477, upload-time = "2025-10-28T17:35:16.7Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f2/b31d75cb9b5fa4dd39a0a931ee9b33e7f6f36f23be5ef560bf72e0f92f32/scipy-1.16.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6", size = 38796678, upload-time = "2025-10-28T17:35:26.354Z" }, + { url = "https://files.pythonhosted.org/packages/b4/1e/b3723d8ff64ab548c38d87055483714fefe6ee20e0189b62352b5e015bb1/scipy-1.16.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc", size = 38640178, upload-time = "2025-10-28T17:35:35.304Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f3/d854ff38789aca9b0cc23008d607ced9de4f7ab14fa1ca4329f86b3758ca/scipy-1.16.3-cp313-cp313t-win_arm64.whl", hash = "sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a", size = 25803246, upload-time = "2025-10-28T17:35:42.155Z" }, + { url = "https://files.pythonhosted.org/packages/99/f6/99b10fd70f2d864c1e29a28bbcaa0c6340f9d8518396542d9ea3b4aaae15/scipy-1.16.3-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6", size = 36606469, upload-time = "2025-10-28T17:36:08.741Z" }, + { url = "https://files.pythonhosted.org/packages/4d/74/043b54f2319f48ea940dd025779fa28ee360e6b95acb7cd188fad4391c6b/scipy-1.16.3-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657", size = 28872043, upload-time = "2025-10-28T17:36:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e1/24b7e50cc1c4ee6ffbcb1f27fe9f4c8b40e7911675f6d2d20955f41c6348/scipy-1.16.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26", size = 20862952, upload-time = "2025-10-28T17:36:22.966Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3a/3e8c01a4d742b730df368e063787c6808597ccb38636ed821d10b39ca51b/scipy-1.16.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc", size = 23508512, upload-time = "2025-10-28T17:36:29.731Z" }, + { url = "https://files.pythonhosted.org/packages/1f/60/c45a12b98ad591536bfe5330cb3cfe1850d7570259303563b1721564d458/scipy-1.16.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22", size = 33413639, upload-time = "2025-10-28T17:36:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/71/bc/35957d88645476307e4839712642896689df442f3e53b0fa016ecf8a3357/scipy-1.16.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc", size = 35704729, upload-time = "2025-10-28T17:36:46.547Z" }, + { url = "https://files.pythonhosted.org/packages/3b/15/89105e659041b1ca11c386e9995aefacd513a78493656e57789f9d9eab61/scipy-1.16.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0", size = 36086251, upload-time = "2025-10-28T17:36:55.161Z" }, + { url = "https://files.pythonhosted.org/packages/1a/87/c0ea673ac9c6cc50b3da2196d860273bc7389aa69b64efa8493bdd25b093/scipy-1.16.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800", size = 38716681, upload-time = "2025-10-28T17:37:04.1Z" }, + { url = "https://files.pythonhosted.org/packages/91/06/837893227b043fb9b0d13e4bd7586982d8136cb249ffb3492930dab905b8/scipy-1.16.3-cp314-cp314-win_amd64.whl", hash = "sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d", size = 39358423, upload-time = "2025-10-28T17:38:20.005Z" }, + { url = "https://files.pythonhosted.org/packages/95/03/28bce0355e4d34a7c034727505a02d19548549e190bedd13a721e35380b7/scipy-1.16.3-cp314-cp314-win_arm64.whl", hash = "sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f", size = 26135027, upload-time = "2025-10-28T17:38:24.966Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6f/69f1e2b682efe9de8fe9f91040f0cd32f13cfccba690512ba4c582b0bc29/scipy-1.16.3-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c", size = 37028379, upload-time = "2025-10-28T17:37:14.061Z" }, + { url = "https://files.pythonhosted.org/packages/7c/2d/e826f31624a5ebbab1cd93d30fd74349914753076ed0593e1d56a98c4fb4/scipy-1.16.3-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40", size = 29400052, upload-time = "2025-10-28T17:37:21.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/27/d24feb80155f41fd1f156bf144e7e049b4e2b9dd06261a242905e3bc7a03/scipy-1.16.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d", size = 21391183, upload-time = "2025-10-28T17:37:29.559Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d3/1b229e433074c5738a24277eca520a2319aac7465eea7310ea6ae0e98ae2/scipy-1.16.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa", size = 23930174, upload-time = "2025-10-28T17:37:36.306Z" }, + { url = "https://files.pythonhosted.org/packages/16/9d/d9e148b0ec680c0f042581a2be79a28a7ab66c0c4946697f9e7553ead337/scipy-1.16.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8", size = 33497852, upload-time = "2025-10-28T17:37:42.228Z" }, + { url = "https://files.pythonhosted.org/packages/2f/22/4e5f7561e4f98b7bea63cf3fd7934bff1e3182e9f1626b089a679914d5c8/scipy-1.16.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353", size = 35798595, upload-time = "2025-10-28T17:37:48.102Z" }, + { url = "https://files.pythonhosted.org/packages/83/42/6644d714c179429fc7196857866f219fef25238319b650bb32dde7bf7a48/scipy-1.16.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146", size = 36186269, upload-time = "2025-10-28T17:37:53.72Z" }, + { url = "https://files.pythonhosted.org/packages/ac/70/64b4d7ca92f9cf2e6fc6aaa2eecf80bb9b6b985043a9583f32f8177ea122/scipy-1.16.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d", size = 38802779, upload-time = "2025-10-28T17:37:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/61/82/8d0e39f62764cce5ffd5284131e109f07cf8955aef9ab8ed4e3aa5e30539/scipy-1.16.3-cp314-cp314t-win_amd64.whl", hash = "sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7", size = 39471128, upload-time = "2025-10-28T17:38:05.259Z" }, + { url = "https://files.pythonhosted.org/packages/64/47/a494741db7280eae6dc033510c319e34d42dd41b7ac0c7ead39354d1a2b5/scipy-1.16.3-cp314-cp314t-win_arm64.whl", hash = "sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562", size = 26464127, upload-time = "2025-10-28T17:38:11.34Z" }, +] + +[[package]] +name = "sentence-transformers" +version = "5.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "pillow" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "torch" }, + { name = "tqdm" }, + { name = "transformers" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/96/f3f3409179d14dbfdbea8622e2e9eaa3c8836ddcaecd2cd5ff0a11731d20/sentence_transformers-5.1.2.tar.gz", hash = "sha256:0f6c8bd916a78dc65b366feb8d22fd885efdb37432e7630020d113233af2b856", size = 375185, upload-time = "2025-10-22T12:47:55.019Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/a6/a607a737dc1a00b7afe267b9bfde101b8cee2529e197e57471d23137d4e5/sentence_transformers-5.1.2-py3-none-any.whl", hash = "sha256:724ce0ea62200f413f1a5059712aff66495bc4e815a1493f7f9bca242414c333", size = 488009, upload-time = "2025-10-22T12:47:53.433Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tokenizers" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/46/fb6854cec3278fbfa4a75b50232c77622bc517ac886156e6afbfa4d8fc6e/tokenizers-0.22.1.tar.gz", hash = "sha256:61de6522785310a309b3407bac22d99c4db5dba349935e99e4d15ea2226af2d9", size = 363123, upload-time = "2025-09-19T09:49:23.424Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/33/f4b2d94ada7ab297328fc671fed209368ddb82f965ec2224eb1892674c3a/tokenizers-0.22.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:59fdb013df17455e5f950b4b834a7b3ee2e0271e6378ccb33aa74d178b513c73", size = 3069318, upload-time = "2025-09-19T09:49:11.848Z" }, + { url = "https://files.pythonhosted.org/packages/1c/58/2aa8c874d02b974990e89ff95826a4852a8b2a273c7d1b4411cdd45a4565/tokenizers-0.22.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:8d4e484f7b0827021ac5f9f71d4794aaef62b979ab7608593da22b1d2e3c4edc", size = 2926478, upload-time = "2025-09-19T09:49:09.759Z" }, + { url = "https://files.pythonhosted.org/packages/1e/3b/55e64befa1e7bfea963cf4b787b2cea1011362c4193f5477047532ce127e/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d2962dd28bc67c1f205ab180578a78eef89ac60ca7ef7cbe9635a46a56422a", size = 3256994, upload-time = "2025-09-19T09:48:56.701Z" }, + { url = "https://files.pythonhosted.org/packages/71/0b/fbfecf42f67d9b7b80fde4aabb2b3110a97fac6585c9470b5bff103a80cb/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:38201f15cdb1f8a6843e6563e6e79f4abd053394992b9bbdf5213ea3469b4ae7", size = 3153141, upload-time = "2025-09-19T09:48:59.749Z" }, + { url = "https://files.pythonhosted.org/packages/17/a9/b38f4e74e0817af8f8ef925507c63c6ae8171e3c4cb2d5d4624bf58fca69/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1cbe5454c9a15df1b3443c726063d930c16f047a3cc724b9e6e1a91140e5a21", size = 3508049, upload-time = "2025-09-19T09:49:05.868Z" }, + { url = "https://files.pythonhosted.org/packages/d2/48/dd2b3dac46bb9134a88e35d72e1aa4869579eacc1a27238f1577270773ff/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7d094ae6312d69cc2a872b54b91b309f4f6fbce871ef28eb27b52a98e4d0214", size = 3710730, upload-time = "2025-09-19T09:49:01.832Z" }, + { url = "https://files.pythonhosted.org/packages/93/0e/ccabc8d16ae4ba84a55d41345207c1e2ea88784651a5a487547d80851398/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afd7594a56656ace95cdd6df4cca2e4059d294c5cfb1679c57824b605556cb2f", size = 3412560, upload-time = "2025-09-19T09:49:03.867Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c6/dc3a0db5a6766416c32c034286d7c2d406da1f498e4de04ab1b8959edd00/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ef6063d7a84994129732b47e7915e8710f27f99f3a3260b8a38fc7ccd083f4", size = 3250221, upload-time = "2025-09-19T09:49:07.664Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a6/2c8486eef79671601ff57b093889a345dd3d576713ef047776015dc66de7/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ba0a64f450b9ef412c98f6bcd2a50c6df6e2443b560024a09fa6a03189726879", size = 9345569, upload-time = "2025-09-19T09:49:14.214Z" }, + { url = "https://files.pythonhosted.org/packages/6b/16/32ce667f14c35537f5f605fe9bea3e415ea1b0a646389d2295ec348d5657/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:331d6d149fa9c7d632cde4490fb8bbb12337fa3a0232e77892be656464f4b446", size = 9271599, upload-time = "2025-09-19T09:49:16.639Z" }, + { url = "https://files.pythonhosted.org/packages/51/7c/a5f7898a3f6baa3fc2685c705e04c98c1094c523051c805cdd9306b8f87e/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:607989f2ea68a46cb1dfbaf3e3aabdf3f21d8748312dbeb6263d1b3b66c5010a", size = 9533862, upload-time = "2025-09-19T09:49:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/36/65/7e75caea90bc73c1dd8d40438adf1a7bc26af3b8d0a6705ea190462506e1/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a0f307d490295717726598ef6fa4f24af9d484809223bbc253b201c740a06390", size = 9681250, upload-time = "2025-09-19T09:49:21.501Z" }, + { url = "https://files.pythonhosted.org/packages/30/2c/959dddef581b46e6209da82df3b78471e96260e2bc463f89d23b1bf0e52a/tokenizers-0.22.1-cp39-abi3-win32.whl", hash = "sha256:b5120eed1442765cd90b903bb6cfef781fd8fe64e34ccaecbae4c619b7b12a82", size = 2472003, upload-time = "2025-09-19T09:49:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/b3/46/e33a8c93907b631a99377ef4c5f817ab453d0b34f93529421f42ff559671/tokenizers-0.22.1-cp39-abi3-win_amd64.whl", hash = "sha256:65fd6e3fb11ca1e78a6a93602490f134d1fdeb13bcef99389d5102ea318ed138", size = 2674684, upload-time = "2025-09-19T09:49:24.953Z" }, +] + +[[package]] +name = "torch" +version = "2.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/27/07c645c7673e73e53ded71705045d6cb5bae94c4b021b03aa8d03eee90ab/torch-2.9.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:da5f6f4d7f4940a173e5572791af238cb0b9e21b1aab592bd8b26da4c99f1cd6", size = 104126592, upload-time = "2025-11-12T15:20:41.62Z" }, + { url = "https://files.pythonhosted.org/packages/19/17/e377a460603132b00760511299fceba4102bd95db1a0ee788da21298ccff/torch-2.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:27331cd902fb4322252657f3902adf1c4f6acad9dcad81d8df3ae14c7c4f07c4", size = 899742281, upload-time = "2025-11-12T15:22:17.602Z" }, + { url = "https://files.pythonhosted.org/packages/b1/1a/64f5769025db846a82567fa5b7d21dba4558a7234ee631712ee4771c436c/torch-2.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:81a285002d7b8cfd3fdf1b98aa8df138d41f1a8334fd9ea37511517cedf43083", size = 110940568, upload-time = "2025-11-12T15:21:18.689Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ab/07739fd776618e5882661d04c43f5b5586323e2f6a2d7d84aac20d8f20bd/torch-2.9.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:c0d25d1d8e531b8343bea0ed811d5d528958f1dcbd37e7245bc686273177ad7e", size = 74479191, upload-time = "2025-11-12T15:21:25.816Z" }, + { url = "https://files.pythonhosted.org/packages/20/60/8fc5e828d050bddfab469b3fe78e5ab9a7e53dda9c3bdc6a43d17ce99e63/torch-2.9.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c29455d2b910b98738131990394da3e50eea8291dfeb4b12de71ecf1fdeb21cb", size = 104135743, upload-time = "2025-11-12T15:21:34.936Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b7/6d3f80e6918213babddb2a37b46dbb14c15b14c5f473e347869a51f40e1f/torch-2.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:524de44cd13931208ba2c4bde9ec7741fd4ae6bfd06409a604fc32f6520c2bc9", size = 899749493, upload-time = "2025-11-12T15:24:36.356Z" }, + { url = "https://files.pythonhosted.org/packages/a6/47/c7843d69d6de8938c1cbb1eba426b1d48ddf375f101473d3e31a5fc52b74/torch-2.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:545844cc16b3f91e08ce3b40e9c2d77012dd33a48d505aed34b7740ed627a1b2", size = 110944162, upload-time = "2025-11-12T15:21:53.151Z" }, + { url = "https://files.pythonhosted.org/packages/28/0e/2a37247957e72c12151b33a01e4df651d9d155dd74d8cfcbfad15a79b44a/torch-2.9.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5be4bf7496f1e3ffb1dd44b672adb1ac3f081f204c5ca81eba6442f5f634df8e", size = 74830751, upload-time = "2025-11-12T15:21:43.792Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/7a18745edcd7b9ca2381aa03353647bca8aace91683c4975f19ac233809d/torch-2.9.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:30a3e170a84894f3652434b56d59a64a2c11366b0ed5776fab33c2439396bf9a", size = 104142929, upload-time = "2025-11-12T15:21:48.319Z" }, + { url = "https://files.pythonhosted.org/packages/f4/dd/f1c0d879f2863ef209e18823a988dc7a1bf40470750e3ebe927efdb9407f/torch-2.9.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8301a7b431e51764629208d0edaa4f9e4c33e6df0f2f90b90e261d623df6a4e2", size = 899748978, upload-time = "2025-11-12T15:23:04.568Z" }, + { url = "https://files.pythonhosted.org/packages/1f/9f/6986b83a53b4d043e36f3f898b798ab51f7f20fdf1a9b01a2720f445043d/torch-2.9.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2e1c42c0ae92bf803a4b2409fdfed85e30f9027a66887f5e7dcdbc014c7531db", size = 111176995, upload-time = "2025-11-12T15:22:01.618Z" }, + { url = "https://files.pythonhosted.org/packages/40/60/71c698b466dd01e65d0e9514b5405faae200c52a76901baf6906856f17e4/torch-2.9.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:2c14b3da5df416cf9cb5efab83aa3056f5b8cd8620b8fde81b4987ecab730587", size = 74480347, upload-time = "2025-11-12T15:21:57.648Z" }, + { url = "https://files.pythonhosted.org/packages/48/50/c4b5112546d0d13cc9eaa1c732b823d676a9f49ae8b6f97772f795874a03/torch-2.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1edee27a7c9897f4e0b7c14cfc2f3008c571921134522d5b9b5ec4ebbc69041a", size = 74433245, upload-time = "2025-11-12T15:22:39.027Z" }, + { url = "https://files.pythonhosted.org/packages/81/c9/2628f408f0518b3bae49c95f5af3728b6ab498c8624ab1e03a43dd53d650/torch-2.9.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:19d144d6b3e29921f1fc70503e9f2fc572cde6a5115c0c0de2f7ca8b1483e8b6", size = 104134804, upload-time = "2025-11-12T15:22:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/28/fc/5bc91d6d831ae41bf6e9e6da6468f25330522e92347c9156eb3f1cb95956/torch-2.9.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:c432d04376f6d9767a9852ea0def7b47a7bbc8e7af3b16ac9cf9ce02b12851c9", size = 899747132, upload-time = "2025-11-12T15:23:36.068Z" }, + { url = "https://files.pythonhosted.org/packages/63/5d/e8d4e009e52b6b2cf1684bde2a6be157b96fb873732542fb2a9a99e85a83/torch-2.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:d187566a2cdc726fc80138c3cdb260970fab1c27e99f85452721f7759bbd554d", size = 110934845, upload-time = "2025-11-12T15:22:48.367Z" }, + { url = "https://files.pythonhosted.org/packages/bd/b2/2d15a52516b2ea3f414643b8de68fa4cb220d3877ac8b1028c83dc8ca1c4/torch-2.9.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cb10896a1f7fedaddbccc2017ce6ca9ecaaf990f0973bdfcf405439750118d2c", size = 74823558, upload-time = "2025-11-12T15:22:43.392Z" }, + { url = "https://files.pythonhosted.org/packages/86/5c/5b2e5d84f5b9850cd1e71af07524d8cbb74cba19379800f1f9f7c997fc70/torch-2.9.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:0a2bd769944991c74acf0c4ef23603b9c777fdf7637f115605a4b2d8023110c7", size = 104145788, upload-time = "2025-11-12T15:23:52.109Z" }, + { url = "https://files.pythonhosted.org/packages/a9/8c/3da60787bcf70add986c4ad485993026ac0ca74f2fc21410bc4eb1bb7695/torch-2.9.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:07c8a9660bc9414c39cac530ac83b1fb1b679d7155824144a40a54f4a47bfa73", size = 899735500, upload-time = "2025-11-12T15:24:08.788Z" }, + { url = "https://files.pythonhosted.org/packages/db/2b/f7818f6ec88758dfd21da46b6cd46af9d1b3433e53ddbb19ad1e0da17f9b/torch-2.9.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c88d3299ddeb2b35dcc31753305612db485ab6f1823e37fb29451c8b2732b87e", size = 111163659, upload-time = "2025-11-12T15:23:20.009Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "transformers" +version = "4.57.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "huggingface-hub" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "requests" }, + { name = "safetensors" }, + { name = "tokenizers" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/98/cf2515dba32791abe0540a252ccae7dc4f12fdeb03258182b6f014a78360/transformers-4.57.2.tar.gz", hash = "sha256:172a455ad5a570ecad89bea510a6c924c45fa90e46e859225fac07305d7946fc", size = 10141231, upload-time = "2025-11-24T17:54:14.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/21/15c69470cf94857d4664e74554fa01248eb57428fed831929405a0a63b0a/transformers-4.57.2-py3-none-any.whl", hash = "sha256:0918df354853c9931a637792cec519e137aceb150effd4c7924d6b8d36918fab", size = 11993097, upload-time = "2025-11-24T17:54:10.472Z" }, +] + +[[package]] +name = "triton" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/50/9a8358d3ef58162c0a415d173cfb45b67de60176e1024f71fbc4d24c0b6d/triton-3.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2c6b915a03888ab931a9fd3e55ba36785e1fe70cbea0b40c6ef93b20fc85232", size = 170470207, upload-time = "2025-11-11T17:41:00.253Z" }, + { url = "https://files.pythonhosted.org/packages/27/46/8c3bbb5b0a19313f50edcaa363b599e5a1a5ac9683ead82b9b80fe497c8d/triton-3.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3f4346b6ebbd4fad18773f5ba839114f4826037c9f2f34e0148894cd5dd3dba", size = 170470410, upload-time = "2025-11-11T17:41:06.319Z" }, + { url = "https://files.pythonhosted.org/packages/37/92/e97fcc6b2c27cdb87ce5ee063d77f8f26f19f06916aa680464c8104ef0f6/triton-3.5.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b4d2c70127fca6a23e247f9348b8adde979d2e7a20391bfbabaac6aebc7e6a8", size = 170579924, upload-time = "2025-11-11T17:41:12.455Z" }, + { url = "https://files.pythonhosted.org/packages/a4/e6/c595c35e5c50c4bc56a7bac96493dad321e9e29b953b526bbbe20f9911d0/triton-3.5.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0637b1efb1db599a8e9dc960d53ab6e4637db7d4ab6630a0974705d77b14b60", size = 170480488, upload-time = "2025-11-11T17:41:18.222Z" }, + { url = "https://files.pythonhosted.org/packages/16/b5/b0d3d8b901b6a04ca38df5e24c27e53afb15b93624d7fd7d658c7cd9352a/triton-3.5.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bac7f7d959ad0f48c0e97d6643a1cc0fd5786fe61cb1f83b537c6b2d54776478", size = 170582192, upload-time = "2025-11-11T17:41:23.963Z" }, +] + +[[package]] +name = "typer" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/28/7c85c8032b91dbe79725b6f17d2fffc595dff06a35c7a30a37bef73a1ab4/typer-0.20.0.tar.gz", hash = "sha256:1aaf6494031793e4876fb0bacfa6a912b551cf43c1e63c800df8b1a866720c37", size = 106492, upload-time = "2025-10-20T17:03:49.445Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/64/7713ffe4b5983314e9d436a90d5bd4f63b6054e2aca783a3cfc44cb95bbf/typer-0.20.0-py3-none-any.whl", hash = "sha256:5b463df6793ec1dca6213a3cf4c0f03bc6e322ac5e16e13ddd622a889489784a", size = 47028, upload-time = "2025-10-20T17:03:47.617Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268, upload-time = "2024-12-22T07:47:30.032Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369, upload-time = "2024-12-22T07:47:28.074Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/f06b84e2697fef4688ca63bdb2fdf113ca0a3be33f94488f2cadb690b0cf/uvicorn-0.38.0.tar.gz", hash = "sha256:fd97093bdd120a2609fc0d3afe931d4d4ad688b6e75f0f929fde1bc36fe0e91d", size = 80605, upload-time = "2025-10-18T13:46:44.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, +] + +[[package]] +name = "volcengine" +version = "1.0.207" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google" }, + { name = "protobuf" }, + { name = "pycryptodome" }, + { name = "pytz" }, + { name = "requests" }, + { name = "retry" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/a0/8277f4483b8934c5303cf5a91e1c58b5f5068a1e65aac9af0d08d1b4be09/volcengine-1.0.207.tar.gz", hash = "sha256:46e29d97470d1ec5b842924640245599472988e5db47a16eab117138dedb4260", size = 388631, upload-time = "2025-11-20T12:02:31.11Z" } + +[[package]] +name = "volcengine-python-sdk" +version = "4.0.35" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "python-dateutil" }, + { name = "six" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/ff/594dbb9b2a364f404d9055beb311b9bb849b5ca823e20bce81fca7409ef1/volcengine_python_sdk-4.0.35.tar.gz", hash = "sha256:92bfeb766d3c70268a1d445f6e3014225e9b45e0a46c8a6716597c6ccc2e4efb", size = 6975595, upload-time = "2025-11-20T12:22:10.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/bb/7d0d7d08fe847a414e0673af82fadd5a34feb7badb6c8df8e4e0b1277514/volcengine_python_sdk-4.0.35-py2.py3-none-any.whl", hash = "sha256:b1e754ffdce1e1ea065564f16765f0b0f570a2285a527b70cd474d8c04f6357f", size = 27377719, upload-time = "2025-11-20T12:22:06.968Z" }, +] + +[package.optional-dependencies] +ark = [ + { name = "anyio" }, + { name = "cryptography" }, + { name = "httpx" }, + { name = "pydantic" }, +] + +[[package]] +name = "watchfiles" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload-time = "2025-10-14T15:06:21.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/d5/f039e7e3c639d9b1d09b07ea412a6806d38123f0508e5f9b48a87b0a76cc/watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d", size = 404745, upload-time = "2025-10-14T15:04:46.731Z" }, + { url = "https://files.pythonhosted.org/packages/a5/96/a881a13aa1349827490dab2d363c8039527060cfcc2c92cc6d13d1b1049e/watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610", size = 391769, upload-time = "2025-10-14T15:04:48.003Z" }, + { url = "https://files.pythonhosted.org/packages/4b/5b/d3b460364aeb8da471c1989238ea0e56bec24b6042a68046adf3d9ddb01c/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af", size = 449374, upload-time = "2025-10-14T15:04:49.179Z" }, + { url = "https://files.pythonhosted.org/packages/b9/44/5769cb62d4ed055cb17417c0a109a92f007114a4e07f30812a73a4efdb11/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6", size = 459485, upload-time = "2025-10-14T15:04:50.155Z" }, + { url = "https://files.pythonhosted.org/packages/19/0c/286b6301ded2eccd4ffd0041a1b726afda999926cf720aab63adb68a1e36/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce", size = 488813, upload-time = "2025-10-14T15:04:51.059Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2b/8530ed41112dd4a22f4dcfdb5ccf6a1baad1ff6eed8dc5a5f09e7e8c41c7/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa", size = 594816, upload-time = "2025-10-14T15:04:52.031Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d2/f5f9fb49489f184f18470d4f99f4e862a4b3e9ac2865688eb2099e3d837a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb", size = 475186, upload-time = "2025-10-14T15:04:53.064Z" }, + { url = "https://files.pythonhosted.org/packages/cf/68/5707da262a119fb06fbe214d82dd1fe4a6f4af32d2d14de368d0349eb52a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803", size = 456812, upload-time = "2025-10-14T15:04:55.174Z" }, + { url = "https://files.pythonhosted.org/packages/66/ab/3cbb8756323e8f9b6f9acb9ef4ec26d42b2109bce830cc1f3468df20511d/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94", size = 630196, upload-time = "2025-10-14T15:04:56.22Z" }, + { url = "https://files.pythonhosted.org/packages/78/46/7152ec29b8335f80167928944a94955015a345440f524d2dfe63fc2f437b/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43", size = 622657, upload-time = "2025-10-14T15:04:57.521Z" }, + { url = "https://files.pythonhosted.org/packages/0a/bf/95895e78dd75efe9a7f31733607f384b42eb5feb54bd2eb6ed57cc2e94f4/watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9", size = 272042, upload-time = "2025-10-14T15:04:59.046Z" }, + { url = "https://files.pythonhosted.org/packages/87/0a/90eb755f568de2688cb220171c4191df932232c20946966c27a59c400850/watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9", size = 288410, upload-time = "2025-10-14T15:05:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/36/76/f322701530586922fbd6723c4f91ace21364924822a8772c549483abed13/watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404", size = 278209, upload-time = "2025-10-14T15:05:01.168Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/f750b29225fe77139f7ae5de89d4949f5a99f934c65a1f1c0b248f26f747/watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18", size = 404321, upload-time = "2025-10-14T15:05:02.063Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f9/f07a295cde762644aa4c4bb0f88921d2d141af45e735b965fb2e87858328/watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a", size = 391783, upload-time = "2025-10-14T15:05:03.052Z" }, + { url = "https://files.pythonhosted.org/packages/bc/11/fc2502457e0bea39a5c958d86d2cb69e407a4d00b85735ca724bfa6e0d1a/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219", size = 449279, upload-time = "2025-10-14T15:05:04.004Z" }, + { url = "https://files.pythonhosted.org/packages/e3/1f/d66bc15ea0b728df3ed96a539c777acfcad0eb78555ad9efcaa1274688f0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428", size = 459405, upload-time = "2025-10-14T15:05:04.942Z" }, + { url = "https://files.pythonhosted.org/packages/be/90/9f4a65c0aec3ccf032703e6db02d89a157462fbb2cf20dd415128251cac0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0", size = 488976, upload-time = "2025-10-14T15:05:05.905Z" }, + { url = "https://files.pythonhosted.org/packages/37/57/ee347af605d867f712be7029bb94c8c071732a4b44792e3176fa3c612d39/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150", size = 595506, upload-time = "2025-10-14T15:05:06.906Z" }, + { url = "https://files.pythonhosted.org/packages/a8/78/cc5ab0b86c122047f75e8fc471c67a04dee395daf847d3e59381996c8707/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae", size = 474936, upload-time = "2025-10-14T15:05:07.906Z" }, + { url = "https://files.pythonhosted.org/packages/62/da/def65b170a3815af7bd40a3e7010bf6ab53089ef1b75d05dd5385b87cf08/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d", size = 456147, upload-time = "2025-10-14T15:05:09.138Z" }, + { url = "https://files.pythonhosted.org/packages/57/99/da6573ba71166e82d288d4df0839128004c67d2778d3b566c138695f5c0b/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b", size = 630007, upload-time = "2025-10-14T15:05:10.117Z" }, + { url = "https://files.pythonhosted.org/packages/a8/51/7439c4dd39511368849eb1e53279cd3454b4a4dbace80bab88feeb83c6b5/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374", size = 622280, upload-time = "2025-10-14T15:05:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/95/9c/8ed97d4bba5db6fdcdb2b298d3898f2dd5c20f6b73aee04eabe56c59677e/watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0", size = 272056, upload-time = "2025-10-14T15:05:12.156Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/c14e28429f744a260d8ceae18bf58c1d5fa56b50d006a7a9f80e1882cb0d/watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42", size = 288162, upload-time = "2025-10-14T15:05:13.208Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/fe0e56c40d5cd29523e398d31153218718c5786b5e636d9ae8ae79453d27/watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18", size = 277909, upload-time = "2025-10-14T15:05:14.49Z" }, + { url = "https://files.pythonhosted.org/packages/79/42/e0a7d749626f1e28c7108a99fb9bf524b501bbbeb9b261ceecde644d5a07/watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da", size = 403389, upload-time = "2025-10-14T15:05:15.777Z" }, + { url = "https://files.pythonhosted.org/packages/15/49/08732f90ce0fbbc13913f9f215c689cfc9ced345fb1bcd8829a50007cc8d/watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051", size = 389964, upload-time = "2025-10-14T15:05:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/7c315d4bd5f2538910491a0393c56bf70d333d51bc5b34bee8e68e8cea19/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e", size = 448114, upload-time = "2025-10-14T15:05:17.876Z" }, + { url = "https://files.pythonhosted.org/packages/c3/24/9e096de47a4d11bc4df41e9d1e61776393eac4cb6eb11b3e23315b78b2cc/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70", size = 460264, upload-time = "2025-10-14T15:05:18.962Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0f/e8dea6375f1d3ba5fcb0b3583e2b493e77379834c74fd5a22d66d85d6540/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261", size = 487877, upload-time = "2025-10-14T15:05:20.094Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/df24cfc6424a12deb41503b64d42fbea6b8cb357ec62ca84a5a3476f654a/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620", size = 595176, upload-time = "2025-10-14T15:05:21.134Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b5/853b6757f7347de4e9b37e8cc3289283fb983cba1ab4d2d7144694871d9c/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04", size = 473577, upload-time = "2025-10-14T15:05:22.306Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f7/0a4467be0a56e80447c8529c9fce5b38eab4f513cb3d9bf82e7392a5696b/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77", size = 455425, upload-time = "2025-10-14T15:05:23.348Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/82583485ea00137ddf69bc84a2db88bd92ab4a6e3c405e5fb878ead8d0e7/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef", size = 628826, upload-time = "2025-10-14T15:05:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/a785356fccf9fae84c0cc90570f11702ae9571036fb25932f1242c82191c/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf", size = 622208, upload-time = "2025-10-14T15:05:25.45Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f4/0872229324ef69b2c3edec35e84bd57a1289e7d3fe74588048ed8947a323/watchfiles-1.1.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:d1715143123baeeaeadec0528bb7441103979a1d5f6fd0e1f915383fea7ea6d5", size = 404315, upload-time = "2025-10-14T15:05:26.501Z" }, + { url = "https://files.pythonhosted.org/packages/7b/22/16d5331eaed1cb107b873f6ae1b69e9ced582fcf0c59a50cd84f403b1c32/watchfiles-1.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:39574d6370c4579d7f5d0ad940ce5b20db0e4117444e39b6d8f99db5676c52fd", size = 390869, upload-time = "2025-10-14T15:05:27.649Z" }, + { url = "https://files.pythonhosted.org/packages/b2/7e/5643bfff5acb6539b18483128fdc0ef2cccc94a5b8fbda130c823e8ed636/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7365b92c2e69ee952902e8f70f3ba6360d0d596d9299d55d7d386df84b6941fb", size = 449919, upload-time = "2025-10-14T15:05:28.701Z" }, + { url = "https://files.pythonhosted.org/packages/51/2e/c410993ba5025a9f9357c376f48976ef0e1b1aefb73b97a5ae01a5972755/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfff9740c69c0e4ed32416f013f3c45e2ae42ccedd1167ef2d805c000b6c71a5", size = 460845, upload-time = "2025-10-14T15:05:30.064Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a4/2df3b404469122e8680f0fcd06079317e48db58a2da2950fb45020947734/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b27cf2eb1dda37b2089e3907d8ea92922b673c0c427886d4edc6b94d8dfe5db3", size = 489027, upload-time = "2025-10-14T15:05:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/ea/84/4587ba5b1f267167ee715b7f66e6382cca6938e0a4b870adad93e44747e6/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526e86aced14a65a5b0ec50827c745597c782ff46b571dbfe46192ab9e0b3c33", size = 595615, upload-time = "2025-10-14T15:05:32.074Z" }, + { url = "https://files.pythonhosted.org/packages/6a/0f/c6988c91d06e93cd0bb3d4a808bcf32375ca1904609835c3031799e3ecae/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04e78dd0b6352db95507fd8cb46f39d185cf8c74e4cf1e4fbad1d3df96faf510", size = 474836, upload-time = "2025-10-14T15:05:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/b4/36/ded8aebea91919485b7bbabbd14f5f359326cb5ec218cd67074d1e426d74/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c85794a4cfa094714fb9c08d4a218375b2b95b8ed1666e8677c349906246c05", size = 455099, upload-time = "2025-10-14T15:05:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/98/e0/8c9bdba88af756a2fce230dd365fab2baf927ba42cd47521ee7498fd5211/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:74d5012b7630714b66be7b7b7a78855ef7ad58e8650c73afc4c076a1f480a8d6", size = 630626, upload-time = "2025-10-14T15:05:35.216Z" }, + { url = "https://files.pythonhosted.org/packages/2a/84/a95db05354bf2d19e438520d92a8ca475e578c647f78f53197f5a2f17aaf/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:8fbe85cb3201c7d380d3d0b90e63d520f15d6afe217165d7f98c9c649654db81", size = 622519, upload-time = "2025-10-14T15:05:36.259Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ce/d8acdc8de545de995c339be67711e474c77d643555a9bb74a9334252bd55/watchfiles-1.1.1-cp314-cp314-win32.whl", hash = "sha256:3fa0b59c92278b5a7800d3ee7733da9d096d4aabcfabb9a928918bd276ef9b9b", size = 272078, upload-time = "2025-10-14T15:05:37.63Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c9/a74487f72d0451524be827e8edec251da0cc1fcf111646a511ae752e1a3d/watchfiles-1.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:c2047d0b6cea13b3316bdbafbfa0c4228ae593d995030fda39089d36e64fc03a", size = 287664, upload-time = "2025-10-14T15:05:38.95Z" }, + { url = "https://files.pythonhosted.org/packages/df/b8/8ac000702cdd496cdce998c6f4ee0ca1f15977bba51bdf07d872ebdfc34c/watchfiles-1.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:842178b126593addc05acf6fce960d28bc5fae7afbaa2c6c1b3a7b9460e5be02", size = 277154, upload-time = "2025-10-14T15:05:39.954Z" }, + { url = "https://files.pythonhosted.org/packages/47/a8/e3af2184707c29f0f14b1963c0aace6529f9d1b8582d5b99f31bbf42f59e/watchfiles-1.1.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:88863fbbc1a7312972f1c511f202eb30866370ebb8493aef2812b9ff28156a21", size = 403820, upload-time = "2025-10-14T15:05:40.932Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/e47e307c2f4bd75f9f9e8afbe3876679b18e1bcec449beca132a1c5ffb2d/watchfiles-1.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:55c7475190662e202c08c6c0f4d9e345a29367438cf8e8037f3155e10a88d5a5", size = 390510, upload-time = "2025-10-14T15:05:41.945Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a0/ad235642118090f66e7b2f18fd5c42082418404a79205cdfca50b6309c13/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f53fa183d53a1d7a8852277c92b967ae99c2d4dcee2bfacff8868e6e30b15f7", size = 448408, upload-time = "2025-10-14T15:05:43.385Z" }, + { url = "https://files.pythonhosted.org/packages/df/85/97fa10fd5ff3332ae17e7e40e20784e419e28521549780869f1413742e9d/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6aae418a8b323732fa89721d86f39ec8f092fc2af67f4217a2b07fd3e93c6101", size = 458968, upload-time = "2025-10-14T15:05:44.404Z" }, + { url = "https://files.pythonhosted.org/packages/47/c2/9059c2e8966ea5ce678166617a7f75ecba6164375f3b288e50a40dc6d489/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f096076119da54a6080e8920cbdaac3dbee667eb91dcc5e5b78840b87415bd44", size = 488096, upload-time = "2025-10-14T15:05:45.398Z" }, + { url = "https://files.pythonhosted.org/packages/94/44/d90a9ec8ac309bc26db808a13e7bfc0e4e78b6fc051078a554e132e80160/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00485f441d183717038ed2e887a7c868154f216877653121068107b227a2f64c", size = 596040, upload-time = "2025-10-14T15:05:46.502Z" }, + { url = "https://files.pythonhosted.org/packages/95/68/4e3479b20ca305cfc561db3ed207a8a1c745ee32bf24f2026a129d0ddb6e/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a55f3e9e493158d7bfdb60a1165035f1cf7d320914e7b7ea83fe22c6023b58fc", size = 473847, upload-time = "2025-10-14T15:05:47.484Z" }, + { url = "https://files.pythonhosted.org/packages/4f/55/2af26693fd15165c4ff7857e38330e1b61ab8c37d15dc79118cdba115b7a/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c91ed27800188c2ae96d16e3149f199d62f86c7af5f5f4d2c61a3ed8cd3666c", size = 455072, upload-time = "2025-10-14T15:05:48.928Z" }, + { url = "https://files.pythonhosted.org/packages/66/1d/d0d200b10c9311ec25d2273f8aad8c3ef7cc7ea11808022501811208a750/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:311ff15a0bae3714ffb603e6ba6dbfba4065ab60865d15a6ec544133bdb21099", size = 629104, upload-time = "2025-10-14T15:05:49.908Z" }, + { url = "https://files.pythonhosted.org/packages/e3/bd/fa9bb053192491b3867ba07d2343d9f2252e00811567d30ae8d0f78136fe/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a916a2932da8f8ab582f242c065f5c81bed3462849ca79ee357dd9551b0e9b01", size = 622112, upload-time = "2025-10-14T15:05:50.941Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + +[[package]] +name = "xlsxwriter" +version = "3.2.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/2c/c06ef49dc36e7954e55b802a8b231770d286a9758b3d936bd1e04ce5ba88/xlsxwriter-3.2.9.tar.gz", hash = "sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c", size = 215940, upload-time = "2025-09-16T00:16:21.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/0c/3662f4a66880196a590b202f0db82d919dd2f89e99a27fadef91c4a33d41/xlsxwriter-3.2.9-py3-none-any.whl", hash = "sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", size = 175315, upload-time = "2025-09-16T00:16:20.108Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] + +[[package]] +name = "zstandard" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/aa/3e0508d5a5dd96529cdc5a97011299056e14c6505b678fd58938792794b1/zstandard-0.25.0.tar.gz", hash = "sha256:7713e1179d162cf5c7906da876ec2ccb9c3a9dcbdffef0cc7f70c3667a205f0b", size = 711513, upload-time = "2025-09-14T22:15:54.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/fc/f26eb6ef91ae723a03e16eddb198abcfce2bc5a42e224d44cc8b6765e57e/zstandard-0.25.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b3c3a3ab9daa3eed242d6ecceead93aebbb8f5f84318d82cee643e019c4b73b", size = 795738, upload-time = "2025-09-14T22:16:56.237Z" }, + { url = "https://files.pythonhosted.org/packages/aa/1c/d920d64b22f8dd028a8b90e2d756e431a5d86194caa78e3819c7bf53b4b3/zstandard-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:913cbd31a400febff93b564a23e17c3ed2d56c064006f54efec210d586171c00", size = 640436, upload-time = "2025-09-14T22:16:57.774Z" }, + { url = "https://files.pythonhosted.org/packages/53/6c/288c3f0bd9fcfe9ca41e2c2fbfd17b2097f6af57b62a81161941f09afa76/zstandard-0.25.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:011d388c76b11a0c165374ce660ce2c8efa8e5d87f34996aa80f9c0816698b64", size = 5343019, upload-time = "2025-09-14T22:16:59.302Z" }, + { url = "https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dffecc361d079bb48d7caef5d673c88c8988d3d33fb74ab95b7ee6da42652ea", size = 5063012, upload-time = "2025-09-14T22:17:01.156Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/a6ce629ffdb43959e92e87ebdaeebb5ac81c944b6a75c9c47e300f85abdf/zstandard-0.25.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7149623bba7fdf7e7f24312953bcf73cae103db8cae49f8154dd1eadc8a29ecb", size = 5394148, upload-time = "2025-09-14T22:17:03.091Z" }, + { url = "https://files.pythonhosted.org/packages/e3/79/2bf870b3abeb5c070fe2d670a5a8d1057a8270f125ef7676d29ea900f496/zstandard-0.25.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6a573a35693e03cf1d67799fd01b50ff578515a8aeadd4595d2a7fa9f3ec002a", size = 5451652, upload-time = "2025-09-14T22:17:04.979Z" }, + { url = "https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5a56ba0db2d244117ed744dfa8f6f5b366e14148e00de44723413b2f3938a902", size = 5546993, upload-time = "2025-09-14T22:17:06.781Z" }, + { url = "https://files.pythonhosted.org/packages/85/c7/3483ad9ff0662623f3648479b0380d2de5510abf00990468c286c6b04017/zstandard-0.25.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:10ef2a79ab8e2974e2075fb984e5b9806c64134810fac21576f0668e7ea19f8f", size = 5046806, upload-time = "2025-09-14T22:17:08.415Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/206883dd25b8d1591a1caa44b54c2aad84badccf2f1de9e2d60a446f9a25/zstandard-0.25.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aaf21ba8fb76d102b696781bddaa0954b782536446083ae3fdaa6f16b25a1c4b", size = 5576659, upload-time = "2025-09-14T22:17:10.164Z" }, + { url = "https://files.pythonhosted.org/packages/9d/31/76c0779101453e6c117b0ff22565865c54f48f8bd807df2b00c2c404b8e0/zstandard-0.25.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1869da9571d5e94a85a5e8d57e4e8807b175c9e4a6294e3b66fa4efb074d90f6", size = 4953933, upload-time = "2025-09-14T22:17:11.857Z" }, + { url = "https://files.pythonhosted.org/packages/18/e1/97680c664a1bf9a247a280a053d98e251424af51f1b196c6d52f117c9720/zstandard-0.25.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:809c5bcb2c67cd0ed81e9229d227d4ca28f82d0f778fc5fea624a9def3963f91", size = 5268008, upload-time = "2025-09-14T22:17:13.627Z" }, + { url = "https://files.pythonhosted.org/packages/1e/73/316e4010de585ac798e154e88fd81bb16afc5c5cb1a72eeb16dd37e8024a/zstandard-0.25.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f27662e4f7dbf9f9c12391cb37b4c4c3cb90ffbd3b1fb9284dadbbb8935fa708", size = 5433517, upload-time = "2025-09-14T22:17:16.103Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/dd0f8cfa8129c5a0ce3ea6b7f70be5b33d2618013a161e1ff26c2b39787c/zstandard-0.25.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99c0c846e6e61718715a3c9437ccc625de26593fea60189567f0118dc9db7512", size = 5814292, upload-time = "2025-09-14T22:17:17.827Z" }, + { url = "https://files.pythonhosted.org/packages/fc/5f/75aafd4b9d11b5407b641b8e41a57864097663699f23e9ad4dbb91dc6bfe/zstandard-0.25.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:474d2596a2dbc241a556e965fb76002c1ce655445e4e3bf38e5477d413165ffa", size = 5360237, upload-time = "2025-09-14T22:17:19.954Z" }, + { url = "https://files.pythonhosted.org/packages/ff/8d/0309daffea4fcac7981021dbf21cdb2e3427a9e76bafbcdbdf5392ff99a4/zstandard-0.25.0-cp312-cp312-win32.whl", hash = "sha256:23ebc8f17a03133b4426bcc04aabd68f8236eb78c3760f12783385171b0fd8bd", size = 436922, upload-time = "2025-09-14T22:17:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/79/3b/fa54d9015f945330510cb5d0b0501e8253c127cca7ebe8ba46a965df18c5/zstandard-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01", size = 506276, upload-time = "2025-09-14T22:17:21.429Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6b/8b51697e5319b1f9ac71087b0af9a40d8a6288ff8025c36486e0c12abcc4/zstandard-0.25.0-cp312-cp312-win_arm64.whl", hash = "sha256:181eb40e0b6a29b3cd2849f825e0fa34397f649170673d385f3598ae17cca2e9", size = 462679, upload-time = "2025-09-14T22:17:23.147Z" }, + { url = "https://files.pythonhosted.org/packages/35/0b/8df9c4ad06af91d39e94fa96cc010a24ac4ef1378d3efab9223cc8593d40/zstandard-0.25.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec996f12524f88e151c339688c3897194821d7f03081ab35d31d1e12ec975e94", size = 795735, upload-time = "2025-09-14T22:17:26.042Z" }, + { url = "https://files.pythonhosted.org/packages/3f/06/9ae96a3e5dcfd119377ba33d4c42a7d89da1efabd5cb3e366b156c45ff4d/zstandard-0.25.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a1a4ae2dec3993a32247995bdfe367fc3266da832d82f8438c8570f989753de1", size = 640440, upload-time = "2025-09-14T22:17:27.366Z" }, + { url = "https://files.pythonhosted.org/packages/d9/14/933d27204c2bd404229c69f445862454dcc101cd69ef8c6068f15aaec12c/zstandard-0.25.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:e96594a5537722fdfb79951672a2a63aec5ebfb823e7560586f7484819f2a08f", size = 5343070, upload-time = "2025-09-14T22:17:28.896Z" }, + { url = "https://files.pythonhosted.org/packages/6d/db/ddb11011826ed7db9d0e485d13df79b58586bfdec56e5c84a928a9a78c1c/zstandard-0.25.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bfc4e20784722098822e3eee42b8e576b379ed72cca4a7cb856ae733e62192ea", size = 5063001, upload-time = "2025-09-14T22:17:31.044Z" }, + { url = "https://files.pythonhosted.org/packages/db/00/87466ea3f99599d02a5238498b87bf84a6348290c19571051839ca943777/zstandard-0.25.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:457ed498fc58cdc12fc48f7950e02740d4f7ae9493dd4ab2168a47c93c31298e", size = 5394120, upload-time = "2025-09-14T22:17:32.711Z" }, + { url = "https://files.pythonhosted.org/packages/2b/95/fc5531d9c618a679a20ff6c29e2b3ef1d1f4ad66c5e161ae6ff847d102a9/zstandard-0.25.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551", size = 5451230, upload-time = "2025-09-14T22:17:34.41Z" }, + { url = "https://files.pythonhosted.org/packages/63/4b/e3678b4e776db00f9f7b2fe58e547e8928ef32727d7a1ff01dea010f3f13/zstandard-0.25.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8e735494da3db08694d26480f1493ad2cf86e99bdd53e8e9771b2752a5c0246a", size = 5547173, upload-time = "2025-09-14T22:17:36.084Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d5/ba05ed95c6b8ec30bd468dfeab20589f2cf709b5c940483e31d991f2ca58/zstandard-0.25.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3a39c94ad7866160a4a46d772e43311a743c316942037671beb264e395bdd611", size = 5046736, upload-time = "2025-09-14T22:17:37.891Z" }, + { url = "https://files.pythonhosted.org/packages/50/d5/870aa06b3a76c73eced65c044b92286a3c4e00554005ff51962deef28e28/zstandard-0.25.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:172de1f06947577d3a3005416977cce6168f2261284c02080e7ad0185faeced3", size = 5576368, upload-time = "2025-09-14T22:17:40.206Z" }, + { url = "https://files.pythonhosted.org/packages/5d/35/398dc2ffc89d304d59bc12f0fdd931b4ce455bddf7038a0a67733a25f550/zstandard-0.25.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c83b0188c852a47cd13ef3bf9209fb0a77fa5374958b8c53aaa699398c6bd7b", size = 4954022, upload-time = "2025-09-14T22:17:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/9a/5c/36ba1e5507d56d2213202ec2b05e8541734af5f2ce378c5d1ceaf4d88dc4/zstandard-0.25.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1673b7199bbe763365b81a4f3252b8e80f44c9e323fc42940dc8843bfeaf9851", size = 5267889, upload-time = "2025-09-14T22:17:43.577Z" }, + { url = "https://files.pythonhosted.org/packages/70/e8/2ec6b6fb7358b2ec0113ae202647ca7c0e9d15b61c005ae5225ad0995df5/zstandard-0.25.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0be7622c37c183406f3dbf0cba104118eb16a4ea7359eeb5752f0794882fc250", size = 5433952, upload-time = "2025-09-14T22:17:45.271Z" }, + { url = "https://files.pythonhosted.org/packages/7b/01/b5f4d4dbc59ef193e870495c6f1275f5b2928e01ff5a81fecb22a06e22fb/zstandard-0.25.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5f5e4c2a23ca271c218ac025bd7d635597048b366d6f31f420aaeb715239fc98", size = 5814054, upload-time = "2025-09-14T22:17:47.08Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e5/fbd822d5c6f427cf158316d012c5a12f233473c2f9c5fe5ab1ae5d21f3d8/zstandard-0.25.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f187a0bb61b35119d1926aee039524d1f93aaf38a9916b8c4b78ac8514a0aaf", size = 5360113, upload-time = "2025-09-14T22:17:48.893Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/69a553d2047f9a2c7347caa225bb3a63b6d7704ad74610cb7823baa08ed7/zstandard-0.25.0-cp313-cp313-win32.whl", hash = "sha256:7030defa83eef3e51ff26f0b7bfb229f0204b66fe18e04359ce3474ac33cbc09", size = 436936, upload-time = "2025-09-14T22:17:52.658Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/b9c06c870f3bd8767c201f1edbdf9e8dc34be5b0fbc5682c4f80fe948475/zstandard-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:1f830a0dac88719af0ae43b8b2d6aef487d437036468ef3c2ea59c51f9d55fd5", size = 506232, upload-time = "2025-09-14T22:17:50.402Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/60c3c01243bb81d381c9916e2a6d9e149ab8627c0c7d7abb2d73384b3c0c/zstandard-0.25.0-cp313-cp313-win_arm64.whl", hash = "sha256:85304a43f4d513f5464ceb938aa02c1e78c2943b29f44a750b48b25ac999a049", size = 462671, upload-time = "2025-09-14T22:17:51.533Z" }, + { url = "https://files.pythonhosted.org/packages/3d/5c/f8923b595b55fe49e30612987ad8bf053aef555c14f05bb659dd5dbe3e8a/zstandard-0.25.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e29f0cf06974c899b2c188ef7f783607dbef36da4c242eb6c82dcd8b512855e3", size = 795887, upload-time = "2025-09-14T22:17:54.198Z" }, + { url = "https://files.pythonhosted.org/packages/8d/09/d0a2a14fc3439c5f874042dca72a79c70a532090b7ba0003be73fee37ae2/zstandard-0.25.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:05df5136bc5a011f33cd25bc9f506e7426c0c9b3f9954f056831ce68f3b6689f", size = 640658, upload-time = "2025-09-14T22:17:55.423Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/8b6b71b1ddd517f68ffb55e10834388d4f793c49c6b83effaaa05785b0b4/zstandard-0.25.0-cp314-cp314-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:f604efd28f239cc21b3adb53eb061e2a205dc164be408e553b41ba2ffe0ca15c", size = 5379849, upload-time = "2025-09-14T22:17:57.372Z" }, + { url = "https://files.pythonhosted.org/packages/a4/86/a48e56320d0a17189ab7a42645387334fba2200e904ee47fc5a26c1fd8ca/zstandard-0.25.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223415140608d0f0da010499eaa8ccdb9af210a543fac54bce15babbcfc78439", size = 5058095, upload-time = "2025-09-14T22:17:59.498Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ad/eb659984ee2c0a779f9d06dbfe45e2dc39d99ff40a319895df2d3d9a48e5/zstandard-0.25.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e54296a283f3ab5a26fc9b8b5d4978ea0532f37b231644f367aa588930aa043", size = 5551751, upload-time = "2025-09-14T22:18:01.618Z" }, + { url = "https://files.pythonhosted.org/packages/61/b3/b637faea43677eb7bd42ab204dfb7053bd5c4582bfe6b1baefa80ac0c47b/zstandard-0.25.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ca54090275939dc8ec5dea2d2afb400e0f83444b2fc24e07df7fdef677110859", size = 6364818, upload-time = "2025-09-14T22:18:03.769Z" }, + { url = "https://files.pythonhosted.org/packages/31/dc/cc50210e11e465c975462439a492516a73300ab8caa8f5e0902544fd748b/zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e09bb6252b6476d8d56100e8147b803befa9a12cea144bbe629dd508800d1ad0", size = 5560402, upload-time = "2025-09-14T22:18:05.954Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ae/56523ae9c142f0c08efd5e868a6da613ae76614eca1305259c3bf6a0ed43/zstandard-0.25.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a9ec8c642d1ec73287ae3e726792dd86c96f5681eb8df274a757bf62b750eae7", size = 4955108, upload-time = "2025-09-14T22:18:07.68Z" }, + { url = "https://files.pythonhosted.org/packages/98/cf/c899f2d6df0840d5e384cf4c4121458c72802e8bda19691f3b16619f51e9/zstandard-0.25.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a4089a10e598eae6393756b036e0f419e8c1d60f44a831520f9af41c14216cf2", size = 5269248, upload-time = "2025-09-14T22:18:09.753Z" }, + { url = "https://files.pythonhosted.org/packages/1b/c0/59e912a531d91e1c192d3085fc0f6fb2852753c301a812d856d857ea03c6/zstandard-0.25.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:f67e8f1a324a900e75b5e28ffb152bcac9fbed1cc7b43f99cd90f395c4375344", size = 5430330, upload-time = "2025-09-14T22:18:11.966Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/7e31db1240de2df22a58e2ea9a93fc6e38cc29353e660c0272b6735d6669/zstandard-0.25.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:9654dbc012d8b06fc3d19cc825af3f7bf8ae242226df5f83936cb39f5fdc846c", size = 5811123, upload-time = "2025-09-14T22:18:13.907Z" }, + { url = "https://files.pythonhosted.org/packages/f6/49/fac46df5ad353d50535e118d6983069df68ca5908d4d65b8c466150a4ff1/zstandard-0.25.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4203ce3b31aec23012d3a4cf4a2ed64d12fea5269c49aed5e4c3611b938e4088", size = 5359591, upload-time = "2025-09-14T22:18:16.465Z" }, + { url = "https://files.pythonhosted.org/packages/c2/38/f249a2050ad1eea0bb364046153942e34abba95dd5520af199aed86fbb49/zstandard-0.25.0-cp314-cp314-win32.whl", hash = "sha256:da469dc041701583e34de852d8634703550348d5822e66a0c827d39b05365b12", size = 444513, upload-time = "2025-09-14T22:18:20.61Z" }, + { url = "https://files.pythonhosted.org/packages/3a/43/241f9615bcf8ba8903b3f0432da069e857fc4fd1783bd26183db53c4804b/zstandard-0.25.0-cp314-cp314-win_amd64.whl", hash = "sha256:c19bcdd826e95671065f8692b5a4aa95c52dc7a02a4c5a0cac46deb879a017a2", size = 516118, upload-time = "2025-09-14T22:18:17.849Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ef/da163ce2450ed4febf6467d77ccb4cd52c4c30ab45624bad26ca0a27260c/zstandard-0.25.0-cp314-cp314-win_arm64.whl", hash = "sha256:d7541afd73985c630bafcd6338d2518ae96060075f9463d7dc14cfb33514383d", size = 476940, upload-time = "2025-09-14T22:18:19.088Z" }, +]