From 8254b38bcc8662e9b22238eebadbe6ec7a4f4e31 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Mon, 10 Feb 2025 23:49:21 +0800 Subject: [PATCH 01/46] [Doc2X] Add support to img APIs --- src/pdfdeal/Doc2X/ConvertV2.py | 144 +++++++++++++++++++++++++++++++++ src/pdfdeal/doc2x_img.py | 0 2 files changed, 144 insertions(+) create mode 100644 src/pdfdeal/doc2x_img.py diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index f0821b8..2752921 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -11,6 +11,23 @@ logger = logging.getLogger("pdfdeal.convertV2") +# Add new error codes for image processing +IMAGE_ERROR_CODES = { + "parse_quota_limit": "可用的解析额度不足 (Insufficient parsing quota)", + "parse_error": "解析错误 (Parsing error)", + "parse_file_invalid": "解析文件错误或者不合法 (Invalid or illegal image file)", + "request_limit_exceeded": "请求频率超过限制 (Request frequency limit exceeded)", + "parse_file_too_large": "单个图片大小超过限制 (Image size exceeds limit)", +} + +IMAGE_ERROR_SOLUTIONS = { + "parse_quota_limit": "当前可用的额度不够 (Current available quota is insufficient)", + "parse_error": "图片内容无法解析,请反馈给我们 (Image content cannot be parsed, please provide feedback)", + "parse_file_invalid": "无法解析这个图片,一般是图片不合法 (Cannot parse this image, usually due to invalid format)", + "request_limit_exceeded": "请等待一段时间后再请求 (Please wait for a while before making another request)", + "parse_file_too_large": "当前允许单个图片大小 <= 3M,尝试对图片进行压缩 (Current single image size limit is <= 3M, try compressing the image)", +} + @async_retry(timeout=200) async def upload_pdf(apikey: str, pdffile: str, oss_choose: str = "always") -> str: @@ -369,3 +386,130 @@ async def download_file( f.write(response.content) return file_path + + +async def image_code_check(code: str, trace_id: str = None): + """Check image processing error codes and raise appropriate exceptions + + Args: + code (str): The error code to check + trace_id (str, optional): The trace ID for debugging. Defaults to None. + + Raises: + RateLimit: When rate limit is reached + RequestError: When a known error occurs + ValueError: When API key is unauthorized + Exception: When an unknown error occurs + """ + if code == "request_limit_exceeded": + raise RateLimit(trace_id=trace_id) + if code in IMAGE_ERROR_CODES: + raise RequestError(code, trace_id=trace_id) + if code == "unauthorized": + raise ValueError("API key is unauthorized. (认证失败,请检测API key是否正确)") + if code not in ["ok", "success"]: + raise Exception(f"Unknown error code: {code}, Trace ID: {trace_id}") + + +@async_retry() +async def parse_image_ocr(apikey: str, image_path: str) -> dict: + """Parse image using OCR + + Args: + apikey (str): The API key + image_path (str): Path to the image file + + Raises: + FileError: If file size exceeds limit or file cannot be opened + RateLimit: If rate limit is reached + RequestError: If parsing fails + Exception: For any other errors + + Returns: + dict: The parsed OCR results + """ + # Check file size + if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB + raise FileError("Image file size exceeds 3MB limit") + + url = f"{Base_URL}/v2/parse/img/ocr" + + try: + with open(image_path, "rb") as f: + file = f.read() + except Exception as e: + raise FileError(f"Open file error! {e}") + + async with httpx.AsyncClient(timeout=httpx.Timeout(30), http2=True) as client: + response = await client.post( + url, + headers={ + "Authorization": f"Bearer {apikey}", + }, + content=file, + ) + + trace_id = response.headers.get("trace-id", "Failed to get trace-id") + + if response.status_code == 429: + raise RateLimit(trace_id=trace_id) + + if response.status_code != 200: + raise Exception(f"Image OCR failed: {response.status_code}:{response.text}") + + data = response.json() + await image_code_check(data.get("code", ""), trace_id=trace_id) + + return data.get("data", {}) + + +@async_retry() +async def parse_image_layout(apikey: str, image_path: str) -> dict: + """Parse image layout + + Args: + apikey (str): The API key + image_path (str): Path to the image file + + Raises: + FileError: If file size exceeds limit or file cannot be opened + RateLimit: If rate limit is reached + RequestError: If parsing fails + Exception: For any other errors + + Returns: + dict: The parsed layout results + """ + # Check file size + if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB + raise FileError("Image file size exceeds 3MB limit") + + url = f"{Base_URL}/v2/parse/img/layout" + + try: + with open(image_path, "rb") as f: + file = f.read() + except Exception as e: + raise FileError(f"Open file error! {e}") + + async with httpx.AsyncClient(timeout=httpx.Timeout(30), http2=True) as client: + response = await client.post( + url, + headers={"Authorization": f"Bearer {apikey}"}, + content=file, + ) + + trace_id = response.headers.get("trace-id", "Failed to get trace-id") + + if response.status_code == 429: + raise RateLimit(trace_id=trace_id) + + if response.status_code != 200: + raise Exception( + f"Image layout parsing failed: {response.status_code}:{response.text}" + ) + + data = response.json() + await image_code_check(data.get("code", ""), trace_id=trace_id) + + return data.get("data", {}) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py new file mode 100644 index 0000000..e69de29 From 68dd68c9fe3d9f08161fbeacd120c8fc82fe88b4 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Thu, 13 Feb 2025 17:42:45 +0800 Subject: [PATCH 02/46] [Doc2X] Finish the pic deal part --- src/pdfdeal/doc2x.py | 57 +++++++++++- src/pdfdeal/doc2x_img.py | 193 +++++++++++++++++++++++++++++++++++++++ tests/test_pic2file.py | 89 ++++++++---------- 3 files changed, 289 insertions(+), 50 deletions(-) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index e231191..01649c9 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -1,6 +1,6 @@ import asyncio import os -from typing import Tuple, List +from typing import Tuple, List, Dict, Union, Optional import logging from .Doc2X.ConvertV2 import ( upload_pdf, @@ -14,6 +14,7 @@ from .Doc2X.Exception import RequestError, RateLimit, run_async from .FileTools.file_tools import get_files import time +from .doc2x_img import ImageProcessor logger = logging.getLogger(name="pdfdeal.doc2x") @@ -157,6 +158,7 @@ def __init__( self.max_pages = max_pages self.request_interval = 0.1 self.full_speed = full_speed + self._image_processor = None handler = logging.StreamHandler() formatter = logging.Formatter( @@ -170,6 +172,59 @@ def __init__( logging.getLogger("pdfdeal").setLevel(logging.DEBUG) self.debug = debug + @property + def image_processor(self) -> ImageProcessor: + """Lazy initialization of ImageProcessor""" + if self._image_processor is None: + self._image_processor = ImageProcessor(self.apikey) + return self._image_processor + + def picocr( + self, + pic_file, + concurrent_limit: Optional[int] = None, + ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + """Process image files with OCR + + Args: + pic_file (str | List[str]): Path to image file(s) or directory + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to thread value. + + Returns: + Tuple containing: + - Dictionary mapping file paths to their OCR results + - List of dictionaries containing error information + - Boolean indicating if any errors occurred + """ + return self.image_processor.pic2file( + pic_file=pic_file, + process_type="ocr", + concurrent_limit=concurrent_limit or self.thread, + ) + + def piclayout( + self, + pic_file, + concurrent_limit: Optional[int] = None, + ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + """Process image files with layout analysis + + Args: + pic_file (str | List[str]): Path to image file(s) or directory + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to thread value. + + Returns: + Tuple containing: + - Dictionary mapping file paths to their layout analysis results + - List of dictionaries containing error information + - Boolean indicating if any errors occurred + """ + return self.image_processor.pic2file( + pic_file=pic_file, + process_type="layout", + concurrent_limit=concurrent_limit or self.thread, + ) + async def pdf2file_back( self, pdf_file, diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index e69de29..8ce7316 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -0,0 +1,193 @@ +import asyncio +import logging +from typing import Dict, List, Union, Optional +from .Doc2X.ConvertV2 import parse_image_layout, parse_image_ocr +from .Doc2X.Exception import RateLimit, RequestError, run_async +from .FileTools.file_tools import get_files +import os + +logger = logging.getLogger("pdfdeal.doc2x_img") + + +class ImageProcessor: + """Image processor with rate limiting support""" + + def __init__(self, apikey: str): + """Initialize the image processor + + Args: + apikey (str): API key for authentication + """ + self.apikey = apikey + self._request_times: List[float] = [] + self._lock = asyncio.Lock() + + async def _check_rate_limit(self): + """Check and enforce rate limit (120 requests per 30 seconds)""" + async with self._lock: + current_time = asyncio.get_event_loop().time() + # Remove requests older than 30 seconds + self._request_times = [ + t for t in self._request_times if current_time - t <= 30 + ] + + if len(self._request_times) >= 120: + # Calculate wait time if rate limit reached + wait_time = 30 - (current_time - self._request_times[0]) + if wait_time > 0: + logger.warning( + f"Rate limit reached, waiting for {wait_time:.2f} seconds" + ) + await asyncio.sleep(wait_time) + # Recursive call after waiting to ensure we're still within limits + await self._check_rate_limit() + + self._request_times.append(current_time) + + async def process_image( + self, image_path: str, process_type: str = "ocr" + ) -> Dict[str, Union[dict, str]]: + """Process an image with OCR or layout analysis + + Args: + image_path (str): Path to the image file + process_type (str): Type of processing, can be 'ocr' or 'layout' + + Returns: + Dict containing the processing results + + Raises: + ValueError: If process_type is invalid + RateLimit: If rate limit is exceeded + """ + if process_type not in ["ocr", "layout"]: + raise ValueError("process_type must be one of: 'ocr', 'layout'") + + result = {} + + try: + if process_type == "ocr": + await self._check_rate_limit() + ocr_result = await parse_image_ocr(self.apikey, image_path) + result["ocr"] = ocr_result + else: + await self._check_rate_limit() + layout_result = await parse_image_layout(self.apikey, image_path) + result["layout"] = layout_result + + return result + + except RateLimit as e: + logger.error(f"Rate limit exceeded: {str(e)}") + raise + except Exception as e: + logger.error(f"Error processing image {image_path}: {str(e)}") + raise + + async def process_multiple_images( + self, + image_paths: List[str], + process_type: str = "ocr", + concurrent_limit: int = 5, + ) -> Dict[str, Dict[str, Union[dict, str]]]: + """Process multiple images concurrently with rate limiting + + Args: + image_paths (List[str]): List of image file paths + process_type (str): Type of processing, can be 'ocr' or 'layout' + concurrent_limit (int): Maximum number of concurrent processing tasks + + Returns: + Dict mapping image paths to their processing results + """ + semaphore = asyncio.Semaphore(concurrent_limit) + + async def process_with_semaphore(path: str) -> tuple[str, dict]: + async with semaphore: + result = await self.process_image(path, process_type) + return path, result + + tasks = [process_with_semaphore(path) for path in image_paths] + results = await asyncio.gather(*tasks, return_exceptions=True) + + processed_results = {} + for path, result in results: + if isinstance(result, Exception): + logger.error(f"Failed to process {path}: {str(result)}") + processed_results[path] = {"error": str(result)} + else: + processed_results[path] = result + + return processed_results + + async def pic2file_back( + self, + pic_file, + process_type: str = "ocr", + concurrent_limit: Optional[int] = None, + ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + """Process image files with OCR or layout analysis + + Args: + pic_file (str | List[str]): Path to image file(s) or directory + process_type (str): Type of processing, can be 'ocr' or 'layout' + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + + Returns: + Tuple containing: + - Dictionary mapping file paths to their processing results + - List of dictionaries containing error information + - Boolean indicating if any errors occurred + """ + if isinstance(pic_file, str): + if os.path.isdir(pic_file): + pic_file, _ = get_files(path=pic_file, mode="pic") + else: + pic_file = [pic_file] + + results = await self.process_multiple_images( + image_paths=pic_file, + process_type=process_type, + concurrent_limit=concurrent_limit or 5, + ) + + failed_files = [] + has_error = False + + for path, result in results.items(): + if "error" in result: + failed_files.append({"error": result["error"], "path": path}) + has_error = True + else: + failed_files.append({"error": "", "path": ""}) + + if has_error: + logger.error( + f"Failed to process {len([f for f in failed_files if f['error']])} file(s)" + ) + + return results, failed_files, has_error + + def pic2file( + self, + pic_file, + process_type: str = "ocr", + concurrent_limit: Optional[int] = None, + ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + """Synchronous wrapper for pic2file_back + + Args: + pic_file (str | List[str]): Path to image file(s) or directory + process_type (str): Type of processing, can be 'ocr' or 'layout' + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + + Returns: + Same as pic2file_back + """ + return run_async( + self.pic2file_back( + pic_file=pic_file, + process_type=process_type, + concurrent_limit=concurrent_limit, + ) + ) diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index 0bdabc8..5253c26 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -1,56 +1,47 @@ -# from pdfdeal import Doc2X -# from pdfdeal.file_tools import get_files -# import os -# import logging +from pdfdeal import Doc2X +from pdfdeal.file_tools import get_files +import logging -# httpx_logger = logging.getLogger("httpx") -# httpx_logger.setLevel(logging.WARNING) -# logging.basicConfig(level=logging.INFO) +httpx_logger = logging.getLogger("httpx") +httpx_logger.setLevel(logging.WARNING) +logging.basicConfig(level=logging.INFO) -# def test_single_pic2file(): -# client = Doc2X() -# filepath, _, _ = client.pic2file( -# image_file="tests/image/sample.png", -# output_path="./Output/test/single/pic2file", -# output_names=["pic_sample1.docx"], -# output_format="docx", -# ) -# if filepath[0] != "": -# assert os.path.exists(filepath[0]) -# assert os.path.isfile(filepath[0]) -# assert filepath[0].endswith(".docx") -# assert os.path.basename(filepath[0]) == "pic_sample1.docx" +def test_picocr(): + client = Doc2X() + # Test single file OCR + results, errors, has_error = client.picocr("tests/image/sample.png") + assert not has_error + assert len(results) == 1 + assert isinstance(results, dict) + first_result = next(iter(results.values())) + assert isinstance(first_result, dict) + assert "text" in first_result or "texts" in first_result + # Test multiple files OCR + file_list, _ = get_files("tests/image", "img", None) + results, errors, has_error = client.picocr(file_list) + assert len(results) == len(file_list) + for result in results.values(): + assert isinstance(result, dict) + assert "text" in result or "texts" in result -# def test_multiple_pic2file(): -# client = Doc2X() -# file_list, rename = get_files("tests/image", "img", "docx") -# success, failed, flag = client.pic2file( -# image_file=file_list, -# output_path="./Output/test/multiple/pic2file", -# output_names=rename, -# output_format="docx", -# ) -# assert flag -# assert len(success) == len(failed) == 3 -# for s in success: -# if s != "": -# assert s.endswith("sample1.docx") or s.endswith("sample.docx") +def test_piclayout(): + client = Doc2X() + # Test single file layout analysis + results, errors, has_error = client.piclayout("tests/image/sample.png") + assert not has_error + assert len(results) == 1 + assert isinstance(results, dict) + first_result = next(iter(results.values())) + assert isinstance(first_result, dict) + assert "layout" in first_result or "layouts" in first_result -# # def test_multiple_high_rpm(): -# # client = Doc2X() -# # file_list = ["tests/image/sample.png" for _ in range(20)] -# # success, failed, flag = client.pic2file( -# # image_file=file_list, -# # output_path="./Output/test", -# # ) -# # assert len(success) == len(failed) == 20 -# # i = 0 -# # for s in success: -# # if s != "": -# # assert s.endswith(".zip") -# # else: -# # i += 1 -# # print(f"===Failed {i} times===") + # Test multiple files layout analysis + file_list, _ = get_files("tests/image", "img", None) + results, errors, has_error = client.piclayout(file_list) + assert len(results) == len(file_list) + for result in results.values(): + assert isinstance(result, dict) + assert "layout" in result or "layouts" in result \ No newline at end of file From 790d8a44ab3f22be7277f37a0ab264a8271070db Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Feb 2025 22:54:59 +0800 Subject: [PATCH 03/46] [Doc2X] Fix many bugs in images process --- src/pdfdeal/Doc2X/ConvertV2.py | 30 +++++++++-- src/pdfdeal/doc2x.py | 35 +++++++++---- src/pdfdeal/doc2x_img.py | 93 +++++++++++++++++++++------------- tests/test_pic2file.py | 37 +++++++------- 4 files changed, 127 insertions(+), 68 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 2752921..094697e 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -6,6 +6,7 @@ from .Exception import RateLimit, FileError, RequestError, async_retry, code_check import logging from .Types import OutputFormat +import base64 Base_URL = "https://v2.doc2x.noedgeai.com/api" @@ -426,7 +427,7 @@ async def parse_image_ocr(apikey: str, image_path: str) -> dict: Exception: For any other errors Returns: - dict: The parsed OCR results + dict: The parsed OCR results containing tex_lines """ # Check file size if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB @@ -460,16 +461,21 @@ async def parse_image_ocr(apikey: str, image_path: str) -> dict: data = response.json() await image_code_check(data.get("code", ""), trace_id=trace_id) - return data.get("data", {}) + return data.get("data", {}).get("tex_lines", []), data.get("data", {}).get( + "uid", "Failed to get uid" + ) @async_retry() -async def parse_image_layout(apikey: str, image_path: str) -> dict: +async def parse_image_layout( + apikey: str, image_path: str, zip_path: str = None +) -> tuple[list, str]: """Parse image layout Args: apikey (str): The API key image_path (str): Path to the image file + zip_path (str, optional): Path to save the zip file containing images. Defaults to image_name + 'picture.zip'. Raises: FileError: If file size exceeds limit or file cannot be opened @@ -478,8 +484,13 @@ async def parse_image_layout(apikey: str, image_path: str) -> dict: Exception: For any other errors Returns: - dict: The parsed layout results + tuple: A tuple containing: + - list: List of page dictionaries with page dimensions and md content + - str: The unique identifier (uid) of the request """ + if zip_path is None: + base_name = os.path.splitext(os.path.basename(image_path))[0] + zip_path = f"{base_name}picture.zip" # Check file size if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB raise FileError("Image file size exceeds 3MB limit") @@ -512,4 +523,13 @@ async def parse_image_layout(apikey: str, image_path: str) -> dict: data = response.json() await image_code_check(data.get("code", ""), trace_id=trace_id) - return data.get("data", {}) + # Save zip file if path provided and zip content exists + if zip_path and data.get("data", {}).get("convert_zip"): + zip_content = base64.b64decode(data["data"]["convert_zip"]) + with open(zip_path, "wb") as f: + f.write(zip_content) + + return ( + data.get("data", {}).get("result", {}).get("pages", []), + data.get("data", {}).get("uid", "Failed to get uid"), + ) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 01649c9..e794e20 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -199,30 +199,47 @@ def picocr( return self.image_processor.pic2file( pic_file=pic_file, process_type="ocr", - concurrent_limit=concurrent_limit or self.thread, + concurrent_limit=concurrent_limit, ) def piclayout( self, - pic_file, - concurrent_limit: Optional[int] = None, - ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: - """Process image files with layout analysis + pic_file: str, + zip_path: Optional[str] = None, + concurrent_limit: Optional[int] = 5, + ) -> tuple[List[Union[list, str]], List[dict], bool]: + """Process a single image file with layout analysis Args: - pic_file (str | List[str]): Path to image file(s) or directory - concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to thread value. + pic_file (str): Path to a single image file (jpg/png) + zip_path (str, optional): Path to save the zip file containing images. Defaults to None. + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to 5. Returns: Tuple containing: - - Dictionary mapping file paths to their layout analysis results + - List containing the layout analysis result (empty string if failed) - List of dictionaries containing error information - Boolean indicating if any errors occurred + + Raises: + ValueError: If the input file is not a jpg/png file or doesn't exist """ + # Validate file exists + if not os.path.isfile(pic_file): + raise ValueError(f"File not found: {pic_file}") + + # Validate file extension + ext = os.path.splitext(pic_file)[1].lower() + if ext not in [".jpg", ".jpeg", ".png"]: + raise ValueError( + f"Unsupported file type: {ext}. Only jpg/png files are supported." + ) + return self.image_processor.pic2file( pic_file=pic_file, process_type="layout", - concurrent_limit=concurrent_limit or self.thread, + concurrent_limit=concurrent_limit, + zip_path=zip_path, ) async def pdf2file_back( diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 8ce7316..450762b 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -1,8 +1,8 @@ import asyncio import logging -from typing import Dict, List, Union, Optional +from typing import Dict, List, Optional, Union from .Doc2X.ConvertV2 import parse_image_layout, parse_image_ocr -from .Doc2X.Exception import RateLimit, RequestError, run_async +from .Doc2X.Exception import RateLimit, run_async from .FileTools.file_tools import get_files import os @@ -45,97 +45,110 @@ async def _check_rate_limit(self): self._request_times.append(current_time) async def process_image( - self, image_path: str, process_type: str = "ocr" - ) -> Dict[str, Union[dict, str]]: + self, image_path: str, process_type: str = "ocr", zip_path: str = None + ) -> tuple[list, str, bool]: """Process an image with OCR or layout analysis Args: image_path (str): Path to the image file process_type (str): Type of processing, can be 'ocr' or 'layout' + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. Returns: - Dict containing the processing results + Tuple containing: + - The processing result (list of tex_lines for OCR, list of pages for layout) + - The uid of the processed image + - Boolean indicating if the processing was successful Raises: - ValueError: If process_type is invalid + ValueError: If process_type is invalid or file type is not supported RateLimit: If rate limit is exceeded """ if process_type not in ["ocr", "layout"]: raise ValueError("process_type must be one of: 'ocr', 'layout'") - result = {} - try: if process_type == "ocr": await self._check_rate_limit() - ocr_result = await parse_image_ocr(self.apikey, image_path) - result["ocr"] = ocr_result + tex_lines, uid = await parse_image_ocr(self.apikey, image_path) + return tex_lines, uid, True else: await self._check_rate_limit() - layout_result = await parse_image_layout(self.apikey, image_path) - result["layout"] = layout_result - - return result + pages, uid = await parse_image_layout(self.apikey, image_path, zip_path) + return pages, uid, True except RateLimit as e: logger.error(f"Rate limit exceeded: {str(e)}") raise except Exception as e: logger.error(f"Error processing image {image_path}: {str(e)}") - raise + return [], "", False async def process_multiple_images( self, image_paths: List[str], process_type: str = "ocr", concurrent_limit: int = 5, - ) -> Dict[str, Dict[str, Union[dict, str]]]: + zip_path: str = None, + ) -> tuple[List[list], Dict[str, bool]]: """Process multiple images concurrently with rate limiting Args: image_paths (List[str]): List of image file paths process_type (str): Type of processing, can be 'ocr' or 'layout' concurrent_limit (int): Maximum number of concurrent processing tasks + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. Returns: - Dict mapping image paths to their processing results + Tuple containing: + - List of processing results in order (empty list for failed items) + - Dict mapping image paths to their success status """ semaphore = asyncio.Semaphore(concurrent_limit) - async def process_with_semaphore(path: str) -> tuple[str, dict]: + async def process_with_semaphore( + path: str, + index: int, + ) -> tuple[int, str, tuple[list, str, bool]]: async with semaphore: - result = await self.process_image(path, process_type) - return path, result + result = await self.process_image(path, process_type, zip_path) + return index, path, result - tasks = [process_with_semaphore(path) for path in image_paths] + tasks = [process_with_semaphore(path, i) for i, path in enumerate(image_paths)] results = await asyncio.gather(*tasks, return_exceptions=True) - processed_results = {} - for path, result in results: + processed_results = [[] for _ in range(len(image_paths))] + success_status = {} + + for result in results: if isinstance(result, Exception): - logger.error(f"Failed to process {path}: {str(result)}") - processed_results[path] = {"error": str(result)} - else: - processed_results[path] = result + logger.error(f"Failed to process a file: {str(result)}") + continue + + index, path, (result_list, _, success) = result + processed_results[index] = result_list if success else [] + success_status[path] = success - return processed_results + return processed_results, success_status async def pic2file_back( self, pic_file, process_type: str = "ocr", concurrent_limit: Optional[int] = None, - ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + zip_path: str = None, + ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with OCR or layout analysis Args: pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'ocr' or 'layout' concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. Returns: Tuple containing: - - Dictionary mapping file paths to their processing results + - List of results in order (empty string for failed items) - List of dictionaries containing error information - Boolean indicating if any errors occurred """ @@ -145,41 +158,48 @@ async def pic2file_back( else: pic_file = [pic_file] - results = await self.process_multiple_images( + results, success_status = await self.process_multiple_images( image_paths=pic_file, process_type=process_type, concurrent_limit=concurrent_limit or 5, + zip_path=zip_path, ) failed_files = [] has_error = False - for path, result in results.items(): - if "error" in result: - failed_files.append({"error": result["error"], "path": path}) + # Convert results to final format + final_results = [] + for i, path in enumerate(pic_file): + if not success_status.get(path, False): + failed_files.append({"error": "Processing failed", "path": path}) + final_results.append("") has_error = True else: failed_files.append({"error": "", "path": ""}) + final_results.append(results[i]) if has_error: logger.error( f"Failed to process {len([f for f in failed_files if f['error']])} file(s)" ) - return results, failed_files, has_error + return final_results, failed_files, has_error def pic2file( self, pic_file, process_type: str = "ocr", concurrent_limit: Optional[int] = None, - ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + zip_path: str = None, + ) -> tuple[List[Union[list, str]], List[dict], bool]: """Synchronous wrapper for pic2file_back Args: pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'ocr' or 'layout' concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. Returns: Same as pic2file_back @@ -189,5 +209,6 @@ def pic2file( pic_file=pic_file, process_type=process_type, concurrent_limit=concurrent_limit, + zip_path=zip_path, ) ) diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index 5253c26..e1746b3 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -13,18 +13,15 @@ def test_picocr(): results, errors, has_error = client.picocr("tests/image/sample.png") assert not has_error assert len(results) == 1 - assert isinstance(results, dict) - first_result = next(iter(results.values())) - assert isinstance(first_result, dict) - assert "text" in first_result or "texts" in first_result + assert isinstance(results, list) + assert isinstance(results[0], list) # Test multiple files OCR file_list, _ = get_files("tests/image", "img", None) results, errors, has_error = client.picocr(file_list) assert len(results) == len(file_list) - for result in results.values(): - assert isinstance(result, dict) - assert "text" in result or "texts" in result + for result in results: + assert isinstance(result, (list, str)) def test_piclayout(): @@ -33,15 +30,19 @@ def test_piclayout(): results, errors, has_error = client.piclayout("tests/image/sample.png") assert not has_error assert len(results) == 1 - assert isinstance(results, dict) - first_result = next(iter(results.values())) - assert isinstance(first_result, dict) - assert "layout" in first_result or "layouts" in first_result + assert isinstance(results, list) + assert isinstance(results[0], list) - # Test multiple files layout analysis - file_list, _ = get_files("tests/image", "img", None) - results, errors, has_error = client.piclayout(file_list) - assert len(results) == len(file_list) - for result in results.values(): - assert isinstance(result, dict) - assert "layout" in result or "layouts" in result \ No newline at end of file + # Test invalid file type + try: + client.piclayout("tests/image/sample.txt") + assert False, "Should raise ValueError for invalid file type" + except ValueError as e: + assert "Unsupported file type" in str(e) + + # Test non-existent file + try: + client.piclayout("tests/image/nonexistent.png") + assert False, "Should raise ValueError for non-existent file" + except ValueError as e: + assert "File not found" in str(e) From dee113c0b67c10a8e2f05b8825b959784eebbb59 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Wed, 19 Feb 2025 17:55:15 +0800 Subject: [PATCH 04/46] [Doc2X] Finished the pic ocr part --- src/pdfdeal/FileTools/file_tools.py | 2 ++ src/pdfdeal/doc2x.py | 6 ++--- tests/image/sample.png | Bin 12411 -> 26885 bytes tests/image/test/sample1.png | Bin 12411 -> 26885 bytes tests/test_pic2file.py | 39 ++++++++++++---------------- 5 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index c1a5b49..5578f1c 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -163,6 +163,8 @@ def get_files(path: str, mode: str, out: str) -> Tuple[list, list]: mode = Support_File_Type(mode) if isinstance(mode, Support_File_Type): mode = mode.value + if not out: + out = "md_dollar" if out != "pdf": out = OutputFormat(out) if isinstance(out, OutputFormat): diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index e794e20..a48cb2c 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -183,7 +183,7 @@ def picocr( self, pic_file, concurrent_limit: Optional[int] = None, - ) -> tuple[Dict[str, Dict[str, Union[dict, str]]], List[dict], bool]: + ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with OCR Args: @@ -192,7 +192,7 @@ def picocr( Returns: Tuple containing: - - Dictionary mapping file paths to their OCR results + - List of OCR results (list or str) for each file - List of dictionaries containing error information - Boolean indicating if any errors occurred """ @@ -217,7 +217,7 @@ def piclayout( Returns: Tuple containing: - - List containing the layout analysis result (empty string if failed) + - List of layout analysis results (list or str) - List of dictionaries containing error information - Boolean indicating if any errors occurred diff --git a/tests/image/sample.png b/tests/image/sample.png index 416f7a670ab89052329cae0b1e9645d4a0c32bb5..1ebddb2b2b6dbb2776dc2902f2bcd31d92729297 100644 GIT binary patch literal 26885 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 Q6p_SZ+AR4wH|4f}1F`F)-T(jq literal 12411 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 diff --git a/tests/image/test/sample1.png b/tests/image/test/sample1.png index 416f7a670ab89052329cae0b1e9645d4a0c32bb5..1ebddb2b2b6dbb2776dc2902f2bcd31d92729297 100644 GIT binary patch literal 26885 zcmeFZcQ}`QA2Rqe!U8NJcU5)W5#RNn|M0D!f{P1Tq#LqdK-LSB5B%M>|7c%D+?I)2qNJ{7A zv~C$q{J5#RTW588Mv$*e(Y4B#lQW2lL1p*8svwQ*lmO~|-OP2YW_;O&uiL*e9=Gij z3oTpP70PCIp6bxCAVrO*TPIc<%B6Z@4H;BtPtjLAYjt%u{ChH&X5!PQ@6Pe7&xF&| z6Md=W7$}Lqj>%n!qVwh0O8hllagj3nzyE$F@Q|{d@PshR}*}D^euC!QOrQ_TiJ0HPfzLzpf!(A@1xv zC$aL@z`!8ptJ!;wt={ZWettEFEq=zm*3IUus;WAtpg{gOF0PqgX00;c?#qY9#zeys zx9_FyjG^_*bkz!>tp4%w?0;J0Us*Iq)9w=w@myWJYGrl)!49_9MrFlS6<@#V&d$!7 zXPMdBHsx3}A2Tc#ixDskUr>E688z0G?)>{Bi{7e?&CmMKQ+Jjh-@8X?@x_is%8ieV zjO^Jdcg>#5d~e^rweQUf6t(*FI6RzloY%Pg6uxxgs}Gxh7zF1@<7GM|=XfbWfvbR8S` z_3QFT#p==&Q*rB_2g<3Yy?HibcHJR|&Oba>vMC(JbGf>wr)MDdR+r5A^XEG{I#Rv_ zhJ>WxqiSnwAIHQzC@YhG`0(M^-rn+AV{Pr|J}0drDw@6OSw_-3*iUCn@I;1&(%F4^ z`>Q?qd~HL6%4Fz13Ck*9D*JB*EdwQ)otXv_)ipIeB{u~V%1AeE+(^0*E25R58)n<} zMx)TtP(ROF4$H-S;u^=vlPA9yyQ<76Gwk30G5m2^QYOUwW%p+V8CRrpb>4QQ^mT%=EnLqdU`ATL(K8JZb2E=%E-uQzobjRvuFGD zjIUi2I&k0s-<2YUe0~1$+`PO|Ng}Hymx+;^N+om z=f1!HRR@Pm`)K?+=jj2t(c#}efBL1RrL~)^%(cqA(o9uuvTQ86{xhZ0`@`ddx_WwH z5fOf=sYmb(=O@3#++O-i)?3-p(-ZsT33HjwvQ<$@$>(=h&-(iLo%CGE+kGce!0;)t zZ7048^IU#&FD@=_D0X_HM-;cT*2H)XcammMDA3;C-qCOPg!Q=XbR$>%vAAFdtiY8L zH#(p9&VR}^eoIS9#Vt;LQ+dR=Yga%>$YC+D$dk^$+wyEK>3M7P=G$?tm+jcGqw}qy zLAHPQ`s$L+=a+O>uU<`g^@_JdNl{T~Ypf1Uz;*bzp6w_-iE{6pLADw-$<2o+eZQ^THT`*IW8U+UjhmS#_V_0OQd7Gn^ zRRf-&`DFbq508%58izi`%VbS>@c$^e`De1Q|LCDZXKhhvua{z*W3~( z!6I(|q;v5mmLf7|n-306Td}L1et~`C=;v2aKYSLYUYeVla(ey|W2HO)=)kYCr9QKU zhio}>XL2oDUSCe%+Z-b(vGQK$wR+XaOm|I9a+^l!^75_OxjCCJZ`m>p3boyszE$~c z=_zoC%h6-Fx9KYp^cLl0>y8~qv4p%jZ>LAv4?R6@SC11Q=#WhFE+Zo&ATV$+Lhba` zzEbx)YcmblKI*+Y@_LvqUAlDf*$J}Bxj(IX*``!A5B{_9sJB>qdwc(GiQ}@PaOghF z$?1!`U^sB#;`+)$R2-?T)ZMw~XUWYe5tB;NXm)x!uZ@k(ekr#Lwz=8ai8@(E6W`xQ zpnRxICP&#^j0slbj?ym*m1 zujdL%qh-re`G}*c<`orzf!n6aR|Rz5UJ<_4KOg(_smQHq6KuT(T;fP)8l$o2!XCz> z7Y6WQO)X@KDk?vhXMQ$WDxo62#tyI8SV^xsP1*Zr+@SodbRN^EKF{yuPmyCgadtcZ>_$b zUVEwvQ-R|TW&iDaLN)|$FHVF>KYa8^aDKtH_~z6_bMwRW?5E9JUr5ukifz4l^QLx| zk!qR8!jlu%Ie!$pMo2d_G;E1dmY?j+KY8=-{_^s2AMt6gjkS}Ztj9T}rJrNXGz;wY zdYrS2D+HQ*-Tr=$9UeC47QIsJVw04Vl;ZXL;&aJ%?Elf3jrCQ!#kh2xERh?-ilf<& z9?`4B2>kl2CiAO4bf4zxaAQROi0P{nA6r`f{faS;Y!OL5|43V0>CD-)sXO=k>^!7k zf|mFFy>n^-Hu5g)C^V_%g)hdbi+_KV%%Nr^lVwCj?QwK;tgWx-DbamrB9}OI9<^3c zS(%fYJFQKF6FajhlKYV7{rcUD>r9k`GEsl+`*4D>VuX<)rJ_ZZwMJFtTLU&Ot{8-zB&FUXNd-f5#0JUI8WOjCT4n!UFWiuafo*Qm z3L51hs^1CH91rf_S6<&IZqFej6W@`ll55+=GkR`hYD(?7q-)CLojZ4~-MB$siIV#L z`;|VAaemTEwfIjr`#l?K0~zValU}OEiMUPZ>fOfUd+)U_iTW;P+Zn*_wM-@}*=TNV zPINGv)uFB1whhJ@dkqfN1$Q*s4}S>zUUoYME6Y=$uo%mJ;+hZkyZRd~?ws7*)c$1L z)BN8baZ?qWMk}6ZYOk-n7s0(yljUPG(OWb{lI6KRkOV5MY;O;99q*pOFX?mt!?vG| zO|QbMEH58*N5WrqWsw5fzOUHlt49-{Ssn_6Qz_%XoJvcHZJt z|D&udLBnDfqF$L>S@9YTssTeql|NE_Dpu9f5{if1STOpdL?TAeSU_yNr`+>4A3uLj zsk$jkiTdbCTLUFa2tnYJ@l9F0m zUr%lL)f}@WkLk=xLw+@RLB(erKU(G7ppFDN3cp}(pIoa}k*n2|X|>z)m>jJ>Jxj#R zYBG#ZO+AWJzd$@xQ&sK5s>IenILX@;#(noo6#DZw1<|55$e$sN!K^? z%M(4h&!lf_dt^AZCCKR-7^pCPt4m$Y5HK#!7}-fV7(ZVxH<7-3_wH$6#-7JZ1pGL6 z?%u?`lyti*Ip*6)U2iV`Twm(9YL4d5k^OfWAd-TbmV=)^6qr$PuNfv<)RMZ1efCuHYzM zog2UjL|3i$r=jZ;eGZ7YbI%@sv<$QQkT9=4v`!Wg^R1|Nzk>zKP5yj(ZvVY#Cd#!$ zlHGHDCoU>vpTt{TvW$oC-@ljB?s$TG=7|f@2d=~}x_9qhTdtKFw@<0}=4s*vUP#AX z|5?9t?_SG1mueiG-YmQB45H7_-q$t&{=Il{2f7ql9$CR(saM+RfdK&nxUP<+i#li8 zU#jlIc?W!U3Y!YUIXZp%bWw4!DF_IPt>T3XDOzco*tY1v@_^9Mp^W;I*b?{GASr+3+kJAVHV%p{mn@aXhP08ruL zM2{b819|}%4?nfuZ*)6A%_<$Qm)Pu9wE;Uj%zm6^J8(ci%B#4jh&j@B?Z+-g#!yRX znoGJi;f|D?r%qiF*PQ$LNTx|4NAl+13wQ36$|bNcGb^G3UcYf;2p=P6-9~DQ)_UD# z%YAzVt-?l&I*;l6=3yr%r_m{v6W0c0Hrzo(UrB5?Eh{Z$K5iR1|Fx=$OhrW{TEOs4 zVbmh!+Q#bC=OlR=z1vr=>^HtMLq)=2s_yLU9BI3LJvJ_GuE#3=s*{r-l?a}<__C)< zWJT-agJ;dpx+Jt*0Z!8J$dC#=mis0_I&4JBZGsuFt){NdKbqel$Fhah)YMcxP3zwM z`+HZNo*%c{o50p*h(m;;VcC(Qq`3)}Gd(vax|I`HnM+Ekz`ETRxbCfS#l@QYbPEM* zmvnWX$SJUxfIVn-Ya1&nZnbKC5oJ+;rgHYqom0S7sVG@uPJPc_NZ%flR)Jm+!|uHn zhX2ZO>Obu_=<*!oE*>SH*}QTA3{7b&-Am{N8W*+(_pxIM4&Mqu0l;(3^W76#zPe5I zJ;z~-0D-jVwC#L-(1D^i&_hp8FVE)l{kAss0;m2@pt$NIQ#+>nZciz#ene^7N=rLD z`>VOGmmZLFq$@opr^hEdP#RAu*<)cW!=UhDF~^4w9}@I(EkpL749}|A(0{5P5gXh1 zMA&S3C|K}`n2ly)ei>@J@K?1ED)X?gFipLWA7e#Nx{NUJL11a{w;E6`C6K4KU&+@a!)B#a`FVM1tm4Li2YZgQ_|9-{S`6^bj8JPlRTN^1EZsj zK=WyOxknS&Jlp6^L&3(9v6v`_4FkDdY&0%%_PV;vfIp@v)|6CKJ9q8!O-thjr0w?Z zwR`VA_p<$lFIe7ML(?|EbkrHm=lQQ*y}H3j(b(Adz2xR2JUPD`Y@rHxbo-b=&BwoF z#oYh3AVVV|A%R-;0j-DjMTKeIcI^z^D%|_Kf`aIW{?Dauz686-8Q93e7hbwe_SStm zZDnbx-2bau;Vh-xvQ?=DLtI$c!F1zU)V8`h`EKgo0dY~$&k2S%qrRgy$%t^j zs>QPh@<7eEZ*h34?I}u(dfq5GsT9rgqo3W^mW2tZn(#bt8U%0LNuaU0IYKp~jlUw| z`E!1|EkBQEO+mtkYW6QC61ZI@Wm=HK9php!HWN4$Fs@mb#uEy{D9-cHMkC_MecAKkfPM z-8++^+CXSFqJZAG*^e1|xr%CPT&GSw`|v^Wz^Pl609!0L+Y{vVPq6c6|CUU3q+Q~A z_WXJ3phv2>L$44>32~?v#=2&vrw33{j-EdKB39Ij^||#cwdD5F8*$ZZE8|&Onfg)K zCArRjE`q3Dz*%Myvu42QF$X?;t;K`VTnF|C;Ax60;xi}+A)}!FAVBWA+Jfqqsu_Zk z3HHHP@{T-3Zv!}U%f|Q3o>oXD$dwa%zyU(Jpwl}vB#2G)6sj2Xo z7_P2^TPP_91_uu=^z`;>f_6B5FFJVJNsDLFc89;}qNLZ_2{5b_;|i|}apI~ys-P63 zqoeyz-BRy4GBY<95%untyL*`%x0VLL;6I$>fQJu%$2pa||9Z1KFfj1Wbk!E0tA-^U zTQ@UMeo<1szPsu-e*zr7vQk!WpEZ4Hs!B|Bud8cPu@dd%x57VPv(2)~cKMtRRqz9B zf{sOWC2Bc)FR$|5hsTw-xjYKq{vtU!+2ZWoix)3y(!CZr^xC-OrJBUKm(AK^zF(8> zD@WlBK#c<$ejFKD+m?7%NmZ4A;?GWdK0SE${=n3fAl>ak+pZvJfoaZ@K5{5Ol`eTv6zHso;m$kInbrtGzg- zbmk1XxVU)EU=4`=9C$V$(Wg(Je8fvKwbSu%XyYWDe)r^Bb-dYyLW)Zha_AL9y>9@! zv*|CF#z!1Hc`_DC&JAa00@s~Ex#K*%!h0c!nDjL48L%&F!Y6{xJd%|tv ziAzXsetwjNvTMJ@y12!)7g16E$;pSHsYLaRu!S2cRz_Leur@81vp{(Y2}_YJN+kuksT9F!ZB zM=R7ZKE0fKc&fxI`>iX)Z#AMCtoRv!M~}FKgc#bW)c{c=$683; zS;lHWq+0Z=NAZgRQ3w)BU9*;uncVT*{@Jro7p^QJ?k@vf?3ykOU|*cQ)6TGW7G6wWA3#dw&O;GK50N zBh{^~j|kx=Q?4t!pun>F-nJZ{9-u6!)O(*AegSij)SA;nrNnZLv?WqZTWM#@`B4Mn zDz}n3lobd(X`|9;^8C`@U-2O$7R6%+F8vUQ9yYp#1R;5Fb8jO`V;l{tJo=D%eDJGR zT-X+!uQmL@Wv{I+I!sJX3X6)G0l0oIx_(xljNm+|DMGfL$I90i4ZK!Hx$r1>%d}BL z%(F6YtD$V4xV^}SS_qu~5DR=sUEK#9m^D;EQsI=x{8p?sq@EhTE%fG06-_j&L(607 zSt;$DY=$SRtl~W_uVw#>XV|+}AyqjFs>j`&@qGF7=X2dA^{MGtYoRz2b-_0O>0r%+ zx$&%urlS_z$F19ZA|rR(48;R_gBplDxw5QdSbirKtI__}P|9QJZwpEfP9Ytt(nfY*TqYKE5X>osWX!)qnutgBh8a9zfN=Z-Gz)!Gn*+bn~rWcD7^+ z_TTLCj2UqR^WPU25B>cs5O-@DU-3)#0=|X-$7MjSti!5a;^yF&&qzaapI7U(EHHfJ z%x5~!iaY;uzS=ba?LTG}y#TbX=E_w!0G(_BPRP zKLIYMEUlnYQRgwp+^>=y2#4r?*{{_-Ez(V8&}A3l8|oQ*xa+9o)@7S^9TI&RGjQ4w7I%UeUJT!9Ub z*yjeSD8j?TuerL)r)sj$X~*yzXiv0SuFQ`D?x}U}MVT9@^1FWR+CX|%dHDU#D56mp zyKoB&3j^rxqNk^?f5>L{xU2K#(qBV8amAQefro@BzP{p0PC=1&IX$}b@8l$%?6(33 zsMU{u3=E)Sb=)MxV;pF`O~{O)(LO#id|p>Ab^-{4r=kbxTC=S};AsR~B~Nz3m)qS%UrQi1 zoVOql@?4wGN9`RP8b5uC_GO7uu0u0UgBC4Y}TZE_47b3r!?w5OMrUV){2sQM<-Q=E|wf&2#i-DwKPUNK5}P(O852`1#FcUZQ>wM-yt_ zd8lLWZ_OmhspglXbGAdq0xZx-(}Imd2U-h|R)r?`{@S3gSe~7Yjnbn7(#r#W^txpp z`Rx;`bwPVhdd$BT%k6st4GC(he0F zzvG!sC*VLYJ0EEY`OXO`#}ML9bgq` zLhs!spUSa>!NJ3q!+dq^?Ckt}81i`cj0l**3J!eqNTRs-es-{pm6a8`>c;G~Lj14& zc<@5=4Htl@Y8*og2W8gK`yc^1=!xb3e(%f4$zev58%-GXg9<%Lw~-A3J$dIZZS#NpYYZ~n1#<2?0t=jE3>&KDr)&r z=yhNh`_oQ5e@aTq50;DL(fgX4nnXOR+pTPD8m9+qh^JlUU>L>N?Dg*#ljX-JRoK(C zIqz10LJ6sE?Lyoh-~W{b_&0}M{Tx6~_o;cI>$oyl95)Od9SaL>9vf$s0dDN~KGTxtXwo}E~+1ZI6Sn58v zJpWluugv2(RGTCSi3)zFV0MH@L@24L#W-rVmEFGCooQh8&f5ca9sVPlPtTNLfH}F{ z8Ww#OP=9Y96n6-?*T=j0{U)9Xlw=yeNm65~?d|O~b#UO9?v8&lUknO)4zQa5!{i>% z@%$B&*{)x|ooFr$g7;3oP8%AFU-s&x{P)}a>({ru4B5{4`bJ-B<|UixlGYeq(W#xMAG zGBXp23bDJ?d7=;H_SKd*p%({)h8{0sj1C8ohC+jC`*U(qRb5>@F}4|H8$h7}&Q~nZ z1K=LN%gN-Vk+H|eS?LflNKlJE?K0M>R1gZGQ|#j#;(O8QQXA0I`pRz4L4p&#y=YHV zjyRL#=18yEMy^Of;};MO8p$bfggxd*p_vW!pZa~_Mg&~wxv5v?vxih9%pR|C@v*>oKK zpGg3M#e*JScq%rUf8NPO#bEU4h0*9vKs?^rix=bxwZ+yO7thbTDkNT-p_xV--FKS} z3ot!>4H8vTl6)|HiDW3e6MbcI;2pwVYqxf=N!Fr%(6DWTCxhL(8+DGHoIEJwIKMJP zRV8KR>iYWo00KGJe=7Vsnw1GhgqB&z2aQA6W8QjYak3erlWvI{zs%b7*)S#<puc(F9U~Jsa`5v$y$d{h9}Nu+E?ec?IZ7NebKsL4gWu#@Z?poj zJA`lky^{9H3H-w84*m7@m3q{IeYEW5w$H!9ha+UarWnCi?DOr?RgQ?l%+I@kx+$2L zaNvo?9Cd|%sC>K}p%@~$g0j#Y&HU}XGZ)yji|w4y3j*H!_@A+F;u$^K4BB6CvlQW+$PT?x5F2Leje?qfaW4t zzU+&qBZBL;c~S;@00eP3-%lPIA#4LeBZRhe`1tWCul1EZtOfATp?3u_ZxeL9R+Ubqgqz(;anx87q1w*E)RnYvYR3s6j{*5xsltOI9l^*A~>; z6St;0fWC2@mE=-kV75FxF8U-zYd0g~B>%C6%@=qC?bw$%&p{w!FJ8QW(Z#T9m#NU; z!NZ5oHAx=h(%iFnKu=$v&=3hP8sq@UpCRmOVsqk<9KGd;K_)Mlc=-mlkqp z%D3w;Q&W)|(FK7fQW+3DggxSKw(ZE`b^7^F2RA}|-h~Ua@P5MDSvFQ6Z&m_N|C`8d z)kV%iW@GtKx^^a~kkDhGb^vDr%f0tp6*nlbA4Ii8ckU=~Fp!nnCn+KlezVX0!Q;ma z(CW|QBhiWD+IxOtN#y&;RP<<8)l@ECe2IrhEf*9nF!%cBz(6I8no2x7g5>}qSk8~M z6NM(Ld?l!~^ps!k1l*K}h={XVTD#HH_oJ{D_Ic1C@FsAjh-95Rfi|?fvI3TOQ9*&4 zZl8E;~rl2n%kJN%LGYyUV%NL#En*EiKkka(?dHx&d3Wf<+zPWLm zka2;UNRzBNO*B6N!t>`;`@|IcJTI9cxgMKP z$bGZ0YXu2-IdIW`(@(F{wA zgk#PJJ_{qG1E9)g_#5XAQ8Np@8=kOm_`7T0ZbpJJ`*|p{8H$%DB#_XsdX5qHBc#uc zl-DS9;g26rH?d5>G95&5?65nIVu>vU$B|G-(MV#Hl?ZMKKj^*7=&r@ZMFO*d-eTRP zA-gFd+4CyiE4*b{P}$K@06Uc+s~y|9&$~RHZP8fKZZ)Xs2i3kg;D!aWzOYUgMfX2?tpZzMi)CX?tFt# zJjTFK`GDQa`r1rNvcYyilxsA7r0Z%vgdL*uQu72S975j`v+1};ID~*yDp`#1=JCe_ z_Q76`(6)i1AN_C}0UCPqRorL=5lLbVtsmeVnwo{#3iyisDt}ZPG-x$e>$Un|XoYL> z)e^XyyV%$a&0hlX6EVgMs;WJOPVo~a{YZ8p714s5o}QgeLQp}0tGhEpF9K9G9E*Vn zD&0{Y1aKG-)Pv0^tFF!<;rRX7?7-yk@Hv<_L~FtmC9G>RGc%XpS+TJ!sJ#Gc_tEQ7 zhlq$JEKuN|#%=@G8#mC86)WOFr(i>+ynLzLvmN-NDVkpeI@G)ov_4#0sO1iH5H&Ba z(@X+ahztb{O)#fbg-*J5XiCaqNVY-}5)JkBFWV9}UGwaFH1((QkAVx-A%>@G7cl0G zFe>=Nei^Ut19P5iL_l)<%OgP7J^xN~``^D0{Mp5sTZ0V+2FHMPnb2#;u^_TLV9|TW zr_d=GiOfpQy!@Z%H~XqSehkUW6Z4DhU5Q8y0r4Xq5z2*}cN z?8bEth=vdjtb|h^f|m4A$|Wlw(gmtFg3y=HSvGnb_<;zdHZ=cN6nyI@T`%|d{|3N) z)qVdTq{Sa@HKqDb-u&LK^Zze~(Esnpa%?^F|NSCtEMWH`_;XpD=Eyz$%$N2(IZc*> z#wh@Z*y-GHN00)B8Oa^zzl#_-P$vf&c?kRxj1qIz#%7z3zdscOjUayGcv$*)AegapChD&llF#m7qS z?fRGkQs8T~sBvNPe^fGk}pzrzCE2PXOQ=qu=r(;UDMh)`+&%QKyupC8U`J$*=6 zI84N%Nga7Kf}i1lM8$2y6SB(C&!2h-iINT;JcxXe%Gej{jZ^1r#aNLxfbuX1TiyOg zaTL^}G~?ygoWepY-~qz6!bk9y_L51tp;q0GKAgx2brS*B8CanuI@&29*}MV`bNT<5Znk$4xRDW=b$>&Z`k343=Y^U3*vkI z=FLB#2&XWDfWi(-`_&!&z;0-iPsMBq(vfPifKKvE(lrRBQ@_wrHBB>>NXel|4nwRW zY*@r6k>p2Wmj-BI2(n3#&c@QR(_bbcMF_zN5h;zHBWpB>g9Ki!xgYlI*@Y`tp5?@$ zZ(cPuJp+B4NU=|lUp^Ll?&MvLNCr$mAoMYdOd647$bSVC4q9$hdMmMTVVq{ij(U_# z5Pp&nSQwPw2HX*rvk~5*DVW8&a9L61d> z1Ox2S={&K87)HO^1=fKuE5+U{$TyV}XYR`6juL2~LYXrV)IULwSM z;Ds9)jX=I6Vg1Oa3>OzyZ=utp!a@nahQ^tZ2!*MW!>0vcN!ArYq((2bbU zc;hU3{P-`xT7~h;mwEO8Us?gSVo{yl+%Wv|!-~Sh(eWa_1Q%$po0}V9t^f|OUO0u+ z)y_RUT9r7S==!i~82h|d9e`7N%5F;lfl*c>-~;jEQu!TsI0Nr*FA3muLCu%<;J6OqA$TNi`239i? z<3z~0*k#lg*9;-2sOW?rqce=+<=JLIV#%Qe5`~ZmX=WMApguIjPS`*s z6YOp3DTiCPPUPEm4S_3I!B*&Kyz%jgunXKO|n)jkdAr;DvjXQwAf5#jVNX1x^ zoSYoS>vlm{hLSDqF<;ry5svvMb=Ydrg2tZ^hK?1p*+ra0AZh|P<0~q1m^EUYDxKSr zsh>}1Kme_bd-vAkT)WSY>;&B8LXZUgh4auMqJX+DPanh(${~CaRrG_%^x6BgiRc#g zU*FwD+0aPW=2r+|mV-<}NYS9I*wnIdlP{oDbE&;BN5U990IL@K{{2Y|B*EW9^zRIj z{fCcA$0|lte_R^9jEoHI>LX>*<**eo>tzV{|;Y;rsE6_;&Cfi97IdtG7d96f#aP)3Gz4cgP2;i#Lz>vi-QBn(%z*Ch*FblVvA_ z^?#uAHb07w^F(b&qk)*Qb^G=t#4n(2D~Z=iBfUiIcbx3hFHaytK)Ns?JX)W~wE@{a&m}{M77)nZMYb%=%_T!oA{GsKX~n0Mx+tf8 z-kY98dY`TZvm(2&p1(rP%fdwrGB7|{X3_krlvD*jm)2j_r@K<^OW&A1q~m% z!8Xj%0J6B6AoHiJtcq6&5}yDftx3I|yqF9UD4wLv8In z=#(ri!(-)Nkec)N>PC~o&?L3=9vIw;b z-TE%VY4*!S2?;*Lqenp!g$N8)_#%D@T8wTO8J{(Uh7YPcuSW=`;gId52~{|Y8jZef z4*y+2EdkMb=yWR4VV!g}XyVNR3@%l}Kto7w96fnbPut4l@As2LyjE(bm4yW+5%0my z?tGbSFzt=zt4X5q_S%8s6Pan6xVma+XqZ}nI!}I$p!%vt-+WY zjkXZ80Yosj*mYcaRT=dJU5*$Xh6H@;R?);sWpoDkj=Mel{7}vanHLm*;~N3bptSXP z4dW3)opT@0EF>l+a2cBYo%tWRRj5fUGg9pB464Wef{4PTG#+OmQjhFWQboEKpm;n6FtIzhNZ1K|)CkH(JQ z&AL3kXor=OZ;eNWEog#CnHr!0mmY^d#qhr*}(&Ij~~)v!#ivA&+Vjrv|)w&$u_GFiGXjL##Y zq7lSk2znrn#xb3@`%TuINDit_S6wWq1_uX`5n(~nPCql6oXoShRqmfh@sfd#NV5GG zPq5k@9aECmhtAnZwOQt4f}7irRH_U?iOga2A}U#@BWfyIW@@V}*P%nnZ3*WZo0{IV zh1lS%+w|lR^HVuA)X;~}x&i5;W&?Np?<|1fFeX?vG3X4_2DzZey~aA&g+O@&$jjz< zzC$6xI6ZSl|0(!tM7RwTLLty~`n^{9G0|eVwmg$Fshoqz3KPcgK_PkUvVdhxP6c$S zeiT7e6GoQidLEcJ1_8_ltNp2&6qJjnTs2m0LAkRPzTDe%z@Yy|J{k=6&3|S^5llOZ zFakB#Gr(x)!D=eKZ{GTNNB}d`Tdu)1BgWwnX$(d1143I$YU&<$(ibYhf`Wpe7uDPp z7d?wFWOx}KS!2=S{ucGfl^~iuxm+M8<|y(6gu-MO>Xi0Ks|=LaDZ&XwH@1W{y|y;j3cD%W zzDFckG~IP7J;zI@;+}l`taICsYUVt-=vmhg?g^)kvTnddi$iSw+@D%I@RX{Xnv{EJ zWik7Qo4--c<*p3U<{=0LzE}nPTsiibI2Gz6|^5 z?EL&x%!gCU@mc#tz)bv!2)RWrW^a+)Eoqm{htx>QN!+aV-PuMhwGvyAc=iDiEAi_Y zY)W|j?n`I>_!80H5K%@v6!0&+^KC0K7|=C(8b=|39>jqm28l632QP4?NlI}v=d(Q3 zic=CO0yv33#sN>Sj2udiHG(~bku$!tM!F=XJ$vL4(kFaa!2io`6uqohEHYC?bou}O znVuiLgd&8b4T$<+RK(+;UO|X0L^d0{$fNbxm8*A4g+WaS4KqsFV!Cg1%pz(by0~%# zqKl@s_WR9^J;m|25dzgK!E&Nh!kZZw9=?asa;TwqX6l%7JS!pGVlQus-i=aDg%>r4 zgohq?m~v_o_87Lv48q)mQV)KVk=M}Q9}fr%UIw-z0Dm0zV#(L3(7(4G?7QgL3|orT za{@WEm%ns$ojr2&sIo&b)#gIh;`)EAHn;4YLx49P$&6+iEEJxEod>L?ptcOIPP{xp zZUSqLs$ALJ+&rML6*z3;~EH-^$(XVO8&iOj(;`?O&t9Wf$- z=^lZy25_K36i+M6{lkk20)`Sr6yfy7@=wkOFI{WO>M{dYy(fRTU+L`HkeU8sb^o%g zww$@};hpAeZ#mBdsqnlUP$0L7v@z{f&00Jz&l_XEFzA8M(r{4fmvh9ArX;k z^!Isk`=1S?-wFkxx#2YzrVN~^IOJqvojKy&%j2GyIbfD>-0vgfz0u-X_O0DE9~0R% zP+TzKZ9iQE9~rsE2Sw8p+Ec;Mgg6c#rsRogGO;TLtYY4`FWA_a;a-Wyr%+=Vn}3Q( zl9HGyZ~rJygrfn);tZ_9spY9R99wVwjO5L6WfhgQ<>4R!knCH2!X-S?Zyp-!*95{)&bUML({k} zXL||Jb}A_7k&%&>6wl5iR)VY@+)9qjn(6di#XoMXs_9)x85y+jFg^M&nV2N>Em|Wd zR*C9Dcg7x;8JrPe)7q__-Q8ndxB4IcojQN%+xV!izW$iMUHGfpo1te9I~TJM@Bbjt z(VTLr7;%ZQRaI3Dd;Hi3TtV#ns5p2x(1Y8T&EuB~dv~MRm2RwzQxB$tQ(;rJee*~1 znGUm*=UrU#j3#5ikOBYw5SR5&?FSvO28tR{xih&W1LLv)J4!mpZms=s7bFgGVY<%ytp%~L|B>tHs{>k zPePvyd-^n};lOQL02O?LYHrmr*a(PIPi3<*Qp!yo)8pcLWm%zZR?K38`@3H1=zS$& zFeW`eKYy8~1cQtu*1p@SU1nnio3?AG@UeWK-b%dqg%X0vE9$msSJ$k>Gl>lSg6O-d z1>e4X3uZruJW*JD{39l#TXN3~DOr7q`N&!l&G!}0>+oh_?J>bzR8Uk5xWx`Q0xlgC z^CUAP1M1EWv_-!qS7(=3F2@&E2olj|n?EG5)0e{pNE8_n1$lX@rluw#aDy`XYlT0@ z$Ah;q9wla-FeCNYjlz1_>#oerSJvS0d--%pcrODAx@?+O62|_hSE(rI*mq!DdIpoL z>NI1Rd81%k0Y)#tx2Z?~=I2ph)C~;MbyTJ%CTQ{T=#oRA_CzonWT)19%inv5$iI2> z=IM{v%BH66&CNXwkayts@B47k2~zhiFRvDyWN>UO2!aZP z-t5c!9nuV1Jb~&<7klkSfXso`gg~7ju$h42eudO~0=oJEBDey^`2Z3uk$wvZ3Oa*% zB(!EhYG*v^wQ=K3Uw{H^U63*%jF;O$-U)gA z`WW<&Jt*C1;6wyqW3jM;7-swM@nbFghv`=D4MqqO_p-Bv;e(d^}ub#*o{W5B?B5G6b^vPn_|>XJzm2{1eI3 z=LefoE*mFcTA_65qrW62{5H2i9#%2=pnhn`^wj$N=VLrPBCoIG zgq=fqhCEMfFKi~f5#SK262zhN0A-0?w%HJ+%2uhUsfV%~4%p3-LNM=;gc$)LVPQFh zFCrFZK*$~-A%M748(yV>lgoMJ2-TiFd$!WkpNGs1>E1zTRSKmP0|;c0BHqf`oHI0J ztFEpliIp;?Jn$RAKuc9?D?P@3g_c(&^)vTEwkJS_jyW$sn%{)tr9PE#Y;i;Qaq0@b zse77f_h4f*H8)S)O5G?!wY(3B4o%|d>4%y<@3qz>}glC|nquf0$JNIor#PmF;{sZuxP4$8uuYUHsUp?dL;SeSgTLo;UlwdtQB8SoVbXJ zh*h$UYMAJ2bar-i_18?>?frMVKRH;q_-lVEAMn*m1e2U9CYg-y>_jbvF;p~JEr37) zoB~rYF6vYzNoe>AfC)r+(}t;$wt3q~*iDRkV0(`9lY@q`B7!j|OHutp(tS3C*#sKK zUF=yiNChZ$fA}f*+SGqv18e{zn0Y~QPdlBMH+@RS!=H+t582A&QF50pombC~ESOBm z1qFK{qlCNtC>$HJ1zS&e_fB2#9dbu~u0B+(wt1cm~q*Y7p=>3VP27*J8M>2Op3n1FzSn_EHO z65h&T;YS)rtAdb9Sdv8LAn+9fg9(Gl-TS>$-FbD!W;bWQqg^j}{dIM99jX@K2B;P) z!3d?>v8X14Xt@!%Z@Yi}`qlEH7Bt)!Hl##}dib#a!RUYkN|!HR{)#C`lrQIR(`PbU zA)h^d@!}!2m149cKlxX2}kmVor5v{fs04xj1HPtwwrdEmMMPW>$h*~5w)Aa>pcP% zzG)UGl)!Mkhg2k_FK5SV)^C23L42)`o+Io)mG z^urDB(&0BMWkyQSHTU={dS6J(+HbD}LXSFr((a#*ZD^|l#0{d~Aszl>cn>{v3gRV9 z5c&eE>;)Sc&+_e*?ttk{@Jc@8@+;pn?+zzJ&3__lwF4pl8QGf1s4nB&tP$gdqMJ#_ zr3=BoOz=v9TMJz}ai`q$)3kh zy+kw)L#bjcczRSf;gUmniE#@H5w6{Z#t=4f?J5)gxwCNxKH&fU^Z$SA@GvazZa~0r z%coB}hzun<97&de5^<*ec$>&w)NH({3H=ltd;3&H!nHL4ikwI5~Sz znDFQIfO}8@rswBtp+^vcPf<}3$B7fVl92(51kpwIa2uu-2E-65P;x_2QwhuChzH4 zHm}04v+@4G-@l){>p&O+6t#6P$|7@nE~kb8`T76zpPBbTZI<4bv4KYbb}GdMj_j-= zzA>{N_CZ#moiAECF?fdyz-+q&>o&Xug@com90Iz>T1Aof_kjj~|nCbaamG zrkkVpIsP7$mDgXGc@2th=CV3{>j6j0Riz~lPb8o zzt4*c=oP}UaK<7MOf>G=Z@}t`s;UlRLu$nXZ&oiQs>|Z9G%dV~WjC~F%od#k^=iX= z9m*2+0WyN2CKeUx+TUizYn>h;1%D}P5-{j>T3QvXAPqyq%r9HSo+%VystDrCAc8Pa zZj2iH>T%1RgcE%+{xrXXlo&1TeS5@=Uh-E9Oc<0Nx1Ja;oy~$j<7g*nJAPHbDp5 zY+?v}DU0T-C@?{r$E!Rhy-ZG>I)(Wi4u|_#4oW#$ZSB1P)Wpj=q58qF z8w=&-<0C{pqkTK`9hBh*QFSPAa=vFpwi%l+aapJUXKG2sB%RCV4mIMg{zxj1~I^(xJ+o?iALI^(#@NEc3-~pO+o_?lL z3*Lr9khb5g@sBX60uEI9;|Ci;T;gM6V?q{9yVv?R*VzfL4kUMrQ|Syfa1)6H!%ab5 z{c(}>CFFOI?V0Jd%Ni`1DyL|>_OCo&AHgm}BHFUe&XX#gTcsc1H31UtN*hKHnXdx< z35kl@-H_{gUV0SpM;G6W8|iyMCdZJV#e>odwUSJ%^tbAIsh_VeUKqNQfx!pG^v+z1 z1g3j3U6{cVAL0&>a+Zchj!gdRAF-*Hx6-ky7rI;u*5{Ffs6#=%};38tr#5;IvzZI+W!csIf!SmT=b>Z%P ze>vq;O{XmN9~nSWhDaHF=24;e+klPn4(A&7_BPp?DiXw{T1;adK4f5YDN70O8t$_r zmo1fsC?Q;HRP54d@*O!LG8DHmag5+>_4R?lnh4XvmqRwW-2?~tYp&I!J|tWW^zJNk zBt?G~;Ux~UI} z{Kf>Y(oXEm0pewx_(f%erAH_*0I3R|p3+1*AHex+qWVb7o4DB6L|g_ApMCOeMh$}o zR5^!gyw&d^0&QgjqksN9AQWpbG?EXfLK(yOpFgjd%w6;2QC{%I1V27oK7e}SH5^HK zd0O^y;O=R-wyC1IaS;ch|)1fdfOd$XeQXf<&yp3x+2{A1N z#6$=M3IZr`K)eF9({Z+OALS<^>@m4P{Cd&$8|wP{LBtD`;TxJ7xVq-|C5dEe2O};O zROpJV$6YAm%5hV1IK*gZ*o@Ziwq)Wz2-PQ5a~tVhZf;Hg=EhA#Mn^*rCH;@q&OEH< ze2?QNL_;_!CA*VScDEuGDhHK@Lg6&ICrb;8vSdOWj83+u8KT>0kSz&OhPF$SOs*^; zP1B(cLm4faXmrSZef@Qx=RWtp`wtJ#L-qT8zn|s3oi4HVnevCP*h#WVra40JUdi&9 z?cwo-=(=z{)+SwHjsnhq;@NMgJ8_UTd^cbOacR#W;El}OLbDZOQ3o_+O-l6bF3j!% zsbpi3gj7V?j~i!%vFE!zn^qIAP;~R)#mvlv@#fsDVkqiNXnT<-QK>o3!oM^q=<)^| z)nEf*?8h}i!rFG?)3BV)`k{VreEbX)2g1BWT>`KWZf<6bvgAot{1DWC#o^l8TC4b; z_GsY8+o!!bvCf7>;5#qud+(=q{lmGfWmbOktr0-Vu~`deGei9Kv9A3C0869p&||KQ zjJ`&-)xX!YhI|TZLKnxFzgL1C%lHN=4J9E@3-Yr{T$U}fM7^^QWK0RIRu&x=}*w~Iok8K9~H1;c7>~nyk%H2ZDz9awl=}%9I`fk%5296_e1OiL?D`wlTo%Im2LSNu{IJ`6uRbn*tZV{ z@1#sNpjx_O1eP3O{Bhpu(xc%;#~YeGk0#Q28L36OaJ7i(3-7qOtwryicf--t-}I*D zG?A;=<&*B|rIt`2#vB&6_vrGxqhr&fz^#+Pacml5~ZGA*_B5sQ-nW&|8FX+009&w75SIK041kTXPY)b+ZbAE>rG zHa-}zvg~A#NAR77#{yMb-S^SqkhIjrs-4kyUZ!m9feXfwH+5W-Q4UTbIP2d!FE~k*P|^Ho5=jd8?y)siqLspd98L(Jgej3pyU zc(v)9+KQ7@7Xb%T;RHPAGk^ZD0gekI@yVu^3xfO9REd8>J6nWB-YfojBsfCnpr|l1L2X;xhs`jr)KRYbk~s zEl`N|YgjT>-XcX*I%MQXud2v1An>#|X(#Igo%d-`YZ}t0{KGnO%D9-o;rzJ=Oo~?i46ut)m1lLw%S^&ihjZ59ProY$J zs3ttw&=IPK(y$X|V)Dn9xp@>j3XhmctE#G+M0W!rYb*dkbpe4DiUw$^P3`YrI{WT9 ztP=IKsHZ3qCi>T2U30?$rN>`Vt|4%0NR3%3DOWGoT14oCOM=hd1M6-d%G@6Rf@ z85DdUU$=(r*&=2cHCIX>m6Pa`m@x+rm?e*j%QcqzB!8Qbpn_5yfba7!q=Lsa(FM8& zr+I#UqK;#-u{-_se&Jai2^2+HTyS}1QkK6dvm9*brhg^*GHk&p3B3p2vTmN9p2w#S zROjS4ioZnYX%^hdv57!D1bjKcT)B7e-kSRQy@;hlvK4$4F|EhM#ApLe! zvUB(DZZRL;%s>R|p4*+}sD@fpnmFJWnwkKwu+p*X6qw6$emom}8K?xqKjhoj~ z!EtD(I2KYd__t-@lfYLIcHQjwG^siUgJ>Xn7j2KuyoVyRDdOCQ*!3+5k>!|u{`x#J z@qrYARJ*kfoc;=iR`PYDm$2N!0o*?m{AYMD1RVh*)@a9?Xf*D*jgSH6;!oVC@n5Iq zoxpf3b8zT``e8cUYQ?}opBLK))h*csRn7DD9YS!{`F#7d^mN;b;b%{uR_i66){odd zO19iqcw@O&1~+cp&@Ow6XVb#Us#vM#O~~T#;lr2u_tX^`&lU(FKYk%l^Knh)7x3?ECFTsK$nIp6O5okP!&^EI8MlZ^<-ZwvO9!Wg%-HEfL2_MFat5Wvx zofoa0z_mUAuCO*c7^TGu3%b)fH7RsuDAe5{r>N0P3r`l?mQaxB{tg76^gu$#ZLU2$ z=k4G}<>lIM%oc4G)o*bInSjTR9JyBgOZnEVTb-WFPE=Qp7LD*v=#nN5xeUslAVe{U ztwx%6HXzr}G3(Kqh=}XV>;fk)EOZm_Mr@yZ^-s^}@SLt^Y7rDbjaJ)%+z{SOoo3jm zQC~K`+wK<-5GM6I;AsgR=RI%U4%QwKgLe%eNo;EQQ+ugv?-y;RB_uFNc5sz?&z);g zzx*weOD6H%07dS(3T6{m?Ch>zzWmwL$Vf$>!~fEi!D##RR8>NP5hNw+s$tz~S#%MP z&8S4q5C>cpIQCNXsaJpWYrlH1Jx#YoQ_tcdqA5*vif-J@&qJY?Jl z{Wq%fpC}LCr+R5ISQ&j^_!va0kcpYu%-AYhXhGPXxs_hbxvQ-b)$Tzc62#iZ^Jx~x zE?%5dx%n|NpB+Fq;!`9T*b~&jaaBM;)oi<+Pkp7?%~2#Q2u!Z-+`Ge; zvbGUogmB-<`%%1pc!uY#C&9xzxNeASdA>jihuZ!x2m^%ebg9;Bq*20cyyb4vPAtPn zJ@in3ifn{gDb8{DgDpt?p%LzXQhE)F(%a9^Dhy0bUp$tiFANO@*E$x(C0jghPbIfs zfMyaUVxZFU%jJ(Brxp~{WJPFxl*=QF7%_+1va@)nKZ5ph2@SOo!9U^%B==eX6CD>xqEdqj7mPRx1||kGMts zKrT!4`6Xcw-pi@dPU0wVv4BDe)MKIh8T>;cAywT0su`G75fy0*eytURwKIuc~*OxB- zsCKs^=}Y3`{9IsWFn`PnVa|Jaz)RGY;sE_x6WB$ZpP^3Tt^PlM|J1X!NzZu8vfG|~ Q6p_SZ+AR4wH|4f}1F`F)-T(jq literal 12411 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 diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index e1746b3..7e58f02 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -12,16 +12,21 @@ def test_picocr(): # Test single file OCR results, errors, has_error = client.picocr("tests/image/sample.png") assert not has_error - assert len(results) == 1 - assert isinstance(results, list) - assert isinstance(results[0], list) + assert isinstance(results, list) # 返回值应该是列表类型 + assert len(errors) == 1 + assert isinstance(errors[0], dict) + assert "error" in errors[0] + assert "path" in errors[0] # Test multiple files OCR file_list, _ = get_files("tests/image", "img", None) results, errors, has_error = client.picocr(file_list) - assert len(results) == len(file_list) - for result in results: - assert isinstance(result, (list, str)) + assert len(errors) == len(file_list) + assert isinstance(results, list) # 返回值应该是列表类型 + for error in errors: + assert isinstance(error, dict) + assert "error" in error + assert "path" in error def test_piclayout(): @@ -29,20 +34,8 @@ def test_piclayout(): # Test single file layout analysis results, errors, has_error = client.piclayout("tests/image/sample.png") assert not has_error - assert len(results) == 1 - assert isinstance(results, list) - assert isinstance(results[0], list) - - # Test invalid file type - try: - client.piclayout("tests/image/sample.txt") - assert False, "Should raise ValueError for invalid file type" - except ValueError as e: - assert "Unsupported file type" in str(e) - - # Test non-existent file - try: - client.piclayout("tests/image/nonexistent.png") - assert False, "Should raise ValueError for non-existent file" - except ValueError as e: - assert "File not found" in str(e) + assert isinstance(results, list) # 返回值应该是列表类型 + assert len(errors) == 1 + assert isinstance(errors[0], dict) + assert "error" in errors[0] + assert "path" in errors[0] From 83d100cc0587bcc5010ba20dfbbc510a9855bc07 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Wed, 19 Feb 2025 18:02:37 +0800 Subject: [PATCH 05/46] [Doc2X] Add support for merge_cross_page_forms --- src/pdfdeal/Doc2X/ConvertV1.py | 3 +-- src/pdfdeal/Doc2X/ConvertV2.py | 14 +++++++++-- src/pdfdeal/doc2x.py | 43 +++++++++++++++++----------------- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV1.py b/src/pdfdeal/Doc2X/ConvertV1.py index 2092dbe..d4d5b3b 100644 --- a/src/pdfdeal/Doc2X/ConvertV1.py +++ b/src/pdfdeal/Doc2X/ConvertV1.py @@ -10,8 +10,7 @@ Base_URL = "https://api.doc2x.noedgeai.com/api" warnings.warn( - "V1 API is deprecated and will be removed in a future version. " - "Use V2 API instead.", + "V1 API is deprecated and will be removed in a future version. Use V2 API instead.", DeprecationWarning, stacklevel=2, ) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 094697e..2f6fafa 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -247,7 +247,11 @@ async def uid_status( @async_retry() async def convert_parse( - apikey: str, uid: str, to: str, filename: str = None + apikey: str, + uid: str, + to: str, + filename: str = None, + merge_cross_page_forms: bool = False, ) -> Tuple[str, str]: """Convert parsed file to specified format @@ -256,6 +260,7 @@ async def convert_parse( uid (str): The uid of the parsed file to (str): Export format, supports: md|tex|docx|md_dollar filename (str, optional): Output filename for md/tex (without extension). Defaults to None. + merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. Raises: ValueError: If 'to' is not a valid format @@ -271,7 +276,12 @@ async def convert_parse( if isinstance(to, OutputFormat): to = to.value - payload = {"uid": uid, "to": to, "formula_mode": "normal"} + payload = { + "uid": uid, + "to": to, + "formula_mode": "normal", + "merge_cross_page_forms": merge_cross_page_forms, + } if filename and to in ["md", "md_dollar", "tex"]: payload["filename"] = filename if to == "md_dollar": diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index a48cb2c..b3fd70c 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -1,6 +1,6 @@ import asyncio import os -from typing import Tuple, List, Dict, Union, Optional +from typing import Tuple, List, Union, Optional import logging from .Doc2X.ConvertV2 import ( upload_pdf, @@ -97,11 +97,14 @@ async def convert_to_format( output_path: str, output_name: str, max_time: int, + merge_cross_page_forms: bool = False, ) -> str: """Convert parsed PDF to specified format""" logger.info(f"Converting {uid} to {output_format}...") - status, url = await convert_parse(apikey, uid, output_format) + status, url = await convert_parse( + apikey, uid, output_format, merge_cross_page_forms=merge_cross_page_forms + ) for _ in range(max_time // 3): if status == "Success": logger.info(f"Downloading {uid} {output_format} file to {output_path}...") @@ -250,6 +253,7 @@ async def pdf2file_back( output_format: str = "md_dollar", convert: bool = False, oss_choose: str = "auto", + merge_cross_page_forms: bool = False, ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -403,6 +407,7 @@ async def convert_file(index, name): output_path=output_path, output_name=name_fmt, max_time=self.max_time, + merge_cross_page_forms=merge_cross_page_forms, ) all_results.append(result) all_errors.append("") @@ -517,31 +522,25 @@ def pdf2file( convert: bool = False, oss_choose: str = "always", ocr: bool = False, + merge_cross_page_forms: bool = False, ) -> Tuple[List[str], List[dict], bool]: - """Convert PDF files to the specified format. + """Convert PDF file to specified format Args: - pdf_file (str | List[str]): Path to a single PDF file or a list of PDF file paths. - output_names (List[str], optional): List of output file names. Defaults to None. - output_path (str, optional): Directory path for output files. Defaults to "./Output". - output_format (str, optional): Desired output format. Defaults to `md_dollar`. Supported formats include:`md_dollar`|`md`|`tex`|`docx`, will return the path of files, support output variable: `text`|`texts`|`detailed`(it means `string in md format`, `list of strings split by page`, `list of strings split by page (including detailed page information)`) - convert (bool, optional): Whether to convert "[" and "[[" to "$" and "$$", only valid if `output_format` is a variable format(`txt`|`txts`|`detailed`). Defaults to False. - oss_choose (str, optional): Now can upload files directly through API or through OSS link given by API. Acceptable values: `auto`, `always`, `never` (it means `Only >=100MB files will be uploaded to OSS`, `All files will be uploaded to OSS`, `All files will be uploaded directly`). Defaults to "always". - ocr (bool, optional): This option is deprecated and will not be used. + pdf_file (str or list): The path of the PDF file or a list of PDF file paths + output_names (List[str], optional): The output file names. Defaults to None. + output_path (str, optional): The output path. Defaults to "./Output". + output_format (str, optional): The output format. Defaults to "md_dollar". + convert (bool, optional): Convert "[" and "[[" to "$" and "$$". Defaults to False. + oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". + ocr (bool, optional): Whether to use OCR. Defaults to False. + merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: - 1. A list of successfully converted file paths or content. - 2. A list of dictionaries containing error information for failed conversions. - 3. A boolean indicating whether any errors occurred during the conversion process. - - Raises: - Any exceptions raised by pdf2file_back or run_async. - - Note: - This method provides a convenient synchronous interface for the asynchronous - PDF conversion functionality. It handles all the necessary setup for running - the asynchronous code in a synchronous context. + - List[str]: List of output file paths + - List[dict]: List of error messages + - bool: Whether there was an error """ if ocr: import warnings @@ -551,7 +550,6 @@ def pdf2file( DeprecationWarning, stacklevel=2, ) - return run_async( self.pdf2file_back( pdf_file=pdf_file, @@ -560,5 +558,6 @@ def pdf2file( output_format=output_format, convert=convert, oss_choose=oss_choose, + merge_cross_page_forms=merge_cross_page_forms, ) ) From 9c00c8e8005b52fd0730158c1130d7d3f28cf4e6 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Wed, 19 Feb 2025 22:09:23 +0800 Subject: [PATCH 06/46] Update to 1.0.3 --- pyproject.toml | 14 +++++++------- src/pdfdeal/Doc2X/ConvertV2.py | 7 +++++++ src/pdfdeal/doc2x_img.py | 30 +++++++++++++++++++++++++++--- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2a5db4f..7b5f1b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [project] name = "pdfdeal" -version = "1.0.2" -authors = [{ name = "Menghuan1918", email = "menghuan@menghuan1918.com" }] -description = "A python wrapper for the Doc2X API and comes with native texts processing (to improve texts recall in RAG)." +version = "1.0.3" +authors = [{ name = "noedgeai", email = "support@noedgeai.com" }] +description = "Python SDK for Doc2X API and some native texts processing (to improve texts recall in RAG)." readme = "README.md" requires-python = ">=3.8" classifiers = [ @@ -35,10 +35,10 @@ dev = [ ] [project.urls] -Issues = "https://github.com/Menghuan1918/pdfdeal/issues" -Documentation = "https://menghuan1918.github.io/pdfdeal-docs/" -Source = "https://github.com/Menghuan1918/pdfdeal" -Changelog = "https://menghuan1918.github.io/pdfdeal-docs/changes/" +Issues = "https://github.com/NoEdgeAI/pdfdeal/issues" +Documentation = "https://noedgeai.github.io/pdfdeal-docs" +Source = "https://github.com/NoEdgeAI/pdfdeal" +Changelog = "https://noedgeai.github.io/pdfdeal-docs/changes" [project.scripts] doc2x = "pdfdeal.CLI.doc2x:main" diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 2f6fafa..dd9a429 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -501,6 +501,13 @@ async def parse_image_layout( if zip_path is None: base_name = os.path.splitext(os.path.basename(image_path))[0] zip_path = f"{base_name}picture.zip" + if not os.path.exists(zip_path): + os.makedirs(os.path.dirname(zip_path), exist_ok=True) + # Check zip_path is a file path and not exists + if os.path.isfile(zip_path): + raise FileError("zip_path already exists! Please check the path") + if not zip_path.endswith(".zip"): + raise FileError("zip_path must end with .zip") # Check file size if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB raise FileError("Image file size exceeds 3MB limit") diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 450762b..cde8f8b 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -6,7 +6,7 @@ from .FileTools.file_tools import get_files import os -logger = logging.getLogger("pdfdeal.doc2x_img") +logger = logging.getLogger("pdfdeal.doc2x") class ImageProcessor: @@ -68,17 +68,26 @@ async def process_image( raise ValueError("process_type must be one of: 'ocr', 'layout'") try: + logger.info(f"Starting {process_type} processing for {image_path}") if process_type == "ocr": await self._check_rate_limit() tex_lines, uid = await parse_image_ocr(self.apikey, image_path) + logger.info( + f"Successfully completed OCR for {image_path} with uid {uid}" + ) return tex_lines, uid, True else: await self._check_rate_limit() pages, uid = await parse_image_layout(self.apikey, image_path, zip_path) + logger.info( + f"Successfully completed layout analysis for {image_path} with uid {uid}" + ) + if zip_path: + logger.info(f"Layout results saved to zip file at {zip_path}") return pages, uid, True except RateLimit as e: - logger.error(f"Rate limit exceeded: {str(e)}") + logger.error(f"Rate limit exceeded while processing {image_path}: {str(e)}") raise except Exception as e: logger.error(f"Error processing image {image_path}: {str(e)}") @@ -111,6 +120,7 @@ async def process_with_semaphore( index: int, ) -> tuple[int, str, tuple[list, str, bool]]: async with semaphore: + logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") result = await self.process_image(path, process_type, zip_path) return index, path, result @@ -120,6 +130,7 @@ async def process_with_semaphore( processed_results = [[] for _ in range(len(image_paths))] success_status = {} + success_count = 0 for result in results: if isinstance(result, Exception): logger.error(f"Failed to process a file: {str(result)}") @@ -128,7 +139,12 @@ async def process_with_semaphore( index, path, (result_list, _, success) = result processed_results[index] = result_list if success else [] success_status[path] = success + if success: + success_count += 1 + logger.info( + f"Batch processing completed. Successfully processed {success_count}/{len(image_paths)} images" + ) return processed_results, success_status async def pic2file_back( @@ -170,18 +186,26 @@ async def pic2file_back( # Convert results to final format final_results = [] + success_count = 0 for i, path in enumerate(pic_file): if not success_status.get(path, False): failed_files.append({"error": "Processing failed", "path": path}) final_results.append("") has_error = True + logger.error(f"Failed to process {path}") else: failed_files.append({"error": "", "path": ""}) final_results.append(results[i]) + success_count += 1 + logger.debug(f"Successfully processed {path}") if has_error: logger.error( - f"Failed to process {len([f for f in failed_files if f['error']])} file(s)" + f"Processing completed with errors: {len([f for f in failed_files if f['error']])} file(s) failed" + ) + else: + logger.info( + f"Processing completed successfully: {success_count} file(s) processed" ) return final_results, failed_files, has_error From 21a1e851efc9ee0412e3f3695519418214363125 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Wed, 19 Feb 2025 23:09:34 +0800 Subject: [PATCH 07/46] Add default limit --- src/pdfdeal/doc2x.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index b3fd70c..4a7397b 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -185,7 +185,7 @@ def image_processor(self) -> ImageProcessor: def picocr( self, pic_file, - concurrent_limit: Optional[int] = None, + concurrent_limit: Optional[int] = 5, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with OCR From 018e09f05d7f1f7b21d7c2b7ec303b5ff6536bd3 Mon Sep 17 00:00:00 2001 From: noedgeai Date: Wed, 4 Jun 2025 17:15:34 +0800 Subject: [PATCH 08/46] delete ocr --- pyproject.toml | 14 +- src/pdfdeal/Doc2X/ConvertV1.py | 8 +- src/pdfdeal/Doc2X/ConvertV2.py | 130 +++++++++++++++- src/pdfdeal/FileTools/file_tools.py | 48 +----- src/pdfdeal/doc2x.py | 100 ++++++++---- src/pdfdeal/doc2x_img.py | 232 ++++++++++++++++++++++++++++ src/pdfdeal/doc2x_legacy.py | 10 +- tests/image/sample.png | Bin 12411 -> 26885 bytes tests/image/test/sample1.png | Bin 12411 -> 26885 bytes tests/test_pic2file.py | 69 ++------- 10 files changed, 456 insertions(+), 155 deletions(-) create mode 100644 src/pdfdeal/doc2x_img.py diff --git a/pyproject.toml b/pyproject.toml index 2a5db4f..7b5f1b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [project] name = "pdfdeal" -version = "1.0.2" -authors = [{ name = "Menghuan1918", email = "menghuan@menghuan1918.com" }] -description = "A python wrapper for the Doc2X API and comes with native texts processing (to improve texts recall in RAG)." +version = "1.0.3" +authors = [{ name = "noedgeai", email = "support@noedgeai.com" }] +description = "Python SDK for Doc2X API and some native texts processing (to improve texts recall in RAG)." readme = "README.md" requires-python = ">=3.8" classifiers = [ @@ -35,10 +35,10 @@ dev = [ ] [project.urls] -Issues = "https://github.com/Menghuan1918/pdfdeal/issues" -Documentation = "https://menghuan1918.github.io/pdfdeal-docs/" -Source = "https://github.com/Menghuan1918/pdfdeal" -Changelog = "https://menghuan1918.github.io/pdfdeal-docs/changes/" +Issues = "https://github.com/NoEdgeAI/pdfdeal/issues" +Documentation = "https://noedgeai.github.io/pdfdeal-docs" +Source = "https://github.com/NoEdgeAI/pdfdeal" +Changelog = "https://noedgeai.github.io/pdfdeal-docs/changes" [project.scripts] doc2x = "pdfdeal.CLI.doc2x:main" diff --git a/src/pdfdeal/Doc2X/ConvertV1.py b/src/pdfdeal/Doc2X/ConvertV1.py index 2092dbe..1e6bad0 100644 --- a/src/pdfdeal/Doc2X/ConvertV1.py +++ b/src/pdfdeal/Doc2X/ConvertV1.py @@ -10,8 +10,7 @@ Base_URL = "https://api.doc2x.noedgeai.com/api" warnings.warn( - "V1 API is deprecated and will be removed in a future version. " - "Use V2 API instead.", + "V1 API is deprecated and will be removed in a future version. Use V2 API instead.", DeprecationWarning, stacklevel=2, ) @@ -151,7 +150,6 @@ async def get_limit(apikey: str) -> int: async def upload_pdf( apikey: str, pdffile: str, - ocr: bool = True, translate: bool = False, language: str = "zh", model: str = "deepseek", @@ -161,7 +159,6 @@ async def upload_pdf( Args: apikey (str): The key pdffile (str): The pdf file path - ocr (bool, optional): Do OCR or not. Defaults to True. translate (bool, optional): Do translate or not. Defaults to False. language (str, optional): The language of the file. Defaults to "zh", only valid when translate is True. model (str, optional): The model of the file. Defaults to "deepseek", only valid when translate is True. @@ -185,7 +182,6 @@ async def upload_pdf( raise FileError("PDF dile size should be less than 100MB!") except Exception as e: raise FileError(f"Open file error! {e}") - ocr = 1 if ocr else 0 translate = 2 if translate else 1 timeout = httpx.Timeout(120) if translate == 1: @@ -194,7 +190,6 @@ async def upload_pdf( url, headers={"Authorization": "Bearer " + apikey}, files=file, - data={"ocr": ocr, "parse_to": translate}, ) else: async with httpx.AsyncClient(timeout=timeout) as client: @@ -203,7 +198,6 @@ async def upload_pdf( headers={"Authorization": "Bearer " + apikey}, files=file, data={ - "ocr": ocr, "parse_to": translate, "lang": language, "model": model, diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index f0821b8..d4a4725 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -6,11 +6,29 @@ from .Exception import RateLimit, FileError, RequestError, async_retry, code_check import logging from .Types import OutputFormat +import base64 Base_URL = "https://v2.doc2x.noedgeai.com/api" logger = logging.getLogger("pdfdeal.convertV2") +# Add new error codes for image processing +IMAGE_ERROR_CODES = { + "parse_quota_limit": "可用的解析额度不足 (Insufficient parsing quota)", + "parse_error": "解析错误 (Parsing error)", + "parse_file_invalid": "解析文件错误或者不合法 (Invalid or illegal image file)", + "request_limit_exceeded": "请求频率超过限制 (Request frequency limit exceeded)", + "parse_file_too_large": "单个图片大小超过限制 (Image size exceeds limit)", +} + +IMAGE_ERROR_SOLUTIONS = { + "parse_quota_limit": "当前可用的额度不够 (Current available quota is insufficient)", + "parse_error": "图片内容无法解析,请反馈给我们 (Image content cannot be parsed, please provide feedback)", + "parse_file_invalid": "无法解析这个图片,一般是图片不合法 (Cannot parse this image, usually due to invalid format)", + "request_limit_exceeded": "请等待一段时间后再请求 (Please wait for a while before making another request)", + "parse_file_too_large": "当前允许单个图片大小 <= 3M,尝试对图片进行压缩 (Current single image size limit is <= 3M, try compressing the image)", +} + @async_retry(timeout=200) async def upload_pdf(apikey: str, pdffile: str, oss_choose: str = "always") -> str: @@ -229,7 +247,11 @@ async def uid_status( @async_retry() async def convert_parse( - apikey: str, uid: str, to: str, filename: str = None + apikey: str, + uid: str, + to: str, + filename: str = None, + merge_cross_page_forms: bool = False, ) -> Tuple[str, str]: """Convert parsed file to specified format @@ -238,6 +260,7 @@ async def convert_parse( uid (str): The uid of the parsed file to (str): Export format, supports: md|tex|docx|md_dollar filename (str, optional): Output filename for md/tex (without extension). Defaults to None. + merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. Raises: ValueError: If 'to' is not a valid format @@ -253,7 +276,12 @@ async def convert_parse( if isinstance(to, OutputFormat): to = to.value - payload = {"uid": uid, "to": to, "formula_mode": "normal"} + payload = { + "uid": uid, + "to": to, + "formula_mode": "normal", + "merge_cross_page_forms": merge_cross_page_forms, + } if filename and to in ["md", "md_dollar", "tex"]: payload["filename"] = filename if to == "md_dollar": @@ -369,3 +397,101 @@ async def download_file( f.write(response.content) return file_path + + +async def image_code_check(code: str, trace_id: str = None): + """Check image processing error codes and raise appropriate exceptions + + Args: + code (str): The error code to check + trace_id (str, optional): The trace ID for debugging. Defaults to None. + + Raises: + RateLimit: When rate limit is reached + RequestError: When a known error occurs + ValueError: When API key is unauthorized + Exception: When an unknown error occurs + """ + if code == "request_limit_exceeded": + raise RateLimit(trace_id=trace_id) + if code in IMAGE_ERROR_CODES: + raise RequestError(code, trace_id=trace_id) + if code == "unauthorized": + raise ValueError("API key is unauthorized. (认证失败,请检测API key是否正确)") + if code not in ["ok", "success"]: + raise Exception(f"Unknown error code: {code}, Trace ID: {trace_id}") + +@async_retry() +async def parse_image_layout( + apikey: str, image_path: str, zip_path: str = None +) -> tuple[list, str]: + """Parse image layout + + Args: + apikey (str): The API key + image_path (str): Path to the image file + zip_path (str, optional): Path to save the zip file containing images. Defaults to image_name + 'picture.zip'. + + Raises: + FileError: If file size exceeds limit or file cannot be opened + RateLimit: If rate limit is reached + RequestError: If parsing fails + Exception: For any other errors + + Returns: + tuple: A tuple containing: + - list: List of page dictionaries with page dimensions and md content + - str: The unique identifier (uid) of the request + """ + if zip_path is None: + base_name = os.path.splitext(os.path.basename(image_path))[0] + zip_path = f"{base_name}picture.zip" + if not os.path.exists(zip_path): + os.makedirs(os.path.dirname(zip_path), exist_ok=True) + # Check zip_path is a file path and not exists + if os.path.isfile(zip_path): + raise FileError("zip_path already exists! Please check the path") + if not zip_path.endswith(".zip"): + raise FileError("zip_path must end with .zip") + # Check file size + if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB + raise FileError("Image file size exceeds 3MB limit") + + url = f"{Base_URL}/v2/parse/img/layout" + + try: + with open(image_path, "rb") as f: + file = f.read() + except Exception as e: + raise FileError(f"Open file error! {e}") + + async with httpx.AsyncClient(timeout=httpx.Timeout(30), http2=True) as client: + response = await client.post( + url, + headers={"Authorization": f"Bearer {apikey}"}, + content=file, + ) + + trace_id = response.headers.get("trace-id", "Failed to get trace-id") + + if response.status_code == 429: + raise RateLimit(trace_id=trace_id) + + if response.status_code != 200: + raise Exception( + f"Image layout parsing failed: {response.status_code}:{response.text}" + ) + + data = response.json() + await image_code_check(data.get("code", ""), trace_id=trace_id) + + # Save zip file if path provided and zip content exists + if zip_path and data.get("data", {}).get("convert_zip"): + zip_content = base64.b64decode(data["data"]["convert_zip"]) + with open(zip_path, "wb") as f: + f.write(zip_content) + + return ( + data.get("data", {}).get("result", {}).get("pages", []), + data.get("data", {}).get("uid", "Failed to get uid"), + ) diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index c1a5b49..441db68 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -56,52 +56,6 @@ def clear_cache(): if os.path.isfile(file_path): os.remove(file_path) - -def extract_text_and_images(pdf_path, ocr, language=["ch_sim", "en"], GPU=False): - """ - Extract text and images from a PDF file - """ - from pypdf import PdfReader - from PIL import Image - - Text = [] - - # Open the PDF file - with open(pdf_path, "rb") as file: - reader = PdfReader(file) - - for page in reader.pages: - # Get the text content of the page - text = page.extract_text() - temp_image_folder = os.path.join( - os.path.expanduser("~"), ".cache", "pdfdeal", "pictures" - ) - os.makedirs(temp_image_folder, exist_ok=True) - clear_cache() - # Get the images on the page - images = page.images - for id, image in enumerate(images): - image_data = image.data - image_stream = io.BytesIO(image_data) - pil_image = Image.open(image_stream) - # Save to HOME/.cache/pdfdeal/pictures, if the directory does not exist, create it - temp_image_path = os.path.join( - os.path.expanduser("~"), - ".cache", - "pdfdeal", - "pictures", - f"{id}.png", - ) - pil_image.save(temp_image_path) - option = {"GPU": GPU} - # Use ocr to extract text from images - ocr_text, All_Done = ocr(temp_image_folder, language, option) - text += f"\n{ocr_text}" - Text.append(clean_text(text)) - clear_cache() - return Text, All_Done - - def gen_folder_list(path: str, mode: str, recursive: bool = False) -> list: """Generate a list of all files in the folder @@ -163,6 +117,8 @@ def get_files(path: str, mode: str, out: str) -> Tuple[list, list]: mode = Support_File_Type(mode) if isinstance(mode, Support_File_Type): mode = mode.value + if not out: + out = "md_dollar" if out != "pdf": out = OutputFormat(out) if isinstance(out, OutputFormat): diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index e231191..b33e56d 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -1,6 +1,6 @@ import asyncio import os -from typing import Tuple, List +from typing import Tuple, List, Union, Optional import logging from .Doc2X.ConvertV2 import ( upload_pdf, @@ -14,6 +14,7 @@ from .Doc2X.Exception import RequestError, RateLimit, run_async from .FileTools.file_tools import get_files import time +from .doc2x_img import ImageProcessor logger = logging.getLogger(name="pdfdeal.doc2x") @@ -96,11 +97,14 @@ async def convert_to_format( output_path: str, output_name: str, max_time: int, + merge_cross_page_forms: bool = False, ) -> str: """Convert parsed PDF to specified format""" logger.info(f"Converting {uid} to {output_format}...") - status, url = await convert_parse(apikey, uid, output_format) + status, url = await convert_parse( + apikey, uid, output_format, merge_cross_page_forms=merge_cross_page_forms + ) for _ in range(max_time // 3): if status == "Success": logger.info(f"Downloading {uid} {output_format} file to {output_path}...") @@ -157,6 +161,7 @@ def __init__( self.max_pages = max_pages self.request_interval = 0.1 self.full_speed = full_speed + self._image_processor = None handler = logging.StreamHandler() formatter = logging.Formatter( @@ -170,6 +175,53 @@ def __init__( logging.getLogger("pdfdeal").setLevel(logging.DEBUG) self.debug = debug + @property + def image_processor(self) -> ImageProcessor: + """Lazy initialization of ImageProcessor""" + if self._image_processor is None: + self._image_processor = ImageProcessor(self.apikey) + return self._image_processor + + def piclayout( + self, + pic_file: str, + zip_path: Optional[str] = None, + concurrent_limit: Optional[int] = 5, + ) -> tuple[List[Union[list, str]], List[dict], bool]: + """Process a single image file with layout analysis + + Args: + pic_file (str): Path to a single image file (jpg/png) + zip_path (str, optional): Path to save the zip file containing images. Defaults to None. + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to 5. + + Returns: + Tuple containing: + - List of layout analysis results (list or str) + - List of dictionaries containing error information + - Boolean indicating if any errors occurred + + Raises: + ValueError: If the input file is not a jpg/png file or doesn't exist + """ + # Validate file exists + if not os.path.isfile(pic_file): + raise ValueError(f"File not found: {pic_file}") + + # Validate file extension + ext = os.path.splitext(pic_file)[1].lower() + if ext not in [".jpg", ".jpeg", ".png"]: + raise ValueError( + f"Unsupported file type: {ext}. Only jpg/png files are supported." + ) + + return self.image_processor.pic2file( + pic_file=pic_file, + process_type="layout", + concurrent_limit=concurrent_limit, + zip_path=zip_path, + ) + async def pdf2file_back( self, pdf_file, @@ -178,6 +230,7 @@ async def pdf2file_back( output_format: str = "md_dollar", convert: bool = False, oss_choose: str = "auto", + merge_cross_page_forms: bool = False, ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -331,6 +384,7 @@ async def convert_file(index, name): output_path=output_path, output_name=name_fmt, max_time=self.max_time, + merge_cross_page_forms=merge_cross_page_forms, ) all_results.append(result) all_errors.append("") @@ -444,42 +498,25 @@ def pdf2file( output_format: str = "md_dollar", convert: bool = False, oss_choose: str = "always", - ocr: bool = False, + merge_cross_page_forms: bool = False, ) -> Tuple[List[str], List[dict], bool]: - """Convert PDF files to the specified format. + """Convert PDF file to specified format Args: - pdf_file (str | List[str]): Path to a single PDF file or a list of PDF file paths. - output_names (List[str], optional): List of output file names. Defaults to None. - output_path (str, optional): Directory path for output files. Defaults to "./Output". - output_format (str, optional): Desired output format. Defaults to `md_dollar`. Supported formats include:`md_dollar`|`md`|`tex`|`docx`, will return the path of files, support output variable: `text`|`texts`|`detailed`(it means `string in md format`, `list of strings split by page`, `list of strings split by page (including detailed page information)`) - convert (bool, optional): Whether to convert "[" and "[[" to "$" and "$$", only valid if `output_format` is a variable format(`txt`|`txts`|`detailed`). Defaults to False. - oss_choose (str, optional): Now can upload files directly through API or through OSS link given by API. Acceptable values: `auto`, `always`, `never` (it means `Only >=100MB files will be uploaded to OSS`, `All files will be uploaded to OSS`, `All files will be uploaded directly`). Defaults to "always". - ocr (bool, optional): This option is deprecated and will not be used. + pdf_file (str or list): The path of the PDF file or a list of PDF file paths + output_names (List[str], optional): The output file names. Defaults to None. + output_path (str, optional): The output path. Defaults to "./Output". + output_format (str, optional): The output format. Defaults to "md_dollar". + convert (bool, optional): Convert "[" and "[[" to "$" and "$$". Defaults to False. + oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". + merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: - 1. A list of successfully converted file paths or content. - 2. A list of dictionaries containing error information for failed conversions. - 3. A boolean indicating whether any errors occurred during the conversion process. - - Raises: - Any exceptions raised by pdf2file_back or run_async. - - Note: - This method provides a convenient synchronous interface for the asynchronous - PDF conversion functionality. It handles all the necessary setup for running - the asynchronous code in a synchronous context. + - List[str]: List of output file paths + - List[dict]: List of error messages + - bool: Whether there was an error """ - if ocr: - import warnings - - warnings.warn( - "The 'ocr' option is deprecated and will not be used.", - DeprecationWarning, - stacklevel=2, - ) - return run_async( self.pdf2file_back( pdf_file=pdf_file, @@ -488,5 +525,6 @@ def pdf2file( output_format=output_format, convert=convert, oss_choose=oss_choose, + merge_cross_page_forms=merge_cross_page_forms, ) ) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py new file mode 100644 index 0000000..d3a9b49 --- /dev/null +++ b/src/pdfdeal/doc2x_img.py @@ -0,0 +1,232 @@ +import asyncio +import logging +from typing import Dict, List, Optional, Union +from .Doc2X.ConvertV2 import parse_image_layout +from .Doc2X.Exception import RateLimit, run_async +from .FileTools.file_tools import get_files +import os + +logger = logging.getLogger("pdfdeal.doc2x") + + +class ImageProcessor: + """Image processor with rate limiting support""" + + def __init__(self, apikey: str): + """Initialize the image processor + + Args: + apikey (str): API key for authentication + """ + self.apikey = apikey + self._request_times: List[float] = [] + self._lock = asyncio.Lock() + + async def _check_rate_limit(self): + """Check and enforce rate limit (120 requests per 30 seconds)""" + async with self._lock: + current_time = asyncio.get_event_loop().time() + # Remove requests older than 30 seconds + self._request_times = [ + t for t in self._request_times if current_time - t <= 30 + ] + + if len(self._request_times) >= 120: + # Calculate wait time if rate limit reached + wait_time = 30 - (current_time - self._request_times[0]) + if wait_time > 0: + logger.warning( + f"Rate limit reached, waiting for {wait_time:.2f} seconds" + ) + await asyncio.sleep(wait_time) + # Recursive call after waiting to ensure we're still within limits + await self._check_rate_limit() + + self._request_times.append(current_time) + + async def process_image( + self, image_path: str, process_type: str = "layout", zip_path: str = None + ) -> tuple[list, str, bool]: + """Process an image with layout analysis + + Args: + image_path (str): Path to the image file + process_type (str): Type of processing, can be 'layout' + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. + + Returns: + Tuple containing: + - The processing result (list of pages for layout) + - The uid of the processed image + - Boolean indicating if the processing was successful + + Raises: + ValueError: If process_type is invalid or file type is not supported + RateLimit: If rate limit is exceeded + """ + if process_type not in ["layout"]: + raise ValueError("process_type must be one of: 'layout'") + + try: + logger.info(f"Starting {process_type} processing for {image_path}") + if process_type == "layout": + await self._check_rate_limit() + pages, uid = await parse_image_layout(self.apikey, image_path, zip_path) + logger.info( + f"Successfully completed layout analysis for {image_path} with uid {uid}" + ) + if zip_path: + logger.info(f"Layout results saved to zip file at {zip_path}") + return pages, uid, True + return None, None, False + + except RateLimit as e: + logger.error(f"Rate limit exceeded while processing {image_path}: {str(e)}") + raise + except Exception as e: + logger.error(f"Error processing image {image_path}: {str(e)}") + return [], "", False + + async def process_multiple_images( + self, + image_paths: List[str], + process_type: str = "layout", + concurrent_limit: int = 5, + zip_path: str = None, + ) -> tuple[List[list], Dict[str, bool]]: + """Process multiple images concurrently with rate limiting + + Args: + image_paths (List[str]): List of image file paths + process_type (str): Type of processing, can be 'layout' + concurrent_limit (int): Maximum number of concurrent processing tasks + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. + + Returns: + Tuple containing: + - List of processing results in order (empty list for failed items) + - Dict mapping image paths to their success status + """ + semaphore = asyncio.Semaphore(concurrent_limit) + + async def process_with_semaphore( + path: str, + index: int, + ) -> tuple[int, str, tuple[list, str, bool]]: + async with semaphore: + logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") + result = await self.process_image(path, process_type, zip_path) + return index, path, result + + tasks = [process_with_semaphore(path, i) for i, path in enumerate(image_paths)] + results = await asyncio.gather(*tasks, return_exceptions=True) + + processed_results = [[] for _ in range(len(image_paths))] + success_status = {} + + success_count = 0 + for result in results: + if isinstance(result, Exception): + logger.error(f"Failed to process a file: {str(result)}") + continue + + index, path, (result_list, _, success) = result + processed_results[index] = result_list if success else [] + success_status[path] = success + if success: + success_count += 1 + + logger.info( + f"Batch processing completed. Successfully processed {success_count}/{len(image_paths)} images" + ) + return processed_results, success_status + + async def pic2file_back( + self, + pic_file, + process_type: str = "layout", + concurrent_limit: Optional[int] = None, + zip_path: str = None, + ) -> tuple[List[Union[list, str]], List[dict], bool]: + """Process image files with layout analysis + + Args: + pic_file (str | List[str]): Path to image file(s) or directory + process_type (str): Type of processing, can be 'layout' + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. + + Returns: + Tuple containing: + - List of results in order (empty string for failed items) + - List of dictionaries containing error information + - Boolean indicating if any errors occurred + """ + if isinstance(pic_file, str): + if os.path.isdir(pic_file): + pic_file, _ = get_files(path=pic_file, mode="pic") + else: + pic_file = [pic_file] + + results, success_status = await self.process_multiple_images( + image_paths=pic_file, + process_type=process_type, + concurrent_limit=concurrent_limit or 5, + zip_path=zip_path, + ) + + failed_files = [] + has_error = False + + # Convert results to final format + final_results = [] + success_count = 0 + for i, path in enumerate(pic_file): + if not success_status.get(path, False): + failed_files.append({"error": "Processing failed", "path": path}) + final_results.append("") + has_error = True + logger.error(f"Failed to process {path}") + else: + failed_files.append({"error": "", "path": ""}) + final_results.append(results[i]) + success_count += 1 + logger.debug(f"Successfully processed {path}") + + if has_error: + logger.error( + f"Processing completed with errors: {len([f for f in failed_files if f['error']])} file(s) failed" + ) + else: + logger.info( + f"Processing completed successfully: {success_count} file(s) processed" + ) + + return final_results, failed_files, has_error + + def pic2file( + self, + pic_file, + process_type: str = "layout", + concurrent_limit: Optional[int] = None, + zip_path: str = None, + ) -> tuple[List[Union[list, str]], List[dict], bool]: + """Synchronous wrapper for pic2file_back + + Args: + pic_file (str | List[str]): Path to image file(s) or directory + process_type (str): Type of processing, can be 'layout' + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. + + Returns: + Same as pic2file_back + """ + return run_async( + self.pic2file_back( + pic_file=pic_file, + process_type=process_type, + concurrent_limit=concurrent_limit, + zip_path=zip_path, + ) + ) diff --git a/src/pdfdeal/doc2x_legacy.py b/src/pdfdeal/doc2x_legacy.py index b90f284..337bd10 100644 --- a/src/pdfdeal/doc2x_legacy.py +++ b/src/pdfdeal/doc2x_legacy.py @@ -47,7 +47,6 @@ async def pdf2file_v1( pdf_path: str, output_path: str, output_format: str, - ocr: bool, maxretry: int, rpm: int, convert: bool, @@ -63,7 +62,6 @@ async def pdf2file_v1( uuid = await upload_pdf( apikey=apikey, pdffile=pdf_path, - ocr=ocr, translate=translate, language=language, model=model, @@ -76,7 +74,6 @@ async def pdf2file_v1( uuid = await upload_pdf( apikey=apikey, pdffile=pdf_path, - ocr=ocr, translate=translate, language=language, model=model, @@ -313,7 +310,6 @@ async def pdf2file_back( pdf_file: list, output_path: str = "./Output", output_format: str = "md_dollar", - ocr: bool = True, convert: bool = False, translate: bool = False, language: str = "zh", @@ -333,7 +329,6 @@ async def limited_pdf2file_v1(pdf): pdf_path=pdf, output_path=output_path, output_format=output_format, - ocr=ocr, maxretry=self.maxretry, rpm=self.rpm, convert=convert, @@ -356,7 +351,6 @@ def pdf2file( output_path: str = "./Output", output_names: list = None, output_format: str = "md_dollar", - ocr: bool = True, convert: bool = False, ) -> Tuple[list, list, bool]: """Convert pdf file to specified file @@ -366,7 +360,6 @@ def pdf2file( output_path (str, optional): output folder path. Defaults to "./Output". output_names (list, optional): Custom Output File Names, must be the same length as `pdf_file`. Defaults to None. output_format (str, optional): output format, accept `texts`, `md`, `md_dollar`, `latex`, `docx`. Defaults to `md_dollar`. - ocr (bool, optional): whether to use OCR. Defaults to True. convert (bool, optional): whether to convert `[` to `$` and `[[` to `$$`. Defaults to False. Raises: @@ -394,7 +387,7 @@ def pdf2file( success, failed, flag = run_async( self.pdf2file_back( - pdf_file, output_path, output_format, ocr, convert, False + pdf_file, output_path, output_format, convert, False ) ) logging.info( @@ -439,7 +432,6 @@ async def pdfdeal_back( pdf_path=input, output_path=output, output_format="texts", - ocr=True, maxretry=self.maxretry, rpm=self.rpm, convert=convert, diff --git a/tests/image/sample.png b/tests/image/sample.png index 416f7a670ab89052329cae0b1e9645d4a0c32bb5..1ebddb2b2b6dbb2776dc2902f2bcd31d92729297 100644 GIT binary patch literal 26885 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 Q6p_SZ+AR4wH|4f}1F`F)-T(jq literal 12411 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 diff --git a/tests/image/test/sample1.png b/tests/image/test/sample1.png index 416f7a670ab89052329cae0b1e9645d4a0c32bb5..1ebddb2b2b6dbb2776dc2902f2bcd31d92729297 100644 GIT binary patch literal 26885 zcmeFZcQ}`QA2Rqe!U8NJcU5)W5#RNn|M0D!f{P1Tq#LqdK-LSB5B%M>|7c%D+?I)2qNJ{7A zv~C$q{J5#RTW588Mv$*e(Y4B#lQW2lL1p*8svwQ*lmO~|-OP2YW_;O&uiL*e9=Gij z3oTpP70PCIp6bxCAVrO*TPIc<%B6Z@4H;BtPtjLAYjt%u{ChH&X5!PQ@6Pe7&xF&| z6Md=W7$}Lqj>%n!qVwh0O8hllagj3nzyE$F@Q|{d@PshR}*}D^euC!QOrQ_TiJ0HPfzLzpf!(A@1xv zC$aL@z`!8ptJ!;wt={ZWettEFEq=zm*3IUus;WAtpg{gOF0PqgX00;c?#qY9#zeys zx9_FyjG^_*bkz!>tp4%w?0;J0Us*Iq)9w=w@myWJYGrl)!49_9MrFlS6<@#V&d$!7 zXPMdBHsx3}A2Tc#ixDskUr>E688z0G?)>{Bi{7e?&CmMKQ+Jjh-@8X?@x_is%8ieV zjO^Jdcg>#5d~e^rweQUf6t(*FI6RzloY%Pg6uxxgs}Gxh7zF1@<7GM|=XfbWfvbR8S` z_3QFT#p==&Q*rB_2g<3Yy?HibcHJR|&Oba>vMC(JbGf>wr)MDdR+r5A^XEG{I#Rv_ zhJ>WxqiSnwAIHQzC@YhG`0(M^-rn+AV{Pr|J}0drDw@6OSw_-3*iUCn@I;1&(%F4^ z`>Q?qd~HL6%4Fz13Ck*9D*JB*EdwQ)otXv_)ipIeB{u~V%1AeE+(^0*E25R58)n<} zMx)TtP(ROF4$H-S;u^=vlPA9yyQ<76Gwk30G5m2^QYOUwW%p+V8CRrpb>4QQ^mT%=EnLqdU`ATL(K8JZb2E=%E-uQzobjRvuFGD zjIUi2I&k0s-<2YUe0~1$+`PO|Ng}Hymx+;^N+om z=f1!HRR@Pm`)K?+=jj2t(c#}efBL1RrL~)^%(cqA(o9uuvTQ86{xhZ0`@`ddx_WwH z5fOf=sYmb(=O@3#++O-i)?3-p(-ZsT33HjwvQ<$@$>(=h&-(iLo%CGE+kGce!0;)t zZ7048^IU#&FD@=_D0X_HM-;cT*2H)XcammMDA3;C-qCOPg!Q=XbR$>%vAAFdtiY8L zH#(p9&VR}^eoIS9#Vt;LQ+dR=Yga%>$YC+D$dk^$+wyEK>3M7P=G$?tm+jcGqw}qy zLAHPQ`s$L+=a+O>uU<`g^@_JdNl{T~Ypf1Uz;*bzp6w_-iE{6pLADw-$<2o+eZQ^THT`*IW8U+UjhmS#_V_0OQd7Gn^ zRRf-&`DFbq508%58izi`%VbS>@c$^e`De1Q|LCDZXKhhvua{z*W3~( z!6I(|q;v5mmLf7|n-306Td}L1et~`C=;v2aKYSLYUYeVla(ey|W2HO)=)kYCr9QKU zhio}>XL2oDUSCe%+Z-b(vGQK$wR+XaOm|I9a+^l!^75_OxjCCJZ`m>p3boyszE$~c z=_zoC%h6-Fx9KYp^cLl0>y8~qv4p%jZ>LAv4?R6@SC11Q=#WhFE+Zo&ATV$+Lhba` zzEbx)YcmblKI*+Y@_LvqUAlDf*$J}Bxj(IX*``!A5B{_9sJB>qdwc(GiQ}@PaOghF z$?1!`U^sB#;`+)$R2-?T)ZMw~XUWYe5tB;NXm)x!uZ@k(ekr#Lwz=8ai8@(E6W`xQ zpnRxICP&#^j0slbj?ym*m1 zujdL%qh-re`G}*c<`orzf!n6aR|Rz5UJ<_4KOg(_smQHq6KuT(T;fP)8l$o2!XCz> z7Y6WQO)X@KDk?vhXMQ$WDxo62#tyI8SV^xsP1*Zr+@SodbRN^EKF{yuPmyCgadtcZ>_$b zUVEwvQ-R|TW&iDaLN)|$FHVF>KYa8^aDKtH_~z6_bMwRW?5E9JUr5ukifz4l^QLx| zk!qR8!jlu%Ie!$pMo2d_G;E1dmY?j+KY8=-{_^s2AMt6gjkS}Ztj9T}rJrNXGz;wY zdYrS2D+HQ*-Tr=$9UeC47QIsJVw04Vl;ZXL;&aJ%?Elf3jrCQ!#kh2xERh?-ilf<& z9?`4B2>kl2CiAO4bf4zxaAQROi0P{nA6r`f{faS;Y!OL5|43V0>CD-)sXO=k>^!7k zf|mFFy>n^-Hu5g)C^V_%g)hdbi+_KV%%Nr^lVwCj?QwK;tgWx-DbamrB9}OI9<^3c zS(%fYJFQKF6FajhlKYV7{rcUD>r9k`GEsl+`*4D>VuX<)rJ_ZZwMJFtTLU&Ot{8-zB&FUXNd-f5#0JUI8WOjCT4n!UFWiuafo*Qm z3L51hs^1CH91rf_S6<&IZqFej6W@`ll55+=GkR`hYD(?7q-)CLojZ4~-MB$siIV#L z`;|VAaemTEwfIjr`#l?K0~zValU}OEiMUPZ>fOfUd+)U_iTW;P+Zn*_wM-@}*=TNV zPINGv)uFB1whhJ@dkqfN1$Q*s4}S>zUUoYME6Y=$uo%mJ;+hZkyZRd~?ws7*)c$1L z)BN8baZ?qWMk}6ZYOk-n7s0(yljUPG(OWb{lI6KRkOV5MY;O;99q*pOFX?mt!?vG| zO|QbMEH58*N5WrqWsw5fzOUHlt49-{Ssn_6Qz_%XoJvcHZJt z|D&udLBnDfqF$L>S@9YTssTeql|NE_Dpu9f5{if1STOpdL?TAeSU_yNr`+>4A3uLj zsk$jkiTdbCTLUFa2tnYJ@l9F0m zUr%lL)f}@WkLk=xLw+@RLB(erKU(G7ppFDN3cp}(pIoa}k*n2|X|>z)m>jJ>Jxj#R zYBG#ZO+AWJzd$@xQ&sK5s>IenILX@;#(noo6#DZw1<|55$e$sN!K^? z%M(4h&!lf_dt^AZCCKR-7^pCPt4m$Y5HK#!7}-fV7(ZVxH<7-3_wH$6#-7JZ1pGL6 z?%u?`lyti*Ip*6)U2iV`Twm(9YL4d5k^OfWAd-TbmV=)^6qr$PuNfv<)RMZ1efCuHYzM zog2UjL|3i$r=jZ;eGZ7YbI%@sv<$QQkT9=4v`!Wg^R1|Nzk>zKP5yj(ZvVY#Cd#!$ zlHGHDCoU>vpTt{TvW$oC-@ljB?s$TG=7|f@2d=~}x_9qhTdtKFw@<0}=4s*vUP#AX z|5?9t?_SG1mueiG-YmQB45H7_-q$t&{=Il{2f7ql9$CR(saM+RfdK&nxUP<+i#li8 zU#jlIc?W!U3Y!YUIXZp%bWw4!DF_IPt>T3XDOzco*tY1v@_^9Mp^W;I*b?{GASr+3+kJAVHV%p{mn@aXhP08ruL zM2{b819|}%4?nfuZ*)6A%_<$Qm)Pu9wE;Uj%zm6^J8(ci%B#4jh&j@B?Z+-g#!yRX znoGJi;f|D?r%qiF*PQ$LNTx|4NAl+13wQ36$|bNcGb^G3UcYf;2p=P6-9~DQ)_UD# z%YAzVt-?l&I*;l6=3yr%r_m{v6W0c0Hrzo(UrB5?Eh{Z$K5iR1|Fx=$OhrW{TEOs4 zVbmh!+Q#bC=OlR=z1vr=>^HtMLq)=2s_yLU9BI3LJvJ_GuE#3=s*{r-l?a}<__C)< zWJT-agJ;dpx+Jt*0Z!8J$dC#=mis0_I&4JBZGsuFt){NdKbqel$Fhah)YMcxP3zwM z`+HZNo*%c{o50p*h(m;;VcC(Qq`3)}Gd(vax|I`HnM+Ekz`ETRxbCfS#l@QYbPEM* zmvnWX$SJUxfIVn-Ya1&nZnbKC5oJ+;rgHYqom0S7sVG@uPJPc_NZ%flR)Jm+!|uHn zhX2ZO>Obu_=<*!oE*>SH*}QTA3{7b&-Am{N8W*+(_pxIM4&Mqu0l;(3^W76#zPe5I zJ;z~-0D-jVwC#L-(1D^i&_hp8FVE)l{kAss0;m2@pt$NIQ#+>nZciz#ene^7N=rLD z`>VOGmmZLFq$@opr^hEdP#RAu*<)cW!=UhDF~^4w9}@I(EkpL749}|A(0{5P5gXh1 zMA&S3C|K}`n2ly)ei>@J@K?1ED)X?gFipLWA7e#Nx{NUJL11a{w;E6`C6K4KU&+@a!)B#a`FVM1tm4Li2YZgQ_|9-{S`6^bj8JPlRTN^1EZsj zK=WyOxknS&Jlp6^L&3(9v6v`_4FkDdY&0%%_PV;vfIp@v)|6CKJ9q8!O-thjr0w?Z zwR`VA_p<$lFIe7ML(?|EbkrHm=lQQ*y}H3j(b(Adz2xR2JUPD`Y@rHxbo-b=&BwoF z#oYh3AVVV|A%R-;0j-DjMTKeIcI^z^D%|_Kf`aIW{?Dauz686-8Q93e7hbwe_SStm zZDnbx-2bau;Vh-xvQ?=DLtI$c!F1zU)V8`h`EKgo0dY~$&k2S%qrRgy$%t^j zs>QPh@<7eEZ*h34?I}u(dfq5GsT9rgqo3W^mW2tZn(#bt8U%0LNuaU0IYKp~jlUw| z`E!1|EkBQEO+mtkYW6QC61ZI@Wm=HK9php!HWN4$Fs@mb#uEy{D9-cHMkC_MecAKkfPM z-8++^+CXSFqJZAG*^e1|xr%CPT&GSw`|v^Wz^Pl609!0L+Y{vVPq6c6|CUU3q+Q~A z_WXJ3phv2>L$44>32~?v#=2&vrw33{j-EdKB39Ij^||#cwdD5F8*$ZZE8|&Onfg)K zCArRjE`q3Dz*%Myvu42QF$X?;t;K`VTnF|C;Ax60;xi}+A)}!FAVBWA+Jfqqsu_Zk z3HHHP@{T-3Zv!}U%f|Q3o>oXD$dwa%zyU(Jpwl}vB#2G)6sj2Xo z7_P2^TPP_91_uu=^z`;>f_6B5FFJVJNsDLFc89;}qNLZ_2{5b_;|i|}apI~ys-P63 zqoeyz-BRy4GBY<95%untyL*`%x0VLL;6I$>fQJu%$2pa||9Z1KFfj1Wbk!E0tA-^U zTQ@UMeo<1szPsu-e*zr7vQk!WpEZ4Hs!B|Bud8cPu@dd%x57VPv(2)~cKMtRRqz9B zf{sOWC2Bc)FR$|5hsTw-xjYKq{vtU!+2ZWoix)3y(!CZr^xC-OrJBUKm(AK^zF(8> zD@WlBK#c<$ejFKD+m?7%NmZ4A;?GWdK0SE${=n3fAl>ak+pZvJfoaZ@K5{5Ol`eTv6zHso;m$kInbrtGzg- zbmk1XxVU)EU=4`=9C$V$(Wg(Je8fvKwbSu%XyYWDe)r^Bb-dYyLW)Zha_AL9y>9@! zv*|CF#z!1Hc`_DC&JAa00@s~Ex#K*%!h0c!nDjL48L%&F!Y6{xJd%|tv ziAzXsetwjNvTMJ@y12!)7g16E$;pSHsYLaRu!S2cRz_Leur@81vp{(Y2}_YJN+kuksT9F!ZB zM=R7ZKE0fKc&fxI`>iX)Z#AMCtoRv!M~}FKgc#bW)c{c=$683; zS;lHWq+0Z=NAZgRQ3w)BU9*;uncVT*{@Jro7p^QJ?k@vf?3ykOU|*cQ)6TGW7G6wWA3#dw&O;GK50N zBh{^~j|kx=Q?4t!pun>F-nJZ{9-u6!)O(*AegSij)SA;nrNnZLv?WqZTWM#@`B4Mn zDz}n3lobd(X`|9;^8C`@U-2O$7R6%+F8vUQ9yYp#1R;5Fb8jO`V;l{tJo=D%eDJGR zT-X+!uQmL@Wv{I+I!sJX3X6)G0l0oIx_(xljNm+|DMGfL$I90i4ZK!Hx$r1>%d}BL z%(F6YtD$V4xV^}SS_qu~5DR=sUEK#9m^D;EQsI=x{8p?sq@EhTE%fG06-_j&L(607 zSt;$DY=$SRtl~W_uVw#>XV|+}AyqjFs>j`&@qGF7=X2dA^{MGtYoRz2b-_0O>0r%+ zx$&%urlS_z$F19ZA|rR(48;R_gBplDxw5QdSbirKtI__}P|9QJZwpEfP9Ytt(nfY*TqYKE5X>osWX!)qnutgBh8a9zfN=Z-Gz)!Gn*+bn~rWcD7^+ z_TTLCj2UqR^WPU25B>cs5O-@DU-3)#0=|X-$7MjSti!5a;^yF&&qzaapI7U(EHHfJ z%x5~!iaY;uzS=ba?LTG}y#TbX=E_w!0G(_BPRP zKLIYMEUlnYQRgwp+^>=y2#4r?*{{_-Ez(V8&}A3l8|oQ*xa+9o)@7S^9TI&RGjQ4w7I%UeUJT!9Ub z*yjeSD8j?TuerL)r)sj$X~*yzXiv0SuFQ`D?x}U}MVT9@^1FWR+CX|%dHDU#D56mp zyKoB&3j^rxqNk^?f5>L{xU2K#(qBV8amAQefro@BzP{p0PC=1&IX$}b@8l$%?6(33 zsMU{u3=E)Sb=)MxV;pF`O~{O)(LO#id|p>Ab^-{4r=kbxTC=S};AsR~B~Nz3m)qS%UrQi1 zoVOql@?4wGN9`RP8b5uC_GO7uu0u0UgBC4Y}TZE_47b3r!?w5OMrUV){2sQM<-Q=E|wf&2#i-DwKPUNK5}P(O852`1#FcUZQ>wM-yt_ zd8lLWZ_OmhspglXbGAdq0xZx-(}Imd2U-h|R)r?`{@S3gSe~7Yjnbn7(#r#W^txpp z`Rx;`bwPVhdd$BT%k6st4GC(he0F zzvG!sC*VLYJ0EEY`OXO`#}ML9bgq` zLhs!spUSa>!NJ3q!+dq^?Ckt}81i`cj0l**3J!eqNTRs-es-{pm6a8`>c;G~Lj14& zc<@5=4Htl@Y8*og2W8gK`yc^1=!xb3e(%f4$zev58%-GXg9<%Lw~-A3J$dIZZS#NpYYZ~n1#<2?0t=jE3>&KDr)&r z=yhNh`_oQ5e@aTq50;DL(fgX4nnXOR+pTPD8m9+qh^JlUU>L>N?Dg*#ljX-JRoK(C zIqz10LJ6sE?Lyoh-~W{b_&0}M{Tx6~_o;cI>$oyl95)Od9SaL>9vf$s0dDN~KGTxtXwo}E~+1ZI6Sn58v zJpWluugv2(RGTCSi3)zFV0MH@L@24L#W-rVmEFGCooQh8&f5ca9sVPlPtTNLfH}F{ z8Ww#OP=9Y96n6-?*T=j0{U)9Xlw=yeNm65~?d|O~b#UO9?v8&lUknO)4zQa5!{i>% z@%$B&*{)x|ooFr$g7;3oP8%AFU-s&x{P)}a>({ru4B5{4`bJ-B<|UixlGYeq(W#xMAG zGBXp23bDJ?d7=;H_SKd*p%({)h8{0sj1C8ohC+jC`*U(qRb5>@F}4|H8$h7}&Q~nZ z1K=LN%gN-Vk+H|eS?LflNKlJE?K0M>R1gZGQ|#j#;(O8QQXA0I`pRz4L4p&#y=YHV zjyRL#=18yEMy^Of;};MO8p$bfggxd*p_vW!pZa~_Mg&~wxv5v?vxih9%pR|C@v*>oKK zpGg3M#e*JScq%rUf8NPO#bEU4h0*9vKs?^rix=bxwZ+yO7thbTDkNT-p_xV--FKS} z3ot!>4H8vTl6)|HiDW3e6MbcI;2pwVYqxf=N!Fr%(6DWTCxhL(8+DGHoIEJwIKMJP zRV8KR>iYWo00KGJe=7Vsnw1GhgqB&z2aQA6W8QjYak3erlWvI{zs%b7*)S#<puc(F9U~Jsa`5v$y$d{h9}Nu+E?ec?IZ7NebKsL4gWu#@Z?poj zJA`lky^{9H3H-w84*m7@m3q{IeYEW5w$H!9ha+UarWnCi?DOr?RgQ?l%+I@kx+$2L zaNvo?9Cd|%sC>K}p%@~$g0j#Y&HU}XGZ)yji|w4y3j*H!_@A+F;u$^K4BB6CvlQW+$PT?x5F2Leje?qfaW4t zzU+&qBZBL;c~S;@00eP3-%lPIA#4LeBZRhe`1tWCul1EZtOfATp?3u_ZxeL9R+Ubqgqz(;anx87q1w*E)RnYvYR3s6j{*5xsltOI9l^*A~>; z6St;0fWC2@mE=-kV75FxF8U-zYd0g~B>%C6%@=qC?bw$%&p{w!FJ8QW(Z#T9m#NU; z!NZ5oHAx=h(%iFnKu=$v&=3hP8sq@UpCRmOVsqk<9KGd;K_)Mlc=-mlkqp z%D3w;Q&W)|(FK7fQW+3DggxSKw(ZE`b^7^F2RA}|-h~Ua@P5MDSvFQ6Z&m_N|C`8d z)kV%iW@GtKx^^a~kkDhGb^vDr%f0tp6*nlbA4Ii8ckU=~Fp!nnCn+KlezVX0!Q;ma z(CW|QBhiWD+IxOtN#y&;RP<<8)l@ECe2IrhEf*9nF!%cBz(6I8no2x7g5>}qSk8~M z6NM(Ld?l!~^ps!k1l*K}h={XVTD#HH_oJ{D_Ic1C@FsAjh-95Rfi|?fvI3TOQ9*&4 zZl8E;~rl2n%kJN%LGYyUV%NL#En*EiKkka(?dHx&d3Wf<+zPWLm zka2;UNRzBNO*B6N!t>`;`@|IcJTI9cxgMKP z$bGZ0YXu2-IdIW`(@(F{wA zgk#PJJ_{qG1E9)g_#5XAQ8Np@8=kOm_`7T0ZbpJJ`*|p{8H$%DB#_XsdX5qHBc#uc zl-DS9;g26rH?d5>G95&5?65nIVu>vU$B|G-(MV#Hl?ZMKKj^*7=&r@ZMFO*d-eTRP zA-gFd+4CyiE4*b{P}$K@06Uc+s~y|9&$~RHZP8fKZZ)Xs2i3kg;D!aWzOYUgMfX2?tpZzMi)CX?tFt# zJjTFK`GDQa`r1rNvcYyilxsA7r0Z%vgdL*uQu72S975j`v+1};ID~*yDp`#1=JCe_ z_Q76`(6)i1AN_C}0UCPqRorL=5lLbVtsmeVnwo{#3iyisDt}ZPG-x$e>$Un|XoYL> z)e^XyyV%$a&0hlX6EVgMs;WJOPVo~a{YZ8p714s5o}QgeLQp}0tGhEpF9K9G9E*Vn zD&0{Y1aKG-)Pv0^tFF!<;rRX7?7-yk@Hv<_L~FtmC9G>RGc%XpS+TJ!sJ#Gc_tEQ7 zhlq$JEKuN|#%=@G8#mC86)WOFr(i>+ynLzLvmN-NDVkpeI@G)ov_4#0sO1iH5H&Ba z(@X+ahztb{O)#fbg-*J5XiCaqNVY-}5)JkBFWV9}UGwaFH1((QkAVx-A%>@G7cl0G zFe>=Nei^Ut19P5iL_l)<%OgP7J^xN~``^D0{Mp5sTZ0V+2FHMPnb2#;u^_TLV9|TW zr_d=GiOfpQy!@Z%H~XqSehkUW6Z4DhU5Q8y0r4Xq5z2*}cN z?8bEth=vdjtb|h^f|m4A$|Wlw(gmtFg3y=HSvGnb_<;zdHZ=cN6nyI@T`%|d{|3N) z)qVdTq{Sa@HKqDb-u&LK^Zze~(Esnpa%?^F|NSCtEMWH`_;XpD=Eyz$%$N2(IZc*> z#wh@Z*y-GHN00)B8Oa^zzl#_-P$vf&c?kRxj1qIz#%7z3zdscOjUayGcv$*)AegapChD&llF#m7qS z?fRGkQs8T~sBvNPe^fGk}pzrzCE2PXOQ=qu=r(;UDMh)`+&%QKyupC8U`J$*=6 zI84N%Nga7Kf}i1lM8$2y6SB(C&!2h-iINT;JcxXe%Gej{jZ^1r#aNLxfbuX1TiyOg zaTL^}G~?ygoWepY-~qz6!bk9y_L51tp;q0GKAgx2brS*B8CanuI@&29*}MV`bNT<5Znk$4xRDW=b$>&Z`k343=Y^U3*vkI z=FLB#2&XWDfWi(-`_&!&z;0-iPsMBq(vfPifKKvE(lrRBQ@_wrHBB>>NXel|4nwRW zY*@r6k>p2Wmj-BI2(n3#&c@QR(_bbcMF_zN5h;zHBWpB>g9Ki!xgYlI*@Y`tp5?@$ zZ(cPuJp+B4NU=|lUp^Ll?&MvLNCr$mAoMYdOd647$bSVC4q9$hdMmMTVVq{ij(U_# z5Pp&nSQwPw2HX*rvk~5*DVW8&a9L61d> z1Ox2S={&K87)HO^1=fKuE5+U{$TyV}XYR`6juL2~LYXrV)IULwSM z;Ds9)jX=I6Vg1Oa3>OzyZ=utp!a@nahQ^tZ2!*MW!>0vcN!ArYq((2bbU zc;hU3{P-`xT7~h;mwEO8Us?gSVo{yl+%Wv|!-~Sh(eWa_1Q%$po0}V9t^f|OUO0u+ z)y_RUT9r7S==!i~82h|d9e`7N%5F;lfl*c>-~;jEQu!TsI0Nr*FA3muLCu%<;J6OqA$TNi`239i? z<3z~0*k#lg*9;-2sOW?rqce=+<=JLIV#%Qe5`~ZmX=WMApguIjPS`*s z6YOp3DTiCPPUPEm4S_3I!B*&Kyz%jgunXKO|n)jkdAr;DvjXQwAf5#jVNX1x^ zoSYoS>vlm{hLSDqF<;ry5svvMb=Ydrg2tZ^hK?1p*+ra0AZh|P<0~q1m^EUYDxKSr zsh>}1Kme_bd-vAkT)WSY>;&B8LXZUgh4auMqJX+DPanh(${~CaRrG_%^x6BgiRc#g zU*FwD+0aPW=2r+|mV-<}NYS9I*wnIdlP{oDbE&;BN5U990IL@K{{2Y|B*EW9^zRIj z{fCcA$0|lte_R^9jEoHI>LX>*<**eo>tzV{|;Y;rsE6_;&Cfi97IdtG7d96f#aP)3Gz4cgP2;i#Lz>vi-QBn(%z*Ch*FblVvA_ z^?#uAHb07w^F(b&qk)*Qb^G=t#4n(2D~Z=iBfUiIcbx3hFHaytK)Ns?JX)W~wE@{a&m}{M77)nZMYb%=%_T!oA{GsKX~n0Mx+tf8 z-kY98dY`TZvm(2&p1(rP%fdwrGB7|{X3_krlvD*jm)2j_r@K<^OW&A1q~m% z!8Xj%0J6B6AoHiJtcq6&5}yDftx3I|yqF9UD4wLv8In z=#(ri!(-)Nkec)N>PC~o&?L3=9vIw;b z-TE%VY4*!S2?;*Lqenp!g$N8)_#%D@T8wTO8J{(Uh7YPcuSW=`;gId52~{|Y8jZef z4*y+2EdkMb=yWR4VV!g}XyVNR3@%l}Kto7w96fnbPut4l@As2LyjE(bm4yW+5%0my z?tGbSFzt=zt4X5q_S%8s6Pan6xVma+XqZ}nI!}I$p!%vt-+WY zjkXZ80Yosj*mYcaRT=dJU5*$Xh6H@;R?);sWpoDkj=Mel{7}vanHLm*;~N3bptSXP z4dW3)opT@0EF>l+a2cBYo%tWRRj5fUGg9pB464Wef{4PTG#+OmQjhFWQboEKpm;n6FtIzhNZ1K|)CkH(JQ z&AL3kXor=OZ;eNWEog#CnHr!0mmY^d#qhr*}(&Ij~~)v!#ivA&+Vjrv|)w&$u_GFiGXjL##Y zq7lSk2znrn#xb3@`%TuINDit_S6wWq1_uX`5n(~nPCql6oXoShRqmfh@sfd#NV5GG zPq5k@9aECmhtAnZwOQt4f}7irRH_U?iOga2A}U#@BWfyIW@@V}*P%nnZ3*WZo0{IV zh1lS%+w|lR^HVuA)X;~}x&i5;W&?Np?<|1fFeX?vG3X4_2DzZey~aA&g+O@&$jjz< zzC$6xI6ZSl|0(!tM7RwTLLty~`n^{9G0|eVwmg$Fshoqz3KPcgK_PkUvVdhxP6c$S zeiT7e6GoQidLEcJ1_8_ltNp2&6qJjnTs2m0LAkRPzTDe%z@Yy|J{k=6&3|S^5llOZ zFakB#Gr(x)!D=eKZ{GTNNB}d`Tdu)1BgWwnX$(d1143I$YU&<$(ibYhf`Wpe7uDPp z7d?wFWOx}KS!2=S{ucGfl^~iuxm+M8<|y(6gu-MO>Xi0Ks|=LaDZ&XwH@1W{y|y;j3cD%W zzDFckG~IP7J;zI@;+}l`taICsYUVt-=vmhg?g^)kvTnddi$iSw+@D%I@RX{Xnv{EJ zWik7Qo4--c<*p3U<{=0LzE}nPTsiibI2Gz6|^5 z?EL&x%!gCU@mc#tz)bv!2)RWrW^a+)Eoqm{htx>QN!+aV-PuMhwGvyAc=iDiEAi_Y zY)W|j?n`I>_!80H5K%@v6!0&+^KC0K7|=C(8b=|39>jqm28l632QP4?NlI}v=d(Q3 zic=CO0yv33#sN>Sj2udiHG(~bku$!tM!F=XJ$vL4(kFaa!2io`6uqohEHYC?bou}O znVuiLgd&8b4T$<+RK(+;UO|X0L^d0{$fNbxm8*A4g+WaS4KqsFV!Cg1%pz(by0~%# zqKl@s_WR9^J;m|25dzgK!E&Nh!kZZw9=?asa;TwqX6l%7JS!pGVlQus-i=aDg%>r4 zgohq?m~v_o_87Lv48q)mQV)KVk=M}Q9}fr%UIw-z0Dm0zV#(L3(7(4G?7QgL3|orT za{@WEm%ns$ojr2&sIo&b)#gIh;`)EAHn;4YLx49P$&6+iEEJxEod>L?ptcOIPP{xp zZUSqLs$ALJ+&rML6*z3;~EH-^$(XVO8&iOj(;`?O&t9Wf$- z=^lZy25_K36i+M6{lkk20)`Sr6yfy7@=wkOFI{WO>M{dYy(fRTU+L`HkeU8sb^o%g zww$@};hpAeZ#mBdsqnlUP$0L7v@z{f&00Jz&l_XEFzA8M(r{4fmvh9ArX;k z^!Isk`=1S?-wFkxx#2YzrVN~^IOJqvojKy&%j2GyIbfD>-0vgfz0u-X_O0DE9~0R% zP+TzKZ9iQE9~rsE2Sw8p+Ec;Mgg6c#rsRogGO;TLtYY4`FWA_a;a-Wyr%+=Vn}3Q( zl9HGyZ~rJygrfn);tZ_9spY9R99wVwjO5L6WfhgQ<>4R!knCH2!X-S?Zyp-!*95{)&bUML({k} zXL||Jb}A_7k&%&>6wl5iR)VY@+)9qjn(6di#XoMXs_9)x85y+jFg^M&nV2N>Em|Wd zR*C9Dcg7x;8JrPe)7q__-Q8ndxB4IcojQN%+xV!izW$iMUHGfpo1te9I~TJM@Bbjt z(VTLr7;%ZQRaI3Dd;Hi3TtV#ns5p2x(1Y8T&EuB~dv~MRm2RwzQxB$tQ(;rJee*~1 znGUm*=UrU#j3#5ikOBYw5SR5&?FSvO28tR{xih&W1LLv)J4!mpZms=s7bFgGVY<%ytp%~L|B>tHs{>k zPePvyd-^n};lOQL02O?LYHrmr*a(PIPi3<*Qp!yo)8pcLWm%zZR?K38`@3H1=zS$& zFeW`eKYy8~1cQtu*1p@SU1nnio3?AG@UeWK-b%dqg%X0vE9$msSJ$k>Gl>lSg6O-d z1>e4X3uZruJW*JD{39l#TXN3~DOr7q`N&!l&G!}0>+oh_?J>bzR8Uk5xWx`Q0xlgC z^CUAP1M1EWv_-!qS7(=3F2@&E2olj|n?EG5)0e{pNE8_n1$lX@rluw#aDy`XYlT0@ z$Ah;q9wla-FeCNYjlz1_>#oerSJvS0d--%pcrODAx@?+O62|_hSE(rI*mq!DdIpoL z>NI1Rd81%k0Y)#tx2Z?~=I2ph)C~;MbyTJ%CTQ{T=#oRA_CzonWT)19%inv5$iI2> z=IM{v%BH66&CNXwkayts@B47k2~zhiFRvDyWN>UO2!aZP z-t5c!9nuV1Jb~&<7klkSfXso`gg~7ju$h42eudO~0=oJEBDey^`2Z3uk$wvZ3Oa*% zB(!EhYG*v^wQ=K3Uw{H^U63*%jF;O$-U)gA z`WW<&Jt*C1;6wyqW3jM;7-swM@nbFghv`=D4MqqO_p-Bv;e(d^}ub#*o{W5B?B5G6b^vPn_|>XJzm2{1eI3 z=LefoE*mFcTA_65qrW62{5H2i9#%2=pnhn`^wj$N=VLrPBCoIG zgq=fqhCEMfFKi~f5#SK262zhN0A-0?w%HJ+%2uhUsfV%~4%p3-LNM=;gc$)LVPQFh zFCrFZK*$~-A%M748(yV>lgoMJ2-TiFd$!WkpNGs1>E1zTRSKmP0|;c0BHqf`oHI0J ztFEpliIp;?Jn$RAKuc9?D?P@3g_c(&^)vTEwkJS_jyW$sn%{)tr9PE#Y;i;Qaq0@b zse77f_h4f*H8)S)O5G?!wY(3B4o%|d>4%y<@3qz>}glC|nquf0$JNIor#PmF;{sZuxP4$8uuYUHsUp?dL;SeSgTLo;UlwdtQB8SoVbXJ zh*h$UYMAJ2bar-i_18?>?frMVKRH;q_-lVEAMn*m1e2U9CYg-y>_jbvF;p~JEr37) zoB~rYF6vYzNoe>AfC)r+(}t;$wt3q~*iDRkV0(`9lY@q`B7!j|OHutp(tS3C*#sKK zUF=yiNChZ$fA}f*+SGqv18e{zn0Y~QPdlBMH+@RS!=H+t582A&QF50pombC~ESOBm z1qFK{qlCNtC>$HJ1zS&e_fB2#9dbu~u0B+(wt1cm~q*Y7p=>3VP27*J8M>2Op3n1FzSn_EHO z65h&T;YS)rtAdb9Sdv8LAn+9fg9(Gl-TS>$-FbD!W;bWQqg^j}{dIM99jX@K2B;P) z!3d?>v8X14Xt@!%Z@Yi}`qlEH7Bt)!Hl##}dib#a!RUYkN|!HR{)#C`lrQIR(`PbU zA)h^d@!}!2m149cKlxX2}kmVor5v{fs04xj1HPtwwrdEmMMPW>$h*~5w)Aa>pcP% zzG)UGl)!Mkhg2k_FK5SV)^C23L42)`o+Io)mG z^urDB(&0BMWkyQSHTU={dS6J(+HbD}LXSFr((a#*ZD^|l#0{d~Aszl>cn>{v3gRV9 z5c&eE>;)Sc&+_e*?ttk{@Jc@8@+;pn?+zzJ&3__lwF4pl8QGf1s4nB&tP$gdqMJ#_ zr3=BoOz=v9TMJz}ai`q$)3kh zy+kw)L#bjcczRSf;gUmniE#@H5w6{Z#t=4f?J5)gxwCNxKH&fU^Z$SA@GvazZa~0r z%coB}hzun<97&de5^<*ec$>&w)NH({3H=ltd;3&H!nHL4ikwI5~Sz znDFQIfO}8@rswBtp+^vcPf<}3$B7fVl92(51kpwIa2uu-2E-65P;x_2QwhuChzH4 zHm}04v+@4G-@l){>p&O+6t#6P$|7@nE~kb8`T76zpPBbTZI<4bv4KYbb}GdMj_j-= zzA>{N_CZ#moiAECF?fdyz-+q&>o&Xug@com90Iz>T1Aof_kjj~|nCbaamG zrkkVpIsP7$mDgXGc@2th=CV3{>j6j0Riz~lPb8o zzt4*c=oP}UaK<7MOf>G=Z@}t`s;UlRLu$nXZ&oiQs>|Z9G%dV~WjC~F%od#k^=iX= z9m*2+0WyN2CKeUx+TUizYn>h;1%D}P5-{j>T3QvXAPqyq%r9HSo+%VystDrCAc8Pa zZj2iH>T%1RgcE%+{xrXXlo&1TeS5@=Uh-E9Oc<0Nx1Ja;oy~$j<7g*nJAPHbDp5 zY+?v}DU0T-C@?{r$E!Rhy-ZG>I)(Wi4u|_#4oW#$ZSB1P)Wpj=q58qF z8w=&-<0C{pqkTK`9hBh*QFSPAa=vFpwi%l+aapJUXKG2sB%RCV4mIMg{zxj1~I^(xJ+o?iALI^(#@NEc3-~pO+o_?lL z3*Lr9khb5g@sBX60uEI9;|Ci;T;gM6V?q{9yVv?R*VzfL4kUMrQ|Syfa1)6H!%ab5 z{c(}>CFFOI?V0Jd%Ni`1DyL|>_OCo&AHgm}BHFUe&XX#gTcsc1H31UtN*hKHnXdx< z35kl@-H_{gUV0SpM;G6W8|iyMCdZJV#e>odwUSJ%^tbAIsh_VeUKqNQfx!pG^v+z1 z1g3j3U6{cVAL0&>a+Zchj!gdRAF-*Hx6-ky7rI;u*5{Ffs6#=%};38tr#5;IvzZI+W!csIf!SmT=b>Z%P ze>vq;O{XmN9~nSWhDaHF=24;e+klPn4(A&7_BPp?DiXw{T1;adK4f5YDN70O8t$_r zmo1fsC?Q;HRP54d@*O!LG8DHmag5+>_4R?lnh4XvmqRwW-2?~tYp&I!J|tWW^zJNk zBt?G~;Ux~UI} z{Kf>Y(oXEm0pewx_(f%erAH_*0I3R|p3+1*AHex+qWVb7o4DB6L|g_ApMCOeMh$}o zR5^!gyw&d^0&QgjqksN9AQWpbG?EXfLK(yOpFgjd%w6;2QC{%I1V27oK7e}SH5^HK zd0O^y;O=R-wyC1IaS;ch|)1fdfOd$XeQXf<&yp3x+2{A1N z#6$=M3IZr`K)eF9({Z+OALS<^>@m4P{Cd&$8|wP{LBtD`;TxJ7xVq-|C5dEe2O};O zROpJV$6YAm%5hV1IK*gZ*o@Ziwq)Wz2-PQ5a~tVhZf;Hg=EhA#Mn^*rCH;@q&OEH< ze2?QNL_;_!CA*VScDEuGDhHK@Lg6&ICrb;8vSdOWj83+u8KT>0kSz&OhPF$SOs*^; zP1B(cLm4faXmrSZef@Qx=RWtp`wtJ#L-qT8zn|s3oi4HVnevCP*h#WVra40JUdi&9 z?cwo-=(=z{)+SwHjsnhq;@NMgJ8_UTd^cbOacR#W;El}OLbDZOQ3o_+O-l6bF3j!% zsbpi3gj7V?j~i!%vFE!zn^qIAP;~R)#mvlv@#fsDVkqiNXnT<-QK>o3!oM^q=<)^| z)nEf*?8h}i!rFG?)3BV)`k{VreEbX)2g1BWT>`KWZf<6bvgAot{1DWC#o^l8TC4b; z_GsY8+o!!bvCf7>;5#qud+(=q{lmGfWmbOktr0-Vu~`deGei9Kv9A3C0869p&||KQ zjJ`&-)xX!YhI|TZLKnxFzgL1C%lHN=4J9E@3-Yr{T$U}fM7^^QWK0RIRu&x=}*w~Iok8K9~H1;c7>~nyk%H2ZDz9awl=}%9I`fk%5296_e1OiL?D`wlTo%Im2LSNu{IJ`6uRbn*tZV{ z@1#sNpjx_O1eP3O{Bhpu(xc%;#~YeGk0#Q28L36OaJ7i(3-7qOtwryicf--t-}I*D zG?A;=<&*B|rIt`2#vB&6_vrGxqhr&fz^#+Pacml5~ZGA*_B5sQ-nW&|8FX+009&w75SIK041kTXPY)b+ZbAE>rG zHa-}zvg~A#NAR77#{yMb-S^SqkhIjrs-4kyUZ!m9feXfwH+5W-Q4UTbIP2d!FE~k*P|^Ho5=jd8?y)siqLspd98L(Jgej3pyU zc(v)9+KQ7@7Xb%T;RHPAGk^ZD0gekI@yVu^3xfO9REd8>J6nWB-YfojBsfCnpr|l1L2X;xhs`jr)KRYbk~s zEl`N|YgjT>-XcX*I%MQXud2v1An>#|X(#Igo%d-`YZ}t0{KGnO%D9-o;rzJ=Oo~?i46ut)m1lLw%S^&ihjZ59ProY$J zs3ttw&=IPK(y$X|V)Dn9xp@>j3XhmctE#G+M0W!rYb*dkbpe4DiUw$^P3`YrI{WT9 ztP=IKsHZ3qCi>T2U30?$rN>`Vt|4%0NR3%3DOWGoT14oCOM=hd1M6-d%G@6Rf@ z85DdUU$=(r*&=2cHCIX>m6Pa`m@x+rm?e*j%QcqzB!8Qbpn_5yfba7!q=Lsa(FM8& zr+I#UqK;#-u{-_se&Jai2^2+HTyS}1QkK6dvm9*brhg^*GHk&p3B3p2vTmN9p2w#S zROjS4ioZnYX%^hdv57!D1bjKcT)B7e-kSRQy@;hlvK4$4F|EhM#ApLe! zvUB(DZZRL;%s>R|p4*+}sD@fpnmFJWnwkKwu+p*X6qw6$emom}8K?xqKjhoj~ z!EtD(I2KYd__t-@lfYLIcHQjwG^siUgJ>Xn7j2KuyoVyRDdOCQ*!3+5k>!|u{`x#J z@qrYARJ*kfoc;=iR`PYDm$2N!0o*?m{AYMD1RVh*)@a9?Xf*D*jgSH6;!oVC@n5Iq zoxpf3b8zT``e8cUYQ?}opBLK))h*csRn7DD9YS!{`F#7d^mN;b;b%{uR_i66){odd zO19iqcw@O&1~+cp&@Ow6XVb#Us#vM#O~~T#;lr2u_tX^`&lU(FKYk%l^Knh)7x3?ECFTsK$nIp6O5okP!&^EI8MlZ^<-ZwvO9!Wg%-HEfL2_MFat5Wvx zofoa0z_mUAuCO*c7^TGu3%b)fH7RsuDAe5{r>N0P3r`l?mQaxB{tg76^gu$#ZLU2$ z=k4G}<>lIM%oc4G)o*bInSjTR9JyBgOZnEVTb-WFPE=Qp7LD*v=#nN5xeUslAVe{U ztwx%6HXzr}G3(Kqh=}XV>;fk)EOZm_Mr@yZ^-s^}@SLt^Y7rDbjaJ)%+z{SOoo3jm zQC~K`+wK<-5GM6I;AsgR=RI%U4%QwKgLe%eNo;EQQ+ugv?-y;RB_uFNc5sz?&z);g zzx*weOD6H%07dS(3T6{m?Ch>zzWmwL$Vf$>!~fEi!D##RR8>NP5hNw+s$tz~S#%MP z&8S4q5C>cpIQCNXsaJpWYrlH1Jx#YoQ_tcdqA5*vif-J@&qJY?Jl z{Wq%fpC}LCr+R5ISQ&j^_!va0kcpYu%-AYhXhGPXxs_hbxvQ-b)$Tzc62#iZ^Jx~x zE?%5dx%n|NpB+Fq;!`9T*b~&jaaBM;)oi<+Pkp7?%~2#Q2u!Z-+`Ge; zvbGUogmB-<`%%1pc!uY#C&9xzxNeASdA>jihuZ!x2m^%ebg9;Bq*20cyyb4vPAtPn zJ@in3ifn{gDb8{DgDpt?p%LzXQhE)F(%a9^Dhy0bUp$tiFANO@*E$x(C0jghPbIfs zfMyaUVxZFU%jJ(Brxp~{WJPFxl*=QF7%_+1va@)nKZ5ph2@SOo!9U^%B==eX6CD>xqEdqj7mPRx1||kGMts zKrT!4`6Xcw-pi@dPU0wVv4BDe)MKIh8T>;cAywT0su`G75fy0*eytURwKIuc~*OxB- zsCKs^=}Y3`{9IsWFn`PnVa|Jaz)RGY;sE_x6WB$ZpP^3Tt^PlM|J1X!NzZu8vfG|~ Q6p_SZ+AR4wH|4f}1F`F)-T(jq literal 12411 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 diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index 0bdabc8..afffe23 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -1,56 +1,19 @@ -# from pdfdeal import Doc2X -# from pdfdeal.file_tools import get_files -# import os -# import logging +from pdfdeal import Doc2X +from pdfdeal.file_tools import get_files +import logging -# httpx_logger = logging.getLogger("httpx") -# httpx_logger.setLevel(logging.WARNING) -# logging.basicConfig(level=logging.INFO) +httpx_logger = logging.getLogger("httpx") +httpx_logger.setLevel(logging.WARNING) +logging.basicConfig(level=logging.INFO) -# def test_single_pic2file(): -# client = Doc2X() -# filepath, _, _ = client.pic2file( -# image_file="tests/image/sample.png", -# output_path="./Output/test/single/pic2file", -# output_names=["pic_sample1.docx"], -# output_format="docx", -# ) -# if filepath[0] != "": -# assert os.path.exists(filepath[0]) -# assert os.path.isfile(filepath[0]) -# assert filepath[0].endswith(".docx") -# assert os.path.basename(filepath[0]) == "pic_sample1.docx" - - -# def test_multiple_pic2file(): -# client = Doc2X() -# file_list, rename = get_files("tests/image", "img", "docx") -# success, failed, flag = client.pic2file( -# image_file=file_list, -# output_path="./Output/test/multiple/pic2file", -# output_names=rename, -# output_format="docx", -# ) -# assert flag -# assert len(success) == len(failed) == 3 -# for s in success: -# if s != "": -# assert s.endswith("sample1.docx") or s.endswith("sample.docx") - - -# # def test_multiple_high_rpm(): -# # client = Doc2X() -# # file_list = ["tests/image/sample.png" for _ in range(20)] -# # success, failed, flag = client.pic2file( -# # image_file=file_list, -# # output_path="./Output/test", -# # ) -# # assert len(success) == len(failed) == 20 -# # i = 0 -# # for s in success: -# # if s != "": -# # assert s.endswith(".zip") -# # else: -# # i += 1 -# # print(f"===Failed {i} times===") +def test_piclayout(): + client = Doc2X() + # Test single file layout analysis + results, errors, has_error = client.piclayout("tests/image/sample.png") + assert not has_error + assert isinstance(results, list) # 返回值应该是列表类型 + assert len(errors) == 1 + assert isinstance(errors[0], dict) + assert "error" in errors[0] + assert "path" in errors[0] From 6c0112fc830d0d206afd54873026148415108645 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Thu, 5 Jun 2025 16:55:36 +0800 Subject: [PATCH 09/46] =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/ConvertV1.py | 52 +++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV1.py b/src/pdfdeal/Doc2X/ConvertV1.py index 1e6bad0..9a803e6 100644 --- a/src/pdfdeal/Doc2X/ConvertV1.py +++ b/src/pdfdeal/Doc2X/ConvertV1.py @@ -10,7 +10,8 @@ Base_URL = "https://api.doc2x.noedgeai.com/api" warnings.warn( - "V1 API is deprecated and will be removed in a future version. Use V2 API instead.", + "V1 API is deprecated and will be removed in a future version. " + "Use V2 API instead.", DeprecationWarning, stacklevel=2, ) @@ -70,10 +71,10 @@ async def check_folder(path: str) -> bool: @async_retry() async def uuid2file( - apikey: str, - uuid: str, - output_format: Literal["md", "md_dollar", "latex", "docx"], - output_path: str = "./Output", + apikey: str, + uuid: str, + output_format: Literal["md", "md_dollar", "latex", "docx"], + output_path: str = "./Output", ) -> str: """Get the file by the uuid @@ -148,17 +149,19 @@ async def get_limit(apikey: str) -> int: @async_retry() async def upload_pdf( - apikey: str, - pdffile: str, - translate: bool = False, - language: str = "zh", - model: str = "deepseek", + apikey: str, + pdffile: str, + ocr: bool = True, + translate: bool = False, + language: str = "zh", + model: str = "deepseek", ) -> str: """Upload pdf file to server and return the uuid of the file Args: apikey (str): The key pdffile (str): The pdf file path + ocr (bool, optional): Do OCR or not. Defaults to True. translate (bool, optional): Do translate or not. Defaults to False. language (str, optional): The language of the file. Defaults to "zh", only valid when translate is True. model (str, optional): The model of the file. Defaults to "deepseek", only valid when translate is True. @@ -182,6 +185,7 @@ async def upload_pdf( raise FileError("PDF dile size should be less than 100MB!") except Exception as e: raise FileError(f"Open file error! {e}") + ocr = 1 if ocr else 0 translate = 2 if translate else 1 timeout = httpx.Timeout(120) if translate == 1: @@ -190,6 +194,7 @@ async def upload_pdf( url, headers={"Authorization": "Bearer " + apikey}, files=file, + data={"ocr": ocr, "parse_to": translate}, ) else: async with httpx.AsyncClient(timeout=timeout) as client: @@ -198,6 +203,7 @@ async def upload_pdf( headers={"Authorization": "Bearer " + apikey}, files=file, data={ + "ocr": ocr, "parse_to": translate, "lang": language, "model": model, @@ -206,8 +212,8 @@ async def upload_pdf( if post_res.status_code == 200: try: if ( - "parse_task_limit_exceeded" - == json.loads(post_res.content.decode("utf-8"))["code"] + "parse_task_limit_exceeded" + == json.loads(post_res.content.decode("utf-8"))["code"] ): raise RateLimit() else: @@ -228,10 +234,10 @@ async def upload_pdf( @async_retry() async def upload_img( - apikey: str, - imgfile: str, - formula: bool = False, - img_correction: bool = False, + apikey: str, + imgfile: str, + formula: bool = False, + img_correction: bool = False, ) -> str: """Upload image file to server and return the uuid of the file @@ -273,8 +279,8 @@ async def upload_img( if post_res.status_code == 200: try: if ( - "parse_task_limit_exceeded" - == json.loads(post_res.content.decode("utf-8"))["code"] + "parse_task_limit_exceeded" + == json.loads(post_res.content.decode("utf-8"))["code"] ): raise RateLimit() else: @@ -375,10 +381,10 @@ async def decode_translate(datas: json, convert: bool) -> Tuple[list, list]: @async_retry() async def uuid_status( - apikey: str, - uuid: str, - convert: bool = False, - translate: bool = False, + apikey: str, + uuid: str, + convert: bool = False, + translate: bool = False, ) -> Tuple[int, str, list]: """Get the status of the file @@ -474,4 +480,4 @@ async def process_status(original_file: list, output_file: list): except AttributeError: has_error_flag = False - return success_file, error_file, has_error_flag + return success_file, error_file, has_error_flag \ No newline at end of file From 2ab479487d06c6e052924521dacc5362daf347dd Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Thu, 5 Jun 2025 17:00:15 +0800 Subject: [PATCH 10/46] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86V2=E4=B8=AD?= =?UTF-8?q?=E7=9A=84parse=5Fimage=5Flayout,=E5=8E=9F=E6=9C=AC=E8=AF=A5?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E6=97=A0=E6=B3=95=E5=A4=84=E7=90=86=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E7=9B=B8=E5=90=8C=E6=96=87=E4=BB=B6=E5=90=8D=E7=9A=84?= =?UTF-8?q?pic=EF=BC=8C=E5=9B=A0=E4=B8=BAzip=E5=BF=85=E9=A1=BB=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/ConvertV2.py | 54 ++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index d4a4725..3f9dbb8 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -1,3 +1,7 @@ +import asyncio +import random +import string + import httpx import json import os @@ -26,7 +30,7 @@ "parse_error": "图片内容无法解析,请反馈给我们 (Image content cannot be parsed, please provide feedback)", "parse_file_invalid": "无法解析这个图片,一般是图片不合法 (Cannot parse this image, usually due to invalid format)", "request_limit_exceeded": "请等待一段时间后再请求 (Please wait for a while before making another request)", - "parse_file_too_large": "当前允许单个图片大小 <= 3M,尝试对图片进行压缩 (Current single image size limit is <= 3M, try compressing the image)", + "parse_file_too_large": "当前允许单个图片大小 <= 7M,尝试对图片进行压缩 (Current single image size limit is <= 7M, try compressing the image)", } @@ -50,7 +54,7 @@ async def upload_pdf(apikey: str, pdffile: str, oss_choose: str = "always") -> s """ url = f"{Base_URL}/v2/parse/pdf" if oss_choose == "always" or ( - oss_choose == "auto" and os.path.getsize(pdffile) >= 100 * 1024 * 1024 + oss_choose == "auto" and os.path.getsize(pdffile) >= 100 * 1024 * 1024 ): return await upload_pdf_big(apikey, pdffile) elif oss_choose == "none" and os.path.getsize(pdffile) >= 100 * 1024 * 1024: @@ -190,9 +194,9 @@ async def decode_data(data: dict, convert: bool) -> Tuple[list, list]: @async_retry() async def uid_status( - apikey: str, - uid: str, - convert: bool = False, + apikey: str, + uid: str, + convert: bool = False, ) -> Tuple[int, str, list, list]: """Get the status of the file @@ -247,11 +251,11 @@ async def uid_status( @async_retry() async def convert_parse( - apikey: str, - uid: str, - to: str, - filename: str = None, - merge_cross_page_forms: bool = False, + apikey: str, + uid: str, + to: str, + filename: str = None, + merge_cross_page_forms: bool = False, ) -> Tuple[str, str]: """Convert parsed file to specified format @@ -359,7 +363,7 @@ async def get_convert_result(apikey: str, uid: str) -> Tuple[str, str]: @async_retry() async def download_file( - url: str, file_type: str, target_folder: str, target_filename: str + url: str, file_type: str, target_folder: str, target_filename: str ) -> str: """ Download a file from the given URL to the specified target folder with the given filename. @@ -423,7 +427,7 @@ async def image_code_check(code: str, trace_id: str = None): @async_retry() async def parse_image_layout( - apikey: str, image_path: str, zip_path: str = None + apikey: str, image_path: str, zip_path: str = None ) -> tuple[list, str]: """Parse image layout @@ -443,19 +447,33 @@ async def parse_image_layout( - list: List of page dictionaries with page dimensions and md content - str: The unique identifier (uid) of the request """ + # Use the image name as the prefix for the zip file name + default_zip_filename = os.path.splitext(os.path.basename(image_path))[0] + new_zip_filename = f"{default_zip_filename}picture.zip" + + # Use zip_path + image name + picture.zip to name zip files if zip_path is None: - base_name = os.path.splitext(os.path.basename(image_path))[0] - zip_path = f"{base_name}picture.zip" + parent_directory = os.path.dirname(image_path) + if not parent_directory: + parent_directory = "." + zip_path = os.path.join(parent_directory, new_zip_filename) + else: + zip_path = os.path.join(zip_path, new_zip_filename) + if not os.path.exists(zip_path): os.makedirs(os.path.dirname(zip_path), exist_ok=True) + # Check zip_path is a file path and not exists if os.path.isfile(zip_path): - raise FileError("zip_path already exists! Please check the path") + base_name, extension = os.path.splitext(zip_path) + random_digits = ''.join(random.choices(string.digits, k=10)) + zip_path = f"{base_name}-副本-{random_digits}{extension}" + # raise FileError("zip_path already exists! Please check the path") if not zip_path.endswith(".zip"): raise FileError("zip_path must end with .zip") # Check file size - if os.path.getsize(image_path) > 3 * 1024 * 1024: # 3MB - raise FileError("Image file size exceeds 3MB limit") + if os.path.getsize(image_path) > 3 * 1024 * 1024: # 7MB + raise FileError("Image file size exceeds 7MB limit") url = f"{Base_URL}/v2/parse/img/layout" @@ -494,4 +512,4 @@ async def parse_image_layout( return ( data.get("data", {}).get("result", {}).get("pages", []), data.get("data", {}).get("uid", "Failed to get uid"), - ) + ) \ No newline at end of file From e4974ed1932fd74fdbda8816746c1eb8bd6982b7 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Thu, 5 Jun 2025 17:00:29 +0800 Subject: [PATCH 11/46] =?UTF-8?q?=E4=BF=9D=E7=95=99=E4=BA=86pdf2file?= =?UTF-8?q?=E4=B8=AD=E7=9A=84ocr=EF=BC=9B=E5=8F=A6=E5=A4=96=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86piclayout=E6=8E=A5=E5=8F=A3=E5=B0=81=E8=A3=85?= =?UTF-8?q?=E4=BA=86ImageProcessor=E4=B8=AD=E7=9A=84=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E5=A4=84=E7=90=86picture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/doc2x.py | 115 +++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 60 deletions(-) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index b33e56d..bda0a55 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -1,6 +1,6 @@ import asyncio import os -from typing import Tuple, List, Union, Optional +from typing import Dict, Tuple, List, Union, Optional, Any, Coroutine import logging from .Doc2X.ConvertV2 import ( upload_pdf, @@ -20,13 +20,13 @@ async def parse_pdf( - apikey: str, - pdf_path: str, - maxretry: int, - wait_time: int, - max_time: int, - convert: bool, - oss_choose: str = "auto", + apikey: str, + pdf_path: str, + maxretry: int, + wait_time: int, + max_time: int, + convert: bool, + oss_choose: str = "auto", ) -> Tuple[str, List[str], List[dict]]: """Parse PDF file and return uid and extracted text""" @@ -91,13 +91,13 @@ async def task_limit_lock(): async def convert_to_format( - apikey: str, - uid: str, - output_format: str, - output_path: str, - output_name: str, - max_time: int, - merge_cross_page_forms: bool = False, + apikey: str, + uid: str, + output_format: str, + output_path: str, + output_name: str, + max_time: int, + merge_cross_page_forms: bool = False, ) -> str: """Convert parsed PDF to specified format""" @@ -125,14 +125,14 @@ async def convert_to_format( class Doc2X: def __init__( - self, - apikey: str = None, - thread: int = 5, - max_pages: int = 1000, - retry_time: int = 5, - max_time: int = 300, - debug: bool = False, - full_speed: bool = False, + self, + apikey: str = None, + thread: int = 5, + max_pages: int = 1000, + retry_time: int = 5, + max_time: int = 300, + debug: bool = False, + full_speed: bool = False, ) -> None: """ Initialize a Doc2X client. @@ -183,15 +183,15 @@ def image_processor(self) -> ImageProcessor: return self._image_processor def piclayout( - self, - pic_file: str, - zip_path: Optional[str] = None, - concurrent_limit: Optional[int] = 5, + self, + pic_file, + zip_path: Optional[str] = None, + concurrent_limit: Optional[int] = 5, ) -> tuple[List[Union[list, str]], List[dict], bool]: - """Process a single image file with layout analysis + """Process image files with layout analysis Args: - pic_file (str): Path to a single image file (jpg/png) + pic_file (str | List[str]): Path to image files (jpg/png) zip_path (str, optional): Path to save the zip file containing images. Defaults to None. concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to 5. @@ -200,21 +200,7 @@ def piclayout( - List of layout analysis results (list or str) - List of dictionaries containing error information - Boolean indicating if any errors occurred - - Raises: - ValueError: If the input file is not a jpg/png file or doesn't exist """ - # Validate file exists - if not os.path.isfile(pic_file): - raise ValueError(f"File not found: {pic_file}") - - # Validate file extension - ext = os.path.splitext(pic_file)[1].lower() - if ext not in [".jpg", ".jpeg", ".png"]: - raise ValueError( - f"Unsupported file type: {ext}. Only jpg/png files are supported." - ) - return self.image_processor.pic2file( pic_file=pic_file, process_type="layout", @@ -223,14 +209,14 @@ def piclayout( ) async def pdf2file_back( - self, - pdf_file, - output_names: List[str] = None, - output_path: str = "./Output", - output_format: str = "md_dollar", - convert: bool = False, - oss_choose: str = "auto", - merge_cross_page_forms: bool = False, + self, + pdf_file, + output_names: List[str] = None, + output_path: str = "./Output", + output_format: str = "md_dollar", + convert: bool = False, + oss_choose: str = "auto", + merge_cross_page_forms: bool = False, ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -491,14 +477,15 @@ async def convert_file(index, name): return success_files, failed_files, has_error def pdf2file( - self, - pdf_file, - output_names: List[str] = None, - output_path: str = "./Output", - output_format: str = "md_dollar", - convert: bool = False, - oss_choose: str = "always", - merge_cross_page_forms: bool = False, + self, + pdf_file, + output_names: List[str] = None, + output_path: str = "./Output", + output_format: str = "md_dollar", + convert: bool = False, + oss_choose: str = "always", + merge_cross_page_forms: bool = False, + ocr: bool = False, ) -> Tuple[List[str], List[dict], bool]: """Convert PDF file to specified format @@ -510,13 +497,21 @@ def pdf2file( convert (bool, optional): Convert "[" and "[[" to "$" and "$$". Defaults to False. oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. - + ocr (bool, optional): This option is deprecated and will not be used. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: - List[str]: List of output file paths - List[dict]: List of error messages - bool: Whether there was an error """ + if ocr: + import warnings + + warnings.warn( + "The 'ocr' option is deprecated and will not be used.", + DeprecationWarning, + stacklevel=2, + ) return run_async( self.pdf2file_back( pdf_file=pdf_file, From 8d5ed900c7582dd5889f5e316346d11f856d2951 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Thu, 5 Jun 2025 17:00:39 +0800 Subject: [PATCH 12/46] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=5Fget=5Flock?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8ImageProcessor=E5=BC=80=E5=90=AF=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E5=BE=AA=E7=8E=AF=E6=97=B6=E6=89=8D=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/doc2x_img.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index d3a9b49..759debb 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -14,23 +14,30 @@ class ImageProcessor: def __init__(self, apikey: str): """Initialize the image processor - Args: apikey (str): API key for authentication """ self.apikey = apikey self._request_times: List[float] = [] - self._lock = asyncio.Lock() + self._lock = None + self._loop = None + + async def _get_lock(self) -> asyncio.Lock: + if self._lock is None: + # Get the loop from the current async context + self._loop = asyncio.get_running_loop() + self._lock = asyncio.Lock(loop=self._loop) # Pass the loop explicitly + return self._lock async def _check_rate_limit(self): """Check and enforce rate limit (120 requests per 30 seconds)""" - async with self._lock: + lock = await self._get_lock() + async with lock: current_time = asyncio.get_event_loop().time() # Remove requests older than 30 seconds self._request_times = [ t for t in self._request_times if current_time - t <= 30 ] - if len(self._request_times) >= 120: # Calculate wait time if rate limit reached wait_time = 30 - (current_time - self._request_times[0]) @@ -41,7 +48,6 @@ async def _check_rate_limit(self): await asyncio.sleep(wait_time) # Recursive call after waiting to ensure we're still within limits await self._check_rate_limit() - self._request_times.append(current_time) async def process_image( @@ -78,8 +84,9 @@ async def process_image( if zip_path: logger.info(f"Layout results saved to zip file at {zip_path}") return pages, uid, True - return None, None, False - + else: + logger.error(f"Error process_type: {process_type}") + raise ValueError(f"Unsupported process_type: '{process_type}'") except RateLimit as e: logger.error(f"Rate limit exceeded while processing {image_path}: {str(e)}") raise @@ -117,7 +124,6 @@ async def process_with_semaphore( logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") result = await self.process_image(path, process_type, zip_path) return index, path, result - tasks = [process_with_semaphore(path, i) for i, path in enumerate(image_paths)] results = await asyncio.gather(*tasks, return_exceptions=True) @@ -201,7 +207,6 @@ async def pic2file_back( logger.info( f"Processing completed successfully: {success_count} file(s) processed" ) - return final_results, failed_files, has_error def pic2file( From 8783f3c03843b8be3320188eafb31033c4dcc26f Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Thu, 5 Jun 2025 17:00:43 +0800 Subject: [PATCH 13/46] =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/doc2x_legacy.py | 152 +++++++++++++++++++----------------- 1 file changed, 80 insertions(+), 72 deletions(-) diff --git a/src/pdfdeal/doc2x_legacy.py b/src/pdfdeal/doc2x_legacy.py index 337bd10..0f2bad7 100644 --- a/src/pdfdeal/doc2x_legacy.py +++ b/src/pdfdeal/doc2x_legacy.py @@ -43,16 +43,17 @@ async def get_key(apikey: str) -> str: async def pdf2file_v1( - apikey: str, - pdf_path: str, - output_path: str, - output_format: str, - maxretry: int, - rpm: int, - convert: bool, - translate: bool = False, - language: str = "zh", - model: str = "deepseek", + apikey: str, + pdf_path: str, + output_path: str, + output_format: str, + ocr: bool, + maxretry: int, + rpm: int, + convert: bool, + translate: bool = False, + language: str = "zh", + model: str = "deepseek", ): """ Convert pdf file to specified file, @@ -62,6 +63,7 @@ async def pdf2file_v1( uuid = await upload_pdf( apikey=apikey, pdffile=pdf_path, + ocr=ocr, translate=translate, language=language, model=model, @@ -74,6 +76,7 @@ async def pdf2file_v1( uuid = await upload_pdf( apikey=apikey, pdffile=pdf_path, + ocr=ocr, translate=translate, language=language, model=model, @@ -107,15 +110,15 @@ async def pdf2file_v1( async def img2file_v1( - apikey: str, - img_path: str, - output_path: str, - output_format: str, - formula: bool, - img_correction: bool, - maxretry: int, - rpm: int, - convert: bool, + apikey: str, + img_path: str, + output_path: str, + output_format: str, + formula: bool, + img_correction: bool, + maxretry: int, + rpm: int, + convert: bool, ) -> str: """ Convert image file to specified file @@ -164,10 +167,10 @@ class Doc2X: """Init the Doc2X class(V1)""" def __init__( - self, - apikey: str = None, - rpm: int = None, - thread: int = None, + self, + apikey: str = None, + rpm: int = None, + thread: int = None, ) -> None: """Init the Doc2X class @@ -198,13 +201,13 @@ def __init__( self.maxretry = None async def pic2file_back( - self, - image_file: list, - output_path: str = "./Output", - output_format: str = "md_dollar", - img_correction: bool = True, - equation=False, - convert: bool = False, + self, + image_file: list, + output_path: str = "./Output", + output_format: str = "md_dollar", + img_correction: bool = True, + equation=False, + convert: bool = False, ) -> str: """ Convert image file to specified file, with rate/thread limit @@ -236,14 +239,14 @@ async def limited_img2file_v1(img): return await process_status(image_file, completed_tasks) def pic2file( - self, - image_file, - output_path: str = "./Output", - output_names: list = None, - output_format: str = "md_dollar", - img_correction: bool = True, - equation: bool = False, - convert: bool = False, + self, + image_file, + output_path: str = "./Output", + output_names: list = None, + output_format: str = "md_dollar", + img_correction: bool = True, + equation: bool = False, + convert: bool = False, ) -> Tuple[list, list, bool]: """Convert image file to specified file @@ -306,14 +309,15 @@ def pic2file( return success, failed, flag async def pdf2file_back( - self, - pdf_file: list, - output_path: str = "./Output", - output_format: str = "md_dollar", - convert: bool = False, - translate: bool = False, - language: str = "zh", - model: str = "deepseek", + self, + pdf_file: list, + output_path: str = "./Output", + output_format: str = "md_dollar", + ocr: bool = True, + convert: bool = False, + translate: bool = False, + language: str = "zh", + model: str = "deepseek", ) -> str: """ Convert pdf file to specified file, with rate/thread limit, async version @@ -329,6 +333,7 @@ async def limited_pdf2file_v1(pdf): pdf_path=pdf, output_path=output_path, output_format=output_format, + ocr=ocr, maxretry=self.maxretry, rpm=self.rpm, convert=convert, @@ -346,12 +351,13 @@ async def limited_pdf2file_v1(pdf): return await process_status(pdf_file, completed_tasks) def pdf2file( - self, - pdf_file, - output_path: str = "./Output", - output_names: list = None, - output_format: str = "md_dollar", - convert: bool = False, + self, + pdf_file, + output_path: str = "./Output", + output_names: list = None, + output_format: str = "md_dollar", + ocr: bool = True, + convert: bool = False, ) -> Tuple[list, list, bool]: """Convert pdf file to specified file @@ -360,6 +366,7 @@ def pdf2file( output_path (str, optional): output folder path. Defaults to "./Output". output_names (list, optional): Custom Output File Names, must be the same length as `pdf_file`. Defaults to None. output_format (str, optional): output format, accept `texts`, `md`, `md_dollar`, `latex`, `docx`. Defaults to `md_dollar`. + ocr (bool, optional): whether to use OCR. Defaults to True. convert (bool, optional): whether to convert `[` to `$` and `[[` to `$$`. Defaults to False. Raises: @@ -387,7 +394,7 @@ def pdf2file( success, failed, flag = run_async( self.pdf2file_back( - pdf_file, output_path, output_format, convert, False + pdf_file, output_path, output_format, ocr, convert, False ) ) logging.info( @@ -414,12 +421,12 @@ def get_limit(self) -> int: return run_async(get_limit(self.apikey)) async def pdfdeal_back( - self, - input: str, - output: str, - path: str, - convert: bool, - limit: asyncio.Semaphore, + self, + input: str, + output: str, + path: str, + convert: bool, + limit: asyncio.Semaphore, ): """ Convert pdf files into recognisable pdfs, significantly improving their effectiveness in RAG systems @@ -432,6 +439,7 @@ async def pdfdeal_back( pdf_path=input, output_path=output, output_format="texts", + ocr=True, maxretry=self.maxretry, rpm=self.rpm, convert=convert, @@ -457,11 +465,11 @@ async def pdfdeal_back( limit.release() async def pdfdeals( - self, - pdf_files: list, - output_path: str = "./Output", - output_format: str = "pdf", - convert: bool = True, + self, + pdf_files: list, + output_path: str = "./Output", + output_format: str = "pdf", + convert: bool = True, ) -> list: """ Convert pdf files into recognisable pdfs, significantly improving their effectiveness in RAG systems @@ -490,12 +498,12 @@ async def pdfdeals( return success_file, error_file, error_flag def pdfdeal( - self, - pdf_file, - output_format: str = "pdf", - output_names: list = None, - output_path: str = "./Output", - convert: bool = True, + self, + pdf_file, + output_format: str = "pdf", + output_names: list = None, + output_path: str = "./Output", + convert: bool = True, ) -> Tuple[list, list, bool]: """Deal with pdf file, convert it to specified format for RAG system @@ -510,7 +518,7 @@ def pdfdeal( tuple[list,list,str]: will return `list1`,`list2`,`bool` `list1`: list of successful files path, if some files are failed, its path will be empty string - `list2`: list of failed files's error message and its original file path, id some files are successful, its error message will be empty string + `list2`: list of failed file's error message and its original file path, id some files are successful, its error message will be empty string `bool`: True means that at least one file process failed """ output_format = RAG_OutputType(output_format) @@ -536,4 +544,4 @@ def pdfdeal( if output_names is not None: success = list_rename(success, output_names) - return success, failed, flag + return success, failed, flag \ No newline at end of file From e7df1ed2fd5af3fb7246ca4dec42a329fa5af6e1 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Thu, 5 Jun 2025 17:00:47 +0800 Subject: [PATCH 14/46] =?UTF-8?q?=E5=88=A9=E7=94=A8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=9A=84piclayout=E6=8E=A5=E5=8F=A3=E5=AE=8C=E6=88=90=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_pic2file.py | 45 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index afffe23..7d70382 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -6,6 +6,50 @@ httpx_logger.setLevel(logging.WARNING) logging.basicConfig(level=logging.INFO) +def test_single_pic2file(): + client = Doc2X() + results, errors, has_error = client.piclayout( + pic_file="tests/image/sample.png", + zip_path="./Output/test/single/", + ) + print(results) + print(errors) + print(has_error) + assert not has_error + assert isinstance(results, list) # 返回值应该是列表类型 + assert len(errors) == 1 + assert isinstance(errors[0], dict) + assert "error" in errors[0] + assert "path" in errors[0] + + +def test_multiple_pic2file(): + client = Doc2X() + file_list, rename = get_files("tests/image", "img", "docx") + results, errors, has_error = client.piclayout( + pic_file=file_list, + zip_path="./Output/test/multiple/", + ) + assert isinstance(results, list) # 返回值应该是列表类型 + assert len(errors) == 3 + assert isinstance(errors[0], dict) + assert "error" in errors[0] + assert "path" in errors[0] + + +def test_multiple_high_rpm(): + client = Doc2X() + file_list = ["tests/image/sample.png" for _ in range(20)] + results, errors, has_error = client.piclayout( + pic_file=file_list, + zip_path="./Output/test/highrpm/", + ) + assert not has_error + assert isinstance(results, list) # 返回值应该是列表类型 + assert isinstance(errors[0], dict) + assert "error" in errors[0] + assert "path" in errors[0] + def test_piclayout(): client = Doc2X() @@ -13,7 +57,6 @@ def test_piclayout(): results, errors, has_error = client.piclayout("tests/image/sample.png") assert not has_error assert isinstance(results, list) # 返回值应该是列表类型 - assert len(errors) == 1 assert isinstance(errors[0], dict) assert "error" in errors[0] assert "path" in errors[0] From 8e0c0e381690fe28ec8a0f3145bdddcba5b578e0 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Fri, 6 Jun 2025 09:56:17 +0800 Subject: [PATCH 15/46] =?UTF-8?q?=E5=B0=86img=E5=A4=A7=E5=B0=8F=E9=99=90?= =?UTF-8?q?=E5=88=B6=E4=BF=AE=E6=94=B9=E4=B8=BA<=3D7MB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/ConvertV2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 3f9dbb8..c979bbd 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -472,7 +472,7 @@ async def parse_image_layout( if not zip_path.endswith(".zip"): raise FileError("zip_path must end with .zip") # Check file size - if os.path.getsize(image_path) > 3 * 1024 * 1024: # 7MB + if os.path.getsize(image_path) > 7 * 1024 * 1024: # 7MB raise FileError("Image file size exceeds 7MB limit") url = f"{Base_URL}/v2/parse/img/layout" From ad6d8389067316c4130ca7cbd9cadec4ce16f1c9 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Fri, 6 Jun 2025 11:14:54 +0800 Subject: [PATCH 16/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E8=A2=AB=E9=99=90=E9=80=9F=E5=90=8E=E5=86=8D=E6=AC=A1?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=BB=91=E5=8A=A8=E7=AA=97=E5=8F=A3=E4=BC=9A?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E6=97=A7=E4=B8=A4=E4=B8=AA=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=88=B3=E7=9A=84bug=EF=BC=9B=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BA=86=E6=BB=91=E5=8A=A8=E7=AA=97=E5=8F=A3=E5=9C=A8=E4=B8=B4?= =?UTF-8?q?=E7=95=8C=E5=8C=BAsleep=E5=AF=BC=E8=87=B4=E5=90=8E=E7=BB=AD?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=BA=8F=E5=88=97=E5=8C=96=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/doc2x_img.py | 44 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 759debb..4423676 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -1,5 +1,6 @@ import asyncio import logging +from collections import deque from typing import Dict, List, Optional, Union from .Doc2X.ConvertV2 import parse_image_layout from .Doc2X.Exception import RateLimit, run_async @@ -18,9 +19,11 @@ def __init__(self, apikey: str): apikey (str): API key for authentication """ self.apikey = apikey - self._request_times: List[float] = [] + self._request_times = deque() self._lock = None self._loop = None + self._rate = 30 + self._period = 30 async def _get_lock(self) -> asyncio.Lock: if self._lock is None: @@ -30,25 +33,28 @@ async def _get_lock(self) -> asyncio.Lock: return self._lock async def _check_rate_limit(self): - """Check and enforce rate limit (120 requests per 30 seconds)""" + """Check and enforce rate limit (30 requests per 30 seconds)""" lock = await self._get_lock() - async with lock: - current_time = asyncio.get_event_loop().time() - # Remove requests older than 30 seconds - self._request_times = [ - t for t in self._request_times if current_time - t <= 30 - ] - if len(self._request_times) >= 120: - # Calculate wait time if rate limit reached - wait_time = 30 - (current_time - self._request_times[0]) - if wait_time > 0: - logger.warning( - f"Rate limit reached, waiting for {wait_time:.2f} seconds" - ) - await asyncio.sleep(wait_time) - # Recursive call after waiting to ensure we're still within limits - await self._check_rate_limit() - self._request_times.append(current_time) + + while True: + async with lock: + current_time = asyncio.get_event_loop().time() + # Remove requests older than 30 seconds + while self._request_times and (current_time - self._request_times[0] > self._period): + self._request_times.popleft() + if len(self._request_times) < self._rate: + # Append new timestamp to sliding window + self._request_times.append(current_time) + return + # Wait time until oldest timestamp pop out + wait_time = self._period - (current_time - self._request_times[0]) + # Sleep outside the critical section to avoid holding the lock during sleep + if wait_time > 0: + logger.warning( + f"Rate limit reached, waiting for {wait_time:.2f} seconds. " + f"Current count: {len(self._request_times)}" + ) + await asyncio.sleep(wait_time) async def process_image( self, image_path: str, process_type: str = "layout", zip_path: str = None From 0a57955e1d5b1ac1550ac880d410032156b57dac Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Fri, 6 Jun 2025 11:16:22 +0800 Subject: [PATCH 17/46] =?UTF-8?q?=E4=BF=AE=E6=94=B9highRPM=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=AC=A1=E6=95=B0=E4=B8=BA31=E7=94=A8=E6=9D=A5?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8E=A5=E5=8F=A330s/30req=E7=9A=84=E9=99=90?= =?UTF-8?q?=E9=80=9F=E6=98=AF=E5=90=A6=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_pic2file.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index 7d70382..3208ffa 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -1,3 +1,5 @@ +import time + from pdfdeal import Doc2X from pdfdeal.file_tools import get_files import logging @@ -39,7 +41,8 @@ def test_multiple_pic2file(): def test_multiple_high_rpm(): client = Doc2X() - file_list = ["tests/image/sample.png" for _ in range(20)] + time.sleep(30) + file_list = ["tests/image/sample.png" for _ in range(31)] #测试处理上限是否为30s/30 req results, errors, has_error = client.piclayout( pic_file=file_list, zip_path="./Output/test/highrpm/", From 0313f97b5d904818bcc88c6785cecd258257ced1 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Fri, 6 Jun 2025 12:01:26 +0800 Subject: [PATCH 18/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=A4=9A?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E5=88=A4=E6=96=AD=E6=96=87=E4=BB=B6=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AD=98=E5=9C=A8=E9=80=A0=E6=88=90=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=A6=86=E7=9B=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/ConvertV2.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index c979bbd..96aa92d 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -464,10 +464,9 @@ async def parse_image_layout( os.makedirs(os.path.dirname(zip_path), exist_ok=True) # Check zip_path is a file path and not exists - if os.path.isfile(zip_path): - base_name, extension = os.path.splitext(zip_path) - random_digits = ''.join(random.choices(string.digits, k=10)) - zip_path = f"{base_name}-副本-{random_digits}{extension}" + base_name, extension = os.path.splitext(zip_path) + random_digits = ''.join(random.choices(string.digits, k=10)) + zip_path = f"{base_name}-{random_digits}{extension}" # raise FileError("zip_path already exists! Please check the path") if not zip_path.endswith(".zip"): raise FileError("zip_path must end with .zip") From 7f462515e23a0f9cd825482e6255e205b47b4a0b Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Mon, 9 Jun 2025 10:05:51 +0800 Subject: [PATCH 19/46] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BA=86pdf2file?= =?UTF-8?q?=E5=92=8Cpic2file=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=BD=A2=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/ConvertV2.py | 10 ++++++---- src/pdfdeal/Doc2X/Types.py | 1 + src/pdfdeal/doc2x.py | 1 - src/pdfdeal/doc2x_img.py | 19 ++++++++++++------- tests/test_pic2file.py | 7 +++---- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index b239d3c..bfda7bc 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -427,7 +427,7 @@ async def image_code_check(code: str, trace_id: str = None): @async_retry() async def parse_image_layout( - apikey: str, image_path: str, zip_path: str = None + apikey: str, image_path: str, zip_path: str = None, output_name: str = None ) -> tuple[list, str]: """Parse image layout @@ -435,7 +435,7 @@ async def parse_image_layout( apikey (str): The API key image_path (str): Path to the image file zip_path (str, optional): Path to save the zip file containing images. Defaults to image_name + 'picture.zip'. - + output_name (str): output file name. Defaults to None. Raises: FileError: If file size exceeds limit or file cannot be opened RateLimit: If rate limit is reached @@ -449,8 +449,10 @@ async def parse_image_layout( """ # Use the image name as the prefix for the zip file name default_zip_filename = os.path.splitext(os.path.basename(image_path))[0] - new_zip_filename = f"{default_zip_filename}picture.zip" - + print(f"default zip name{default_zip_filename}") + if output_name is not None: + default_zip_filename = output_name + new_zip_filename = default_zip_filename # Use zip_path + image name + picture.zip to name zip files if zip_path is None: parent_directory = os.path.dirname(image_path) diff --git a/src/pdfdeal/Doc2X/Types.py b/src/pdfdeal/Doc2X/Types.py index 08bf421..2744202 100644 --- a/src/pdfdeal/Doc2X/Types.py +++ b/src/pdfdeal/Doc2X/Types.py @@ -9,6 +9,7 @@ class OutputFormat(str, Enum): LATEX = "tex" MD = "md" MD_DOLLAR = "md_dollar" + ZIP = "zip" @classmethod def _missing_(cls, value): diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index bda0a55..53ae71d 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -86,7 +86,6 @@ async def task_limit_lock(): raise RequestError( "Max retry reached for parse_pdf, this may be a rate limit issue, try to reduce the number of threads." ) - raise RequestError("Failed to parse PDF after maximum retries") diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 6bece08..96718c9 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -57,7 +57,7 @@ async def _check_rate_limit(self): await asyncio.sleep(wait_time) async def process_image( - self, image_path: str, process_type: str = "layout", zip_path: str = None + self, image_path: str, process_type: str = "layout", zip_path: str = None, output_name: str = None ) -> tuple[list, str, bool]: """Process an image with layout analysis @@ -65,7 +65,7 @@ async def process_image( image_path (str): Path to the image file process_type (str): Type of processing, can be 'layout' zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. - + output_name (str): output file name. Defaults to None. Returns: Tuple containing: - The processing result (list of pages for layout) @@ -83,7 +83,7 @@ async def process_image( logger.info(f"Starting {process_type} processing for {image_path}") if process_type == "layout": await self._check_rate_limit() - pages, uid = await parse_image_layout(self.apikey, image_path, zip_path) + pages, uid = await parse_image_layout(self.apikey, image_path, zip_path, output_name) logger.info( f"Successfully completed layout analysis for {image_path} with uid {uid}" ) @@ -106,6 +106,7 @@ async def process_multiple_images( process_type: str = "layout", concurrent_limit: int = 5, zip_path: str = None, + output_zip_names: List[str] = None, ) -> tuple[List[list], Dict[str, bool]]: """Process multiple images concurrently with rate limiting @@ -114,7 +115,7 @@ async def process_multiple_images( process_type (str): Type of processing, can be 'layout' concurrent_limit (int): Maximum number of concurrent processing tasks zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. - + output_zip_names (List[str]): List of zip file name Returns: Tuple containing: - List of processing results in order (empty list for failed items) @@ -127,8 +128,10 @@ async def process_with_semaphore( index: int, ) -> tuple[int, str, tuple[list, str, bool]]: async with semaphore: + print(index, output_zip_names) logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") - result = await self.process_image(path, process_type, zip_path) + output_name = output_zip_names[index] if output_zip_names else None + result = await self.process_image(path, process_type, zip_path, output_name) return index, path, result tasks = [process_with_semaphore(path, i) for i, path in enumerate(image_paths)] @@ -160,6 +163,7 @@ async def pic2file_back( process_type: str = "layout", concurrent_limit: Optional[int] = None, zip_path: str = None, + output_zip_names: List[str] = None, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with layout analysis @@ -177,7 +181,7 @@ async def pic2file_back( process_type (str): Type of processing, can be 'ocr' or 'layout' concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. - + output_zip_names(List[str]): List of zip file name Returns: Tuple containing: - List of results in order (empty string for failed items) @@ -186,7 +190,7 @@ async def pic2file_back( """ if isinstance(pic_file, str): if os.path.isdir(pic_file): - pic_file, _ = get_files(path=pic_file, mode="pic") + pic_file, output_zip_names = get_files(path=pic_file, mode="img", out="zip") else: pic_file = [pic_file] @@ -195,6 +199,7 @@ async def pic2file_back( process_type=process_type, concurrent_limit=concurrent_limit or 5, zip_path=zip_path, + output_zip_names=output_zip_names, ) failed_files = [] diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index f5a95d3..73f8017 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -25,9 +25,8 @@ def test_single_pic2file(): def test_multiple_pic2file(): client = Doc2X() - file_list, rename = get_files("tests/image", "img", "docx") results, errors, has_error = client.piclayout( - pic_file=file_list, + pic_file="tests/image", zip_path="./Output/test/multiple/", ) assert isinstance(results, list) # 返回值应该是列表类型 @@ -39,14 +38,14 @@ def test_multiple_pic2file(): def test_multiple_high_rpm(): client = Doc2X() - time.sleep(30) - file_list = ["tests/image/sample.png" for _ in range(31)] #测试处理上限是否为30s/30 req + file_list = ["tests/image/sample.png" for _ in range(30)] #测试处理上限是否为30s/30 req results, errors, has_error = client.piclayout( pic_file=file_list, zip_path="./Output/test/highrpm/", ) assert not has_error assert isinstance(results, list) # 返回值应该是列表类型 + assert len(results) == 30 assert isinstance(errors[0], dict) assert "error" in errors[0] assert "path" in errors[0] From 3167cdb8a6dea4409a2824ed71c98d83b75132ed Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Mon, 9 Jun 2025 12:49:46 +0800 Subject: [PATCH 20/46] =?UTF-8?q?pdf2file=E5=A2=9E=E5=8A=A0=E4=BA=86save?= =?UTF-8?q?=5Fsubdir=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/ConvertV2.py | 10 ++++++++-- src/pdfdeal/doc2x.py | 8 +++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index bfda7bc..c756d42 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -363,7 +363,11 @@ async def get_convert_result(apikey: str, uid: str) -> Tuple[str, str]: @async_retry() async def download_file( - url: str, file_type: str, target_folder: str, target_filename: str + url: str, + file_type: str, + target_folder: str, + target_filename: str, + save_subdir: bool = False, ) -> str: """ Download a file from the given URL to the specified target folder with the given filename. @@ -373,6 +377,7 @@ async def download_file( file_type (str): The type of file being downloaded (e.g., 'zip', 'docx'). target_folder (str): The folder where the file should be saved. target_filename (str): The desired filename for the downloaded file, can include subdirectories. + save_subdir(bool, optional): Save the output to a subfolder under output_path. Defaults to False. Raises: Exception: If there's an error creating the target folder or downloading the file. @@ -383,8 +388,9 @@ async def download_file( target_path = os.path.join(target_folder, target_filename) target_dir = os.path.dirname(target_path) filename = os.path.basename(target_path) + if save_subdir: + target_dir = os.path.join(target_dir, os.path.splitext(os.path.basename(filename))[0]) os.makedirs(target_dir, exist_ok=True) - filename = os.path.splitext(filename)[0] if file_type != "docx": file_type = "zip" diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 53ae71d..4f991e9 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -97,9 +97,9 @@ async def convert_to_format( output_name: str, max_time: int, merge_cross_page_forms: bool = False, + save_subdir: bool = False, ) -> str: """Convert parsed PDF to specified format""" - logger.info(f"Converting {uid} to {output_format}...") status, url = await convert_parse( apikey, uid, output_format, merge_cross_page_forms=merge_cross_page_forms @@ -112,6 +112,7 @@ async def convert_to_format( file_type=output_format, target_folder=output_path, target_filename=output_name or uid, + save_subdir=save_subdir, ) elif status == "Processing": logger.info(f"Converting {uid} {output_format} file...") @@ -216,6 +217,7 @@ async def pdf2file_back( convert: bool = False, oss_choose: str = "auto", merge_cross_page_forms: bool = False, + save_subdir: bool = False, ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -370,6 +372,7 @@ async def convert_file(index, name): output_name=name_fmt, max_time=self.max_time, merge_cross_page_forms=merge_cross_page_forms, + save_subdir=save_subdir ) all_results.append(result) all_errors.append("") @@ -485,6 +488,7 @@ def pdf2file( oss_choose: str = "always", merge_cross_page_forms: bool = False, ocr: bool = False, + save_subdir: bool = False, ) -> Tuple[List[str], List[dict], bool]: """Convert PDF file to specified format @@ -497,6 +501,7 @@ def pdf2file( oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. ocr (bool, optional): This option is deprecated and will not be used. + save_subdir(bool, optional): Save the output to a subfolder under output_path. Defaults to False. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: - List[str]: List of output file paths @@ -520,5 +525,6 @@ def pdf2file( convert=convert, oss_choose=oss_choose, merge_cross_page_forms=merge_cross_page_forms, + save_subdir=save_subdir, ) ) From 2bab32bf74a49275561cd05f729d889051c90311 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Mon, 9 Jun 2025 14:28:10 +0800 Subject: [PATCH 21/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86doc2x=5Fimg.py?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E9=97=AE=E9=A2=98=EF=BC=9B=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86subdir=E9=80=89=E9=A1=B9=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/doc2x_img.py | 11 +--- tests/test_pdf2file.py | 105 ++++++++++++++++++++++++--------------- 2 files changed, 66 insertions(+), 50 deletions(-) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 96718c9..d556760 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -170,18 +170,9 @@ async def pic2file_back( Args: pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'layout' - process_type: str = "ocr", - concurrent_limit: Optional[int] = None, - zip_path: str = None, - ) -> tuple[List[Union[list, str]], List[dict], bool]: - """Process image files with OCR or layout analysis - - Args: - pic_file (str | List[str]): Path to image file(s) or directory - process_type (str): Type of processing, can be 'ocr' or 'layout' concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. - output_zip_names(List[str]): List of zip file name + Returns: Tuple containing: - List of results in order (empty string for failed items) diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index ef15e69..ed37ecc 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -3,24 +3,43 @@ import pytest +# 测试一个文件,output_format为md_dollar,tex,docx def test_single_pdf2file(): client = Doc2X(debug=True, thread=1) + output_path = "./Output/test/single/pdf2file" filepath, failed, flag = client.pdf2file( pdf_file="tests/pdf/sample.pdf", - output_path="./Output/test/single/pdf2file", - output_names=["Test.zip"], - output_format="md_dollar", + output_path=output_path, + output_format="md_dollar,tex,docx", + save_subdir=False, ) - if filepath[0] != "": - assert os.path.exists(filepath[0]) - assert os.path.isfile(filepath[0]) - assert filepath[0].endswith(".zip") - assert os.path.basename(filepath[0]) == "Test.zip" print(filepath) print(failed) print(flag) + assert flag == False + assert os.path.dirname(filepath[0][0]) == output_path + assert os.path.dirname(filepath[0][1]) == output_path + assert os.path.dirname(filepath[0][2]) == output_path +# 测试一个文件,output_format为md_dollar,tex,docx,同时保存到子文件夹下 +def test_single_pdf2file_with_subdir(): + client = Doc2X(debug=True, thread=1) + output_path = "./Output/test/single/pdf2file" + filepath, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_path=output_path, + output_format="md_dollar,tex,docx", + save_subdir=True, + ) + print(filepath) + print(failed) + print(flag) + assert flag == False + assert os.path.dirname(filepath[0][0]) == os.path.join(output_path, "sample") + assert os.path.dirname(filepath[0][1]) == os.path.join(output_path, "sample") + assert os.path.dirname(filepath[0][2]) == os.path.join(output_path, "sample") +# 测试非法的输出格式 def test_error_input_pdf2file(): client = Doc2X(debug=True, thread=1) with pytest.raises(ValueError): @@ -31,53 +50,59 @@ def test_error_input_pdf2file(): output_format="md_dallar", ) - +# 测试一个文件夹下的多个文件,output_format def test_multiple_pdf2file(): client = Doc2X(debug=True, thread=1) - success, failed, flag = client.pdf2file( + output_path, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output/test/multiple/pdf2file", output_format="docx", + save_subdir=False, ) - assert flag - assert len(success) == len(failed) == 3 - for s in success: - if s != "": - assert s.endswith("sample.docx") or s.endswith("sampleB.docx") - print(success) + print(output_path) print(failed) print(flag) + assert flag + assert len(output_path) == 3 + for idx, file_path in enumerate(output_path): + if isinstance(file_path, str): + if file_path == '': + assert failed[idx]['error'] != "" + else: + assert os.path.isfile(file_path) + assert failed[idx]['error'] == "" - -def test_all_fail_pdf2file(): +# 测试一个文件夹下的多个pdf文件转化(包含其子文件夹下的pdf文件) +def test_multiple_pdf2file_with_subdir(): client = Doc2X(debug=True, thread=1) - success, failed, flag = client.pdf2file( - pdf_file="tests/pdf/sample_bad.pdf", - output_path="./Output/test/allfail/pdf2file", - output_format="md", + output_path, failed, flag = client.pdf2file( + pdf_file="tests/pdf", + output_path="./Output/test/multiple/pdf2file", + output_format="docx", + save_subdir=True, ) - assert flag - assert len(success) == 1 - assert len(failed) == 1 - print(success) + print(output_path) print(failed) print(flag) + assert flag + assert len(output_path) == 3 + for idx, file_path in enumerate(output_path): + if isinstance(file_path, str): + if file_path == '': + assert failed[idx]['error'] != "" + else: + assert os.path.isfile(file_path) + assert failed[idx]['error'] == "" - -def test_multiple_outtypes(): +# 测试格式错误或者损坏的pdf文件 +def test_all_fail_pdf2file(): client = Doc2X(debug=True, thread=1) - success, failed, flag = client.pdf2file( - pdf_file="tests/pdf/sample.pdf", - output_path="./Output/test/multiple_outtypes/pdf2file", - output_names=[["sample1.docx", "sample2.zip"]], - output_format="docx,md", + output_path, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample_bad.pdf", + output_path="./Output/test/allfail/pdf2file", + output_format="md", ) - assert len(success) == 1 - assert len(failed) == 1 - for s in success: - if isinstance(s, list): - for i in s: - assert i.endswith("sample1.docx") or i.endswith("sample2.zip") - print(success) + print(output_path) print(failed) print(flag) + assert flag From 00f0eab772c5571eaf18079f27fb08928ab3f626 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Mon, 9 Jun 2025 16:36:39 +0800 Subject: [PATCH 22/46] =?UTF-8?q?=E4=B8=BApdf2file=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86json=E5=AD=97=E6=AE=B5=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=B0=86pdf=E7=9A=84=E4=BF=A1=E6=81=AF=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E4=B8=BAjson=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/Doc2X/Types.py | 1 + src/pdfdeal/FileTools/file_tools.py | 27 +++++++++++++++++++++++++++ src/pdfdeal/doc2x.py | 9 +++++++-- tests/test_pdf2file.py | 14 ++++++++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/pdfdeal/Doc2X/Types.py b/src/pdfdeal/Doc2X/Types.py index 2744202..476c8ec 100644 --- a/src/pdfdeal/Doc2X/Types.py +++ b/src/pdfdeal/Doc2X/Types.py @@ -10,6 +10,7 @@ class OutputFormat(str, Enum): MD = "md" MD_DOLLAR = "md_dollar" ZIP = "zip" + JSON = "json" @classmethod def _missing_(cls, value): diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 441db68..8f615c0 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -1,4 +1,5 @@ import io +import json import re import unicodedata import os @@ -400,3 +401,29 @@ def auto_split_mds( f"=====\nError deal with {failed_file['file']} : {failed_file['error']}" ) return success, failed, flag + + +def save_json( + output_path: str, + output_name: str, + json_content: list[dict] = None, +): + """Save the json file + Args: + output_path (str): The path to save the json file + output_name(str): json file name + json_content (list[dict]): The json content to save + """ + print(f"output path:{output_path}, output_name:{output_name}", ) + if json_content is None: + json_content = [] + base_name, _ = os.path.splitext(output_name) + json_filename = f"{base_name}.json" # 例如 "sample.json" + final_json_path = os.path.join(output_path, json_filename) + os.makedirs(output_path, exist_ok=True) + with open(final_json_path, 'w', encoding='utf-8') as f: + json.dump(json_content, f, ensure_ascii=False, indent=4) + + + + diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 4f991e9..15f3c3c 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -12,7 +12,7 @@ from .Doc2X.Types import OutputFormat from .Doc2X.Pages import get_pdf_page_count from .Doc2X.Exception import RequestError, RateLimit, run_async -from .FileTools.file_tools import get_files +from .FileTools.file_tools import get_files, save_json import time from .doc2x_img import ImageProcessor @@ -387,11 +387,16 @@ async def convert_file(index, name): result = texts elif fmt == "text": result = "\n".join(texts) - elif fmt == "detailed": + elif fmt == "detailed" or fmt == "json": result = [ {"text": text, "location": loc} for text, loc in zip(texts, locations) ] + if fmt == "json": + save_json(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), + output_name=os.path.basename(name_fmt), + json_content=result) + all_results.append(result) all_errors.append("") diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index ed37ecc..e6c5f37 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -2,6 +2,20 @@ import os import pytest +# 测试一个文件,output_format为json +def test_pdf2json(): + client = Doc2X(debug=True, thread=1) + output_path = "./Output/test/single/pdf2file" + filepath, failed, flag = client.pdf2file( + pdf_file="tests/pdf", + output_path=output_path, + output_format="json", + save_subdir=False, + ) + print(filepath) + print(failed) + print(flag) + assert flag # 测试一个文件,output_format为md_dollar,tex,docx def test_single_pdf2file(): From c7d004a55f07aaa4815f4fda28c97e955b7615e5 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Tue, 10 Jun 2025 18:43:00 +0800 Subject: [PATCH 23/46] =?UTF-8?q?=E5=8A=A0=E5=85=A5export=5Fhistory?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E5=AD=97=EF=BC=8C=E8=AE=B0=E5=BD=95=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E7=8A=B6=E6=80=81=EF=BC=8C=E5=AF=B9=E4=BA=8E=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E5=AF=BC=E5=87=BA=E7=9A=84=E6=96=87=E4=BB=B6=E6=97=A0?= =?UTF-8?q?=E9=9C=80=E5=86=8D=E5=AF=BC=E5=87=BA=EF=BC=8C=E6=9C=AA=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E7=9A=84=E7=B1=BB=E5=88=99=E8=BD=AE=E8=AF=A2=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=90=8E=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/FileTools/file_tools.py | 16 ++- src/pdfdeal/doc2x.py | 192 +++++++++++++++++++++++++++- tests/test_pdf2file.py | 10 ++ 3 files changed, 204 insertions(+), 14 deletions(-) diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 8f615c0..19017b4 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -404,15 +404,15 @@ def auto_split_mds( def save_json( - output_path: str, - output_name: str, - json_content: list[dict] = None, + output_path: str, + output_name: str, + json_content: list[dict] = None, ): - """Save the json file + """Save the JSON file Args: - output_path (str): The path to save the json file - output_name(str): json file name - json_content (list[dict]): The json content to save + output_path (str): The path to save the JSON file + output_name(str): JSON file name + json_content (list[dict]): The JSON content to save """ print(f"output path:{output_path}, output_name:{output_name}", ) if json_content is None: @@ -427,3 +427,5 @@ def save_json( + + diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 15f3c3c..3cf1a1b 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -1,7 +1,13 @@ import asyncio +import csv import os +from datetime import datetime from typing import Dict, Tuple, List, Union, Optional, Any, Coroutine import logging + +import aiofiles +import aiofiles.os + from .Doc2X.ConvertV2 import ( upload_pdf, uid_status, @@ -19,6 +25,111 @@ logger = logging.getLogger(name="pdfdeal.doc2x") +# export_history流程 +async def record_export_history( + csv_path: str, + uid: str, + file_name: str = None, + upload_time: float = None, + status: str = None, + is_export: bool = False, + lock: asyncio.Lock = None, +): + csv_header = ["uid", "file_name", "upload_time_str", "status", "is_export"] + async with lock: + update_data = {} + if file_name is not None: + update_data["file_name"] = file_name + if upload_time is not None: + update_data["upload_time_str"] = datetime.fromtimestamp(upload_time).strftime("%Y-%m-%d %H:%M:%S") + if status is not None: + update_data["status"] = status + if is_export is not None: + update_data["is_export"] = str(is_export) + output_dir = os.path.dirname(csv_path) + if output_dir: + await aiofiles.os.makedirs(output_dir, exist_ok=True) + try: + async with aiofiles.open(csv_path, mode="r+", encoding="utf-8", newline="") as f: + lines = await f.readlines() + output_lines = [] + uid_found = False + if not lines: + output_lines.append(",".join(csv_header) + "\n") + else: + output_lines.append(lines[0]) + for line in lines[1:]: + if line.strip(): + row_list = line.strip().split(',') + row_uid = row_list[0] if row_list else "" + if row_uid == uid: + uid_found = True + row_dict = dict(zip(csv_header, row_list)) + row_dict.update(update_data) + updated_row_list = [row_dict.get(h, "") for h in csv_header] + output_lines.append(",".join(map(str, updated_row_list)) + "\n") + else: + output_lines.append(line) + if not uid_found: + new_row_dict = { + "uid": uid, + "file_name": file_name, + "upload_time_str": update_data.get("upload_time_str", ""), + "status": status, + "is_export": str(is_export) if is_export is not None else "" + } + new_row_list = [new_row_dict.get(h, "") for h in csv_header] + output_lines.append(",".join(map(str, new_row_list)) + "\n") + await f.seek(0) + await f.truncate() + await f.writelines(output_lines) + + except FileNotFoundError: + async with aiofiles.open(csv_path, mode="w", encoding="utf-8", newline="") as f: + await f.write(",".join(csv_header) + "\n") + new_row_dict = { + "uid": uid, + "file_name": file_name, + "upload_time_str": update_data.get("upload_time_str", ""), + "status": status, + "is_export": str(is_export) if is_export is not None else "" + } + new_row_list = [new_row_dict.get(h, "") for h in csv_header] + await f.write(",".join(map(str, new_row_list)) + "\n") + + +async def read_export_history(csv_path: str) -> Dict[str, bool]: + file_to_export_status_map: Dict[str, bool] = {} + if not await aiofiles.os.path.exists(csv_path): + return file_to_export_status_map + try: + async with aiofiles.open(csv_path, mode="r", encoding="utf-8", newline="") as f: + header_read = False + file_name_index = -1 + is_export_index = -1 + async for line in f: + if not line.strip(): + continue + row = next(csv.reader([line])) + if not header_read: + try: + file_name_index = row.index("file_name") + is_export_index = row.index("is_export") + header_read = True + except ValueError as e: + print(f"错误: CSV文件中缺少必要的列: {e}") + return {} # 表头不正确,返回空字典 + continue # 跳过表头行,继续下一次循环 + if len(row) > max(file_name_index, is_export_index): + file_name = row[file_name_index] + is_export_str = row[is_export_index] + is_export_bool = is_export_str.strip().lower() == 'true' + file_to_export_status_map[file_name] = is_export_bool + except Exception as e: + print(f"读取或解析CSV文件时发生错误: {e}") + return file_to_export_status_map + + async def parse_pdf( apikey: str, pdf_path: str, @@ -27,6 +138,7 @@ async def parse_pdf( max_time: int, convert: bool, oss_choose: str = "auto", + export_history: str = '', ) -> Tuple[str, List[str], List[dict]]: """Parse PDF file and return uid and extracted text""" @@ -51,6 +163,16 @@ async def task_limit_lock(): try: logger.info(f"Uploading {pdf_path}...") uid = await upload_pdf(apikey, pdf_path, oss_choose) + if export_history is not "": + await record_export_history( + csv_path=export_history, + uid=uid, + file_name=pdf_path, + upload_time=time.time(), + status="Processing", + is_export=False, + lock=asyncio.Lock()) + logger.info(f"Uploading successful for {pdf_path} with uid {uid}") for _ in range(max_time // 3): @@ -60,11 +182,23 @@ async def task_limit_lock(): ) if status == "Success": logger.info(f"Parsing successful for {pdf_path} with uid {uid}") + if export_history is not "": + await record_export_history( + csv_path=export_history, + uid=uid, + status="Success", + lock=asyncio.Lock()) return uid, texts, locations elif status == "Processing file": logger.info(f"Processing {uid} : {progress}%") await asyncio.sleep(3) else: + if export_history is not "": + await record_export_history( + csv_path=export_history, + uid=uid, + status="Failed", + lock=asyncio.Lock()) raise RequestError( f"Unexpected status: {status} with uid: {uid}" ) @@ -123,6 +257,27 @@ async def convert_to_format( raise RequestError(f"Max time reached for get_convert_result with uid: {uid}") +async def save_json_format( + output_path: str, + output_name: str, + json_content: list[dict] = None, +): + """Save the JSON file + Args: + output_path (str): The path to save the JSON file + output_name(str): JSON file name + json_content (list[dict]): The JSON content to save + """ + loop = asyncio.get_running_loop() + await loop.run_in_executor( + None, + save_json, + output_path, + output_name, + json_content + ) + + class Doc2X: def __init__( self, @@ -218,6 +373,7 @@ async def pdf2file_back( oss_choose: str = "auto", merge_cross_page_forms: bool = False, save_subdir: bool = False, + export_history: str = '', ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -261,7 +417,7 @@ async def pdf2file_back( convert_tasks = set() results = [None] * len(pdf_file) parse_results = [None] * len(pdf_file) - global limit_lock, get_max_limit, max_threads, full_speed, thread_min + global limit_lock, get_max_limit, max_threads, full_speed, thread_min, file_export_map thread_min = self.thread full_speed = self.full_speed limit_lock = asyncio.Lock() @@ -317,6 +473,7 @@ async def process_file(index, pdf, name): max_time=self.max_time, convert=convert, oss_choose=oss_choose, + export_history=export_history, ) parse_results[index] = (uid, texts, locations) # Create convert task as soon as parse is complete @@ -374,6 +531,12 @@ async def convert_file(index, name): merge_cross_page_forms=merge_cross_page_forms, save_subdir=save_subdir ) + if export_history is not "": + await record_export_history( + csv_path=export_history, + uid=uid, + is_export=True, + lock=asyncio.Lock()) all_results.append(result) all_errors.append("") # Wait 5 seconds between formats @@ -393,10 +556,15 @@ async def convert_file(index, name): for text, loc in zip(texts, locations) ] if fmt == "json": - save_json(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), - output_name=os.path.basename(name_fmt), - json_content=result) - + await save_json_format(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), + output_name=os.path.basename(name_fmt), + jsosn_content=result) + if export_history is not "": + await record_export_history( + csv_path=export_history, + uid=uid, + is_export=True, + lock=asyncio.Lock()) all_results.append(result) all_errors.append("") @@ -423,7 +591,15 @@ async def convert_file(index, name): ) # Create and run parse tasks with controlled concurrency + + if export_history is not None: + file_export_map = await read_export_history(export_history) + print(f"export_history{file_export_map}") + for i, (pdf, name) in enumerate(zip(pdf_file, output_names)): + if file_export_map[pdf] is True: + results[i] = ('', '', '') + continue while len(parse_tasks) >= max_threads: done, parse_tasks = await asyncio.wait( parse_tasks, return_when=asyncio.FIRST_COMPLETED @@ -444,7 +620,7 @@ async def convert_file(index, name): await asyncio.wait(convert_tasks) else: logger.warning("No successful parse tasks, skipping conversion.") - + print(results) if full_speed: logger.info(f"Convert tasks done with {max_threads} threads.") success_files = [] @@ -494,9 +670,9 @@ def pdf2file( merge_cross_page_forms: bool = False, ocr: bool = False, save_subdir: bool = False, + export_history: str = '', ) -> Tuple[List[str], List[dict], bool]: """Convert PDF file to specified format - Args: pdf_file (str or list): The path of the PDF file or a list of PDF file paths output_names (List[str], optional): The output file names. Defaults to None. @@ -507,6 +683,7 @@ def pdf2file( merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. ocr (bool, optional): This option is deprecated and will not be used. save_subdir(bool, optional): Save the output to a subfolder under output_path. Defaults to False. + export_history(str, optional): Export history file. Defaults to None. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: - List[str]: List of output file paths @@ -531,5 +708,6 @@ def pdf2file( oss_choose=oss_choose, merge_cross_page_forms=merge_cross_page_forms, save_subdir=save_subdir, + export_history=export_history, ) ) diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index e6c5f37..069c63b 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -120,3 +120,13 @@ def test_all_fail_pdf2file(): print(failed) print(flag) assert flag + + +def test_export_history(): + client = Doc2X(debug=True, thread=1) + output_path, failed, flag = client.pdf2file( + pdf_file="tests/pdf", + output_path="./Output/", + output_format="md", + export_history="./Output/history/history.csv", + ) \ No newline at end of file From 34b7f3422ce68735c10af8523d31fec9cd42aa24 Mon Sep 17 00:00:00 2001 From: guixinW <1477364283@qq.com> Date: Wed, 11 Jun 2025 17:59:58 +0800 Subject: [PATCH 24/46] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86export=5Fhisto?= =?UTF-8?q?ry=E5=AD=98=E5=9C=A8=E7=9A=84=E4=B8=80=E4=BA=9B=E9=94=99?= =?UTF-8?q?=E8=AF=AF;=E5=BC=83=E7=94=A8=E4=BA=86asyncio.Lock(loop=3Dself.?= =?UTF-8?q?=5Floop)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pdfdeal/doc2x.py | 20 +++++++++++--------- src/pdfdeal/doc2x_img.py | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 3cf1a1b..eddbb19 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -25,7 +25,6 @@ logger = logging.getLogger(name="pdfdeal.doc2x") -# export_history流程 async def record_export_history( csv_path: str, uid: str, @@ -35,6 +34,7 @@ async def record_export_history( is_export: bool = False, lock: asyncio.Lock = None, ): + """Record history using csv""" csv_header = ["uid", "file_name", "upload_time_str", "status", "is_export"] async with lock: update_data = {} @@ -99,6 +99,7 @@ async def record_export_history( async def read_export_history(csv_path: str) -> Dict[str, bool]: + """Read export history from csv_path""" file_to_export_status_map: Dict[str, bool] = {} if not await aiofiles.os.path.exists(csv_path): return file_to_export_status_map @@ -138,7 +139,7 @@ async def parse_pdf( max_time: int, convert: bool, oss_choose: str = "auto", - export_history: str = '', + export_history: str = "", ) -> Tuple[str, List[str], List[dict]]: """Parse PDF file and return uid and extracted text""" @@ -373,7 +374,7 @@ async def pdf2file_back( oss_choose: str = "auto", merge_cross_page_forms: bool = False, save_subdir: bool = False, - export_history: str = '', + export_history: str = "", ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -558,7 +559,7 @@ async def convert_file(index, name): if fmt == "json": await save_json_format(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), output_name=os.path.basename(name_fmt), - jsosn_content=result) + json_content=result) if export_history is not "": await record_export_history( csv_path=export_history, @@ -592,14 +593,15 @@ async def convert_file(index, name): # Create and run parse tasks with controlled concurrency - if export_history is not None: + if export_history is not "": file_export_map = await read_export_history(export_history) print(f"export_history{file_export_map}") for i, (pdf, name) in enumerate(zip(pdf_file, output_names)): - if file_export_map[pdf] is True: - results[i] = ('', '', '') - continue + if export_history is not "": + if file_export_map.get(pdf, False) is True: + results[i] = ('', '', '') + continue while len(parse_tasks) >= max_threads: done, parse_tasks = await asyncio.wait( parse_tasks, return_when=asyncio.FIRST_COMPLETED @@ -670,7 +672,7 @@ def pdf2file( merge_cross_page_forms: bool = False, ocr: bool = False, save_subdir: bool = False, - export_history: str = '', + export_history: str = "", ) -> Tuple[List[str], List[dict], bool]: """Convert PDF file to specified format Args: diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index d556760..af2a9b6 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -29,7 +29,7 @@ async def _get_lock(self) -> asyncio.Lock: if self._lock is None: # Get the loop from the current async context self._loop = asyncio.get_running_loop() - self._lock = asyncio.Lock(loop=self._loop) # Pass the loop explicitly + self._lock = asyncio.Lock() # Pass the loop explicitly return self._lock async def _check_rate_limit(self): From 89993bbd1677491d2e0a0fb8e30db7b3a69609e7 Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Wed, 11 Jun 2025 20:35:00 +0800 Subject: [PATCH 25/46] support save_subdir for json --- src/pdfdeal/Doc2X/ConvertV2.py | 2 ++ src/pdfdeal/FileTools/file_tools.py | 8 +++-- src/pdfdeal/doc2x.py | 49 +++++++++++++++++++---------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index c756d42..8bcc2f7 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -385,6 +385,8 @@ async def download_file( Returns: str: The full path of the downloaded file. """ + + target_path = os.path.join(target_folder, target_filename) target_dir = os.path.dirname(target_path) filename = os.path.basename(target_path) diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 19017b4..58f1175 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -407,6 +407,7 @@ def save_json( output_path: str, output_name: str, json_content: list[dict] = None, + save_subdir: bool = False, ): """Save the JSON file Args: @@ -414,17 +415,20 @@ def save_json( output_name(str): JSON file name json_content (list[dict]): The JSON content to save """ - print(f"output path:{output_path}, output_name:{output_name}", ) if json_content is None: json_content = [] base_name, _ = os.path.splitext(output_name) + + if save_subdir: + output_path = os.path.join(output_path, base_name) + json_filename = f"{base_name}.json" # 例如 "sample.json" final_json_path = os.path.join(output_path, json_filename) os.makedirs(output_path, exist_ok=True) with open(final_json_path, 'w', encoding='utf-8') as f: json.dump(json_content, f, ensure_ascii=False, indent=4) - + return final_json_path diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index eddbb19..579dfc0 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -164,7 +164,7 @@ async def task_limit_lock(): try: logger.info(f"Uploading {pdf_path}...") uid = await upload_pdf(apikey, pdf_path, oss_choose) - if export_history is not "": + if export_history != "": await record_export_history( csv_path=export_history, uid=uid, @@ -183,7 +183,7 @@ async def task_limit_lock(): ) if status == "Success": logger.info(f"Parsing successful for {pdf_path} with uid {uid}") - if export_history is not "": + if export_history != "": await record_export_history( csv_path=export_history, uid=uid, @@ -194,7 +194,7 @@ async def task_limit_lock(): logger.info(f"Processing {uid} : {progress}%") await asyncio.sleep(3) else: - if export_history is not "": + if export_history != "": await record_export_history( csv_path=export_history, uid=uid, @@ -233,12 +233,13 @@ async def convert_to_format( max_time: int, merge_cross_page_forms: bool = False, save_subdir: bool = False, -) -> str: + ) -> str: """Convert parsed PDF to specified format""" logger.info(f"Converting {uid} to {output_format}...") status, url = await convert_parse( apikey, uid, output_format, merge_cross_page_forms=merge_cross_page_forms ) + for _ in range(max_time // 3): if status == "Success": logger.info(f"Downloading {uid} {output_format} file to {output_path}...") @@ -262,7 +263,8 @@ async def save_json_format( output_path: str, output_name: str, json_content: list[dict] = None, -): + save_subdir: bool = False, + ): """Save the JSON file Args: output_path (str): The path to save the JSON file @@ -270,14 +272,17 @@ async def save_json_format( json_content (list[dict]): The JSON content to save """ loop = asyncio.get_running_loop() - await loop.run_in_executor( + saved_path = await loop.run_in_executor( None, save_json, output_path, output_name, - json_content + json_content, + save_subdir, ) + return saved_path + class Doc2X: def __init__( @@ -376,6 +381,7 @@ async def pdf2file_back( save_subdir: bool = False, export_history: str = "", ) -> Tuple[List[str], List[dict], bool]: + if isinstance(pdf_file, str): if os.path.isdir(pdf_file): pdf_file, output_names = get_files( @@ -522,6 +528,7 @@ async def convert_file(index, name): async with page_lock: last_request_time = time.time() + result = await convert_to_format( apikey=self.apikey, uid=uid, @@ -532,7 +539,7 @@ async def convert_file(index, name): merge_cross_page_forms=merge_cross_page_forms, save_subdir=save_subdir ) - if export_history is not "": + if export_history != "": await record_export_history( csv_path=export_history, uid=uid, @@ -551,16 +558,24 @@ async def convert_file(index, name): result = texts elif fmt == "text": result = "\n".join(texts) - elif fmt == "detailed" or fmt == "json": + elif fmt == "detailed": result = [ {"text": text, "location": loc} for text, loc in zip(texts, locations) ] - if fmt == "json": - await save_json_format(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), - output_name=os.path.basename(name_fmt), - json_content=result) - if export_history is not "": + + elif fmt == "json": + json_content = [ + {"text": text, "location": loc} + for text, loc in zip(texts, locations) + ] + result = await save_json_format(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), + output_name=os.path.basename(name_fmt), + json_content=json_content, + save_subdir=save_subdir) + + + if export_history != "": await record_export_history( csv_path=export_history, uid=uid, @@ -593,12 +608,12 @@ async def convert_file(index, name): # Create and run parse tasks with controlled concurrency - if export_history is not "": + if export_history != "": file_export_map = await read_export_history(export_history) print(f"export_history{file_export_map}") for i, (pdf, name) in enumerate(zip(pdf_file, output_names)): - if export_history is not "": + if export_history != "": if file_export_map.get(pdf, False) is True: results[i] = ('', '', '') continue @@ -622,7 +637,7 @@ async def convert_file(index, name): await asyncio.wait(convert_tasks) else: logger.warning("No successful parse tasks, skipping conversion.") - print(results) + if full_speed: logger.info(f"Convert tasks done with {max_threads} threads.") success_files = [] From d0fffc2da9cbd877475bc45679c7aa106d82e1ac Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Wed, 11 Jun 2025 21:01:22 +0800 Subject: [PATCH 26/46] add file_type as suffix to md/tex zip save name --- src/pdfdeal/Doc2X/ConvertV2.py | 10 ++++++++++ src/pdfdeal/FileTools/file_tools.py | 1 + src/pdfdeal/doc2x.py | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 8bcc2f7..91f24ef 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -394,8 +394,18 @@ async def download_file( target_dir = os.path.join(target_dir, os.path.splitext(os.path.basename(filename))[0]) os.makedirs(target_dir, exist_ok=True) filename = os.path.splitext(filename)[0] + + # 导出 md/tex时,在文件名最后加后缀 + zip_file_suffix = '' + if file_type in ['md', 'md_dollar', 'tex']: + zip_file_suffix = file_type + if file_type != "docx": file_type = "zip" + + + filename = f'{filename}_{zip_file_suffix}' + file_path = os.path.join(target_dir, f"{filename}.{file_type}") counter = 1 while os.path.exists(file_path): diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 58f1175..3429972 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -403,6 +403,7 @@ def auto_split_mds( return success, failed, flag +# json 导出格式会使用该函数 def save_json( output_path: str, output_name: str, diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 579dfc0..a1d7c6b 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -411,6 +411,11 @@ async def pdf2file_back( else: raise ValueError("Invalid output format, should be a string.") + if 'json' in output_format: + logger.warning( + "You have used JSON result output. The output will contain online links that expire in 24 hours. Please remember to manually save the results. (您使用了 json 结果输出,输出结果中会有 24h 过期的在线链接,请注意手动保存结果)" + ) + for fmt in output_formats: fmt = OutputFormat(fmt) if isinstance(fmt, OutputFormat): From 5b96ecec58ce0edffd514f287ffdce39ec1e4e5f Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Fri, 13 Jun 2025 21:00:44 +0800 Subject: [PATCH 27/46] simplify piclayout parameters --- src/pdfdeal/Doc2X/ConvertV2.py | 46 +++++++++++------------------ src/pdfdeal/FileTools/file_tools.py | 13 ++++++-- src/pdfdeal/doc2x.py | 24 ++++++++++----- src/pdfdeal/doc2x_img.py | 42 +++++++++++++------------- 4 files changed, 65 insertions(+), 60 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 91f24ef..8c1fa18 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -445,15 +445,15 @@ async def image_code_check(code: str, trace_id: str = None): @async_retry() async def parse_image_layout( - apikey: str, image_path: str, zip_path: str = None, output_name: str = None -) -> tuple[list, str]: + apikey: str, image_path: str, output_path: str = None, + ) -> tuple[list, str]: """Parse image layout Args: apikey (str): The API key image_path (str): Path to the image file - zip_path (str, optional): Path to save the zip file containing images. Defaults to image_name + 'picture.zip'. - output_name (str): output file name. Defaults to None. + output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. + Raises: FileError: If file size exceeds limit or file cannot be opened RateLimit: If rate limit is reached @@ -465,31 +465,15 @@ async def parse_image_layout( - list: List of page dictionaries with page dimensions and md content - str: The unique identifier (uid) of the request """ + # Use the image name as the prefix for the zip file name - default_zip_filename = os.path.splitext(os.path.basename(image_path))[0] - print(f"default zip name{default_zip_filename}") - if output_name is not None: - default_zip_filename = output_name - new_zip_filename = default_zip_filename - # Use zip_path + image name + picture.zip to name zip files - if zip_path is None: - parent_directory = os.path.dirname(image_path) - if not parent_directory: - parent_directory = "." - zip_path = os.path.join(parent_directory, new_zip_filename) - else: - zip_path = os.path.join(zip_path, new_zip_filename) - - if not os.path.exists(zip_path): - os.makedirs(os.path.dirname(zip_path), exist_ok=True) - - # Check zip_path is a file path and not exists - base_name, extension = os.path.splitext(zip_path) - random_digits = ''.join(random.choices(string.digits, k=10)) - zip_path = f"{base_name}-{random_digits}{extension}" - # raise FileError("zip_path already exists! Please check the path") - if not zip_path.endswith(".zip"): - raise FileError("zip_path must end with .zip") + output_zip_filename = os.path.splitext(os.path.basename(image_path))[0] + '_images.zip' + zip_path = os.path.join(output_path, output_zip_filename) + + + if not os.path.exists(output_path): + os.makedirs(output_path, exist_ok=True) + # Check file size if os.path.getsize(image_path) > 7 * 1024 * 1024: # 7MB raise FileError("Image file size exceeds 7MB limit") @@ -522,13 +506,19 @@ async def parse_image_layout( data = response.json() await image_code_check(data.get("code", ""), trace_id=trace_id) + + output_zip_path = '' + # Save zip file if path provided and zip content exists if zip_path and data.get("data", {}).get("convert_zip"): zip_content = base64.b64decode(data["data"]["convert_zip"]) with open(zip_path, "wb") as f: f.write(zip_content) + output_zip_path = zip_path + return ( data.get("data", {}).get("result", {}).get("pages", []), data.get("data", {}).get("uid", "Failed to get uid"), + output_zip_path ) diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 3429972..2fe578b 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -423,9 +423,18 @@ def save_json( if save_subdir: output_path = os.path.join(output_path, base_name) - json_filename = f"{base_name}.json" # 例如 "sample.json" - final_json_path = os.path.join(output_path, json_filename) + final_json_path = os.path.join(output_path, f"{base_name}.json") + + + os.makedirs(output_path, exist_ok=True) + + # 处理重复名字的文件 + counter = 1 + while os.path.exists(final_json_path): + final_json_path = os.path.join(output_path, f"{base_name}_{counter}.json") + counter += 1 + with open(final_json_path, 'w', encoding='utf-8') as f: json.dump(json_content, f, ensure_ascii=False, indent=4) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index a1d7c6b..0116d5f 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -294,7 +294,7 @@ def __init__( max_time: int = 300, debug: bool = False, full_speed: bool = False, - ) -> None: + ) -> None: """ Initialize a Doc2X client. @@ -346,14 +346,14 @@ def image_processor(self) -> ImageProcessor: def piclayout( self, pic_file, - zip_path: Optional[str] = None, + output_path: str = "./Output", concurrent_limit: Optional[int] = 5, - ) -> tuple[List[Union[list, str]], List[dict], bool]: + ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with layout analysis Args: pic_file (str | List[str]): Path to image files (jpg/png) - zip_path (str, optional): Path to save the zip file containing images. Defaults to None. + output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to 5. Returns: @@ -362,11 +362,15 @@ def piclayout( - List of dictionaries containing error information - Boolean indicating if any errors occurred """ + + if not os.path.isdir(output_path): + raise ValueError("output_path must be a directory") + return self.image_processor.pic2file( pic_file=pic_file, process_type="layout", + output_path=output_path, concurrent_limit=concurrent_limit, - zip_path=zip_path, ) async def pdf2file_back( @@ -380,7 +384,7 @@ async def pdf2file_back( merge_cross_page_forms: bool = False, save_subdir: bool = False, export_history: str = "", - ) -> Tuple[List[str], List[dict], bool]: + ) -> Tuple[List[str], List[dict], bool]: if isinstance(pdf_file, str): if os.path.isdir(pdf_file): @@ -692,8 +696,8 @@ def pdf2file( merge_cross_page_forms: bool = False, ocr: bool = False, save_subdir: bool = False, - export_history: str = "", - ) -> Tuple[List[str], List[dict], bool]: + + ) -> Tuple[List[str], List[dict], bool]: """Convert PDF file to specified format Args: pdf_file (str or list): The path of the PDF file or a list of PDF file paths @@ -712,6 +716,10 @@ def pdf2file( - List[dict]: List of error messages - bool: Whether there was an error """ + + # 未完全测试完 + export_history = "" + if ocr: import warnings diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index af2a9b6..3163c12 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -57,15 +57,15 @@ async def _check_rate_limit(self): await asyncio.sleep(wait_time) async def process_image( - self, image_path: str, process_type: str = "layout", zip_path: str = None, output_name: str = None + self, image_path: str, process_type: str = "layout", output_path: str = None ) -> tuple[list, str, bool]: """Process an image with layout analysis Args: image_path (str): Path to the image file process_type (str): Type of processing, can be 'layout' - zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. - output_name (str): output file name. Defaults to None. + output_path (str, optional): Path to save the result json and decoded base64 image zip. Defaults to Output. + Returns: Tuple containing: - The processing result (list of pages for layout) @@ -76,6 +76,8 @@ async def process_image( ValueError: If process_type is invalid or file type is not supported RateLimit: If rate limit is exceeded """ + + if process_type not in ["layout"]: raise ValueError("process_type must be one of: 'layout'") @@ -83,12 +85,12 @@ async def process_image( logger.info(f"Starting {process_type} processing for {image_path}") if process_type == "layout": await self._check_rate_limit() - pages, uid = await parse_image_layout(self.apikey, image_path, zip_path, output_name) + pages, uid, output_zip_path = await parse_image_layout(self.apikey, image_path, output_path) logger.info( f"Successfully completed layout analysis for {image_path} with uid {uid}" ) - if zip_path: - logger.info(f"Layout results saved to zip file at {zip_path}") + if output_zip_path != '': + logger.info(f"Layout results saved to zip file at {output_zip_path}") return pages, uid, True else: logger.error(f"Error process_type: {process_type}") @@ -105,8 +107,7 @@ async def process_multiple_images( image_paths: List[str], process_type: str = "layout", concurrent_limit: int = 5, - zip_path: str = None, - output_zip_names: List[str] = None, + output_path: str = 'Output/', ) -> tuple[List[list], Dict[str, bool]]: """Process multiple images concurrently with rate limiting @@ -114,8 +115,7 @@ async def process_multiple_images( image_paths (List[str]): List of image file paths process_type (str): Type of processing, can be 'layout' concurrent_limit (int): Maximum number of concurrent processing tasks - zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. - output_zip_names (List[str]): List of zip file name + output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. Returns: Tuple containing: - List of processing results in order (empty list for failed items) @@ -128,10 +128,9 @@ async def process_with_semaphore( index: int, ) -> tuple[int, str, tuple[list, str, bool]]: async with semaphore: - print(index, output_zip_names) logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") - output_name = output_zip_names[index] if output_zip_names else None - result = await self.process_image(path, process_type, zip_path, output_name) + + result = await self.process_image(path, process_type, output_path) return index, path, result tasks = [process_with_semaphore(path, i) for i, path in enumerate(image_paths)] @@ -161,9 +160,8 @@ async def pic2file_back( self, pic_file, process_type: str = "layout", + output_path: str = "./Output", concurrent_limit: Optional[int] = None, - zip_path: str = None, - output_zip_names: List[str] = None, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with layout analysis @@ -171,7 +169,7 @@ async def pic2file_back( pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'layout' concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. - zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. + output_path (str): Path to save the result json and decoded base64 image zip .Defaults to Output. Returns: Tuple containing: @@ -181,16 +179,16 @@ async def pic2file_back( """ if isinstance(pic_file, str): if os.path.isdir(pic_file): - pic_file, output_zip_names = get_files(path=pic_file, mode="img", out="zip") + pic_file, _ = get_files(path=pic_file, mode="img", out="zip") else: pic_file = [pic_file] + results, success_status = await self.process_multiple_images( image_paths=pic_file, process_type=process_type, concurrent_limit=concurrent_limit or 5, - zip_path=zip_path, - output_zip_names=output_zip_names, + output_path=output_path, ) failed_files = [] @@ -225,8 +223,8 @@ def pic2file( self, pic_file, process_type: str = "layout", + output_path: str = 'Output', concurrent_limit: Optional[int] = None, - zip_path: str = None, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Synchronous wrapper for pic2file_back @@ -234,7 +232,7 @@ def pic2file( pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'layout' concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. - zip_path (str, optional): Path to save the zip file for layout analysis. Defaults to None. + output_path (str): Path to save the result json and decoded base64 image zip .Defaults to Output. Returns: Same as pic2file_back @@ -243,7 +241,7 @@ def pic2file( self.pic2file_back( pic_file=pic_file, process_type=process_type, + output_path=output_path, concurrent_limit=concurrent_limit, - zip_path=zip_path, ) ) From a750abf024bddaab7da37ea309003f9bc374e4fe Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Sat, 14 Jun 2025 02:41:23 +0800 Subject: [PATCH 28/46] add image path to text output --- src/pdfdeal/doc2x_img.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 3163c12..4ba60e1 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -205,6 +205,9 @@ async def pic2file_back( logger.error(f"Failed to process {path}") else: failed_files.append({"error": "", "path": ""}) + for r in results: + r[0]['path'] = path + final_results.append(results[i]) success_count += 1 logger.debug(f"Successfully processed {path}") From c0d854713571884e6825805d26f723a21219bca5 Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Sat, 14 Jun 2025 02:51:49 +0800 Subject: [PATCH 29/46] add zip path to text output --- src/pdfdeal/doc2x_img.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 4ba60e1..0d19c85 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -91,6 +91,9 @@ async def process_image( ) if output_zip_path != '': logger.info(f"Layout results saved to zip file at {output_zip_path}") + + pages[0]['zip_path'] = output_zip_path + pages[0]['image_path'] = image_path return pages, uid, True else: logger.error(f"Error process_type: {process_type}") @@ -124,9 +127,9 @@ async def process_multiple_images( semaphore = asyncio.Semaphore(concurrent_limit) async def process_with_semaphore( - path: str, - index: int, - ) -> tuple[int, str, tuple[list, str, bool]]: + path: str, + index: int, + ) -> tuple[int, str, tuple[list, str, bool]]: async with semaphore: logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") @@ -205,9 +208,6 @@ async def pic2file_back( logger.error(f"Failed to process {path}") else: failed_files.append({"error": "", "path": ""}) - for r in results: - r[0]['path'] = path - final_results.append(results[i]) success_count += 1 logger.debug(f"Successfully processed {path}") From ef25c58ca8ebee793fa7798474b0905b299a903c Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Sat, 14 Jun 2025 20:30:16 +0800 Subject: [PATCH 30/46] add zip output_format for piclayout --- src/pdfdeal/Doc2X/ConvertV2.py | 9 +- src/pdfdeal/FileTools/file_tools.py | 42 ++++++- src/pdfdeal/doc2x.py | 3 + src/pdfdeal/doc2x_img.py | 163 ++++++++++++++++++++++++---- 4 files changed, 189 insertions(+), 28 deletions(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 8c1fa18..9d0005a 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -467,8 +467,13 @@ async def parse_image_layout( """ # Use the image name as the prefix for the zip file name - output_zip_filename = os.path.splitext(os.path.basename(image_path))[0] + '_images.zip' - zip_path = os.path.join(output_path, output_zip_filename) + output_zip_filename = os.path.splitext(os.path.basename(image_path))[0] + zip_path = os.path.join(output_path, output_zip_filename + '_images.zip') + + counter = 1 + while os.path.exists(zip_path): + zip_path = os.path.join(output_path, output_zip_filename + f'_images_{counter}.zip') + counter += 1 if not os.path.exists(output_path): diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 2fe578b..5689178 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -425,8 +425,6 @@ def save_json( final_json_path = os.path.join(output_path, f"{base_name}.json") - - os.makedirs(output_path, exist_ok=True) # 处理重复名字的文件 @@ -441,5 +439,45 @@ def save_json( return final_json_path +# image 接口 导出md格式会使用该函数 +def save_md( + output_path: str, + output_name: str, + content: str = '', + save_subdir: bool = False, +): + """Save the md file + Args: + output_path (str): The path to save the JSON file + output_name(str): md file name + content (list[dict]): The md content to save + """ + + base_name, _ = os.path.splitext(output_name) + + if save_subdir: + output_path = os.path.join(output_path, base_name) + + final_md_path = os.path.join(output_path, f"{base_name}.md") + + os.makedirs(output_path, exist_ok=True) + + # 处理重复名字的文件 + counter = 1 + while os.path.exists(final_md_path): + final_md_path = os.path.join(output_path, f"{base_name}_{counter}.md") + counter += 1 + + try: + with open(final_md_path, 'w', encoding='utf-8') as f: + f.write(content) + + except Exception as e: + logging.error(f"Error occurs when saving to {final_md_path}: {str(e)}") + + fail_reason = str(e) if str(e) else type(e).__name__ + return '', fail_reason + + return final_md_path, '' diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 0116d5f..b47e18c 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -346,6 +346,7 @@ def image_processor(self) -> ImageProcessor: def piclayout( self, pic_file, + output_format: str = "text", output_path: str = "./Output", concurrent_limit: Optional[int] = 5, ) -> tuple[List[Union[list, str]], List[dict], bool]: @@ -353,6 +354,7 @@ def piclayout( Args: pic_file (str | List[str]): Path to image files (jpg/png) + output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to 5. @@ -369,6 +371,7 @@ def piclayout( return self.image_processor.pic2file( pic_file=pic_file, process_type="layout", + output_format=output_format, output_path=output_path, concurrent_limit=concurrent_limit, ) diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index 0d19c85..c1b0bec 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -4,11 +4,36 @@ from typing import Dict, List, Optional, Union from .Doc2X.ConvertV2 import parse_image_layout from .Doc2X.Exception import RateLimit, run_async -from .FileTools.file_tools import get_files +from .Doc2X.Types import OutputFormat +from .FileTools.file_tools import get_files, save_md import os +import copy logger = logging.getLogger("pdfdeal.doc2x") +async def save_md_format( + output_path: str, + output_name: str, + content: str = '', + save_subdir: bool = False, + ): + """Save the text to md file + Args: + output_path (str): The path to save the MD file + output_name(str): MD file name + content (list[dict]): The MD content to save + """ + loop = asyncio.get_running_loop() + saved_path, fail_reason = await loop.run_in_executor( + None, + save_md, + output_path, + output_name, + content, + save_subdir, + ) + + return saved_path, fail_reason class ImageProcessor: """Image processor with rate limiting support""" @@ -56,9 +81,13 @@ async def _check_rate_limit(self): ) await asyncio.sleep(wait_time) + async def process_image( - self, image_path: str, process_type: str = "layout", output_path: str = None - ) -> tuple[list, str, bool]: + self, + image_path: str, + process_type: str = "layout", + output_path: str = 'Output' + ) -> tuple[list, str, bool]: """Process an image with layout analysis Args: @@ -71,6 +100,7 @@ async def process_image( - The processing result (list of pages for layout) - The uid of the processed image - Boolean indicating if the processing was successful + - The failure information Raises: ValueError: If process_type is invalid or file type is not supported @@ -93,8 +123,9 @@ async def process_image( logger.info(f"Layout results saved to zip file at {output_zip_path}") pages[0]['zip_path'] = output_zip_path - pages[0]['image_path'] = image_path - return pages, uid, True + pages[0]['path'] = image_path + + return pages, uid, True, "" else: logger.error(f"Error process_type: {process_type}") raise ValueError(f"Unsupported process_type: '{process_type}'") @@ -103,11 +134,12 @@ async def process_image( raise except Exception as e: logger.error(f"Error processing image {image_path}: {str(e)}") - return [], "", False + return [], "", False, str(e) async def process_multiple_images( self, image_paths: List[str], + output_format: str = 'text', process_type: str = "layout", concurrent_limit: int = 5, output_path: str = 'Output/', @@ -117,8 +149,10 @@ async def process_multiple_images( Args: image_paths (List[str]): List of image file paths process_type (str): Type of processing, can be 'layout' - concurrent_limit (int): Maximum number of concurrent processing tasks + output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. + concurrent_limit (int): Maximum number of concurrent processing tasks + Returns: Tuple containing: - List of processing results in order (empty list for failed items) @@ -133,13 +167,83 @@ async def process_with_semaphore( async with semaphore: logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") - result = await self.process_image(path, process_type, output_path) - return index, path, result + output_result, uid, is_success, fail_reasons = await self.process_image(path, process_type, output_path) + + async def save_result_as_md( + image_path: str, + result + ): + + all_results = [] + all_errors = [] + + basename, ext = os.path.basename(image_path).split('.') + + output_formats = [] + + + if isinstance(output_format, str): + if "," in output_format: + output_formats = [fmt.strip() for fmt in output_format.split(",")] + else: + output_formats = [output_format] + else: + raise ValueError("Invalid output format, should be a string.") + for fmt in output_formats: + fmt = OutputFormat(fmt) + if isinstance(fmt, OutputFormat): + fmt = fmt.value + + + if fmt in ["md", "md_dollar"]: + if fmt == 'md_dollar': + new_result = copy.deepcopy(result) + new_result[0]['md'] = \ + new_result[0]['md'].replace('\\[', '$$').replace('\\]', '$$').replace('\\(', '$').replace('\\)', '$') + + output_result, fail_reason = await save_md_format( + output_path=output_path, + output_name=f'{basename}_dollar.md', + content=new_result[0]['md'], + save_subdir=False, + ) + elif fmt == 'md': + new_result = copy.deepcopy(result) + output_result, fail_reason = await save_md_format( + output_path=output_path, + output_name=f'{basename}.md', + content=new_result[0]['md'], + save_subdir=False, + ) + elif fmt in ['text']: + output_result = result + # 此处只会出现 在保存中 出现的错误,text不保存,不会出现错误 + fail_reason = '' + + all_results.append(output_result) + all_errors.append(fail_reason) + + return all_results, all_errors + + + # TODO 需要细致处理 + if not is_success: + results = [] + fail_reasons = fail_reasons + if is_success: + results, save_fail_reasons = await save_result_as_md(image_path=path, result=output_result) + + if all(x != '' for x in save_fail_reasons): + fail_reasons = save_fail_reason + is_success = False + + return index, path, (results, fail_reasons, uid, is_success) tasks = [process_with_semaphore(path, i) for i, path in enumerate(image_paths)] results = await asyncio.gather(*tasks, return_exceptions=True) processed_results = [[] for _ in range(len(image_paths))] + fail_reasons = ['' for _ in range(len(image_paths))] success_status = {} success_count = 0 @@ -148,8 +252,10 @@ async def process_with_semaphore( logger.error(f"Failed to process a file: {str(result)}") continue - index, path, (result_list, _, success) = result + index, path, (result_list, fail_reason, _, success) = result + processed_results[index] = result_list if success else [] + fail_reasons[index] = fail_reason if not success else '' success_status[path] = success if success: success_count += 1 @@ -157,20 +263,22 @@ async def process_with_semaphore( logger.info( f"Batch processing completed. Successfully processed {success_count}/{len(image_paths)} images" ) - return processed_results, success_status + return processed_results, fail_reasons, success_status async def pic2file_back( self, pic_file, process_type: str = "layout", + output_format: str = 'text', output_path: str = "./Output", concurrent_limit: Optional[int] = None, - ) -> tuple[List[Union[list, str]], List[dict], bool]: + ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with layout analysis Args: pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'layout' + output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. output_path (str): Path to save the result json and decoded base64 image zip .Defaults to Output. @@ -185,15 +293,18 @@ async def pic2file_back( pic_file, _ = get_files(path=pic_file, mode="img", out="zip") else: pic_file = [pic_file] - - results, success_status = await self.process_multiple_images( + + + success_results, failed_results, success_status = await self.process_multiple_images( image_paths=pic_file, process_type=process_type, concurrent_limit=concurrent_limit or 5, output_path=output_path, + output_format=output_format, ) + failed_files = [] has_error = False @@ -202,13 +313,13 @@ async def pic2file_back( success_count = 0 for i, path in enumerate(pic_file): if not success_status.get(path, False): - failed_files.append({"error": "Processing failed", "path": path}) + failed_files.append({"error": failed_results[i], "path": path}) final_results.append("") has_error = True - logger.error(f"Failed to process {path}") + logger.error(f"Failed to process {path}, error: {failed_results[i]}") else: failed_files.append({"error": "", "path": ""}) - final_results.append(results[i]) + final_results.append(success_results[i]) success_count += 1 logger.debug(f"Successfully processed {path}") @@ -223,19 +334,22 @@ async def pic2file_back( return final_results, failed_files, has_error def pic2file( - self, - pic_file, - process_type: str = "layout", - output_path: str = 'Output', - concurrent_limit: Optional[int] = None, - ) -> tuple[List[Union[list, str]], List[dict], bool]: + self, + pic_file, + process_type: str = 'layout', + output_format: str = 'text', + output_path: str = 'Output', + concurrent_limit: Optional[int] = None, + ) -> tuple[List[Union[list, str]], List[dict], bool]: """Synchronous wrapper for pic2file_back Args: pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'layout' - concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar output_path (str): Path to save the result json and decoded base64 image zip .Defaults to Output. + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + Returns: Same as pic2file_back @@ -244,6 +358,7 @@ def pic2file( self.pic2file_back( pic_file=pic_file, process_type=process_type, + output_format=output_format, output_path=output_path, concurrent_limit=concurrent_limit, ) From 6578ed48ba282bb62a801dab8e71045ae7c181c6 Mon Sep 17 00:00:00 2001 From: Muxv <85579998@qq.com> Date: Sat, 14 Jun 2025 21:28:52 +0800 Subject: [PATCH 31/46] add subdir to piclayout and use tmp path to pytest --- pyproject.toml | 2 +- src/pdfdeal/Doc2X/ConvertV2.py | 4 +-- src/pdfdeal/FileTools/file_tools.py | 1 - src/pdfdeal/doc2x.py | 13 +++++--- src/pdfdeal/doc2x_img.py | 47 ++++++++++++++++++----------- 5 files changed, 42 insertions(+), 25 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7b5f1b1..4010a8f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pdfdeal" -version = "1.0.3" +version = "1.0.4" authors = [{ name = "noedgeai", email = "support@noedgeai.com" }] description = "Python SDK for Doc2X API and some native texts processing (to improve texts recall in RAG)." readme = "README.md" diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 9d0005a..8849b0b 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -377,7 +377,7 @@ async def download_file( file_type (str): The type of file being downloaded (e.g., 'zip', 'docx'). target_folder (str): The folder where the file should be saved. target_filename (str): The desired filename for the downloaded file, can include subdirectories. - save_subdir(bool, optional): Save the output to a subfolder under output_path. Defaults to False. + save_subdir (bool, optional): Save the output to a subfolder under output_path. Defaults to False. Raises: Exception: If there's an error creating the target folder or downloading the file. @@ -514,12 +514,12 @@ async def parse_image_layout( output_zip_path = '' + # Save zip file if path provided and zip content exists if zip_path and data.get("data", {}).get("convert_zip"): zip_content = base64.b64decode(data["data"]["convert_zip"]) with open(zip_path, "wb") as f: f.write(zip_content) - output_zip_path = zip_path return ( diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index 5689178..a54254c 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -474,7 +474,6 @@ def save_md( except Exception as e: logging.error(f"Error occurs when saving to {final_md_path}: {str(e)}") - fail_reason = str(e) if str(e) else type(e).__name__ return '', fail_reason diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index b47e18c..7c6aa9f 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -348,6 +348,7 @@ def piclayout( pic_file, output_format: str = "text", output_path: str = "./Output", + save_subdir: bool = False, concurrent_limit: Optional[int] = 5, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with layout analysis @@ -356,6 +357,7 @@ def piclayout( pic_file (str | List[str]): Path to image files (jpg/png) output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. + save_subdir (bool): Save the output to a subfolder under output_path. Defaults to False. concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to 5. Returns: @@ -365,14 +367,18 @@ def piclayout( - Boolean indicating if any errors occurred """ - if not os.path.isdir(output_path): - raise ValueError("output_path must be a directory") + if os.path.exists(output_path): + if not os.path.isdir(output_path): + raise ValueError("output_path must be a directory") + else: + os.makedirs(output_path, exist_ok=True) return self.image_processor.pic2file( pic_file=pic_file, process_type="layout", output_format=output_format, output_path=output_path, + save_subdir=save_subdir, concurrent_limit=concurrent_limit, ) @@ -699,7 +705,6 @@ def pdf2file( merge_cross_page_forms: bool = False, ocr: bool = False, save_subdir: bool = False, - ) -> Tuple[List[str], List[dict], bool]: """Convert PDF file to specified format Args: @@ -711,7 +716,7 @@ def pdf2file( oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. ocr (bool, optional): This option is deprecated and will not be used. - save_subdir(bool, optional): Save the output to a subfolder under output_path. Defaults to False. + save_subdir (bool, optional): Save the output to a subfolder under output_path. Defaults to False. export_history(str, optional): Export history file. Defaults to None. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: diff --git a/src/pdfdeal/doc2x_img.py b/src/pdfdeal/doc2x_img.py index c1b0bec..f2617f7 100644 --- a/src/pdfdeal/doc2x_img.py +++ b/src/pdfdeal/doc2x_img.py @@ -86,7 +86,8 @@ async def process_image( self, image_path: str, process_type: str = "layout", - output_path: str = 'Output' + output_path: str = 'Output', + save_subdir: bool = False, ) -> tuple[list, str, bool]: """Process an image with layout analysis @@ -111,6 +112,10 @@ async def process_image( if process_type not in ["layout"]: raise ValueError("process_type must be one of: 'layout'") + if save_subdir: + subdir_name = os.path.basename(image_path).split('.')[0] + output_path = os.path.join(output_path, subdir_name) + try: logger.info(f"Starting {process_type} processing for {image_path}") if process_type == "layout": @@ -141,8 +146,9 @@ async def process_multiple_images( image_paths: List[str], output_format: str = 'text', process_type: str = "layout", - concurrent_limit: int = 5, output_path: str = 'Output/', + save_subdir: bool = False, + concurrent_limit: int = 5, ) -> tuple[List[list], Dict[str, bool]]: """Process multiple images concurrently with rate limiting @@ -151,6 +157,7 @@ async def process_multiple_images( process_type (str): Type of processing, can be 'layout' output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar output_path (str): Path to save the result json and decoded base64 image zip. Defaults to Output. + save_subdir (bool): Save the output to a subfolder under output_path. Defaults to False. concurrent_limit (int): Maximum number of concurrent processing tasks Returns: @@ -166,12 +173,10 @@ async def process_with_semaphore( ) -> tuple[int, str, tuple[list, str, bool]]: async with semaphore: logger.debug(f"Processing image {index + 1}/{len(image_paths)}: {path}") - - output_result, uid, is_success, fail_reasons = await self.process_image(path, process_type, output_path) - + output_result, uid, is_success, fail_reasons = await self.process_image(path, process_type, output_path, save_subdir) async def save_result_as_md( - image_path: str, - result + image_path: str, + result ): all_results = [] @@ -181,7 +186,6 @@ async def save_result_as_md( output_formats = [] - if isinstance(output_format, str): if "," in output_format: output_formats = [fmt.strip() for fmt in output_format.split(",")] @@ -205,7 +209,7 @@ async def save_result_as_md( output_path=output_path, output_name=f'{basename}_dollar.md', content=new_result[0]['md'], - save_subdir=False, + save_subdir=save_subdir, ) elif fmt == 'md': new_result = copy.deepcopy(result) @@ -213,7 +217,7 @@ async def save_result_as_md( output_path=output_path, output_name=f'{basename}.md', content=new_result[0]['md'], - save_subdir=False, + save_subdir=save_subdir, ) elif fmt in ['text']: output_result = result @@ -225,17 +229,19 @@ async def save_result_as_md( return all_results, all_errors - - # TODO 需要细致处理 + # 处理阶段失败的图片 if not is_success: results = [] fail_reasons = fail_reasons - if is_success: + else: results, save_fail_reasons = await save_result_as_md(image_path=path, result=output_result) - if all(x != '' for x in save_fail_reasons): - fail_reasons = save_fail_reason + fail_reasons = save_fail_reasons is_success = False + else: + is_success = True + fail_reasons = save_fail_reasons + return index, path, (results, fail_reasons, uid, is_success) @@ -271,6 +277,7 @@ async def pic2file_back( process_type: str = "layout", output_format: str = 'text', output_path: str = "./Output", + save_subdir: bool = False, concurrent_limit: Optional[int] = None, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Process image files with layout analysis @@ -279,8 +286,10 @@ async def pic2file_back( pic_file (str | List[str]): Path to image file(s) or directory process_type (str): Type of processing, can be 'layout' output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar - concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. output_path (str): Path to save the result json and decoded base64 image zip .Defaults to Output. + save_subdir (bool): Save the output to a subfolder under output_path. Defaults to False. + concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. + Returns: Tuple containing: @@ -302,6 +311,7 @@ async def pic2file_back( concurrent_limit=concurrent_limit or 5, output_path=output_path, output_format=output_format, + save_subdir=save_subdir, ) @@ -314,7 +324,7 @@ async def pic2file_back( for i, path in enumerate(pic_file): if not success_status.get(path, False): failed_files.append({"error": failed_results[i], "path": path}) - final_results.append("") + final_results.append([]) has_error = True logger.error(f"Failed to process {path}, error: {failed_results[i]}") else: @@ -339,6 +349,7 @@ def pic2file( process_type: str = 'layout', output_format: str = 'text', output_path: str = 'Output', + save_subdir: bool = False, concurrent_limit: Optional[int] = None, ) -> tuple[List[Union[list, str]], List[dict], bool]: """Synchronous wrapper for pic2file_back @@ -348,6 +359,7 @@ def pic2file( process_type (str): Type of processing, can be 'layout' output_format (str): The output format. Defaults to "text". Available values are 'text', 'md', ''md_dollar output_path (str): Path to save the result json and decoded base64 image zip .Defaults to Output. + save_subdir (bool): Save the output to a subfolder under output_path. Defaults to False. concurrent_limit (int, optional): Maximum number of concurrent tasks. Defaults to None. @@ -360,6 +372,7 @@ def pic2file( process_type=process_type, output_format=output_format, output_path=output_path, + save_subdir=save_subdir, concurrent_limit=concurrent_limit, ) ) From bdff859c6ed1ca2b5055f373115d4e9b136b7cd3 Mon Sep 17 00:00:00 2001 From: HSn Date: Mon, 9 Feb 2026 16:59:47 +0800 Subject: [PATCH 32/46] feat: add v3 preupload model support for v2 client and CLI --- README.md | 1 + README_CN.md | 3 +- pyproject.toml | 7 +- src/pdfdeal/CLI/doc2x.py | 8 + src/pdfdeal/Doc2X/ConvertV2.py | 29 +- src/pdfdeal/Doc2X/Types.py | 30 + src/pdfdeal/doc2x.py | 33 +- tests/test_pdf2file.py | 57 +- uv.lock | 1812 ++++++++++++++++++++++++++++++++ 9 files changed, 1968 insertions(+), 12 deletions(-) create mode 100644 uv.lock diff --git a/README.md b/README.md index 121f368..5a26bdf 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,7 @@ success, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output", output_format="docx", + model="v3-2026", # optional, default is server-side v2 ) print(success) print(failed) diff --git a/README_CN.md b/README_CN.md index da667d4..b5cbfdd 100644 --- a/README_CN.md +++ b/README_CN.md @@ -102,6 +102,7 @@ success, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output", output_format="docx", + model="v3-2026", # 可选,不填则使用服务端默认 v2 ) print(success) print(failed) @@ -125,4 +126,4 @@ print(failed) print(flag) ``` -更多详细请参见在线文档。 \ No newline at end of file +更多详细请参见在线文档。 diff --git a/pyproject.toml b/pyproject.toml index 4010a8f..623ce38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,12 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] -dependencies = ["httpx[http2]>=0.23.1, <1", "pypdf"] +dependencies = [ + "aiofiles>=24.1.0", + "httpx[http2]>=0.23.1, <1", + "pypdf", + "pytest>=8.3.5", +] [project.optional-dependencies] tools = ["emoji", "Pillow", "reportlab", "beautifulsoup4"] diff --git a/src/pdfdeal/CLI/doc2x.py b/src/pdfdeal/CLI/doc2x.py index 98e6542..c71daf2 100644 --- a/src/pdfdeal/CLI/doc2x.py +++ b/src/pdfdeal/CLI/doc2x.py @@ -1,6 +1,7 @@ import argparse import os from pdfdeal import Doc2X +from pdfdeal.Doc2X.Types import V2ParseModel def main(): @@ -30,6 +31,12 @@ def main(): help="The maximum number of pages to process at same time, default is 1000, DO NOT set if you don't know", required=False, ) + parser.add_argument( + "--model", + help='Upload model for v2 preupload API, e.g. "v3-2026". Leave empty to use server default v2.', + required=False, + choices=[model.value for model in V2ParseModel], + ) parser.add_argument( "-o", "--output", @@ -99,6 +106,7 @@ def main(): pdf_file=filename, output_path=output, output_format=format, + model=args.model, ) for file in success: diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 8849b0b..b111640 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -9,7 +9,7 @@ from typing import Tuple from .Exception import RateLimit, FileError, RequestError, async_retry, code_check import logging -from .Types import OutputFormat +from .Types import OutputFormat, V2ParseModelType, normalize_v2_parse_model import base64 Base_URL = "https://v2.doc2x.noedgeai.com/api" @@ -35,13 +35,19 @@ @async_retry(timeout=200) -async def upload_pdf(apikey: str, pdffile: str, oss_choose: str = "always") -> str: +async def upload_pdf( + apikey: str, + pdffile: str, + oss_choose: str = "always", + model: V2ParseModelType = None, +) -> str: """Upload pdf file to server and return the uid of the file Args: apikey (str): The key pdffile (str): The pdf file path oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". + model (V2ParseModelType, optional): Upload model for preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). Raises: FileError: Input file size is too large @@ -56,7 +62,7 @@ async def upload_pdf(apikey: str, pdffile: str, oss_choose: str = "always") -> s if oss_choose == "always" or ( oss_choose == "auto" and os.path.getsize(pdffile) >= 100 * 1024 * 1024 ): - return await upload_pdf_big(apikey, pdffile) + return await upload_pdf_big(apikey, pdffile, model=model) elif oss_choose == "none" and os.path.getsize(pdffile) >= 100 * 1024 * 1024: logger.warning("Now not support PDF file > 300MB!") raise RequestError("parse_file_too_large") @@ -96,12 +102,17 @@ async def upload_pdf(apikey: str, pdffile: str, oss_choose: str = "always") -> s ) -async def upload_pdf_big(apikey: str, pdffile: str) -> str: +async def upload_pdf_big( + apikey: str, + pdffile: str, + model: V2ParseModelType = None, +) -> str: """Upload big pdf file to server and return the uid of the file Args: apikey (str): The key pdffile (str): The pdf file path + model (V2ParseModelType, optional): Upload model for preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). Raises: FileError: Input file size is too large @@ -122,12 +133,16 @@ async def upload_pdf_big(apikey: str, pdffile: str) -> str: url = f"{Base_URL}/v2/parse/preupload" filename = os.path.basename(pdffile) + upload_payload = {"file_name": filename} + model_value = normalize_v2_parse_model(model) + if model_value: + upload_payload["model"] = model_value async with httpx.AsyncClient(timeout=httpx.Timeout(15), http2=True) as client: post_res = await client.post( url, headers={"Authorization": f"Bearer {apikey}"}, - json={"file_name": filename}, + json=upload_payload, ) trace_id = post_res.headers.get("trace-id") if post_res.status_code == 200: @@ -405,7 +420,7 @@ async def download_file( filename = f'{filename}_{zip_file_suffix}' - + file_path = os.path.join(target_dir, f"{filename}.{file_type}") counter = 1 while os.path.exists(file_path): @@ -445,7 +460,7 @@ async def image_code_check(code: str, trace_id: str = None): @async_retry() async def parse_image_layout( - apikey: str, image_path: str, output_path: str = None, + apikey: str, image_path: str, output_path: str = None, ) -> tuple[list, str]: """Parse image layout diff --git a/src/pdfdeal/Doc2X/Types.py b/src/pdfdeal/Doc2X/Types.py index 476c8ec..94226f6 100644 --- a/src/pdfdeal/Doc2X/Types.py +++ b/src/pdfdeal/Doc2X/Types.py @@ -1,4 +1,5 @@ from enum import Enum +from typing import Optional, Union class OutputFormat(str, Enum): @@ -66,3 +67,32 @@ def _missing_(cls, value): raise ValueError( f"{value} is not a valid {cls.__name__}, must be one of {', '.join([m.value for m in cls])}" ) + + +class V2ParseModel(str, Enum): + V3_2026 = "v3-2026" + + @classmethod + def _missing_(cls, value): + for member in cls: + if member.value.lower() == value.lower(): + return member + raise ValueError( + f"{value} is not a valid {cls.__name__}, must be one of {', '.join([m.value for m in cls])}" + ) + + +V2ParseModelType = Optional[Union[str, V2ParseModel]] + + +def normalize_v2_parse_model(model: V2ParseModelType) -> str: + if model is None: + return "" + if isinstance(model, V2ParseModel): + return model.value + + model = model.strip() + if not model: + return "" + + return V2ParseModel(model).value diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 7c6aa9f..bb62ce3 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -15,7 +15,12 @@ get_convert_result, download_file, ) -from .Doc2X.Types import OutputFormat +from .Doc2X.Types import ( + OutputFormat, + V2ParseModel, + V2ParseModelType, + normalize_v2_parse_model, +) from .Doc2X.Pages import get_pdf_page_count from .Doc2X.Exception import RequestError, RateLimit, run_async from .FileTools.file_tools import get_files, save_json @@ -139,6 +144,7 @@ async def parse_pdf( max_time: int, convert: bool, oss_choose: str = "auto", + model: V2ParseModelType = None, export_history: str = "", ) -> Tuple[str, List[str], List[dict]]: """Parse PDF file and return uid and extracted text""" @@ -163,7 +169,7 @@ async def task_limit_lock(): for attempt in range(maxretry): try: logger.info(f"Uploading {pdf_path}...") - uid = await upload_pdf(apikey, pdf_path, oss_choose) + uid = await upload_pdf(apikey, pdf_path, oss_choose, model=model) if export_history != "": await record_export_history( csv_path=export_history, @@ -390,6 +396,7 @@ async def pdf2file_back( output_format: str = "md_dollar", convert: bool = False, oss_choose: str = "auto", + model: V2ParseModelType = None, merge_cross_page_forms: bool = False, save_subdir: bool = False, export_history: str = "", @@ -434,6 +441,24 @@ async def pdf2file_back( if isinstance(fmt, OutputFormat): fmt = fmt.value + try: + normalized_model = normalize_v2_parse_model(model) + model_enum = V2ParseModel(normalized_model) if normalized_model else None + if model_enum == V2ParseModel.V3_2026: + model_version = "v3" + model_label = normalized_model + else: + model_version = "v2" + model_label = "default(v2)" + except Exception: + normalized_model = str(model).strip() if model is not None else "" + model_version = "custom" + model_label = normalized_model or "default(v2)" + + logger.info( + f"Doc2X parse model selected: {model_version} ({model_label})" + ) + # Track total pages and last request time total_pages = 0 last_request_time = 0 @@ -498,6 +523,7 @@ async def process_file(index, pdf, name): max_time=self.max_time, convert=convert, oss_choose=oss_choose, + model=model, export_history=export_history, ) parse_results[index] = (uid, texts, locations) @@ -702,6 +728,7 @@ def pdf2file( output_format: str = "md_dollar", convert: bool = False, oss_choose: str = "always", + model: V2ParseModelType = None, merge_cross_page_forms: bool = False, ocr: bool = False, save_subdir: bool = False, @@ -714,6 +741,7 @@ def pdf2file( output_format (str, optional): The output format. Defaults to "md_dollar". convert (bool, optional): Convert "[" and "[[" to "$" and "$$". Defaults to False. oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". + model (V2ParseModelType, optional): Upload model for v2 preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. ocr (bool, optional): This option is deprecated and will not be used. save_subdir (bool, optional): Save the output to a subfolder under output_path. Defaults to False. @@ -744,6 +772,7 @@ def pdf2file( output_format=output_format, convert=convert, oss_choose=oss_choose, + model=model, merge_cross_page_forms=merge_cross_page_forms, save_subdir=save_subdir, export_history=export_history, diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index 069c63b..0197667 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -1,7 +1,62 @@ from pdfdeal import Doc2X +from pdfdeal.Doc2X.Types import V2ParseModel import os import pytest + +def _require_apikey() -> str: + apikey = os.getenv("DOC2X_APIKEY") + if not apikey: + pytest.skip("DOC2X_APIKEY is required for integration tests") + return apikey + + +def test_pdf2file_v3_model_example(): + client = Doc2X(apikey=_require_apikey(), debug=True, thread=1) + success, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_format="text", + model=V2ParseModel.V3_2026, + ) + + print(success) + print(failed) + print(flag) + assert flag is False + assert isinstance(success[0], str) + assert success[0] != "" + assert failed[0]["error"] == "" + + +def test_pdf2file_mixed_v3_and_v2_models(): + client = Doc2X(apikey=_require_apikey(), debug=True, thread=1) + + success_v3, failed_v3, flag_v3 = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_format="text", + model=V2ParseModel.V3_2026, + ) + success_v2, failed_v2, flag_v2 = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_format="text", + ) + + print(success_v3) + print(failed_v3) + print(flag_v3) + print(success_v2) + print(failed_v2) + print(flag_v2) + assert flag_v3 is False + assert flag_v2 is False + assert isinstance(success_v3[0], str) + assert isinstance(success_v2[0], str) + assert success_v3[0] != "" + assert success_v2[0] != "" + assert failed_v3[0]["error"] == "" + assert failed_v2[0]["error"] == "" + + # 测试一个文件,output_format为json def test_pdf2json(): client = Doc2X(debug=True, thread=1) @@ -129,4 +184,4 @@ def test_export_history(): output_path="./Output/", output_format="md", export_history="./Output/history/history.csv", - ) \ No newline at end of file + ) diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..a23f4b3 --- /dev/null +++ b/uv.lock @@ -0,0 +1,1812 @@ +version = 1 +revision = 2 +requires-python = ">=3.8" +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] + +[[package]] +name = "aiofiles" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247, upload-time = "2024-06-24T11:02:03.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896, upload-time = "2024-06-24T11:02:01.529Z" }, +] + +[[package]] +name = "aiofiles" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c3/534eac40372d8ee36ef40df62ec129bee4fdb5ad9706e58a29be53b2c970/aiofiles-25.1.0.tar.gz", hash = "sha256:a8d728f0a29de45dc521f18f07297428d56992a742f0cd2701ba86e44d23d5b2", size = 46354, upload-time = "2025-10-09T20:51:04.358Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl", hash = "sha256:abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695", size = 14668, upload-time = "2025-10-09T20:51:03.174Z" }, +] + +[[package]] +name = "aliyun-python-sdk-core" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "jmespath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/09/da9f58eb38b4fdb97ba6523274fbf445ef6a06be64b433693da8307b4bec/aliyun-python-sdk-core-2.16.0.tar.gz", hash = "sha256:651caad597eb39d4fad6cf85133dffe92837d53bdf62db9d8f37dab6508bb8f9", size = 449555, upload-time = "2024-10-09T06:01:01.762Z" } + +[[package]] +name = "aliyun-python-sdk-kms" +version = "2.16.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/2c/9877d0e6b18ecf246df671ac65a5d1d9fecbf85bdcb5d43efbde0d4662eb/aliyun-python-sdk-kms-2.16.5.tar.gz", hash = "sha256:f328a8a19d83ecbb965ffce0ec1e9930755216d104638cd95ecd362753b813b3", size = 12018, upload-time = "2024-08-30T09:01:20.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/5c/0132193d7da2c735669a1ed103b142fd63c9455984d48c5a88a1a516efaa/aliyun_python_sdk_kms-2.16.5-py2.py3-none-any.whl", hash = "sha256:24b6cdc4fd161d2942619479c8d050c63ea9cd22b044fe33b60bbb60153786f0", size = 99495, upload-time = "2024-08-30T09:01:18.462Z" }, +] + +[[package]] +name = "anyio" +version = "4.5.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, + { name = "idna", marker = "python_full_version < '3.9'" }, + { name = "sniffio", marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/f9/9a7ce600ebe7804daf90d4d48b1c0510a4561ddce43a596be46676f82343/anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b", size = 171293, upload-time = "2024-10-13T22:18:03.307Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/b4/f7e396030e3b11394436358ca258a81d6010106582422f23443c16ca1873/anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f", size = 89766, upload-time = "2024-10-13T22:18:01.524Z" }, +] + +[[package]] +name = "anyio" +version = "4.12.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, + { name = "idna", marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings", version = "21.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "argon2-cffi-bindings", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "cffi", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, + { url = "https://files.pythonhosted.org/packages/34/da/d105a3235ae86c1c1a80c1e9c46953e6e53cc8c4c61fb3c5ac8a39bbca48/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583", size = 23689, upload-time = "2021-12-01T09:09:40.511Z" }, + { url = "https://files.pythonhosted.org/packages/43/f3/20bc53a6e50471dfea16a63dc9b69d2a9ec78fd2b9532cc25f8317e121d9/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d", size = 28122, upload-time = "2021-12-01T09:09:42.818Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f1/48888db30b6a4a0c78ab7bc7444058a1135b223b6a2a5f2ac7d6780e7443/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670", size = 27882, upload-time = "2021-12-01T09:09:43.93Z" }, + { url = "https://files.pythonhosted.org/packages/ee/0f/a2260a207f21ce2ff4cad00a417c31597f08eafb547e00615bcbf403d8ea/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb", size = 30745, upload-time = "2021-12-01T09:09:41.73Z" }, + { url = "https://files.pythonhosted.org/packages/ed/55/f8ba268bc9005d0ca57a862e8f1b55bf1775e97a36bd30b0a8fb568c265c/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a", size = 28587, upload-time = "2021-12-01T09:09:45.508Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "cffi", version = "2.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/2d/db8af0df73c1cf454f71b2bbe5e356b8c1f8041c979f505b3d3186e520a9/argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d", size = 1783441, upload-time = "2025-07-30T10:02:05.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/3c0a35f46e52108d4707c44b95cfe2afcafc50800b5450c197454569b776/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f", size = 54393, upload-time = "2025-07-30T10:01:40.97Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f4/98bbd6ee89febd4f212696f13c03ca302b8552e7dbf9c8efa11ea4a388c3/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b", size = 29328, upload-time = "2025-07-30T10:01:41.916Z" }, + { url = "https://files.pythonhosted.org/packages/43/24/90a01c0ef12ac91a6be05969f29944643bc1e5e461155ae6559befa8f00b/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a", size = 31269, upload-time = "2025-07-30T10:01:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d3/942aa10782b2697eee7af5e12eeff5ebb325ccfb86dd8abda54174e377e4/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44", size = 86558, upload-time = "2025-07-30T10:01:43.943Z" }, + { url = "https://files.pythonhosted.org/packages/0d/82/b484f702fec5536e71836fc2dbc8c5267b3f6e78d2d539b4eaa6f0db8bf8/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb", size = 92364, upload-time = "2025-07-30T10:01:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/a606ff83b3f1735f3759ad0f2cd9e038a0ad11a3de3b6c673aa41c24bb7b/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92", size = 85637, upload-time = "2025-07-30T10:01:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/44/b4/678503f12aceb0262f84fa201f6027ed77d71c5019ae03b399b97caa2f19/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85", size = 91934, upload-time = "2025-07-30T10:01:47.203Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c7/f36bd08ef9bd9f0a9cff9428406651f5937ce27b6c5b07b92d41f91ae541/argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f", size = 28158, upload-time = "2025-07-30T10:01:48.341Z" }, + { url = "https://files.pythonhosted.org/packages/b3/80/0106a7448abb24a2c467bf7d527fe5413b7fdfa4ad6d6a96a43a62ef3988/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6", size = 32597, upload-time = "2025-07-30T10:01:49.112Z" }, + { url = "https://files.pythonhosted.org/packages/05/b8/d663c9caea07e9180b2cb662772865230715cbd573ba3b5e81793d580316/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623", size = 28231, upload-time = "2025-07-30T10:01:49.92Z" }, + { url = "https://files.pythonhosted.org/packages/1d/57/96b8b9f93166147826da5f90376e784a10582dd39a393c99bb62cfcf52f0/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500", size = 54121, upload-time = "2025-07-30T10:01:50.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/08/a9bebdb2e0e602dde230bdde8021b29f71f7841bd54801bcfd514acb5dcf/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44", size = 29177, upload-time = "2025-07-30T10:01:51.681Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/d297943bcacf05e4f2a94ab6f462831dc20158614e5d067c35d4e63b9acb/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0", size = 31090, upload-time = "2025-07-30T10:01:53.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/93/44365f3d75053e53893ec6d733e4a5e3147502663554b4d864587c7828a7/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6", size = 81246, upload-time = "2025-07-30T10:01:54.145Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a", size = 87126, upload-time = "2025-07-30T10:01:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/72/70/7a2993a12b0ffa2a9271259b79cc616e2389ed1a4d93842fac5a1f923ffd/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d", size = 80343, upload-time = "2025-07-30T10:01:56.007Z" }, + { url = "https://files.pythonhosted.org/packages/78/9a/4e5157d893ffc712b74dbd868c7f62365618266982b64accab26bab01edc/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99", size = 86777, upload-time = "2025-07-30T10:01:56.943Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/15777dfde1c29d96de7f18edf4cc94c385646852e7c7b0320aa91ccca583/argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2", size = 27180, upload-time = "2025-07-30T10:01:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98", size = 31715, upload-time = "2025-07-30T10:01:58.56Z" }, + { url = "https://files.pythonhosted.org/packages/42/b9/f8d6fa329ab25128b7e98fd83a3cb34d9db5b059a9847eddb840a0af45dd/argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94", size = 27149, upload-time = "2025-07-30T10:01:59.329Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/ba4e4ca8d149f8dcc0d952ac0967089e1d759c7e5fcf0865a317eb680fbb/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e", size = 24549, upload-time = "2025-07-30T10:02:00.101Z" }, + { url = "https://files.pythonhosted.org/packages/5c/82/9b2386cc75ac0bd3210e12a44bfc7fd1632065ed8b80d573036eecb10442/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d", size = 25539, upload-time = "2025-07-30T10:02:00.929Z" }, + { url = "https://files.pythonhosted.org/packages/31/db/740de99a37aa727623730c90d92c22c9e12585b3c98c54b7960f7810289f/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584", size = 28467, upload-time = "2025-07-30T10:02:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/71/7a/47c4509ea18d755f44e2b92b7178914f0c113946d11e16e626df8eaa2b0b/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690", size = 27355, upload-time = "2025-07-30T10:02:02.867Z" }, + { url = "https://files.pythonhosted.org/packages/ee/82/82745642d3c46e7cea25e1885b014b033f4693346ce46b7f47483cf5d448/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520", size = 29187, upload-time = "2025-07-30T10:02:03.674Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve", version = "2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "soupsieve", version = "2.8.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + +[[package]] +name = "boto3" +version = "1.37.38" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "botocore", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "jmespath", marker = "python_full_version < '3.9'" }, + { name = "s3transfer", version = "0.11.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/b5/d1c2e8c484cea43891629bbab6ca90ce9ca932586750bc0e786c8f096ccf/boto3-1.37.38.tar.gz", hash = "sha256:88c02910933ab7777597d1ca7c62375f52822e0aa1a8e0c51b2598a547af42b2", size = 111623, upload-time = "2025-04-21T19:27:18.06Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/87/8189f22ee798177bc7b40afd13f046442c5f91b699e70a950b42ff447e80/boto3-1.37.38-py3-none-any.whl", hash = "sha256:b6d42803607148804dff82389757827a24ce9271f0583748853934c86310999f", size = 139922, upload-time = "2025-04-21T19:27:16.107Z" }, +] + +[[package]] +name = "boto3" +version = "1.42.44" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "jmespath", marker = "python_full_version >= '3.9'" }, + { name = "s3transfer", version = "0.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/88/de5c2a0ce069973345f9fac81200de5b58f503e231dbd566357a5b8c9109/boto3-1.42.44.tar.gz", hash = "sha256:d5601ea520d30674c1d15791a1f98b5c055e973c775e1d9952ccc09ee5913c4e", size = 112865, upload-time = "2026-02-06T20:28:05.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fb/0341da1482f7fa256d257cfba89383f6692570b741598d4e26d879b26c57/boto3-1.42.44-py3-none-any.whl", hash = "sha256:32e995b0d56e19422cff22f586f698e8924c792eb00943de9c517ff4607e4e18", size = 140604, upload-time = "2026-02-06T20:28:03.598Z" }, +] + +[[package]] +name = "botocore" +version = "1.37.38" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "jmespath", marker = "python_full_version < '3.9'" }, + { name = "python-dateutil", marker = "python_full_version < '3.9'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/79/4e072e614339727f79afef704e5993b5b4d2667c1671c757cc4deb954744/botocore-1.37.38.tar.gz", hash = "sha256:c3ea386177171f2259b284db6afc971c959ec103fa2115911c4368bea7cbbc5d", size = 13832365, upload-time = "2025-04-21T19:27:05.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/1b/93f3504afc7c523dcaa8a8147cfc75421983e30b08d9f93a533929589630/botocore-1.37.38-py3-none-any.whl", hash = "sha256:23b4097780e156a4dcaadfc1ed156ce25cb95b6087d010c4bb7f7f5d9bc9d219", size = 13499391, upload-time = "2025-04-21T19:27:00.869Z" }, +] + +[[package]] +name = "botocore" +version = "1.42.44" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "jmespath", marker = "python_full_version >= '3.9'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.9'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/ff/54cef2c5ff4e1c77fabc0ed68781e48eb36f33433f82bba3605e9c0e45ce/botocore-1.42.44.tar.gz", hash = "sha256:47ba27360f2afd2c2721545d8909217f7be05fdee16dd8fc0b09589535a0701c", size = 14936071, upload-time = "2026-02-06T20:27:53.654Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/b45c54abfbb902ff174444a48558f97f9917143bc2e996729220f2631db1/botocore-1.42.44-py3-none-any.whl", hash = "sha256:ba406b9243a20591ee87d53abdb883d46416705cebccb639a7f1c923f9dd82df", size = 14611152, upload-time = "2026-02-06T20:27:49.565Z" }, +] + +[[package]] +name = "certifi" +version = "2026.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "pycparser", version = "2.23", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, + { url = "https://files.pythonhosted.org/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457, upload-time = "2024-09-04T20:44:47.892Z" }, + { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932, upload-time = "2024-09-04T20:44:49.491Z" }, + { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585, upload-time = "2024-09-04T20:44:51.671Z" }, + { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268, upload-time = "2024-09-04T20:44:53.51Z" }, + { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592, upload-time = "2024-09-04T20:44:55.085Z" }, + { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512, upload-time = "2024-09-04T20:44:57.135Z" }, + { url = "https://files.pythonhosted.org/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576, upload-time = "2024-09-04T20:44:58.535Z" }, + { url = "https://files.pythonhosted.org/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229, upload-time = "2024-09-04T20:44:59.963Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220, upload-time = "2024-09-04T20:45:01.577Z" }, + { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605, upload-time = "2024-09-04T20:45:03.837Z" }, + { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910, upload-time = "2024-09-04T20:45:05.315Z" }, + { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200, upload-time = "2024-09-04T20:45:06.903Z" }, + { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565, upload-time = "2024-09-04T20:45:08.975Z" }, + { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635, upload-time = "2024-09-04T20:45:10.64Z" }, + { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218, upload-time = "2024-09-04T20:45:12.366Z" }, + { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486, upload-time = "2024-09-04T20:45:13.935Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911, upload-time = "2024-09-04T20:45:15.696Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632, upload-time = "2024-09-04T20:45:17.284Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820, upload-time = "2024-09-04T20:45:18.762Z" }, + { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "pycparser", version = "2.23", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*' and implementation_name != 'PyPy'" }, + { name = "pycparser", version = "3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10' and 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/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { 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" }, + { url = "https://files.pythonhosted.org/packages/c0/cc/08ed5a43f2996a16b462f64a7055c6e962803534924b9b2f1371d8c00b7b/cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf", size = 184288, upload-time = "2025-09-08T23:23:48.404Z" }, + { url = "https://files.pythonhosted.org/packages/3d/de/38d9726324e127f727b4ecc376bc85e505bfe61ef130eaf3f290c6847dd4/cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7", size = 180509, upload-time = "2025-09-08T23:23:49.73Z" }, + { url = "https://files.pythonhosted.org/packages/9b/13/c92e36358fbcc39cf0962e83223c9522154ee8630e1df7c0b3a39a8124e2/cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c", size = 208813, upload-time = "2025-09-08T23:23:51.263Z" }, + { url = "https://files.pythonhosted.org/packages/15/12/a7a79bd0df4c3bff744b2d7e52cc1b68d5e7e427b384252c42366dc1ecbc/cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165", size = 216498, upload-time = "2025-09-08T23:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ad/5c51c1c7600bdd7ed9a24a203ec255dccdd0ebf4527f7b922a0bde2fb6ed/cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534", size = 203243, upload-time = "2025-09-08T23:23:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/32/f2/81b63e288295928739d715d00952c8c6034cb6c6a516b17d37e0c8be5600/cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f", size = 203158, upload-time = "2025-09-08T23:23:55.169Z" }, + { url = "https://files.pythonhosted.org/packages/1f/74/cc4096ce66f5939042ae094e2e96f53426a979864aa1f96a621ad128be27/cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63", size = 216548, upload-time = "2025-09-08T23:23:56.506Z" }, + { url = "https://files.pythonhosted.org/packages/e8/be/f6424d1dc46b1091ffcc8964fa7c0ab0cd36839dd2761b49c90481a6ba1b/cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2", size = 218897, upload-time = "2025-09-08T23:23:57.825Z" }, + { url = "https://files.pythonhosted.org/packages/f7/e0/dda537c2309817edf60109e39265f24f24aa7f050767e22c98c53fe7f48b/cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65", size = 211249, upload-time = "2025-09-08T23:23:59.139Z" }, + { url = "https://files.pythonhosted.org/packages/2b/e7/7c769804eb75e4c4b35e658dba01de1640a351a9653c3d49ca89d16ccc91/cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322", size = 218041, upload-time = "2025-09-08T23:24:00.496Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d9/6218d78f920dcd7507fc16a766b5ef8f3b913cc7aa938e7fc80b9978d089/cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a", size = 172138, upload-time = "2025-09-08T23:24:01.7Z" }, + { url = "https://files.pythonhosted.org/packages/54/8f/a1e836f82d8e32a97e6b29cc8f641779181ac7363734f12df27db803ebda/cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9", size = 182794, upload-time = "2025-09-08T23:24:02.943Z" }, +] + +[[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/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload-time = "2025-10-14T04:40:11.385Z" }, + { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload-time = "2025-10-14T04:40:13.135Z" }, + { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload-time = "2025-10-14T04:40:14.728Z" }, + { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload-time = "2025-10-14T04:40:16.14Z" }, + { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload-time = "2025-10-14T04:40:17.567Z" }, + { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload-time = "2025-10-14T04:40:19.08Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload-time = "2025-10-14T04:40:20.607Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload-time = "2025-10-14T04:40:21.719Z" }, + { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload-time = "2025-10-14T04:40:23.069Z" }, + { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload-time = "2025-10-14T04:40:24.17Z" }, + { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload-time = "2025-10-14T04:40:25.368Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload-time = "2025-10-14T04:40:26.806Z" }, + { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload-time = "2025-10-14T04:40:28.284Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload-time = "2025-10-14T04:40:29.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload-time = "2025-10-14T04:40:30.644Z" }, + { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload-time = "2025-10-14T04:40:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, + { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, + { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, + { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, + { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, + { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, + { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, + { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, + { 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/4e/3926a1c11f0433791985727965263f788af00db3482d89a7545ca5ecc921/charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84", size = 198599, upload-time = "2025-10-14T04:41:53.213Z" }, + { url = "https://files.pythonhosted.org/packages/ec/7c/b92d1d1dcffc34592e71ea19c882b6709e43d20fa498042dea8b815638d7/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3", size = 143090, upload-time = "2025-10-14T04:41:54.385Z" }, + { url = "https://files.pythonhosted.org/packages/84/ce/61a28d3bb77281eb24107b937a497f3c43089326d27832a63dcedaab0478/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac", size = 139490, upload-time = "2025-10-14T04:41:55.551Z" }, + { url = "https://files.pythonhosted.org/packages/c0/bd/c9e59a91b2061c6f8bb98a150670cb16d4cd7c4ba7d11ad0cdf789155f41/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af", size = 155334, upload-time = "2025-10-14T04:41:56.724Z" }, + { url = "https://files.pythonhosted.org/packages/bf/37/f17ae176a80f22ff823456af91ba3bc59df308154ff53aef0d39eb3d3419/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2", size = 152823, upload-time = "2025-10-14T04:41:58.236Z" }, + { url = "https://files.pythonhosted.org/packages/bf/fa/cf5bb2409a385f78750e78c8d2e24780964976acdaaed65dbd6083ae5b40/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d", size = 147618, upload-time = "2025-10-14T04:41:59.409Z" }, + { url = "https://files.pythonhosted.org/packages/9b/63/579784a65bc7de2d4518d40bb8f1870900163e86f17f21fd1384318c459d/charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3", size = 145516, upload-time = "2025-10-14T04:42:00.579Z" }, + { url = "https://files.pythonhosted.org/packages/a3/a9/94ec6266cd394e8f93a4d69cca651d61bf6ac58d2a0422163b30c698f2c7/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63", size = 145266, upload-time = "2025-10-14T04:42:01.684Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/d6626eb97764b58c2779fa7928fa7d1a49adb8ce687c2dbba4db003c1939/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7", size = 139559, upload-time = "2025-10-14T04:42:02.902Z" }, + { url = "https://files.pythonhosted.org/packages/09/01/ddbe6b01313ba191dbb0a43c7563bc770f2448c18127f9ea4b119c44dff0/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4", size = 156653, upload-time = "2025-10-14T04:42:04.005Z" }, + { url = "https://files.pythonhosted.org/packages/95/c8/d05543378bea89296e9af4510b44c704626e191da447235c8fdedfc5b7b2/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf", size = 145644, upload-time = "2025-10-14T04:42:05.211Z" }, + { url = "https://files.pythonhosted.org/packages/72/01/2866c4377998ef8a1f6802f6431e774a4c8ebe75b0a6e569ceec55c9cbfb/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074", size = 153964, upload-time = "2025-10-14T04:42:06.341Z" }, + { url = "https://files.pythonhosted.org/packages/4a/66/66c72468a737b4cbd7851ba2c522fe35c600575fbeac944460b4fd4a06fe/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a", size = 148777, upload-time = "2025-10-14T04:42:07.535Z" }, + { url = "https://files.pythonhosted.org/packages/50/94/d0d56677fdddbffa8ca00ec411f67bb8c947f9876374ddc9d160d4f2c4b3/charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa", size = 98687, upload-time = "2025-10-14T04:42:08.678Z" }, + { url = "https://files.pythonhosted.org/packages/00/64/c3bc303d1b586480b1c8e6e1e2191a6d6dd40255244e5cf16763dcec52e6/charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576", size = 106115, upload-time = "2025-10-14T04:42:09.793Z" }, + { url = "https://files.pythonhosted.org/packages/46/7c/0c4760bccf082737ca7ab84a4c2034fcc06b1f21cf3032ea98bd6feb1725/charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9", size = 209609, upload-time = "2025-10-14T04:42:10.922Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a4/69719daef2f3d7f1819de60c9a6be981b8eeead7542d5ec4440f3c80e111/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d", size = 149029, upload-time = "2025-10-14T04:42:12.38Z" }, + { url = "https://files.pythonhosted.org/packages/e6/21/8d4e1d6c1e6070d3672908b8e4533a71b5b53e71d16828cc24d0efec564c/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608", size = 144580, upload-time = "2025-10-14T04:42:13.549Z" }, + { url = "https://files.pythonhosted.org/packages/a7/0a/a616d001b3f25647a9068e0b9199f697ce507ec898cacb06a0d5a1617c99/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc", size = 162340, upload-time = "2025-10-14T04:42:14.892Z" }, + { url = "https://files.pythonhosted.org/packages/85/93/060b52deb249a5450460e0585c88a904a83aec474ab8e7aba787f45e79f2/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e", size = 159619, upload-time = "2025-10-14T04:42:16.676Z" }, + { url = "https://files.pythonhosted.org/packages/dd/21/0274deb1cc0632cd587a9a0ec6b4674d9108e461cb4cd40d457adaeb0564/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1", size = 153980, upload-time = "2025-10-14T04:42:17.917Z" }, + { url = "https://files.pythonhosted.org/packages/28/2b/e3d7d982858dccc11b31906976323d790dded2017a0572f093ff982d692f/charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3", size = 152174, upload-time = "2025-10-14T04:42:19.018Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ff/4a269f8e35f1e58b2df52c131a1fa019acb7ef3f8697b7d464b07e9b492d/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6", size = 151666, upload-time = "2025-10-14T04:42:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/da/c9/ec39870f0b330d58486001dd8e532c6b9a905f5765f58a6f8204926b4a93/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88", size = 145550, upload-time = "2025-10-14T04:42:21.324Z" }, + { url = "https://files.pythonhosted.org/packages/75/8f/d186ab99e40e0ed9f82f033d6e49001701c81244d01905dd4a6924191a30/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1", size = 163721, upload-time = "2025-10-14T04:42:22.46Z" }, + { url = "https://files.pythonhosted.org/packages/96/b1/6047663b9744df26a7e479ac1e77af7134b1fcf9026243bb48ee2d18810f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf", size = 152127, upload-time = "2025-10-14T04:42:23.712Z" }, + { url = "https://files.pythonhosted.org/packages/59/78/e5a6eac9179f24f704d1be67d08704c3c6ab9f00963963524be27c18ed87/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318", size = 161175, upload-time = "2025-10-14T04:42:24.87Z" }, + { url = "https://files.pythonhosted.org/packages/e5/43/0e626e42d54dd2f8dd6fc5e1c5ff00f05fbca17cb699bedead2cae69c62f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c", size = 155375, upload-time = "2025-10-14T04:42:27.246Z" }, + { url = "https://files.pythonhosted.org/packages/e9/91/d9615bf2e06f35e4997616ff31248c3657ed649c5ab9d35ea12fce54e380/charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505", size = 99692, upload-time = "2025-10-14T04:42:28.425Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a9/6c040053909d9d1ef4fcab45fddec083aedc9052c10078339b47c8573ea8/charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966", size = 107192, upload-time = "2025-10-14T04:42:29.482Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c6/4fa536b2c0cd3edfb7ccf8469fa0f363ea67b7213a842b90909ca33dd851/charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50", size = 100220, upload-time = "2025-10-14T04:42:30.632Z" }, + { 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 = "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 = "crcmod" +version = "1.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/b0/e595ce2a2527e169c3bcd6c33d2473c1918e0b7f6826a043ca1245dd4e5b/crcmod-1.7.tar.gz", hash = "sha256:dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e", size = 89670, upload-time = "2010-06-27T14:35:29.538Z" } + +[[package]] +name = "cryptography" +version = "46.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9' and platform_python_implementation != 'PyPy'" }, + { name = "cffi", version = "2.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and platform_python_implementation != 'PyPy'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/19/f748958276519adf6a0c1e79e7b8860b4830dda55ccdf29f2719b5fc499c/cryptography-46.0.4.tar.gz", hash = "sha256:bfd019f60f8abc2ed1b9be4ddc21cfef059c841d86d710bb69909a688cbb8f59", size = 749301, upload-time = "2026-01-28T00:24:37.379Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/99/157aae7949a5f30d51fcb1a9851e8ebd5c74bf99b5285d8bb4b8b9ee641e/cryptography-46.0.4-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:281526e865ed4166009e235afadf3a4c4cba6056f99336a99efba65336fd5485", size = 7173686, upload-time = "2026-01-28T00:23:07.515Z" }, + { url = "https://files.pythonhosted.org/packages/87/91/874b8910903159043b5c6a123b7e79c4559ddd1896e38967567942635778/cryptography-46.0.4-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f14fba5bf6f4390d7ff8f086c566454bff0411f6d8aa7af79c88b6f9267aecc", size = 4275871, upload-time = "2026-01-28T00:23:09.439Z" }, + { url = "https://files.pythonhosted.org/packages/c0/35/690e809be77896111f5b195ede56e4b4ed0435b428c2f2b6d35046fbb5e8/cryptography-46.0.4-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:47bcd19517e6389132f76e2d5303ded6cf3f78903da2158a671be8de024f4cd0", size = 4423124, upload-time = "2026-01-28T00:23:11.529Z" }, + { url = "https://files.pythonhosted.org/packages/1a/5b/a26407d4f79d61ca4bebaa9213feafdd8806dc69d3d290ce24996d3cfe43/cryptography-46.0.4-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:01df4f50f314fbe7009f54046e908d1754f19d0c6d3070df1e6268c5a4af09fa", size = 4277090, upload-time = "2026-01-28T00:23:13.123Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d8/4bb7aec442a9049827aa34cee1aa83803e528fa55da9a9d45d01d1bb933e/cryptography-46.0.4-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5aa3e463596b0087b3da0dbe2b2487e9fc261d25da85754e30e3b40637d61f81", size = 4947652, upload-time = "2026-01-28T00:23:14.554Z" }, + { url = "https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0a9ad24359fee86f131836a9ac3bffc9329e956624a2d379b613f8f8abaf5255", size = 4455157, upload-time = "2026-01-28T00:23:16.443Z" }, + { url = "https://files.pythonhosted.org/packages/0a/05/19d849cf4096448779d2dcc9bb27d097457dac36f7273ffa875a93b5884c/cryptography-46.0.4-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:dc1272e25ef673efe72f2096e92ae39dea1a1a450dd44918b15351f72c5a168e", size = 3981078, upload-time = "2026-01-28T00:23:17.838Z" }, + { url = "https://files.pythonhosted.org/packages/e6/89/f7bac81d66ba7cde867a743ea5b37537b32b5c633c473002b26a226f703f/cryptography-46.0.4-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:de0f5f4ec8711ebc555f54735d4c673fc34b65c44283895f1a08c2b49d2fd99c", size = 4276213, upload-time = "2026-01-28T00:23:19.257Z" }, + { url = "https://files.pythonhosted.org/packages/da/9f/7133e41f24edd827020ad21b068736e792bc68eecf66d93c924ad4719fb3/cryptography-46.0.4-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:eeeb2e33d8dbcccc34d64651f00a98cb41b2dc69cef866771a5717e6734dfa32", size = 4912190, upload-time = "2026-01-28T00:23:21.244Z" }, + { url = "https://files.pythonhosted.org/packages/a6/f7/6d43cbaddf6f65b24816e4af187d211f0bc536a29961f69faedc48501d8e/cryptography-46.0.4-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3d425eacbc9aceafd2cb429e42f4e5d5633c6f873f5e567077043ef1b9bbf616", size = 4454641, upload-time = "2026-01-28T00:23:22.866Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4f/ebd0473ad656a0ac912a16bd07db0f5d85184924e14fc88feecae2492834/cryptography-46.0.4-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91627ebf691d1ea3976a031b61fb7bac1ccd745afa03602275dda443e11c8de0", size = 4405159, upload-time = "2026-01-28T00:23:25.278Z" }, + { url = "https://files.pythonhosted.org/packages/d1/f7/7923886f32dc47e27adeff8246e976d77258fd2aa3efdd1754e4e323bf49/cryptography-46.0.4-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2d08bc22efd73e8854b0b7caff402d735b354862f1145d7be3b9c0f740fef6a0", size = 4666059, upload-time = "2026-01-28T00:23:26.766Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a7/0fca0fd3591dffc297278a61813d7f661a14243dd60f499a7a5b48acb52a/cryptography-46.0.4-cp311-abi3-win32.whl", hash = "sha256:82a62483daf20b8134f6e92898da70d04d0ef9a75829d732ea1018678185f4f5", size = 3026378, upload-time = "2026-01-28T00:23:28.317Z" }, + { url = "https://files.pythonhosted.org/packages/2d/12/652c84b6f9873f0909374864a57b003686c642ea48c84d6c7e2c515e6da5/cryptography-46.0.4-cp311-abi3-win_amd64.whl", hash = "sha256:6225d3ebe26a55dbc8ead5ad1265c0403552a63336499564675b29eb3184c09b", size = 3478614, upload-time = "2026-01-28T00:23:30.275Z" }, + { url = "https://files.pythonhosted.org/packages/b9/27/542b029f293a5cce59349d799d4d8484b3b1654a7b9a0585c266e974a488/cryptography-46.0.4-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:485e2b65d25ec0d901bca7bcae0f53b00133bf3173916d8e421f6fddde103908", size = 7116417, upload-time = "2026-01-28T00:23:31.958Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f5/559c25b77f40b6bf828eabaf988efb8b0e17b573545edb503368ca0a2a03/cryptography-46.0.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:078e5f06bd2fa5aea5a324f2a09f914b1484f1d0c2a4d6a8a28c74e72f65f2da", size = 4264508, upload-time = "2026-01-28T00:23:34.264Z" }, + { url = "https://files.pythonhosted.org/packages/49/a1/551fa162d33074b660dc35c9bc3616fefa21a0e8c1edd27b92559902e408/cryptography-46.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dce1e4f068f03008da7fa51cc7abc6ddc5e5de3e3d1550334eaf8393982a5829", size = 4409080, upload-time = "2026-01-28T00:23:35.793Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/4d8d129a755f5d6df1bbee69ea2f35ebfa954fa1847690d1db2e8bca46a5/cryptography-46.0.4-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:2067461c80271f422ee7bdbe79b9b4be54a5162e90345f86a23445a0cf3fd8a2", size = 4270039, upload-time = "2026-01-28T00:23:37.263Z" }, + { url = "https://files.pythonhosted.org/packages/4c/f5/ed3fcddd0a5e39321e595e144615399e47e7c153a1fb8c4862aec3151ff9/cryptography-46.0.4-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:c92010b58a51196a5f41c3795190203ac52edfd5dc3ff99149b4659eba9d2085", size = 4926748, upload-time = "2026-01-28T00:23:38.884Z" }, + { url = "https://files.pythonhosted.org/packages/43/ae/9f03d5f0c0c00e85ecb34f06d3b79599f20630e4db91b8a6e56e8f83d410/cryptography-46.0.4-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:829c2b12bbc5428ab02d6b7f7e9bbfd53e33efd6672d21341f2177470171ad8b", size = 4442307, upload-time = "2026-01-28T00:23:40.56Z" }, + { url = "https://files.pythonhosted.org/packages/8b/22/e0f9f2dae8040695103369cf2283ef9ac8abe4d51f68710bec2afd232609/cryptography-46.0.4-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:62217ba44bf81b30abaeda1488686a04a702a261e26f87db51ff61d9d3510abd", size = 3959253, upload-time = "2026-01-28T00:23:42.827Z" }, + { url = "https://files.pythonhosted.org/packages/01/5b/6a43fcccc51dae4d101ac7d378a8724d1ba3de628a24e11bf2f4f43cba4d/cryptography-46.0.4-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:9c2da296c8d3415b93e6053f5a728649a87a48ce084a9aaf51d6e46c87c7f2d2", size = 4269372, upload-time = "2026-01-28T00:23:44.655Z" }, + { url = "https://files.pythonhosted.org/packages/17/b7/0f6b8c1dd0779df2b526e78978ff00462355e31c0a6f6cff8a3e99889c90/cryptography-46.0.4-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9b34d8ba84454641a6bf4d6762d15847ecbd85c1316c0a7984e6e4e9f748ec2e", size = 4891908, upload-time = "2026-01-28T00:23:46.48Z" }, + { url = "https://files.pythonhosted.org/packages/83/17/259409b8349aa10535358807a472c6a695cf84f106022268d31cea2b6c97/cryptography-46.0.4-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:df4a817fa7138dd0c96c8c8c20f04b8aaa1fac3bbf610913dcad8ea82e1bfd3f", size = 4441254, upload-time = "2026-01-28T00:23:48.403Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fe/e4a1b0c989b00cee5ffa0764401767e2d1cf59f45530963b894129fd5dce/cryptography-46.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b1de0ebf7587f28f9190b9cb526e901bf448c9e6a99655d2b07fff60e8212a82", size = 4396520, upload-time = "2026-01-28T00:23:50.26Z" }, + { url = "https://files.pythonhosted.org/packages/b3/81/ba8fd9657d27076eb40d6a2f941b23429a3c3d2f56f5a921d6b936a27bc9/cryptography-46.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9b4d17bc7bd7cdd98e3af40b441feaea4c68225e2eb2341026c84511ad246c0c", size = 4651479, upload-time = "2026-01-28T00:23:51.674Z" }, + { url = "https://files.pythonhosted.org/packages/00/03/0de4ed43c71c31e4fe954edd50b9d28d658fef56555eba7641696370a8e2/cryptography-46.0.4-cp314-cp314t-win32.whl", hash = "sha256:c411f16275b0dea722d76544a61d6421e2cc829ad76eec79280dbdc9ddf50061", size = 3001986, upload-time = "2026-01-28T00:23:53.485Z" }, + { url = "https://files.pythonhosted.org/packages/5c/70/81830b59df7682917d7a10f833c4dab2a5574cd664e86d18139f2b421329/cryptography-46.0.4-cp314-cp314t-win_amd64.whl", hash = "sha256:728fedc529efc1439eb6107b677f7f7558adab4553ef8669f0d02d42d7b959a7", size = 3468288, upload-time = "2026-01-28T00:23:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/56/f7/f648fdbb61d0d45902d3f374217451385edc7e7768d1b03ff1d0e5ffc17b/cryptography-46.0.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a9556ba711f7c23f77b151d5798f3ac44a13455cc68db7697a1096e6d0563cab", size = 7169583, upload-time = "2026-01-28T00:23:56.558Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cc/8f3224cbb2a928de7298d6ed4790f5ebc48114e02bdc9559196bfb12435d/cryptography-46.0.4-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8bf75b0259e87fa70bddc0b8b4078b76e7fd512fd9afae6c1193bcf440a4dbef", size = 4275419, upload-time = "2026-01-28T00:23:58.364Z" }, + { url = "https://files.pythonhosted.org/packages/17/43/4a18faa7a872d00e4264855134ba82d23546c850a70ff209e04ee200e76f/cryptography-46.0.4-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3c268a3490df22270955966ba236d6bc4a8f9b6e4ffddb78aac535f1a5ea471d", size = 4419058, upload-time = "2026-01-28T00:23:59.867Z" }, + { url = "https://files.pythonhosted.org/packages/ee/64/6651969409821d791ba12346a124f55e1b76f66a819254ae840a965d4b9c/cryptography-46.0.4-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:812815182f6a0c1d49a37893a303b44eaac827d7f0d582cecfc81b6427f22973", size = 4278151, upload-time = "2026-01-28T00:24:01.731Z" }, + { url = "https://files.pythonhosted.org/packages/20/0b/a7fce65ee08c3c02f7a8310cc090a732344066b990ac63a9dfd0a655d321/cryptography-46.0.4-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:a90e43e3ef65e6dcf969dfe3bb40cbf5aef0d523dff95bfa24256be172a845f4", size = 4939441, upload-time = "2026-01-28T00:24:03.175Z" }, + { url = "https://files.pythonhosted.org/packages/db/a7/20c5701e2cd3e1dfd7a19d2290c522a5f435dd30957d431dcb531d0f1413/cryptography-46.0.4-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a05177ff6296644ef2876fce50518dffb5bcdf903c85250974fc8bc85d54c0af", size = 4451617, upload-time = "2026-01-28T00:24:05.403Z" }, + { url = "https://files.pythonhosted.org/packages/00/dc/3e16030ea9aa47b63af6524c354933b4fb0e352257c792c4deeb0edae367/cryptography-46.0.4-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:daa392191f626d50f1b136c9b4cf08af69ca8279d110ea24f5c2700054d2e263", size = 3977774, upload-time = "2026-01-28T00:24:06.851Z" }, + { url = "https://files.pythonhosted.org/packages/42/c8/ad93f14118252717b465880368721c963975ac4b941b7ef88f3c56bf2897/cryptography-46.0.4-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e07ea39c5b048e085f15923511d8121e4a9dc45cee4e3b970ca4f0d338f23095", size = 4277008, upload-time = "2026-01-28T00:24:08.926Z" }, + { url = "https://files.pythonhosted.org/packages/00/cf/89c99698151c00a4631fbfcfcf459d308213ac29e321b0ff44ceeeac82f1/cryptography-46.0.4-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d5a45ddc256f492ce42a4e35879c5e5528c09cd9ad12420828c972951d8e016b", size = 4903339, upload-time = "2026-01-28T00:24:12.009Z" }, + { url = "https://files.pythonhosted.org/packages/03/c3/c90a2cb358de4ac9309b26acf49b2a100957e1ff5cc1e98e6c4996576710/cryptography-46.0.4-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:6bb5157bf6a350e5b28aee23beb2d84ae6f5be390b2f8ee7ea179cda077e1019", size = 4451216, upload-time = "2026-01-28T00:24:13.975Z" }, + { url = "https://files.pythonhosted.org/packages/96/2c/8d7f4171388a10208671e181ca43cdc0e596d8259ebacbbcfbd16de593da/cryptography-46.0.4-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dd5aba870a2c40f87a3af043e0dee7d9eb02d4aff88a797b48f2b43eff8c3ab4", size = 4404299, upload-time = "2026-01-28T00:24:16.169Z" }, + { url = "https://files.pythonhosted.org/packages/e9/23/cbb2036e450980f65c6e0a173b73a56ff3bccd8998965dea5cc9ddd424a5/cryptography-46.0.4-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:93d8291da8d71024379ab2cb0b5c57915300155ad42e07f76bea6ad838d7e59b", size = 4664837, upload-time = "2026-01-28T00:24:17.629Z" }, + { url = "https://files.pythonhosted.org/packages/0a/21/f7433d18fe6d5845329cbdc597e30caf983229c7a245bcf54afecc555938/cryptography-46.0.4-cp38-abi3-win32.whl", hash = "sha256:0563655cb3c6d05fb2afe693340bc050c30f9f34e15763361cf08e94749401fc", size = 3009779, upload-time = "2026-01-28T00:24:20.198Z" }, + { url = "https://files.pythonhosted.org/packages/3a/6a/bd2e7caa2facffedf172a45c1a02e551e6d7d4828658c9a245516a598d94/cryptography-46.0.4-cp38-abi3-win_amd64.whl", hash = "sha256:fa0900b9ef9c49728887d1576fd8d9e7e3ea872fa9b25ef9b64888adc434e976", size = 3466633, upload-time = "2026-01-28T00:24:21.851Z" }, + { url = "https://files.pythonhosted.org/packages/59/e0/f9c6c53e1f2a1c2507f00f2faba00f01d2f334b35b0fbfe5286715da2184/cryptography-46.0.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:766330cce7416c92b5e90c3bb71b1b79521760cdcfc3a6a1a182d4c9fab23d2b", size = 3476316, upload-time = "2026-01-28T00:24:24.144Z" }, + { url = "https://files.pythonhosted.org/packages/27/7a/f8d2d13227a9a1a9fe9c7442b057efecffa41f1e3c51d8622f26b9edbe8f/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c236a44acfb610e70f6b3e1c3ca20ff24459659231ef2f8c48e879e2d32b73da", size = 4216693, upload-time = "2026-01-28T00:24:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/c5/de/3787054e8f7972658370198753835d9d680f6cd4a39df9f877b57f0dd69c/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8a15fb869670efa8f83cbffbc8753c1abf236883225aed74cd179b720ac9ec80", size = 4382765, upload-time = "2026-01-28T00:24:27.577Z" }, + { url = "https://files.pythonhosted.org/packages/8a/5f/60e0afb019973ba6a0b322e86b3d61edf487a4f5597618a430a2a15f2d22/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:fdc3daab53b212472f1524d070735b2f0c214239df131903bae1d598016fa822", size = 4216066, upload-time = "2026-01-28T00:24:29.056Z" }, + { url = "https://files.pythonhosted.org/packages/81/8e/bf4a0de294f147fee66f879d9bae6f8e8d61515558e3d12785dd90eca0be/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:44cc0675b27cadb71bdbb96099cca1fa051cd11d2ade09e5cd3a2edb929ed947", size = 4382025, upload-time = "2026-01-28T00:24:30.681Z" }, + { url = "https://files.pythonhosted.org/packages/79/f4/9ceb90cfd6a3847069b0b0b353fd3075dc69b49defc70182d8af0c4ca390/cryptography-46.0.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be8c01a7d5a55f9a47d1888162b76c8f49d62b234d88f0ff91a9fbebe32ffbc3", size = 3406043, upload-time = "2026-01-28T00:24:32.236Z" }, +] + +[[package]] +name = "emoji" +version = "2.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/78/0d2db9382c92a163d7095fc08efff7800880f830a152cfced40161e7638d/emoji-2.15.0.tar.gz", hash = "sha256:eae4ab7d86456a70a00a985125a03263a5eac54cd55e51d7e184b1ed3b6757e4", size = 615483, upload-time = "2025-09-21T12:13:02.755Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/5e/4b5aaaabddfacfe36ba7768817bd1f71a7a810a43705e531f3ae4c690767/emoji-2.15.0-py3-none-any.whl", hash = "sha256:205296793d66a89d88af4688fa57fd6496732eb48917a87175a023c8138995eb", size = 608433, upload-time = "2025-09-21T12:13:01.197Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[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 = "h2" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "hpack", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "hyperframe", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1/h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb", size = 2145593, upload-time = "2021-10-05T18:27:47.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", size = 57488, upload-time = "2021-10-05T18:27:39.977Z" }, +] + +[[package]] +name = "h2" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "hpack", version = "4.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "hyperframe", version = "6.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026, upload-time = "2025-08-23T18:12:19.778Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, +] + +[[package]] +name = "hpack" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954/hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095", size = 49117, upload-time = "2020-08-30T10:35:57.868Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611, upload-time = "2020-08-30T10:35:56.357Z" }, +] + +[[package]] +name = "hpack" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" }, +] + +[[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 = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", version = "4.5.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "anyio", version = "4.12.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { 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.optional-dependencies] +http2 = [ + { name = "h2", version = "4.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "h2", version = "4.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] + +[[package]] +name = "hyperframe" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb/hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914", size = 25008, upload-time = "2021-04-17T12:11:22.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/de/85a784bcc4a3779d1753a7ec2dee5de90e18c7bcf402e71b51fcf150b129/hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", size = 12389, upload-time = "2021-04-17T12:11:21.045Z" }, +] + +[[package]] +name = "hyperframe" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, +] + +[[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 = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", +] +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "jmespath" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/56/3f325b1eef9791759784aa5046a8f6a1aff8f7c898a2e34506771d3b99d8/jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", size = 21607, upload-time = "2020-05-12T22:03:47.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/cb/5f001272b6faeb23c1c9e0acc04d48eaaf5c862c17709d20e3469c6e0139/jmespath-0.10.0-py2.py3-none-any.whl", hash = "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f", size = 24489, upload-time = "2020-05-12T22:03:45.643Z" }, +] + +[[package]] +name = "minio" +version = "7.2.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "argon2-cffi", marker = "python_full_version <= '3.8'" }, + { name = "certifi", marker = "python_full_version <= '3.8'" }, + { name = "pycryptodome", marker = "python_full_version <= '3.8'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/96/979d7231fbe2768813cd41675ced868ecbc47c4fb4c926d1c29d557a79e6/minio-7.2.7.tar.gz", hash = "sha256:473d5d53d79f340f3cd632054d0c82d2f93177ce1af2eac34a235bea55708d98", size = 135065, upload-time = "2024-04-30T21:09:36.934Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/9a/66fc4e8c861fa4e3029da41569531a56c471abb3c3e08d236115807fb476/minio-7.2.7-py3-none-any.whl", hash = "sha256:59d1f255d852fe7104018db75b3bebbd987e538690e680f7c5de835e422de837", size = 93462, upload-time = "2024-04-30T21:09:34.74Z" }, +] + +[[package]] +name = "minio" +version = "7.2.10" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", +] +dependencies = [ + { name = "argon2-cffi", marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, + { name = "certifi", marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, + { name = "pycryptodome", marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/d8/04b4c8ceaa7bae49a674ccdba53530599e73fb3c6a8f8cf8e26ee0eb390d/minio-7.2.10.tar.gz", hash = "sha256:418c31ac79346a580df04a0e14db1becbc548a6e7cca61f9bc4ef3bcd336c449", size = 135388, upload-time = "2024-10-24T20:23:56.795Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/6f/1b1f5025bf43c2a4ca8112332db586c8077048ec8bcea2deb269eac84577/minio-7.2.10-py3-none-any.whl", hash = "sha256:5961c58192b1d70d3a2a362064b8e027b8232688998a6d1251dadbb02ab57a7d", size = 93943, upload-time = "2024-10-24T20:23:55.49Z" }, +] + +[[package]] +name = "minio" +version = "7.2.20" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "argon2-cffi", marker = "python_full_version >= '3.9'" }, + { name = "certifi", marker = "python_full_version >= '3.9'" }, + { name = "pycryptodome", marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/df/6dfc6540f96a74125a11653cce717603fd5b7d0001a8e847b3e54e72d238/minio-7.2.20.tar.gz", hash = "sha256:95898b7a023fbbfde375985aa77e2cd6a0762268db79cf886f002a9ea8e68598", size = 136113, upload-time = "2025-11-27T00:37:15.569Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/9a/b697530a882588a84db616580f2ba5d1d515c815e11c30d219145afeec87/minio-7.2.20-py3-none-any.whl", hash = "sha256:eb33dd2fb80e04c3726a76b13241c6be3c4c46f8d81e1d58e757786f6501897e", size = 93751, upload-time = "2025-11-27T00:37:13.993Z" }, +] + +[[package]] +name = "oss2" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, + { name = "aliyun-python-sdk-kms" }, + { name = "crcmod" }, + { name = "pycryptodome" }, + { name = "requests", version = "2.32.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "requests", version = "2.32.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/b5/f2cb1950dda46ac2284d6c950489fdacd0e743c2d79a347924d3cc44b86f/oss2-2.19.1.tar.gz", hash = "sha256:a8ab9ee7eb99e88a7e1382edc6ea641d219d585a7e074e3776e9dec9473e59c1", size = 298845, upload-time = "2024-10-25T11:37:46.638Z" } + +[[package]] +name = "packaging" +version = "26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, +] + +[[package]] +name = "pdfdeal" +version = "1.0.4" +source = { editable = "." } +dependencies = [ + { name = "aiofiles", version = "24.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "aiofiles", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "httpx", extra = ["http2"] }, + { name = "pypdf", version = "5.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pypdf", version = "6.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] + +[package.optional-dependencies] +dev = [ + { name = "beautifulsoup4" }, + { name = "boto3", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "emoji" }, + { name = "minio", version = "7.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, + { name = "minio", version = "7.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, + { name = "minio", version = "7.2.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "oss2" }, + { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +rag = [ + { name = "beautifulsoup4" }, + { name = "boto3", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "emoji" }, + { name = "minio", version = "7.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, + { name = "minio", version = "7.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, + { name = "minio", version = "7.2.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "oss2" }, + { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +tools = [ + { name = "beautifulsoup4" }, + { name = "emoji" }, + { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiofiles", specifier = ">=24.1.0" }, + { name = "beautifulsoup4", marker = "extra == 'dev'" }, + { name = "beautifulsoup4", marker = "extra == 'rag'" }, + { name = "beautifulsoup4", marker = "extra == 'tools'" }, + { name = "boto3", marker = "extra == 'dev'" }, + { name = "boto3", marker = "extra == 'rag'" }, + { name = "emoji", marker = "extra == 'dev'" }, + { name = "emoji", marker = "extra == 'rag'" }, + { name = "emoji", marker = "extra == 'tools'" }, + { name = "httpx", extras = ["http2"], specifier = ">=0.23.1,<1" }, + { name = "minio", marker = "extra == 'dev'" }, + { name = "minio", marker = "extra == 'rag'" }, + { name = "oss2", marker = "extra == 'dev'" }, + { name = "oss2", marker = "extra == 'rag'" }, + { name = "pillow", marker = "extra == 'dev'" }, + { name = "pillow", marker = "extra == 'rag'" }, + { name = "pillow", marker = "extra == 'tools'" }, + { name = "pypdf" }, + { name = "pytest", specifier = ">=8.3.5" }, + { name = "pytest", marker = "extra == 'dev'" }, + { name = "reportlab", marker = "extra == 'dev'" }, + { name = "reportlab", marker = "extra == 'rag'" }, + { name = "reportlab", marker = "extra == 'tools'" }, +] +provides-extras = ["tools", "rag", "dev"] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271, upload-time = "2024-07-01T09:45:22.07Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658, upload-time = "2024-07-01T09:45:25.292Z" }, + { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075, upload-time = "2024-07-01T09:45:27.94Z" }, + { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808, upload-time = "2024-07-01T09:45:30.305Z" }, + { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290, upload-time = "2024-07-01T09:45:32.868Z" }, + { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163, upload-time = "2024-07-01T09:45:35.279Z" }, + { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100, upload-time = "2024-07-01T09:45:37.74Z" }, + { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880, upload-time = "2024-07-01T09:45:39.89Z" }, + { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218, upload-time = "2024-07-01T09:45:42.771Z" }, + { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487, upload-time = "2024-07-01T09:45:45.176Z" }, + { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219, upload-time = "2024-07-01T09:45:47.274Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685, upload-time = "2024-07-01T09:46:45.194Z" }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883, upload-time = "2024-07-01T09:46:47.331Z" }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837, upload-time = "2024-07-01T09:46:49.647Z" }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562, upload-time = "2024-07-01T09:46:51.811Z" }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761, upload-time = "2024-07-01T09:46:53.961Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767, upload-time = "2024-07-01T09:46:56.664Z" }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989, upload-time = "2024-07-01T09:46:58.977Z" }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255, upload-time = "2024-07-01T09:47:01.189Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, + { url = "https://files.pythonhosted.org/packages/56/70/f40009702a477ce87d8d9faaa4de51d6562b3445d7a314accd06e4ffb01d/pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", size = 3509213, upload-time = "2024-07-01T09:47:11.662Z" }, + { url = "https://files.pythonhosted.org/packages/10/43/105823d233c5e5d31cea13428f4474ded9d961652307800979a59d6a4276/pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", size = 3375883, upload-time = "2024-07-01T09:47:14.453Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ad/7850c10bac468a20c918f6a5dbba9ecd106ea1cdc5db3c35e33a60570408/pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", size = 4330810, upload-time = "2024-07-01T09:47:16.695Z" }, + { url = "https://files.pythonhosted.org/packages/84/4c/69bbed9e436ac22f9ed193a2b64f64d68fcfbc9f4106249dc7ed4889907b/pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", size = 4444341, upload-time = "2024-07-01T09:47:19.334Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4f/c183c63828a3f37bf09644ce94cbf72d4929b033b109160a5379c2885932/pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", size = 4356005, upload-time = "2024-07-01T09:47:21.805Z" }, + { url = "https://files.pythonhosted.org/packages/fb/ad/435fe29865f98a8fbdc64add8875a6e4f8c97749a93577a8919ec6f32c64/pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", size = 4525201, upload-time = "2024-07-01T09:47:24.457Z" }, + { url = "https://files.pythonhosted.org/packages/80/74/be8bf8acdfd70e91f905a12ae13cfb2e17c0f1da745c40141e26d0971ff5/pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", size = 4460635, upload-time = "2024-07-01T09:47:26.841Z" }, + { url = "https://files.pythonhosted.org/packages/e4/90/763616e66dc9ad59c9b7fb58f863755e7934ef122e52349f62c7742b82d3/pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", size = 4590283, upload-time = "2024-07-01T09:47:29.247Z" }, + { url = "https://files.pythonhosted.org/packages/69/66/03002cb5b2c27bb519cba63b9f9aa3709c6f7a5d3b285406c01f03fb77e5/pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", size = 2235185, upload-time = "2024-07-01T09:47:32.205Z" }, + { url = "https://files.pythonhosted.org/packages/f2/75/3cb820b2812405fc7feb3d0deb701ef0c3de93dc02597115e00704591bc9/pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", size = 2554594, upload-time = "2024-07-01T09:47:34.285Z" }, + { url = "https://files.pythonhosted.org/packages/31/85/955fa5400fa8039921f630372cfe5056eed6e1b8e0430ee4507d7de48832/pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", size = 3509283, upload-time = "2024-07-01T09:47:36.394Z" }, + { url = "https://files.pythonhosted.org/packages/23/9c/343827267eb28d41cd82b4180d33b10d868af9077abcec0af9793aa77d2d/pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", size = 3375691, upload-time = "2024-07-01T09:47:38.853Z" }, + { url = "https://files.pythonhosted.org/packages/60/a3/7ebbeabcd341eab722896d1a5b59a3df98c4b4d26cf4b0385f8aa94296f7/pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", size = 4328295, upload-time = "2024-07-01T09:47:41.765Z" }, + { url = "https://files.pythonhosted.org/packages/32/3f/c02268d0c6fb6b3958bdda673c17b315c821d97df29ae6969f20fb49388a/pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", size = 4440810, upload-time = "2024-07-01T09:47:44.27Z" }, + { url = "https://files.pythonhosted.org/packages/67/5d/1c93c8cc35f2fdd3d6cc7e4ad72d203902859a2867de6ad957d9b708eb8d/pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", size = 4352283, upload-time = "2024-07-01T09:47:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a8/8655557c9c7202b8abbd001f61ff36711cefaf750debcaa1c24d154ef602/pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", size = 4521800, upload-time = "2024-07-01T09:47:48.813Z" }, + { url = "https://files.pythonhosted.org/packages/58/78/6f95797af64d137124f68af1bdaa13b5332da282b86031f6fa70cf368261/pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", size = 4459177, upload-time = "2024-07-01T09:47:52.104Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6d/2b3ce34f1c4266d79a78c9a51d1289a33c3c02833fe294ef0dcbb9cba4ed/pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", size = 4589079, upload-time = "2024-07-01T09:47:54.999Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/456258c74da1ff5bf8ef1eab06a95ca994d8b9ed44c01d45c3f8cbd1db7e/pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", size = 2235247, upload-time = "2024-07-01T09:47:57.666Z" }, + { url = "https://files.pythonhosted.org/packages/37/f8/bef952bdb32aa53741f58bf21798642209e994edc3f6598f337f23d5400a/pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", size = 2554479, upload-time = "2024-07-01T09:47:59.881Z" }, + { url = "https://files.pythonhosted.org/packages/bb/8e/805201619cad6651eef5fc1fdef913804baf00053461522fabbc5588ea12/pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", size = 2243226, upload-time = "2024-07-01T09:48:02.508Z" }, + { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889, upload-time = "2024-07-01T09:48:04.815Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160, upload-time = "2024-07-01T09:48:07.206Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020, upload-time = "2024-07-01T09:48:09.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539, upload-time = "2024-07-01T09:48:12.529Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125, upload-time = "2024-07-01T09:48:14.891Z" }, + { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373, upload-time = "2024-07-01T09:48:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661, upload-time = "2024-07-01T09:48:20.293Z" }, + { url = "https://files.pythonhosted.org/packages/e1/1f/5a9fcd6ced51633c22481417e11b1b47d723f64fb536dfd67c015eb7f0ab/pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", size = 3493850, upload-time = "2024-07-01T09:48:23.03Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e6/3ea4755ed5320cb62aa6be2f6de47b058c6550f752dd050e86f694c59798/pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", size = 3346118, upload-time = "2024-07-01T09:48:25.256Z" }, + { url = "https://files.pythonhosted.org/packages/0a/22/492f9f61e4648422b6ca39268ec8139277a5b34648d28f400faac14e0f48/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", size = 3434958, upload-time = "2024-07-01T09:48:28.078Z" }, + { url = "https://files.pythonhosted.org/packages/f9/19/559a48ad4045704bb0547965b9a9345f5cd461347d977a56d178db28819e/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", size = 3490340, upload-time = "2024-07-01T09:48:30.734Z" }, + { url = "https://files.pythonhosted.org/packages/d9/de/cebaca6fb79905b3a1aa0281d238769df3fb2ede34fd7c0caa286575915a/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", size = 3476048, upload-time = "2024-07-01T09:48:33.292Z" }, + { url = "https://files.pythonhosted.org/packages/71/f0/86d5b2f04693b0116a01d75302b0a307800a90d6c351a8aa4f8ae76cd499/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", size = 3579366, upload-time = "2024-07-01T09:48:36.527Z" }, + { url = "https://files.pythonhosted.org/packages/37/ae/2dbfc38cc4fd14aceea14bc440d5151b21f64c4c3ba3f6f4191610b7ee5d/pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", size = 2554652, upload-time = "2024-07-01T09:48:38.789Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, + { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, + { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, + { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, + { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, + { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, + { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, + { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, + { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, + { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, + { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8e/9c089f01677d1264ab8648352dcb7773f37da6ad002542760c80107da816/pillow-11.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:48d254f8a4c776de343051023eb61ffe818299eeac478da55227d96e241de53f", size = 5316478, upload-time = "2025-07-01T09:15:52.209Z" }, + { url = "https://files.pythonhosted.org/packages/b5/a9/5749930caf674695867eb56a581e78eb5f524b7583ff10b01b6e5048acb3/pillow-11.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7aee118e30a4cf54fdd873bd3a29de51e29105ab11f9aad8c32123f58c8f8081", size = 4686522, upload-time = "2025-07-01T09:15:54.162Z" }, + { url = "https://files.pythonhosted.org/packages/43/46/0b85b763eb292b691030795f9f6bb6fcaf8948c39413c81696a01c3577f7/pillow-11.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:23cff760a9049c502721bdb743a7cb3e03365fafcdfc2ef9784610714166e5a4", size = 5853376, upload-time = "2025-07-03T13:11:01.066Z" }, + { url = "https://files.pythonhosted.org/packages/5e/c6/1a230ec0067243cbd60bc2dad5dc3ab46a8a41e21c15f5c9b52b26873069/pillow-11.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6359a3bc43f57d5b375d1ad54a0074318a0844d11b76abccf478c37c986d3cfc", size = 7626020, upload-time = "2025-07-03T13:11:06.479Z" }, + { url = "https://files.pythonhosted.org/packages/63/dd/f296c27ffba447bfad76c6a0c44c1ea97a90cb9472b9304c94a732e8dbfb/pillow-11.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:092c80c76635f5ecb10f3f83d76716165c96f5229addbd1ec2bdbbda7d496e06", size = 5956732, upload-time = "2025-07-01T09:15:56.111Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a0/98a3630f0b57f77bae67716562513d3032ae70414fcaf02750279c389a9e/pillow-11.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cadc9e0ea0a2431124cde7e1697106471fc4c1da01530e679b2391c37d3fbb3a", size = 6624404, upload-time = "2025-07-01T09:15:58.245Z" }, + { url = "https://files.pythonhosted.org/packages/de/e6/83dfba5646a290edd9a21964da07674409e410579c341fc5b8f7abd81620/pillow-11.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6a418691000f2a418c9135a7cf0d797c1bb7d9a485e61fe8e7722845b95ef978", size = 6067760, upload-time = "2025-07-01T09:16:00.003Z" }, + { url = "https://files.pythonhosted.org/packages/bc/41/15ab268fe6ee9a2bc7391e2bbb20a98d3974304ab1a406a992dcb297a370/pillow-11.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:97afb3a00b65cc0804d1c7abddbf090a81eaac02768af58cbdcaaa0a931e0b6d", size = 6700534, upload-time = "2025-07-01T09:16:02.29Z" }, + { url = "https://files.pythonhosted.org/packages/64/79/6d4f638b288300bed727ff29f2a3cb63db054b33518a95f27724915e3fbc/pillow-11.3.0-cp39-cp39-win32.whl", hash = "sha256:ea944117a7974ae78059fcc1800e5d3295172bb97035c0c1d9345fca1419da71", size = 6277091, upload-time = "2025-07-01T09:16:04.4Z" }, + { url = "https://files.pythonhosted.org/packages/46/05/4106422f45a05716fd34ed21763f8ec182e8ea00af6e9cb05b93a247361a/pillow-11.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:e5c5858ad8ec655450a7c7df532e9842cf8df7cc349df7225c60d5d348c8aada", size = 6986091, upload-time = "2025-07-01T09:16:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/63/c6/287fd55c2c12761d0591549d48885187579b7c257bef0c6660755b0b59ae/pillow-11.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:6abdbfd3aea42be05702a8dd98832329c167ee84400a1d1f61ab11437f1717eb", size = 2422632, upload-time = "2025-07-01T09:16:08.142Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, + { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, + { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, + { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, + { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, +] + +[[package]] +name = "pillow" +version = "12.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/41/f73d92b6b883a579e79600d391f2e21cb0df767b2714ecbd2952315dfeef/pillow-12.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:fb125d860738a09d363a88daa0f59c4533529a90e564785e20fe875b200b6dbd", size = 5304089, upload-time = "2026-01-02T09:10:24.953Z" }, + { url = "https://files.pythonhosted.org/packages/94/55/7aca2891560188656e4a91ed9adba305e914a4496800da6b5c0a15f09edf/pillow-12.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cad302dc10fac357d3467a74a9561c90609768a6f73a1923b0fd851b6486f8b0", size = 4657815, upload-time = "2026-01-02T09:10:27.063Z" }, + { url = "https://files.pythonhosted.org/packages/e9/d2/b28221abaa7b4c40b7dba948f0f6a708bd7342c4d47ce342f0ea39643974/pillow-12.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a40905599d8079e09f25027423aed94f2823adaf2868940de991e53a449e14a8", size = 6222593, upload-time = "2026-01-02T09:10:29.115Z" }, + { url = "https://files.pythonhosted.org/packages/71/b8/7a61fb234df6a9b0b479f69e66901209d89ff72a435b49933f9122f94cac/pillow-12.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a7fe4225365c5e3a8e598982269c6d6698d3e783b3b1ae979e7819f9cd55c1", size = 8027579, upload-time = "2026-01-02T09:10:31.182Z" }, + { url = "https://files.pythonhosted.org/packages/ea/51/55c751a57cc524a15a0e3db20e5cde517582359508d62305a627e77fd295/pillow-12.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f10c98f49227ed8383d28174ee95155a675c4ed7f85e2e573b04414f7e371bda", size = 6335760, upload-time = "2026-01-02T09:10:33.02Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7c/60e3e6f5e5891a1a06b4c910f742ac862377a6fe842f7184df4a274ce7bf/pillow-12.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8637e29d13f478bc4f153d8daa9ffb16455f0a6cb287da1b432fdad2bfbd66c7", size = 7027127, upload-time = "2026-01-02T09:10:35.009Z" }, + { url = "https://files.pythonhosted.org/packages/06/37/49d47266ba50b00c27ba63a7c898f1bb41a29627ced8c09e25f19ebec0ff/pillow-12.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:21e686a21078b0f9cb8c8a961d99e6a4ddb88e0fc5ea6e130172ddddc2e5221a", size = 6449896, upload-time = "2026-01-02T09:10:36.793Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/67fd87d2913902462cd9b79c6211c25bfe95fcf5783d06e1367d6d9a741f/pillow-12.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2415373395a831f53933c23ce051021e79c8cd7979822d8cc478547a3f4da8ef", size = 7151345, upload-time = "2026-01-02T09:10:39.064Z" }, + { url = "https://files.pythonhosted.org/packages/bd/15/f8c7abf82af68b29f50d77c227e7a1f87ce02fdc66ded9bf603bc3b41180/pillow-12.1.0-cp310-cp310-win32.whl", hash = "sha256:e75d3dba8fc1ddfec0cd752108f93b83b4f8d6ab40e524a95d35f016b9683b09", size = 6325568, upload-time = "2026-01-02T09:10:41.035Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/7d1c0e160b6b5ac2605ef7d8be537e28753c0db5363d035948073f5513d7/pillow-12.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:64efdf00c09e31efd754448a383ea241f55a994fd079866b92d2bbff598aad91", size = 7032367, upload-time = "2026-01-02T09:10:43.09Z" }, + { url = "https://files.pythonhosted.org/packages/f4/03/41c038f0d7a06099254c60f618d0ec7be11e79620fc23b8e85e5b31d9a44/pillow-12.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f188028b5af6b8fb2e9a76ac0f841a575bd1bd396e46ef0840d9b88a48fdbcea", size = 2452345, upload-time = "2026-01-02T09:10:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/43/c4/bf8328039de6cc22182c3ef007a2abfbbdab153661c0a9aa78af8d706391/pillow-12.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3", size = 5304057, upload-time = "2026-01-02T09:10:46.627Z" }, + { url = "https://files.pythonhosted.org/packages/43/06/7264c0597e676104cc22ca73ee48f752767cd4b1fe084662620b17e10120/pillow-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0", size = 4657811, upload-time = "2026-01-02T09:10:49.548Z" }, + { url = "https://files.pythonhosted.org/packages/72/64/f9189e44474610daf83da31145fa56710b627b5c4c0b9c235e34058f6b31/pillow-12.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451", size = 6232243, upload-time = "2026-01-02T09:10:51.62Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/0df458009be6a4caca4ca2c52975e6275c387d4e5c95544e34138b41dc86/pillow-12.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e", size = 8037872, upload-time = "2026-01-02T09:10:53.446Z" }, + { url = "https://files.pythonhosted.org/packages/e4/86/95845d4eda4f4f9557e25381d70876aa213560243ac1a6d619c46caaedd9/pillow-12.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84", size = 6345398, upload-time = "2026-01-02T09:10:55.426Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1f/8e66ab9be3aaf1435bc03edd1ebdf58ffcd17f7349c1d970cafe87af27d9/pillow-12.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0", size = 7034667, upload-time = "2026-01-02T09:10:57.11Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f6/683b83cb9b1db1fb52b87951b1c0b99bdcfceaa75febf11406c19f82cb5e/pillow-12.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b", size = 6458743, upload-time = "2026-01-02T09:10:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/de833d63622538c1d58ce5395e7c6cb7e7dce80decdd8bde4a484e095d9f/pillow-12.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18", size = 7159342, upload-time = "2026-01-02T09:11:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/8c/40/50d86571c9e5868c42b81fe7da0c76ca26373f3b95a8dd675425f4a92ec1/pillow-12.1.0-cp311-cp311-win32.whl", hash = "sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64", size = 6328655, upload-time = "2026-01-02T09:11:04.556Z" }, + { url = "https://files.pythonhosted.org/packages/6c/af/b1d7e301c4cd26cd45d4af884d9ee9b6fab893b0ad2450d4746d74a6968c/pillow-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75", size = 7031469, upload-time = "2026-01-02T09:11:06.538Z" }, + { url = "https://files.pythonhosted.org/packages/48/36/d5716586d887fb2a810a4a61518a327a1e21c8b7134c89283af272efe84b/pillow-12.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304", size = 2452515, upload-time = "2026-01-02T09:11:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, + { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, + { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, + { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, + { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, + { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, + { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, + { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, + { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, + { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, + { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, + { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, + { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, + { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, + { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, + { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, + { url = "https://files.pythonhosted.org/packages/8b/bc/224b1d98cffd7164b14707c91aac83c07b047fbd8f58eba4066a3e53746a/pillow-12.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377", size = 5228605, upload-time = "2026-01-02T09:13:14.084Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ca/49ca7769c4550107de049ed85208240ba0f330b3f2e316f24534795702ce/pillow-12.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72", size = 4622245, upload-time = "2026-01-02T09:13:15.964Z" }, + { url = "https://files.pythonhosted.org/packages/73/48/fac807ce82e5955bcc2718642b94b1bd22a82a6d452aea31cbb678cddf12/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c", size = 5247593, upload-time = "2026-01-02T09:13:17.913Z" }, + { url = "https://files.pythonhosted.org/packages/d2/95/3e0742fe358c4664aed4fd05d5f5373dcdad0b27af52aa0972568541e3f4/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd", size = 6989008, upload-time = "2026-01-02T09:13:20.083Z" }, + { url = "https://files.pythonhosted.org/packages/5a/74/fe2ac378e4e202e56d50540d92e1ef4ff34ed687f3c60f6a121bcf99437e/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc", size = 5313824, upload-time = "2026-01-02T09:13:22.405Z" }, + { url = "https://files.pythonhosted.org/packages/f3/77/2a60dee1adee4e2655ac328dd05c02a955c1cd683b9f1b82ec3feb44727c/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a", size = 5963278, upload-time = "2026-01-02T09:13:24.706Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/64e9b1c7f04ae0027f788a248e6297d7fcc29571371fe7d45495a78172c0/pillow-12.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19", size = 7029809, upload-time = "2026-01-02T09:13:26.541Z" }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +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 = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", +] +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[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" }, + { url = "https://files.pythonhosted.org/packages/d9/12/e33935a0709c07de084d7d58d330ec3f4daf7910a18e77937affdb728452/pycryptodome-3.23.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddb95b49df036ddd264a0ad246d1be5b672000f12d6961ea2c267083a5e19379", size = 1623886, upload-time = "2025-05-17T17:21:20.614Z" }, + { url = "https://files.pythonhosted.org/packages/22/0b/aa8f9419f25870889bebf0b26b223c6986652bdf071f000623df11212c90/pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e95564beb8782abfd9e431c974e14563a794a4944c29d6d3b7b5ea042110b4", size = 1672151, upload-time = "2025-05-17T17:21:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/d4/5e/63f5cbde2342b7f70a39e591dbe75d9809d6338ce0b07c10406f1a140cdc/pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14e15c081e912c4b0d75632acd8382dfce45b258667aa3c67caf7a4d4c13f630", size = 1664461, upload-time = "2025-05-17T17:21:25.225Z" }, + { url = "https://files.pythonhosted.org/packages/d6/92/608fbdad566ebe499297a86aae5f2a5263818ceeecd16733006f1600403c/pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7fc76bf273353dc7e5207d172b83f569540fc9a28d63171061c42e361d22353", size = 1702440, upload-time = "2025-05-17T17:21:27.991Z" }, + { url = "https://files.pythonhosted.org/packages/d1/92/2eadd1341abd2989cce2e2740b4423608ee2014acb8110438244ee97d7ff/pycryptodome-3.23.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:45c69ad715ca1a94f778215a11e66b7ff989d792a4d63b68dc586a1da1392ff5", size = 1803005, upload-time = "2025-05-17T17:21:31.37Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c4/6925ad41576d3e84f03aaf9a0411667af861f9fa2c87553c7dd5bde01518/pycryptodome-3.23.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:865d83c906b0fc6a59b510deceee656b6bc1c4fa0d82176e2b77e97a420a996a", size = 1623768, upload-time = "2025-05-17T17:21:33.418Z" }, + { url = "https://files.pythonhosted.org/packages/a8/14/d6c6a3098ddf2624068f041c5639be5092ad4ae1a411842369fd56765994/pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d4d56153efc4d81defe8b65fd0821ef8b2d5ddf8ed19df31ba2f00872b8002", size = 1672070, upload-time = "2025-05-17T17:21:35.565Z" }, + { url = "https://files.pythonhosted.org/packages/20/89/5d29c8f178fea7c92fd20d22f9ddd532a5e3ac71c574d555d2362aaa832a/pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3f2d0aaf8080bda0587d58fc9fe4766e012441e2eed4269a77de6aea981c8be", size = 1664359, upload-time = "2025-05-17T17:21:37.551Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/a287d41b4421ad50eafb02313137d0276d6aeffab90a91e2b08f64140852/pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64093fc334c1eccfd3933c134c4457c34eaca235eeae49d69449dc4728079339", size = 1702359, upload-time = "2025-05-17T17:21:39.827Z" }, + { url = "https://files.pythonhosted.org/packages/2b/62/2392b7879f4d2c1bfa20815720b89d464687877851716936b9609959c201/pycryptodome-3.23.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ce64e84a962b63a47a592690bdc16a7eaf709d2c2697ababf24a0def566899a6", size = 1802461, upload-time = "2025-05-17T17:21:41.722Z" }, +] + +[[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 = "pypdf" +version = "5.9.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/3a/584b97a228950ed85aec97c811c68473d9b8d149e6a8c155668287cf1a28/pypdf-5.9.0.tar.gz", hash = "sha256:30f67a614d558e495e1fbb157ba58c1de91ffc1718f5e0dfeb82a029233890a1", size = 5035118, upload-time = "2025-07-27T14:04:52.364Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/d9/6cff57c80a6963e7dd183bf09e9f21604a77716644b1e580e97b259f7612/pypdf-5.9.0-py3-none-any.whl", hash = "sha256:be10a4c54202f46d9daceaa8788be07aa8cd5ea8c25c529c50dd509206382c35", size = 313193, upload-time = "2025-07-27T14:04:50.53Z" }, +] + +[[package]] +name = "pypdf" +version = "6.7.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/45/8340de1c752bfda2da912ea0fa8c9a432f7de3f6315e82f1c0847811dff6/pypdf-6.7.0.tar.gz", hash = "sha256:eb95e244d9f434e6cfd157272283339ef586e593be64ee699c620f756d5c3f7e", size = 5299947, upload-time = "2026-02-08T14:47:11.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/f1/c92e75a0eb18bb10845e792054ded113010de958b6d4998e201c029417bb/pypdf-6.7.0-py3-none-any.whl", hash = "sha256:62e85036d50839cbdf45b8067c2c1a1b925517514d7cba4cbe8755a6c2829bc9", size = 330557, upload-time = "2026-02-08T14:47:10.111Z" }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, + { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "packaging", marker = "python_full_version < '3.9'" }, + { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "tomli", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version == '3.9.*' and sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version == '3.9.*'" }, + { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "packaging", marker = "python_full_version == '3.9.*'" }, + { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pygments", marker = "python_full_version == '3.9.*'" }, + { name = "tomli", marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, + { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "packaging", marker = "python_full_version >= '3.10'" }, + { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pygments", marker = "python_full_version >= '3.10'" }, + { name = "tomli", marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, +] + +[[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 = "reportlab" +version = "4.4.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "charset-normalizer", marker = "python_full_version < '3.9'" }, + { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/3d44b873fa71ddc7d323c577fe4cfb61e05b34d14e64b6a232f9cfbff89d/reportlab-4.4.3.tar.gz", hash = "sha256:073b0975dab69536acd3251858e6b0524ed3e087e71f1d0d1895acb50acf9c7b", size = 3887532, upload-time = "2025-07-23T11:18:23.799Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/c8/aaf4e08679e7b1dc896ad30de0d0527f0fd55582c2e6deee4f2cc899bf9f/reportlab-4.4.3-py3-none-any.whl", hash = "sha256:df905dc5ec5ddaae91fc9cb3371af863311271d555236410954961c5ee6ee1b5", size = 1953896, upload-time = "2025-07-23T11:18:20.572Z" }, +] + +[[package]] +name = "reportlab" +version = "4.4.9" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "charset-normalizer", marker = "python_full_version >= '3.9'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/39/42cf24aee570a80e1903221ae3a92a2e34c324794a392eb036cbb6dc3839/reportlab-4.4.9.tar.gz", hash = "sha256:7cf487764294ee791a4781f5a157bebce262a666ae4bbb87786760a9676c9378", size = 3911246, upload-time = "2026-01-15T10:07:56.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/77/546e50edfaba6a0e58e8ec5fdc4446510227cec9e8f40172b60941d5a633/reportlab-4.4.9-py3-none-any.whl", hash = "sha256:68e2d103ae8041a37714e8896ec9b79a1c1e911d68c3bd2ea17546568cf17bfd", size = 1954401, upload-time = "2026-01-15T09:27:59.133Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "certifi", marker = "python_full_version < '3.9'" }, + { name = "charset-normalizer", marker = "python_full_version < '3.9'" }, + { name = "idna", marker = "python_full_version < '3.9'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "certifi", marker = "python_full_version >= '3.9'" }, + { name = "charset-normalizer", marker = "python_full_version >= '3.9'" }, + { name = "idna", marker = "python_full_version >= '3.9'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +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 = "s3transfer" +version = "0.11.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +dependencies = [ + { name = "botocore", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/2b/5c9562795c2eb2b5f63536961754760c25bf0f34af93d36aa28dea2fb303/s3transfer-0.11.5.tar.gz", hash = "sha256:8c8aad92784779ab8688a61aefff3e28e9ebdce43142808eaa3f0b0f402f68b7", size = 149107, upload-time = "2025-04-17T19:23:19.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/39/13402e323666d17850eca87e4cd6ecfcf9fd7809cac9efdcce10272fc29d/s3transfer-0.11.5-py3-none-any.whl", hash = "sha256:757af0f2ac150d3c75bc4177a32355c3862a98d20447b69a0161812992fe0bd4", size = 84782, upload-time = "2025-04-17T19:23:17.516Z" }, +] + +[[package]] +name = "s3transfer" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" }, +] + +[[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.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", +] +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 = "urllib3" +version = "1.26.20" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", + "python_full_version > '3.8' and python_full_version < '3.9'", + "python_full_version <= '3.8'", +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/e8/6ff5e6bc22095cfc59b6ea711b687e2b7ed4bdb373f7eeec370a97d7392f/urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32", size = 307380, upload-time = "2024-08-29T15:43:11.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9c83a95896ed596f68cf798005fe107cc655b5c5c14704/urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e", size = 144225, upload-time = "2024-08-29T15:43:08.921Z" }, +] + +[[package]] +name = "urllib3" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.10' and python_full_version < '3.14'", +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, +] From 08b4d4c2da689a2a750aa45eab04a483bc9b672d Mon Sep 17 00:00:00 2001 From: HSn Date: Wed, 11 Feb 2026 14:16:44 +0800 Subject: [PATCH 33/46] feat(doc2x): add formula_level enum support for v2 export --- README.md | 1 + README_CN.md | 1 + src/pdfdeal/CLI/doc2x.py | 15 +++++++++- src/pdfdeal/Doc2X/ConvertV2.py | 14 ++++++++- src/pdfdeal/Doc2X/Types.py | 55 ++++++++++++++++++++++++++++++++++ src/pdfdeal/doc2x.py | 17 ++++++++++- tests/test_types.py | 28 +++++++++++++++++ 7 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 tests/test_types.py diff --git a/README.md b/README.md index 5a26bdf..a99c3b5 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,7 @@ success, failed, flag = client.pdf2file( output_path="./Output", output_format="docx", model="v3-2026", # optional, default is server-side v2 + formula_level=1, # optional: 0=keep, 1=inline->text, 2=all->text; only effective with model="v3-2026" ) print(success) print(failed) diff --git a/README_CN.md b/README_CN.md index b5cbfdd..150a1e7 100644 --- a/README_CN.md +++ b/README_CN.md @@ -103,6 +103,7 @@ success, failed, flag = client.pdf2file( output_path="./Output", output_format="docx", model="v3-2026", # 可选,不填则使用服务端默认 v2 + formula_level=1, # 可选:0=保留公式,1=仅行内公式退化为文本,2=全部公式退化为文本;仅在 model="v3-2026" 时生效 ) print(success) print(failed) diff --git a/src/pdfdeal/CLI/doc2x.py b/src/pdfdeal/CLI/doc2x.py index c71daf2..ad7a40d 100644 --- a/src/pdfdeal/CLI/doc2x.py +++ b/src/pdfdeal/CLI/doc2x.py @@ -1,7 +1,7 @@ import argparse import os from pdfdeal import Doc2X -from pdfdeal.Doc2X.Types import V2ParseModel +from pdfdeal.Doc2X.Types import FormulaLevel, V2ParseModel def main(): @@ -37,6 +37,18 @@ def main(): required=False, choices=[model.value for model in V2ParseModel], ) + parser.add_argument( + "--formula_level", + help=( + 'Formula degradation level for v2 export body. ' + '0=keep formulas, 1=inline formulas to text, 2=all formulas to text. ' + 'Only effective when --model is "v3-2026".' + ), + required=False, + type=int, + choices=[level.value for level in FormulaLevel], + default=FormulaLevel.KEEP_MARKDOWN.value, + ) parser.add_argument( "-o", "--output", @@ -107,6 +119,7 @@ def main(): output_path=output, output_format=format, model=args.model, + formula_level=args.formula_level, ) for file in success: diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index b111640..b83b391 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -9,7 +9,13 @@ from typing import Tuple from .Exception import RateLimit, FileError, RequestError, async_retry, code_check import logging -from .Types import OutputFormat, V2ParseModelType, normalize_v2_parse_model +from .Types import ( + FormulaLevelType, + OutputFormat, + V2ParseModelType, + normalize_formula_level, + normalize_v2_parse_model, +) import base64 Base_URL = "https://v2.doc2x.noedgeai.com/api" @@ -271,6 +277,7 @@ async def convert_parse( to: str, filename: str = None, merge_cross_page_forms: bool = False, + formula_level: FormulaLevelType = 0, ) -> Tuple[str, str]: """Convert parsed file to specified format @@ -280,6 +287,9 @@ async def convert_parse( to (str): Export format, supports: md|tex|docx|md_dollar filename (str, optional): Output filename for md/tex (without extension). Defaults to None. merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. + formula_level (FormulaLevelType, optional): Formula degradation level for export body. + 0=keep formulas, 1=inline formulas to text, 2=all formulas to text. + Defaults to 0. This option only takes effect when upload model is "v3-2026". Raises: ValueError: If 'to' is not a valid format @@ -295,10 +305,12 @@ async def convert_parse( if isinstance(to, OutputFormat): to = to.value + formula_level = normalize_formula_level(formula_level) payload = { "uid": uid, "to": to, "formula_mode": "normal", + "formula_level": formula_level, "merge_cross_page_forms": merge_cross_page_forms, } if filename and to in ["md", "md_dollar", "tex"]: diff --git a/src/pdfdeal/Doc2X/Types.py b/src/pdfdeal/Doc2X/Types.py index 94226f6..fee6237 100644 --- a/src/pdfdeal/Doc2X/Types.py +++ b/src/pdfdeal/Doc2X/Types.py @@ -85,6 +85,39 @@ def _missing_(cls, value): V2ParseModelType = Optional[Union[str, V2ParseModel]] +class FormulaLevel(int, Enum): + """Formula degradation levels for v2 export body. + + 0: Keep formulas as Markdown (no degradation). + 1: Convert inline formulas to plain text. + 2: Convert all formulas to plain text. + """ + + KEEP_MARKDOWN = 0 + INLINE_TO_TEXT = 1 + ALL_TO_TEXT = 2 + + @classmethod + def _missing_(cls, value): + if isinstance(value, str): + value = value.strip() + if not value: + return None + try: + value = int(value) + except ValueError: + pass + for member in cls: + if member.value == value: + return member + raise ValueError( + f"{value} is not a valid {cls.__name__}, must be one of {', '.join([str(m.value) for m in cls])}" + ) + + +FormulaLevelType = Optional[Union[int, str, FormulaLevel]] + + def normalize_v2_parse_model(model: V2ParseModelType) -> str: if model is None: return "" @@ -96,3 +129,25 @@ def normalize_v2_parse_model(model: V2ParseModelType) -> str: return "" return V2ParseModel(model).value + + +def normalize_formula_level(formula_level: FormulaLevelType) -> int: + if formula_level is None: + return FormulaLevel.KEEP_MARKDOWN.value + if isinstance(formula_level, FormulaLevel): + return formula_level.value + if isinstance(formula_level, bool): + raise ValueError( + "formula_level must be one of 0, 1, 2 " + "(0=keep formulas, 1=inline formulas to text, 2=all formulas to text)" + ) + + try: + level = FormulaLevel(formula_level) + except (TypeError, ValueError): + raise ValueError( + "formula_level must be one of 0, 1, 2 " + "(0=keep formulas, 1=inline formulas to text, 2=all formulas to text)" + ) + + return level.value diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index bb62ce3..f351b6f 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -16,9 +16,11 @@ download_file, ) from .Doc2X.Types import ( + FormulaLevelType, OutputFormat, V2ParseModel, V2ParseModelType, + normalize_formula_level, normalize_v2_parse_model, ) from .Doc2X.Pages import get_pdf_page_count @@ -238,12 +240,17 @@ async def convert_to_format( output_name: str, max_time: int, merge_cross_page_forms: bool = False, + formula_level: FormulaLevelType = 0, save_subdir: bool = False, ) -> str: """Convert parsed PDF to specified format""" logger.info(f"Converting {uid} to {output_format}...") status, url = await convert_parse( - apikey, uid, output_format, merge_cross_page_forms=merge_cross_page_forms + apikey, + uid, + output_format, + merge_cross_page_forms=merge_cross_page_forms, + formula_level=formula_level, ) for _ in range(max_time // 3): @@ -398,6 +405,7 @@ async def pdf2file_back( oss_choose: str = "auto", model: V2ParseModelType = None, merge_cross_page_forms: bool = False, + formula_level: FormulaLevelType = 0, save_subdir: bool = False, export_history: str = "", ) -> Tuple[List[str], List[dict], bool]: @@ -440,6 +448,7 @@ async def pdf2file_back( fmt = OutputFormat(fmt) if isinstance(fmt, OutputFormat): fmt = fmt.value + formula_level = normalize_formula_level(formula_level) try: normalized_model = normalize_v2_parse_model(model) @@ -581,6 +590,7 @@ async def convert_file(index, name): output_name=name_fmt, max_time=self.max_time, merge_cross_page_forms=merge_cross_page_forms, + formula_level=formula_level, save_subdir=save_subdir ) if export_history != "": @@ -730,6 +740,7 @@ def pdf2file( oss_choose: str = "always", model: V2ParseModelType = None, merge_cross_page_forms: bool = False, + formula_level: FormulaLevelType = 0, ocr: bool = False, save_subdir: bool = False, ) -> Tuple[List[str], List[dict], bool]: @@ -743,6 +754,9 @@ def pdf2file( oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". model (V2ParseModelType, optional): Upload model for v2 preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. + formula_level (FormulaLevelType, optional): Formula degradation level for export body. + 0=keep formulas, 1=inline formulas to text, 2=all formulas to text. + Defaults to 0. This option only takes effect when upload model is "v3-2026". ocr (bool, optional): This option is deprecated and will not be used. save_subdir (bool, optional): Save the output to a subfolder under output_path. Defaults to False. export_history(str, optional): Export history file. Defaults to None. @@ -774,6 +788,7 @@ def pdf2file( oss_choose=oss_choose, model=model, merge_cross_page_forms=merge_cross_page_forms, + formula_level=formula_level, save_subdir=save_subdir, export_history=export_history, ) diff --git a/tests/test_types.py b/tests/test_types.py new file mode 100644 index 0000000..3a556e1 --- /dev/null +++ b/tests/test_types.py @@ -0,0 +1,28 @@ +import pytest + +from pdfdeal.Doc2X.Types import FormulaLevel, normalize_formula_level + + +@pytest.mark.parametrize( + ("value", "expected"), + [ + (None, 0), + (FormulaLevel.KEEP_MARKDOWN, 0), + (FormulaLevel.INLINE_TO_TEXT, 1), + (FormulaLevel.ALL_TO_TEXT, 2), + (0, 0), + (1, 1), + (2, 2), + ("0", 0), + ("1", 1), + ("2", 2), + ], +) +def test_normalize_formula_level_valid(value, expected): + assert normalize_formula_level(value) == expected + + +@pytest.mark.parametrize("value", [-1, 3, "bad", True, False]) +def test_normalize_formula_level_invalid(value): + with pytest.raises(ValueError, match="formula_level must be one of 0, 1, 2"): + normalize_formula_level(value) From b9d39a58bde15b8ce21af0875040c094d40fc019 Mon Sep 17 00:00:00 2001 From: HSn Date: Wed, 11 Feb 2026 17:20:34 +0800 Subject: [PATCH 34/46] update: add formula level --- README.md | 2 +- README_CN.md | 2 +- src/pdfdeal/CLI/doc2x.py | 4 +++- src/pdfdeal/Doc2X/ConvertV2.py | 9 ++++++--- src/pdfdeal/Doc2X/Types.py | 13 ++++++++----- src/pdfdeal/doc2x.py | 7 +++++-- 6 files changed, 24 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a99c3b5..d88fa01 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ success, failed, flag = client.pdf2file( output_path="./Output", output_format="docx", model="v3-2026", # optional, default is server-side v2 - formula_level=1, # optional: 0=keep, 1=inline->text, 2=all->text; only effective with model="v3-2026" + formula_level=1, # optional: 0(default/recommended)=keep formulas; 1=inline formulas -> text; 2=all formulas (inline+block) -> text ) print(success) print(failed) diff --git a/README_CN.md b/README_CN.md index 150a1e7..88ae1c4 100644 --- a/README_CN.md +++ b/README_CN.md @@ -103,7 +103,7 @@ success, failed, flag = client.pdf2file( output_path="./Output", output_format="docx", model="v3-2026", # 可选,不填则使用服务端默认 v2 - formula_level=1, # 可选:0=保留公式,1=仅行内公式退化为文本,2=全部公式退化为文本;仅在 model="v3-2026" 时生效 + formula_level=1, # 可选:0(默认,推荐)不降级;1 仅降级行内公式(\(...\)、$...$);2 降级所有公式(含 \[...\]、$$...$$) ) print(success) print(failed) diff --git a/src/pdfdeal/CLI/doc2x.py b/src/pdfdeal/CLI/doc2x.py index ad7a40d..898bcd8 100644 --- a/src/pdfdeal/CLI/doc2x.py +++ b/src/pdfdeal/CLI/doc2x.py @@ -41,7 +41,9 @@ def main(): "--formula_level", help=( 'Formula degradation level for v2 export body. ' - '0=keep formulas, 1=inline formulas to text, 2=all formulas to text. ' + '0 (default, recommended)=keep original formulas; ' + '1=degrade inline formulas (\\(...\\), $...$); ' + '2=degrade all formulas including block formulas (\\[...\\], $$...$$). ' 'Only effective when --model is "v3-2026".' ), required=False, diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index b83b391..d23367c 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -18,7 +18,7 @@ ) import base64 -Base_URL = "https://v2.doc2x.noedgeai.com/api" +Base_URL = "https://v2.dev.doc2x.noedgeai.com/api" logger = logging.getLogger("pdfdeal.convertV2") @@ -288,8 +288,11 @@ async def convert_parse( filename (str, optional): Output filename for md/tex (without extension). Defaults to None. merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. formula_level (FormulaLevelType, optional): Formula degradation level for export body. - 0=keep formulas, 1=inline formulas to text, 2=all formulas to text. - Defaults to 0. This option only takes effect when upload model is "v3-2026". + 0 (default, recommended): Keep original formulas. + 1: Degrade inline formulas to plain text (\\(...\\), $...$). + 2: Degrade all formulas to plain text, including inline and block formulas + (\\(...\\), $...$, \\[...\\], $$...$$). + This option only takes effect when upload model is "v3-2026". Raises: ValueError: If 'to' is not a valid format diff --git a/src/pdfdeal/Doc2X/Types.py b/src/pdfdeal/Doc2X/Types.py index fee6237..0a1971b 100644 --- a/src/pdfdeal/Doc2X/Types.py +++ b/src/pdfdeal/Doc2X/Types.py @@ -88,9 +88,10 @@ def _missing_(cls, value): class FormulaLevel(int, Enum): """Formula degradation levels for v2 export body. - 0: Keep formulas as Markdown (no degradation). - 1: Convert inline formulas to plain text. - 2: Convert all formulas to plain text. + 0 (default, recommended): Keep original formulas (no degradation). + 1: Degrade inline formulas to plain text (\\(...\\), $...$). + 2: Degrade all formulas to plain text, including inline and block formulas + (\\(...\\), $...$, \\[...\\], $$...$$). """ KEEP_MARKDOWN = 0 @@ -139,7 +140,8 @@ def normalize_formula_level(formula_level: FormulaLevelType) -> int: if isinstance(formula_level, bool): raise ValueError( "formula_level must be one of 0, 1, 2 " - "(0=keep formulas, 1=inline formulas to text, 2=all formulas to text)" + "(0=keep original formulas [default/recommended], " + "1=degrade inline formulas, 2=degrade all formulas)" ) try: @@ -147,7 +149,8 @@ def normalize_formula_level(formula_level: FormulaLevelType) -> int: except (TypeError, ValueError): raise ValueError( "formula_level must be one of 0, 1, 2 " - "(0=keep formulas, 1=inline formulas to text, 2=all formulas to text)" + "(0=keep original formulas [default/recommended], " + "1=degrade inline formulas, 2=degrade all formulas)" ) return level.value diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index f351b6f..dbef43a 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -755,8 +755,11 @@ def pdf2file( model (V2ParseModelType, optional): Upload model for v2 preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. formula_level (FormulaLevelType, optional): Formula degradation level for export body. - 0=keep formulas, 1=inline formulas to text, 2=all formulas to text. - Defaults to 0. This option only takes effect when upload model is "v3-2026". + 0 (default, recommended): Keep original formulas. + 1: Degrade inline formulas to plain text (\\(...\\), $...$). + 2: Degrade all formulas to plain text, including inline and block formulas + (\\(...\\), $...$, \\[...\\], $$...$$). + This option only takes effect when upload model is "v3-2026". ocr (bool, optional): This option is deprecated and will not be used. save_subdir (bool, optional): Save the output to a subfolder under output_path. Defaults to False. export_history(str, optional): Export history file. Defaults to None. From d5fb1e6fe9a1a36b5979d9975fca4e3d06d53b8d Mon Sep 17 00:00:00 2001 From: HSn Date: Mon, 23 Feb 2026 13:35:42 +0800 Subject: [PATCH 35/46] fix: update Base_URL to the correct v2 API endpoint --- src/pdfdeal/Doc2X/ConvertV2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index d23367c..8b58325 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -18,7 +18,7 @@ ) import base64 -Base_URL = "https://v2.dev.doc2x.noedgeai.com/api" +Base_URL = "https://v2.doc2x.noedgeai.com/api" logger = logging.getLogger("pdfdeal.convertV2") From bbb779aec730c4567167bda3f37c32eba95e9701 Mon Sep 17 00:00:00 2001 From: HSn Date: Tue, 24 Feb 2026 18:24:06 +0800 Subject: [PATCH 36/46] feat(test): add formula level enum tests for v3 model support --- tests/test_pdf2file.py | 90 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 11 deletions(-) diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index 0197667..aeb84f8 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -1,7 +1,8 @@ from pdfdeal import Doc2X -from pdfdeal.Doc2X.Types import V2ParseModel +from pdfdeal.Doc2X.Types import FormulaLevel, V2ParseModel import os import pytest +from typing import Optional def _require_apikey() -> str: @@ -11,8 +12,20 @@ def _require_apikey() -> str: return apikey +def _build_client(apikey: Optional[str] = None) -> Doc2X: + return Doc2X(apikey=apikey or _require_apikey(), debug=True, thread=1) + + +def _skip_if_doc2x_internal_error(flag, failed): + if not flag or not failed: + return + first_error = failed[0].get("error", "") if isinstance(failed[0], dict) else "" + if "internal_error" in first_error: + pytest.skip(f"Doc2X service internal_error: {first_error}") + + def test_pdf2file_v3_model_example(): - client = Doc2X(apikey=_require_apikey(), debug=True, thread=1) + client = _build_client() success, failed, flag = client.pdf2file( pdf_file="tests/pdf/sample.pdf", output_format="text", @@ -29,7 +42,7 @@ def test_pdf2file_v3_model_example(): def test_pdf2file_mixed_v3_and_v2_models(): - client = Doc2X(apikey=_require_apikey(), debug=True, thread=1) + client = _build_client() success_v3, failed_v3, flag_v3 = client.pdf2file( pdf_file="tests/pdf/sample.pdf", @@ -57,9 +70,64 @@ def test_pdf2file_mixed_v3_and_v2_models(): assert failed_v2[0]["error"] == "" +def test_pdf2file_v3_model_formula_level_enum_example(): + client = _build_client() + output_path = "./Output/test/single/formula_level_enum" + success, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_path=output_path, + output_format="md", + model=V2ParseModel.V3_2026, + formula_level=FormulaLevel.INLINE_TO_TEXT, + ) + + print(success) + print(failed) + print(flag) + _skip_if_doc2x_internal_error(flag, failed) + assert flag is False + assert isinstance(success[0], str) + assert success[0] != "" + assert os.path.isfile(success[0]) + assert failed[0]["error"] == "" + + +def test_pdf2file_v3_model_formula_level_all_to_text_example(): + client = _build_client() + output_path = "./Output/test/single/formula_level_all_to_text" + success, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_path=output_path, + output_format="md", + model=V2ParseModel.V3_2026, + formula_level=FormulaLevel.ALL_TO_TEXT, + ) + + print(success) + print(failed) + print(flag) + _skip_if_doc2x_internal_error(flag, failed) + assert flag is False + assert isinstance(success[0], str) + assert success[0] != "" + assert os.path.isfile(success[0]) + assert failed[0]["error"] == "" + + +def test_pdf2file_invalid_formula_level(): + client = _build_client(apikey="test_apikey") + with pytest.raises(ValueError, match="formula_level must be one of 0, 1, 2"): + client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_path="./Output/test/single/pdf2file", + output_format="md", + formula_level=3, + ) + + # 测试一个文件,output_format为json def test_pdf2json(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path = "./Output/test/single/pdf2file" filepath, failed, flag = client.pdf2file( pdf_file="tests/pdf", @@ -74,7 +142,7 @@ def test_pdf2json(): # 测试一个文件,output_format为md_dollar,tex,docx def test_single_pdf2file(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path = "./Output/test/single/pdf2file" filepath, failed, flag = client.pdf2file( pdf_file="tests/pdf/sample.pdf", @@ -92,7 +160,7 @@ def test_single_pdf2file(): # 测试一个文件,output_format为md_dollar,tex,docx,同时保存到子文件夹下 def test_single_pdf2file_with_subdir(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path = "./Output/test/single/pdf2file" filepath, failed, flag = client.pdf2file( pdf_file="tests/pdf/sample.pdf", @@ -110,7 +178,7 @@ def test_single_pdf2file_with_subdir(): # 测试非法的输出格式 def test_error_input_pdf2file(): - client = Doc2X(debug=True, thread=1) + client = _build_client() with pytest.raises(ValueError): client.pdf2file( pdf_file="tests/pdf/sample.pdf", @@ -121,7 +189,7 @@ def test_error_input_pdf2file(): # 测试一个文件夹下的多个文件,output_format def test_multiple_pdf2file(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output/test/multiple/pdf2file", @@ -143,7 +211,7 @@ def test_multiple_pdf2file(): # 测试一个文件夹下的多个pdf文件转化(包含其子文件夹下的pdf文件) def test_multiple_pdf2file_with_subdir(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output/test/multiple/pdf2file", @@ -165,7 +233,7 @@ def test_multiple_pdf2file_with_subdir(): # 测试格式错误或者损坏的pdf文件 def test_all_fail_pdf2file(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path, failed, flag = client.pdf2file( pdf_file="tests/pdf/sample_bad.pdf", output_path="./Output/test/allfail/pdf2file", @@ -178,7 +246,7 @@ def test_all_fail_pdf2file(): def test_export_history(): - client = Doc2X(debug=True, thread=1) + client = _build_client() output_path, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output/", From f296010720b0258629641fbf8f0bb6df157faf6b Mon Sep 17 00:00:00 2001 From: HSn Date: Tue, 24 Feb 2026 18:28:40 +0800 Subject: [PATCH 37/46] feat(test): enhance pic2file tests with v3 model integration and error handling --- tests/test_pic2file.py | 124 ++++++++++++++++++++++++++--------------- 1 file changed, 80 insertions(+), 44 deletions(-) diff --git a/tests/test_pic2file.py b/tests/test_pic2file.py index 73f8017..883bb53 100644 --- a/tests/test_pic2file.py +++ b/tests/test_pic2file.py @@ -1,62 +1,98 @@ -import time from pdfdeal import Doc2X -from pdfdeal.file_tools import get_files -import logging +import os +import pytest +from typing import Optional + + +def _require_apikey() -> str: + apikey = os.getenv("DOC2X_APIKEY") + if not apikey: + pytest.skip("DOC2X_APIKEY is required for integration tests") + return apikey + + +def _build_client(apikey: Optional[str] = None) -> Doc2X: + return Doc2X(apikey=apikey or _require_apikey(), debug=True, thread=1) -httpx_logger = logging.getLogger("httpx") -httpx_logger.setLevel(logging.WARNING) -logging.basicConfig(level=logging.INFO) def test_single_pic2file(): - client = Doc2X() - results, errors, has_error = client.piclayout( + client = _build_client() + success, failed, flag = client.piclayout( pic_file="tests/image/sample.png", - zip_path="./Output/test/single/", + output_path="./Output/test/single/pic2file", ) - print(results) - print(errors) - print(has_error) - assert not has_error - assert isinstance(results, list) # 返回值应该是列表类型 - assert len(errors) == 1 - assert isinstance(errors[0], dict) - assert "error" in errors[0] - assert "path" in errors[0] + print(success) + print(failed) + print(flag) + assert flag is False + assert isinstance(success, list) + assert len(success) == 1 + assert isinstance(success[0], list) + assert len(success[0]) == 1 + assert isinstance(success[0][0], list) + assert len(success[0][0]) > 0 + assert isinstance(success[0][0][0], dict) + assert "md" in success[0][0][0] + assert "zip_path" in success[0][0][0] + assert "path" in success[0][0][0] + assert failed[0]["error"] == "" + def test_multiple_pic2file(): - client = Doc2X() - results, errors, has_error = client.piclayout( + client = _build_client() + success, failed, flag = client.piclayout( pic_file="tests/image", - zip_path="./Output/test/multiple/", + output_path="./Output/test/multiple/pic2file", ) - assert isinstance(results, list) # 返回值应该是列表类型 - assert len(errors) == 3 - assert isinstance(errors[0], dict) - assert "error" in errors[0] - assert "path" in errors[0] + print(success) + print(failed) + print(flag) + assert flag + assert isinstance(success, list) + assert len(success) == 3 + assert len(failed) == 3 + for idx, result in enumerate(success): + if not result: + assert failed[idx]["error"] != "" + assert failed[idx]["path"] != "" + else: + assert failed[idx]["error"] == "" def test_multiple_high_rpm(): - client = Doc2X() - file_list = ["tests/image/sample.png" for _ in range(30)] #测试处理上限是否为30s/30 req - results, errors, has_error = client.piclayout( + client = _build_client() + file_list = ["tests/image/sample.png" for _ in range(30)] + success, failed, flag = client.piclayout( pic_file=file_list, - zip_path="./Output/test/highrpm/", + output_path="./Output/test/highrpm/pic2file", ) - assert not has_error - assert isinstance(results, list) # 返回值应该是列表类型 - assert len(results) == 30 - assert isinstance(errors[0], dict) - assert "error" in errors[0] - assert "path" in errors[0] + print(success) + print(failed) + print(flag) + assert flag is False + assert isinstance(success, list) + assert len(success) == 30 + assert all(isinstance(item, list) and item for item in success) + assert all(item["error"] == "" for item in failed) def test_piclayout(): - client = Doc2X() - # Test single file layout analysis - results, errors, has_error = client.piclayout("tests/image/sample.png") - assert not has_error - assert isinstance(results, list) # 返回值应该是列表类型 - assert isinstance(errors[0], dict) - assert "error" in errors[0] - assert "path" in errors[0] + client = _build_client() + success, failed, flag = client.piclayout( + pic_file="tests/image/sample.png", + ) + print(success) + print(failed) + print(flag) + assert flag is False + assert isinstance(success, list) + assert len(success) == 1 + assert isinstance(success[0], list) + assert len(success[0]) == 1 + assert isinstance(success[0][0], list) + assert len(success[0][0]) > 0 + assert isinstance(success[0][0][0], dict) + assert "md" in success[0][0][0] + assert "zip_path" in success[0][0][0] + assert "path" in success[0][0][0] + assert failed[0]["error"] == "" From b3a4a982f9c4c8bc2da54c8505503ab3197a94e7 Mon Sep 17 00:00:00 2001 From: HSn Date: Sat, 28 Feb 2026 11:12:20 +0800 Subject: [PATCH 38/46] feat(model): add V2 support and enhance normalization for V3 model --- src/pdfdeal/Doc2X/Types.py | 6 ++- tests/pdf/formula_level.pdf | Bin 0 -> 1024144 bytes tests/test_pdf2file.py | 90 +++++++++++++++++++++--------------- tests/test_types.py | 30 +++++++++++- 4 files changed, 87 insertions(+), 39 deletions(-) create mode 100644 tests/pdf/formula_level.pdf diff --git a/src/pdfdeal/Doc2X/Types.py b/src/pdfdeal/Doc2X/Types.py index 0a1971b..889e891 100644 --- a/src/pdfdeal/Doc2X/Types.py +++ b/src/pdfdeal/Doc2X/Types.py @@ -70,6 +70,7 @@ def _missing_(cls, value): class V2ParseModel(str, Enum): + V2 = "v2" V3_2026 = "v3-2026" @classmethod @@ -123,13 +124,14 @@ def normalize_v2_parse_model(model: V2ParseModelType) -> str: if model is None: return "" if isinstance(model, V2ParseModel): - return model.value + return "" if model == V2ParseModel.V2 else model.value model = model.strip() if not model: return "" - return V2ParseModel(model).value + model_enum = V2ParseModel(model) + return "" if model_enum == V2ParseModel.V2 else model_enum.value def normalize_formula_level(formula_level: FormulaLevelType) -> int: diff --git a/tests/pdf/formula_level.pdf b/tests/pdf/formula_level.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d0d24e991b216b4478ff4c371ac4750e48024e4 GIT binary patch literal 1024144 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⩔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

TlIH->XY!<#bpsGStk&FH+cW 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"pW115X8R)}ahxZEKy)xe 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%0DK$H1zvI&~@kEB`j(?|SZ zBd&u>HV3YNx9@k+5c}8jg+$-hKbQWoP1a9IzZ5O8Ix`$%P3}H6b(Aixs>-Qriihod z3@4lYIlTK!>O@&&)uSp$FDH&EY*1@55aW`clbO0K5Uh+V&=9S#9zP=fXc6!6JTLfc6-J!Q4)a(#sjH!T;Aj02lFxo;<6gzv?CXju zIKMzRiYkb&!14Yiz9B*CmW5k6zdr0?dLBmUdGaY-@8>pSGa6!nrbAYqi(c|Z1>pox$y_mwud&fR}g?iScqjQiUG@_KH_!PnZB^ zAr>e6FE$90S$q?3_e z&&UF9n-DEO0(wP@4}1xedv{)1bQ;uDJ66SU2^l`y15b+aI>TJJJpw2CxDVW&iEm|R zo18j_rO4#rzWRRt7xzlqh^sJfWt)wChxXpa1MLmc5fr57VFpUtY9q1`CW(K@v;RN^ z&*d~1QhEf`FTeT419~9}_uT3D#A+3$H)HhF%Bm9)g6~oMDUzLaI)Ql zQkQ_yz-2(xijz?UUWf$uf=*xj0VHXw{4c1^XtXwc(&D08f5rvr(jh^~Mga;Z#t4?< zTBPPtWvMNg_LgPtpP&uBD@h%R=KmRaY~06M=~+Es_pZOyt}r>s0Y=+kbTDpqE3(AE z{jNutDgfH*fZ>5<0b!U zZlh)GJtU>t;Pb(0cB|!F1?G}WbyZ|LOWX z^2LyOC>|=4w1zK7inm9Zz4^77yN}dnTEnlbKSdeX=-}D8x$O@FH2IzDVGVkkj1B(L^D69114FGiL2R*O-$to@m9&Zl;V?p2QZMudB0JLtwf|0@^k5_#}qC$V$S zxfm|6JO&ooy3l9m&<}CTW-gc)*6rW?TDzI;2WiXm2pXbT_m%J z*6?OSs5HSUpPwA+M?YiI;lxyUHF)H@xww#{1-=D(-Ll)+=P8)RDYgm?GqiWDe_($R z1;hA6X&$2$M+5-?h!3AEMSXyixck6eWVI4O&BtK`wRY0GK6U~CcZDCQ@BPn-L5~29 z**n5bABMi;8CweNDt&t5KKuBW=yc_-3?1xbbe`d+&MTKy!l zNQt}v=SN{9D-#4iz(_1y4@0w|#?fiIWwXE|G$R}T_;7kk5>veZyy55#Ql<9&l^Bx` z-VsoT$&HXr{Lzdl)PSc1Ie2qBeLX`4Ua5tzr+8GomHG;aQ9J^UNdP@AIiC;ki2{FY z&NWcIr)nbE8$w%}sr~m5Z+e|wLW>wLDjd>5X@a~PV+)!#DD|LM{a-s zs@EfYi}Q1Z_H9{Kg{qXQP_^aMom~z%tz$f?*cN}n{R_{YX!I5hvMRd7#0Kh?r)In) zEgZxAJ{%XC=gqsZK^|+PZ7DVW-V|X7=$g4Rvt;mi*E>Hw9Bt;+Hry+VkB$!bI@F;H zZ|bq5RO*P)o^@d9oYhu+%OjXVA>iCi^U!eMQ$FnbTD41U#+6c@pVF(6!HH?Xsn?B6 zqTD`0}^G{0Q{*y?NW<7a<`h=h`i; zO4gs^#mE!rl4**geH&I;`>C;de5q@j+NLj*fY$lCpK$DY=v)pL!uPxxVc-dTgJlKJ zJfrl_Evd~` zS$vv&B>=(|c*y=$<}KGenaM2Gz6ksz%z-8^bJ)AnCyIi)jnW zH>lVQD}Nvm_kE)VA}#RYBHyh}OUtJ?7Qwd~i+2E)rmPI*`5}18Qz_Ha*X;qC+BvMM;H}5OI4^UU$v`g_8jR@$wXi;K@Y!-aNbz-7G=rnA8xz~W8mPb8bUk!`WBB4CGDtPxJV*uV?|Qgoq)gMCBE5Y zEcZ}@?UXFD^8+vZVkqoRoGaC?RJmC3sDd@3q-Pwj!FE5n+Pr89I_kvS9|tO#QMk$o zn7vJF8X(qG3qJsVO?C%5us;HlqsYARa;wGQW0wu+1IJ+5S=ZF+gTtKL+N{{u!p7~9G{J4Oxcim)NZ&pccij0& zCfP(&f)}_zjqq^KY3NIqSeVdk8?BTue-HB1VCD&|-yruVsh-4hEe&R!EaMoALHp;G zCc&3A&^v+2Wc&u>U&45j{l8w`D^$s?E7#lPfOTjzDke&YE0E-L&jPZg6O1}DH+`_Q z5X?J4R&LB)_2h9<*QzDxxkHe>!%<%W6LLOr!9IkXSas=2P8{cK+qJyA0Ff^-S3csM zH2iaf73N-Rh8nxBc~s>G#T;BmRn*NU$S5+w=|wrrFC^ue>Yv^A)jZjro<)#!wJ88M zv0>;=e(Ll>5=&Vi`fR9NFV4w&GDBcv&gYDGK)-gXV8O+X>(E3YZ&rK7dv7B(Uu_F} zi~XXC7M4^P^W9r0tZ=jhNB=<`Esc5k+X-tzdcDeaGo{JB~Z`9pjZBLr`?6 z1)IU&LnF7i0=+%R7k!^^pGB>M@v%st;=&~tdi>u!f>Uq`!lhU3se{G21N7VlA6R}i zB=793Dd>KZIq_Z~16YXzN4?Q)V3H)r*2AH*#l<>>A9fm6rmx9zs zM=c9chctP!_dnKSy`eBb1|Dqcch#gTr~f$K0KFhwdh(IZM&CV62GWri>0^}L@Z}1P z19!|T&MrzbW2Xxyr}MHbKExM&`I$TPjS?$@WwwCr#t%R8s9t4N`uiqL*s58tlFTqn z*5mN@3qV&31bQhzM!WgKeWvSfRY6h+oR~f@9N_!3QG+yPnO(E^y=Ngp=++~ftU1*t zn$1>Z#p()5hHDYtiY`DeFE4qCxw19M1S^N^_O(^Xqv)b~7cgbI0U!72GI##^gk3`J3+}?{C%-uPgR~|@E@+>ZPYeUy2 zG_++rzlyl*8+6hm>`U`Je6KYBA=BjCdURvQ(CILI0iM;o$^@TFu9}arwKvDx<{p>4 znQJokL4+9EF?KJIOuoJSoF`iVjD5-3bI+@515=P7y%VXC-uM%s9G5x6#T3_x*ksMJ zZ5pt71Z>bx-BB<#d5~Obgm$zC?T}OBxHRd|Fu>O$kF>0!{jiN96?V;(^Pde;PF_~s z>%JYPi?N-U`#ej}?epDEWwZYJNKU*qe5YNh5?L$*-@YuFzfrs8Ysr@s_Dk*4J?zj!3#OI-Y-Ee~u$Ved-W_G7Fn!6HsS z9t(x>t9oz8>S6Y$Bk$I42o*`Ru|FOKj<$@AE zjhv`pgIiE2*Yc=V{Ei)DL~TmO_-u-9{8o};z5yW^>`lBOWUBYsK#5H15ukQ0S*+og z=}JM;U)x+*kfVdC&Nnak z3(Jt{YSW5^4-FfKZl6f8$1<|*=JGd`Mf;O+zCw2z97<(*uVb$rkGOYhgtvWwMR9_; zhH-JxLj0qB)yf4P;hcoJX4@-Ui$+1)f2viMAkP3!km8WJcY!cz3&(u5$j^RaBtI1y<0edX%@?JYg(~2!;Z? zsE{w9u4~v$RneU}^`68{<)iRZWzxnJmO;vL7txs=?1IRc9bhmVw`+a)?&W0{p|S(# zxrPvXO)6%fKqPJf;(9hqWLiwn$7|hSh2@WIQGUtmTEkKcW{=Bii2C>Ebr*+YGK0ga zrpb|7KY>Q_>RRGoB{4?~PRZ-(2Q%~IrC9Ij5i<+KTTquyMnuTKHsVEUk=~$7;akHG z34(FF*g+vftT;1M;2FyWZv&D{=D&ZeO)TYqM+q)bTB~Pd05w3$zij3Zv-;b&D|?!8 z&UZK$tt>4IrrYo*5Ik>!XQ87s`RO0-MimB38RdT}cwwBs+S2i+KfbRz8yAehIE$Ie zS)~50Ez%XZ*Vp}WdH7@PK3u*uXd|SkXin+ z$$(_&#ps1s#7MyPgts{p8xsJissTq^3pq{mLkB-6X9+WHoq=5kd?s6Kl4PUyq%J!R zs`&CigPiyX-%C8oR*gOo{Bn1c6D(O|JJCJrP;W!A)2@TAIcwoMaV7l-AOKHa7!1|S z6g7vVXT3LxXQFCzqs{a{YYg(tyMw^*n*P=|LH)sP{;C+iX}3*G0kq#;XsIIe`z3I1 z#jyAu0k#r`_KsCc34mLQlZP2t=%C~V*^Dlgx!s!T-PiWp-j`2p>R;5{1ZSf){DMAb zj0*ZDBpvH0%zvU42UEr0e;}Q*n&T%=7W$<5eS&Kx5qE20oWyw>3*3RuHuL> zuS(6fISvkT?X%0(mFy&fU**|F%2M9%^4;euB;oXugY5>rX;n$A$7nFhzdm0$p(MIn z?#~Q2p7n^i@gL*Bs7d%ZT)}`GzlmPIC`+XK&;u<3l<#gV-;o;lo+0!j+0W%y~#ItI+gzD+prDKpNIl-Hv8;Y~j0HlaR znCd-aw=WNa+A z`wpiDi%8LTuZQY#94xxgSqL*BHd!_~5V;;qb!9FbNOXKX#3CZ#1D>}5i|Tc@&Kyy| zCR9??emK&FB`Msg67NFMuI`vug~Csb{r924KPZnNhFu<3K`ao#jp+`><_U6d#VIj- zcN@FXFsM>?>U)LEGTfK^^Gk+9t`1ZPfxRuY10QK}Vopz!@H^J0Wi_lZ28JU-DNt7v zg84Z%+H;uB$D^ta7(?N?IaW7K!gXu;6$~7JTt%F}!Lb#|`8nOY^xhDkG2vnW>@7ae zFYec)?^asQq~z>Gb2s>w+>6R>%;h4^3ugBeyMVpY1AnrimV~7P?$JQrdIhL!yCX3- z>ra7$9>qj|6i~52&$O|#>uZm9IoOIr{F-=9*LbL8vCo}gxb$@}7Q?Ywwi<-OV4|K< z53N*M*pS{S7O%s@eNYm6aW9Lcro#d}rs5-uGcX!CB8ZxFNfX#4W>#%eyz!6=fUlgZ z%v)+ff1|yNF1Q@fM%q-^Ts{Ku&g)b9+*7#1yGNa3F39PvVh?T*~~{k)Wx$L1Ky=QC#nNM zaqND-QKria{#|`M{{%h6n@BD`(VkDqKRNVW2kL)d9!Qu<9Zx!I9=7U)@>fzQYZ@`{ z!u#n%l0C8Z-+2)Z>++lx?z5-t>)LbU;Uq}ZYe`fnJ1nWhMaYqBqa>Iq@Pb>-6mAHL>kpVf_9o zCw3vUQ}@6TC8q#SS>p7zbaov1`s2HWl#1WVZsg||W+UoOUD&E6D)}($|5Rh%Ku+# zGx7a%4Pw-d&LG1dY%M9JjcuSLp-2n@fDs*k@Y)9-;?Z2Gln`CicHS$E3qGa6z zy*?ncqRTh%VZbjPrA;=!V%h})74Jb96+V<7=i8Mwkgk=ynzeX5F9{|=)TE4})IXbP zhOV_wgWohzt4am?eEO|#vK?60*ulh0S@}t zwb6sbM7^9VjXg$9zR8vu=R~hA3Ey&{f(V#9Bb?EXHv zIX)jQVY+Z16>ZsM=d&F3grTor0Y$btzDzUxMxrCZtGCKoPSm4i#L2JZumM7hLN{7| zVIoh#Z8oN%EmTaPjtu?O`)*rW2ph0|2BCmXS96`VbK5|&42&jh>-?A5Keg;q|1@^r zaG*gB86vova+L}fE9VmPco}NXOt*p(=E4T$6rrm4$dJAVz8O9v?>{Sl4wjOkC#$@K zatx7)mP}h-w+lH7Df?uS^;}&Ce8Ya1`WF;zRn7xhf>UCo4h{l89T5@1K#Dw4^XOuf zn#xhpW{0DV)+Q$=Ub_GB@Fha)5fH1qOMc&ncmzD-hxyV5^WFcrV8r>MXxE)&Z_h8w1(tIGy{*c`Y zarF7Wn0w2pw!U`lHxvpKFU7rRk>FA^P>L6KZwnMjgGW?SSP8 zW<5$y%R3%YWVNrqyf-ECxV^zg;SFeM9L9J4;h4TO+UK+PO~^yY{pG`kE~`H;V6At6 zRk!KZ*_ZqD>U{oqe#LS`=)WQRRyO6A7!<4_u#w8}ZdbJC9yBhef59;i8aTk<7cG9J zrAuM1#-zs{DxgF+G~bf=ej!A35-uk*3H<__hNqDW^1FwoBv@YcEw6P%vGoemZPknn zSw!n~Blq>r|N8n{D8gA3ZsPpEXlc1c#!+QsC= zP>wxN#@v55@9S$}Pg#EsBjHt7}jVd;coI*7aAF z*R6+z0oLKoWM^dc;a52nTA@^19pQvG3|I7dsOndRXGMm7v9zzq4U;4VgPjnM^PJJWd zh)l)(@aW%aC zOF$(M5S!XgO#3a@DfqQQsV=W-yzDxLr2114hiV4hu!z7}Q-KB(? z&1<2*_|C$incc*t#F@H>+Bm=Fiq;waG)_aVT8<}h4=mP6y`|6>F%A6ITBNXV7HVIc z9atX=B0dF65&88Vn7Lisq9D$%lu0t8e_JceS)QO0(v+IDIl8b7K2gYlM)#`v8v9n5Yf@=kIOebZP|J<4*U3H>ck49|2?d-HM$~2{G%$+mgTB4o zfBc~m1lel;(xa-1mxO)OYD?+@EXO*&n6-7i%5>U-bVyO--8Ph~Jl=TIeDzmD*^tb* zu}tq+H$GAwu;Mo3J>?`KAJD}ke9?tY`bo_k!E|dj=FK43V25Pp2I}ghk2R#rvO3fE z^lV(kBIIQ50O*fFb{LvM{^$=Xv9gRt97i%VG2TQWaA)+!nE zLV!L5_+*8!hClH6>Z^&|E0Q%$Rt>OoLs@h(ScOcn057WF-zF_oEF=e+z3f!L1_+Ct zpG#kg`^>Itm9P5m2LYYdT#`DfjM7km+_aVnyxoky>4Tpp#Rsv>_#xGw{>|01jbsh_ z?>il@v4h$#t+5ZzmKniX%?+On(vCl|ee`^a>}dAnBVJY)s@QI5iMNlk=VccjcHqD> zO|gJl4$#<;%?0rnLz9;*`@Dm)kIV}iS7p5h9k|r{~ zUr0+b|2opa<{0+DNg0f3`S`7fSfSN`58j6b#@^bU$*7$@>%r83)|?dQ zkXU2aR~q3tJ)f9D8a)4}RgugaLs%=g7v#9{sGkLBAWhC%da()j>;iwP{ZcW-vZ*@A z^%0?E7phwV?yqWB!SwR@$#4~@7Tp2xEIrPI%oyOYx4Z{3Dr>p^&ZUf&pL2M9<7TxJmL0j9IS(=cftNk&)Bwf}8v}6WHRy`9h9PLC`SK<34c# zX`W>c*7yLwzBWtZzuti6(x=~Rxw17^f}CV14P>?58jFEZXRp`0Mb5IQG?mt;nxZ!1 zTy7tUji00c9Jks(6^W}d3ruL}y1x*)#>yG=e3p$Kiz?& zY_^Q61c0tzERbuwnrPy@w;?_$RaMaiPU!)WTg3&-%Y)-TV}fP8;kn*IM7E^dwlNQ0 zr7#~@afK>19G>{S4B=tbyvQZhMkGGk#kj~=H)MT$y7e6VNq#Qc&eHeNII<|mp&^T+ zOM7aN>NeH0T?{ES0Hefe4ULvAFZGHq&N04C+8if0U~KXj2y}=aS{8WOvS>IKZ|l4- zDi%9}NsISFvOd_C(Jt=ok(lKc;UEdiX+Y(GFs_A&zv8kq{EV6F*U@Gq5Y?(iikB3J z&vwQXXzGj{wG5WskQgg2tf*Eg`Np3=EJx;LDn|g{6TTLkLZlniX&ChLbG*oli0GlO z0ELow^#v@jB_8r{5X=&tEhYTxE849tJVKhBCssJ|uWeFkL+?4QQwP}oK?vI-cn9xAeojgsbk|MM4gGN`+2 zm1S|b0v^3|2Z&+pk!&@NoR8oyvSdp=n)pJQ6PCi1WD~i;N~pGRNTlWEbza_9radq= zD9k)zMXp)qgN(OWnwB>{OyhskPP1;8EXw5|R4=U1ahtmATV>jJD-mIXQEkdEE~*|a zt}T~MiorP|aM|kQZ~A$5jK5-*<BzFOKPmeCbK1Th0v}#2(ZNPwt9?LyXysR zM!|&wZ}-nq=bsnNZs@OqTbQ6muc7-@Ur2tuQ+xd7z2QNe>0{)Rc3lUwU%xQ406C4^ zf-G`QKKgwxaFYyNi3KyNpx66`S5-d2zPDyLe)=+^pR!JM_+ghJ+TTu30xr_#3;j>%?!`*jnAcV${_8Uro4Fs;Mx zakf%dm|BGIE~?u?z*cGB-(^2AhTyPYmCQmjyQf3ipAyu)NA>f5U9 z`QLu8pRnZueT0LsUt6Oh5I|+)>Ny|6m5*g40LTlp2I}dcKU|_~5;fV*SnS-%jA0%d zudDo#iD<~&d>w*$x`{KiWphxno4gDa5f8j7^bu(g9up(8j{T?&ZR$01^?|>Cl9Bqu zur#VNV`&n1VVjRGV8ihgUJx+P8mBq5G3HSVxFY!pLgQMM_R@gRrN79O`n~LKFI|u! zqyq7Xz`;AfyL|82E4$l`KS5~eKi@6}`uMQ-c3ElFLP%=1SNzRA+HP{72Ut`1E}KyF z>4vPuz+bHsn`rgHu(`<+BKkb6`1^?G%IEYsHQ&=J*1-_EnQJk0O26LEa`D=3`y8Zl zt43D!$eUxM_J@!HR-D~2sYur&dzz%QRA6dEmiM_C(xIf>FHS% znDF_$>JmoeB=z|DrFK@n?r0~Q$DjEM;UPDof8Z+sV`Dl1(Y69RG~>8efxLCDqEe+F zlWJ`6z<6X3mC#$;NrgQ>7z&^s8#w!>>;o1`JEV|hfBsalLO^8XyyH3=yHjfh6Z&JITgaT7r>qY8sX|rLYDLU~)~~A5YofB5dnD@jxN$qc8%_cRF0h%9Y6Kz{TN}a+vluukYVB99h1+ zvMP-^w4dqZfV%ZVK@RpQIxVhK(OVBLn^@mhHCfCSOpAj@|9lp3e>P32BSS`jbO$kX zV;u^03!s#PYkNdi-)**yIqqAi0wa!aaM4wr$?Z+ZuKq)P@(K2M7at z+fdS>ed9zysP95I0MiHPNgNC#k_NQP)_w~#4APekvfZG3FmaygeF+Tk=)rIA()gIW z#At082Xp9KzFEh>^@I`em@9R)VYSycwEc#w@fkgoPs5%zcbAq$DV6OJK9!`VG z`i+gVifqqg4fIY_3AnkCMr2@%*gfyh7dk@P7I_h?oj%K%+-HA#aa0yqkt1(;=qZV1ePU}osvhValC8C^%B#vA!(4<{N zfTBn%`D?zaj?R6Lb(*ft^n>-YBhcw%a~YNx7_y6eH|_E(#jfvpbxo7WsEx3G{B6wP zTJ0^6T^VT$P-A%ae2(hAeklIt9f0VRoEGZ2J`lptG3`pNn-x9!S^*VyQhn{x6)FzV z?YkwdnUM$#lV1UZ_cQ@oWKDS{UmCCa`)GZgAAP}&|M?*o3N}i8T<_1g&C83vHL0fLQQPL^qg$T{lbm^xb0=jAYT7tg{hX2xMnq?7 z;qv;vyY;gaX!7`0`&D^jhCfAC;pRD8Lh4?9!)6!DOMh`7rAZR1F3})vd~Z%^7{9Fu zed;F}3u^G;U>w9Z+1!ZpDOX@dZ)YPQoX)MUWtO8I|E$yq1Y~6(jT!rF8Mbm>noRW5 zd`s$blLx)KQTq*lQ4D9r)?W~#5^;l*AItZyi500d91FDE?MkX<0@C3n1? zBTeBq8gd5V@0P-Q965`p`z}%G4&V)-$VRyI8H~cF>5DAe=-A^OfdIbPNpxbQpn#B& z#G%XcT&u33&!gXaBZ|Pk3 znNt@@5o<#3h#&MP+tyWG`X-!7uj8{9`Mz={y94037{BxF;uz!a*{V=&C|wE=7>~?Ay}Wm+h1FB@f3wE1Gyr3N_2$eA^kgx>_e%ak}N7 znX*2-9@Wsxay6&jnwX4RP(tUbKxh$Xq3QVBXvUGxER{SQrvtu2#s2th#mg>tfO^5~ z`?Igr4K)RglBGv+uJ_hyuBA$T?k$ltru9l^nl&XpPGsA;=5N9@MWqiYkabQQn~p*2 zaCqoGdbXc$5+Q>u?Y=p|>Q)ER;7>Dd`Mnd=R@*8(4Bz!}`J1e^D{=Qasx4b7K7hm&TmMG-7cIEQQ&=)(@jH^R^j)*LY*AV?iKrsKLx6lKpP6q#k z6enQ&kv&oWkwSaMN)D&Y|9zDvq%W`la!t%=(l8gXj?p*nvP7Z?FiMCWYz4gLiM&rYX$G zzH|=+q&8I0n2fkVh*XG3_}D|K0*QXRkw>AA2jgM7S$NS_F+xDII{+hF-;;~2_<+dQ z*aj`EvbmnS_NP9cn?4&gNP!E(@vp6-MdxbzBOBw#v=NDNzp*BX{i;oK?U0Q-06CtN z>UZ5nn<2W@S_#~*7da;D9xuL%j=+w9d`Vt+8U>S3)ltbsa2^k7$7fq7$2F}l0m8IjD z=m~d&Bb71yYEkQY=-Op4?fRZfy}mjrN{VzH&UzEjf{AuHbl=zo#h-Adr+Z+xBUN!hhw?t}1~leQ)PD_h&qVQEMl_DfVt>qdHF73(rH_nj5h}A8>0c7Mzk(pMKxS3VCVzaZiS} zkH1oKNn7oo@v+=r;`C0A{{nYY{$_t4>xg*px^yt$^Ti4D4lw1Ts~Dj=b1Upb0W~#l z?yPY}u8Mc(15;W8NaApoI_s;zNF09jRX>TWnf5>HmMD;8%^iSd-!P$R+6xN|82DSq zH!hdGd&2z0TIDT8vUX8R>_3K9PH|TRLK)=c z^q%CT)rz2Qs#q$C{QF}YEp#U{%m|wThh`c~70+z6B#!d4f5asr5mb|xIfX;20!=Z- zRoVPY0}%f}=+hJ6t2b=tqu#99o?=+bejEADSY7I0GpA2Kt7lk|w`_5gW~_p6Y?7#p zC@d=L_1U{)YV2^gh-c{Fd?6tgs*a zJ|sF!fB?O(tnDtp%H4wjY)3MXy2wS|(n`%NqlrREROBc);eUH*I(!hA&l zPUw9HmyA*K>ZbbIj1x@sD3cwL{Le&yDe$k7T3hcIv)X47wD0WrLgF#_<)l*YTo-m; zPOE_hS2?fYVrZjm4K)z0uN!ejdU?7^CrwTBpu`$8K|+ot)@J4_x+M3cxrGzI)Qnv3 z3q`XKxZyhc&BuG!WoD)bFJ(R>3k@+|GS=1{x>D^0>(*-lQhmQXe){TEVhpN_m`~qW zj@g=Vg{x<6KTos%J~W$X8!)xd&QXGmG7}VhUcI*Lb$^z$R{b`5W^s-ct9a;ow9!28 z!? zmv*(WqXWH--Q7z3%IbGogr?5E14PRO2j(q-z4n)wd~@u?$J%~PJ4UX~$U~{8s=D%B zWa|BzWa8U9jXJfnzf}Xfo&pnXx2%Wst!|FrL3rj9YMkZfWj^qvb57b_d{`8gV{nKL z{{?9%o_F18o|WJ+iK1) z7xMSch4(UoJ5p;8qX_54SwcyO>QqeI!S9;hG{kd$@-}^oi(QCC!q_LO@cFEj;09chBE2WBf8JFn;-Zg@ zmb3#2ARSSGZ&d$wynC=;yClmUKx~E!MnMtu)f*k?`ewW4@$|LJ8o%{3$m=ohj(m%r z*POvhXH~7+NLe!$XB`fuw5Mb4t*()QND%!HGW#{I8{{>Eyy#pfdcvG_GN-qx-H)V+ z<^DV(oF~m(VAJS1y@2{J{zu)7t)21cI*o8*E-?1+f-x{$??hv$rpgat#juu-a(jeL zH=5p@nMPM=F-DB??$GZ)J(%tYXkR<-vtb9(5ySvr)?X2seQ=+a9^w4meQd$Pi*C3B zd^r6gAi=1Glk_f?zA1k~&&8Gm>!pW|io{PXwlt?R6xh~a^b*m| z`8!$CY=XGErUe`^ulJ`Gp^=v_j-D6EtLeTGnq0l|j*T zG2Uixm-zX4cHIPbU62Yo_4H}Q84Tz9c}7R5bFVV#QvU|<8Q4C{axqY&-IQjdYtwY=k>QM_T8g!gj zbGlJEERaWiGZxtBUQ;383n4Z;O3-)3p@4LxP;|jU5RZIL^v2bvS(5j5Fs?@c7XOJ- z>IJBq^?c{dtD;rx>+_{4ActzZp8;N&suJMzqH3vmA{Jw16(lyl(HO3=olI@4zTm~0 z9e`tDgJ0J?(@vcKbM?7h4l!NQlCi8i!aH~^?daWunXPu3PQDsLCF^T zl7GOKi#jaaw}ng1PbIoyb0{+S`EM9N6w6|GvD;z|6IcD-AbspY<({9EpD(Y(Vfx~Z zYxSQn3^vxcumM^8vPBSj)@}Z}=fM9-u zqa(&ABs0y=na4a@E2BzL$#36ii2oI2t~Y2`?lxR3Y*Bai%H%mKnP9sVhH}UZ-Tnbw zq@CJTM?f4(MwD2kkP7bW1c2Qbprw{`8;u#jXB&*h93IB>BMM)JughE&n1=p&yRD9q z%xOGt^c5CuS8xBm`Skj!Ys2oWDGyQz;JkEO=~kiU<5#jjNm}mz24S5(RZGZT<=jbo z#r)lBZNF*h6DHYCN>H*Sm*m&&rn%o(#Wf=p9T>nhBXC4(1Q}tn{hGYPj-0?!eUfYIY-_8yEjnu6@B2L&*CXs1Ns0kG#K<=qYQi%Un%ugicNP_|JPv_Xtt?KNY*FBauP`DsY$9HzgVItC8DT zmZNFQu2xJzl^;Ey?j4&{1u0y9(pM_89rJn{SAqUzWUemFSS?Mz!^}rci`4|t?(S%1 z>bKT4cwNmkE|G+K6R=?nokEx(YTv9^IGwi!#Fw=Oo4avwvjXRNqCyyz5s4Jm z2NdAe>>o|aqUMh}Z9_C=W;ZJP9+5_c`rQV}3k`+Gmp9<^z9W*f~C^x0BKc-%8 zkNWO$rihON@Kpgc3e8ML^`==t#%PmVGr_vK)DD`(Jqo z?7#++73Uu)(9WBOEOSncf!|t7)|~Bzxk)QX1C`U+IYbRW>$Us>1){w+~tqI zt-Ym3==8Bh&R)nayk!+Tmbf6LV#Tn>Icq9fk$O+bN+ZHne5(GcI-#b8Gg7|a`e@cz zlGe9tLHx`uOO|o=iSGPX*Y>SMl30TNcRN|jNr}@P#HzDG5*t~O#w8`nx}__db;Xyn!KvC>+JHM5Y7BQ9|Ce= zm@3qu&AryS221(CzNN(TH%)Kx-auN+4X2_54#kI$*=LZ6dO6ZZsUDn3+yi#|_&R)B zjt4Rl2_3}~r7prTm5$a`(SH(^t;SOkK$vQiw!*}KD6^zUqeRY68zY-;=~I@1)=J54 z=lO6}8S`A(9CJ&7!P-S@|q;RJEG#YthvO8(6r-c*yy}PwYP8TXQ!qO%D;=ENOND!XCvipO{apu`HXa2 z?K5YRSMonxMAy_^Nd5DV5 zykwTO-ZH4IIR+GZ_O+d>(zz)hCo{WI>U@gku`K>M>*ovVgWW3>2@XAd&tJncf2tj_ zgNm;zED9qL*=w_JNn;-twcI*P$ueyBLUb{>lou4NF0EBqd@>XrAV}YeocN(3&p+ep zn6@-koUpp%Lw_)@l>Rxd-k%J7Md;lt1X8p z0n}7aaI0~tN1!u0DFdnteM$C~aw8JgpEsVD%7#=Z-hi{Qo6|huK<@)BXNL^r31`gf z7jY3EpPmigcePY#vnwK}081Xr_v^dfjy1YIw(?3m?)pRh!+O<5Mb7r&H7$heFn%90 zTYu7KqgNEa0fXAHM!tm-3^m?LV6A0M;jKyD=pXY^i@IR?9kky6M>Q z8d};%fsJDHH!y^hnS-(&eG7q)?f}N}gvS;EZx=i**g7NaTJ`WU$&7N16;e$Ho(n}v zctY=u8{PpD7=8;y@ANm>5}#TEMLEE@YHWddN-6lNJ$le%Yrkl5LODr?oOPAfwA-D` z4=u%}sT27;P1VS{hIPV$Z`eZJg~R&ta-iz8L$XG`gRQ)pv73$TyxO}Q^DZYLYE85T z?Inqe@s$S)NY1pX4o~$B8$eW}ibti^I&etJhRm+I z-pv$L>?{8N0;m{twP~p~t|8=pPCw4sJTI^RkMm%t?g0C?H#67eeIUmm;t8r!jDL;q zkU#&beenCSgb0b>k?Z}eOwilk2GvvEviy~j+)L*titv-oNC7L9obPGX%iUZ4cb#_t zl3iSaY|OHIu)-PJ%(dPxLiAAdd--?1iy-XT+ubEtzqKIh%1{%XlggB2ACuPyj1n+(Sd7n?klW7xfAyBER=4FxdD1g)@Mkb1J#p;^(D z_ynN0>7e3(;{Th}>Pxc2bUE|&AM&ccMy!RCBAFunrQz3qA!li+_W%9CRBRx$>XnmY zynTEWJ<~nH3+nfBj}UVp?sOuYYu;4bVJ4I8gjBndXRm4-VhKk^%q9WOHM>jRVh;*y znlx~R9b%LS=HXK+RGBJ3Dnm*U`qyH=nKG1!`0FC|#%56|2LIGW+ktfcUyRq#{|n~m zTt=yu{f$=MT_l4uh6^AQ1=zuRlSTEUn~r7nby{H>-A;UADmCg=lnFha!4N}#*u!UE z=>Q}+|Ay8AMG8$EUgMkQ4`~LAAT{urmC2up=@=6U;}aDB3pzQk666Zl*h$igwcrH| z0RLNbj(DB`d9lpDAhcnMyS%gd`i#&FhfjkgDs&`9_T-iS#se9$NTe`+Vq%I*INcD@ z&vdeI_&gY8Oh@+be;7d|ryA~eNn#iqbOp4l-H5YL@*XDN>MeqcXhl~B+$gnqe%IlD)cn%>{%;GG(*QGH0o_q7}F z5=V!FJwIxEZB2tSiVo#ZwnuMtZ)o;%W{qx5#aBh3{hs1*@uDah0rS%W^wlCNGc=Nt{AfM2wW3_XjjghZns5z7(RrKy9D)L!q#sCX6avb8H z!{d*r?k(=6XnElINuDT)9wn$e`5qY2QyfKjh%kGlqCWY`SQWrB$HnzVD!M*>KHV&k zkWt@=P>|>zLKRAYsnp~pMAi&NiPs<_kRZ0~7u~??-XR>Z9D)~D^JD+r*s!_-#IR*p zW-|@Rc@)_8kH^O~6XYp$+yRJo{|n+a>NV^_8*2LNMC2Q^!qbB@2z67&zj71>DZT@^ z-vRjk)FG^rm!VQfy!oS10pI?70z77TM8+_hH9Y7s(wYc-2ph2dc>xwNe2^pl^jC<- zcyM_ch$w`CFXayK;OBRO6!|5F${ipvOpc6dj^gnDQEqYC5kA718 zKW#Pr|F$Hz!v|S}%{%#^w!P<7ufZTVFR1gNg>XfDX8 z8F%MBX69JK=2&?3(Ub1)Nn`%Gy~ok%ozxLFiKbWLQ?}nF1spx=gU;~$CNwA0H=4q@ z-vA3CD_$or_6cSPVx6!&8zM7muAlD!iP3ie29ysu4s@m`U_0LfeamS3Yq{T8SlYxR z>~_6Vm!QMD3tx`59IB;0TQslF(c1CFc9b+ZUuj>Beng(X0<*WgK^hbhasHs|6xYh{ z*EI;aM1Falerfvce?nlYs|HNs^ZrkL_rDQyzlCW%oINZ3AF-PM=Sy@xJk@)+D*vVs zp;h~$Yw3p)kF;TO7xsvMzx6-r7Q2CbKz_yZ$28)0eDe+f#+HXFIMs^GY$tc1<0b*r zOeg+&a@liQAp&Ddy1EFK5*57mUY%AZh(XCxWsDh zp=-Pa`YVN~zh1?)KiOz)q&|e$rt)8dLB{gg$*}wT;?Jn3_wr}X808J7Tq|5(H-}xy zy`VE%pp?^-9b)~wU-Zq9F|h=ki%yUCUZ-8wnGY;zZG;JK&+B$QvX5i6iB7WSp=ubw zt`B|KI8;_?gvcKa7K(fzTy)sQm-lCH1=<-ycr-Hgt~i^BiQJqD2Cx0PkAlB-Mavl$ zVav4`qEfxo2m|sy_}2;gB+Z^hmT@@1kCww#Tu8 zM+W&gAlq(Crst=(xo1j++Y?&U*pm9l^O22bl@{yIrjE{JEB??-iNh0`aT^TLxv>K6 zukuyO%{WI$-c|iHbjI_!yisvAFy$%0?vsKCWxAqYSAXH0akubPQXL09oNon>COJDw z^jP;k`H49Q%jiZ+#l6IIMGscqFKR5?raMOw1eSjenoSla3Y)Oi$p)7e zSGZAOV;6cmS=#1~X4~DlpW%k@RI?gtqv7uj2UwUJ=1>h8KOL=mrPVmrR|4mCuX!}? z0L1j|Y~p_`lw5hPo>ed5iw#%R2EK>P1Wgx#vm6$2a{4kpGW{1S`2P=!^5nw!d6OxZ`^_V zX8&+kM|~>;eT1jW2^C@MkmK-gHmsDo&YQwKf?KLc_iuS|II(+z3Ixy^V2Kdw5$7wi zO(4$?d4)3%5SaqY{;gP3XRh{qR2DGX`1aiDqxw~msp~qfoJD>NCIu~aQS{FVQC=G+ zP30>S@ZF5!U+EFLNzdIl(%H6BLwT}-@)io9SlkU#7!T|2Bd>opzYT><41q`iLs}y+ zmel=E{|GI;6&AH(|Hhb&c+);s3ZHCKtz?b@n_hcMka(3NC(CCxlAYZ18f&e68y@;) z#FbdW9bgG`Q`O$OeThP-Ho@T5SRd<#(fBa-SzL%+8XIZ$xQ>6-x@ITlY(0jfxox`s zAehW-mM&zf)of(P*Z0JK&$@VXdU;7pfacJHkC&ga`u;?TuI8UBWbXThKsXIl&k7r2 zY55^AOioz7x90Pam7tn(QsQ6-qXtGQ!Sw}Zzms6GV!c&ljg3+F&B#CJ(EAHYxJ8%h zPebY-m{XByi*COVeP<2KQEOn{F{>LFlg!><~M#u0gL5{J|DSV-N?=@5W@t)gH}$1D>{w z5+5=xtqES#wx!JnwoQ(4avmAklqLiuS-HKth7@8Qht>o-TGEhv4rcw@Om6^3K)Amr z1SfGl5^XI`1IHA0`a@{j=H9j&mkmICTu(S{ES~5mw#B!cSAjOxqmLzE(QaGN@Y_LN zo+J_zgs`kV<%6*R-3U2(Hv~Vg_uqcVM757L?kkRmUcMwFg}9tQbfM8^s-2*O|FEEc z0U2tB)1tW}Y2y=PTqO>5^>bBX_wt&ev=)f#DLr+9MNAYpv9646WLQ`)3tfVS_S{Y; z6SptyBS}hgO5_N&V%Ph(osxU%-sLK-i8?3A4?TT9cgv*@+4gpb_S!Oa#VW5aIVU+q z$(KAW0kSt;)HUT6`x>LVsLuG^9%7r6(2sNN{b=u5HrlkQ`od8WmaPrBQSI#WCh2Qz zv!~c9(T{Ac?y*$fs64o6Lks%k`fc-0pDJ79PEOT8#%L| zen-xuZ2>nQ?rF6P9e?%?UEMlug+WI3H8piT_WJmi_bf$o-~O9iEj#`H1bd2C55d5_Fu~kd$V$rVk7sP({^~F#kN|DIQnUK zOzRE*K-ZgVW)5q4F%MR{y_1adJ&&!XtCDumhCU^E82qEy zZI~1*`jJ)iuUioEC;TQv>xO@Jw;+~Z)>NiC5>#t4Ry^@Tu*r^P8T_L@kp??{jJ(47 zp6-=_-SGb)BP|)-6&!f7R}x+JuGQ=+cOQ*bLA|6jhkVw)@CVf<9Ma#?-jMn?<|7$x zKiEEO7qfE!dr(*9SRhZN2d4=+I9L{OF>n}w>=PwmWW#jSmO_G5w;x7Td0c-}PGSmn zEFI-paf}Ps?fLO*t@Px0KTD{)i`V zP;KNy*4SISHQLAN$D2FMGNwhk4ydbmgYhj1dG@s>j;jOj$j_RxCps_zQy02Zjx0|V z=uo1BB}5378+qhLS45%MUu`h7y&^*vfc%2V9b}NK+z7LC5U;h;@S-;sZY3kr<-}R4 zuPT|n7IG$!Ka(Xq%H~kFxF6Ke&1l84+2^auJ!R0k!IN`|u7xV7sO^ z))O~$4<~tA3V?GafvB^9x-4%5UC^|xn+jI1L~!uOjCvAncM$Yh&~zX=Bzq6Nue3^= zYKeDN)`T5Mqu5AGskiO`==vjgC*LAA;!2WYIQO+#(DA2mkL<;ZQ@Be@E)s8zZDzZv zY5MW>!mR@P@1Hq}fe}q{zEwkd?N_9q>OKj6FZw3LmH3js=aFjLOs5<+^_%^?F z+hJmqz7J4-3NX1C++%`9^o&qFkn4IYP*c&gY)vDoc15`v7ylqh)8B!!Dj=%BX(?1cx;L*QM_jppo z`S;?J!eXk((0vskkm{3%3VXHdI|d(-&t-b}o-jTis?6xG#f7nAN`MSr=YOWPGcPgD zia|KJhenIXtU*ME=)bLAO01fX%1S@Zz7tu6C?P0bg3BC-PYHl5`g=vY&sS7zPfJTf zOJh1NR`f~1$7%w4`XWm1!?vhkF`dHLr-f`6g={|J|E3dvGMLgB0CNAW<@BQnt$*RY z|Ncm(0;I~)AE2inbQ&HP{323N?Q2PWY=?TOy`A_y@@J$>2Gib!Y}3<}_y0cjJ#roA|LTig z#G%+jl?q}B#Ow9d)tPsPss8&oYRHwu{%pL*$cMX~r+=xVsuXhv=&kAgKH-Ys@A`Ya)ihQabJg)f>Fu&dn zBROEuJg_J!cLtWV`xt2$f<@>#QPtZW#7O#~z6pxle;vL_s~| ze>k4#fuDsCEVh3C3u=YQ?QIVn3So{=!SM9mh)yjNdz*UfkEL?na=zL zeiO;GqYxvAoNR(@BO>D@_dNsadn7gtp%u95xwL)cPuTbc;!BvYHR3R`x_knEJ}bwF zI(#;(xF#JApp)Dczll!xxjx-y&E0#ntR2p*dVFZ=lqa{}hMQ|;k8Cd-q=^wa#6|eL ze%4MPcj;E%#Vo$aftEAG|C4+or1NFy4E`)vxqd!K=qA(CtjFUmhh2`lDfLbcFFHFh zOo3>B=`F3{i#8pWXE<+shm_8$x)7b|%;|lH4{=4f=a}LyI3#jWw)ep{e6xof5&e%A zcdtCW+z9)cCaF9LP~H z{Tp*yU6Hc4LBhASj&cH|={s*NAqJ@G{PZ|sUTe!wnSxL{R~yoRxzbQMAvz&V%9+}fg7Adek`L@L4wBy{DWt?1bZ^@fpQ3=daN#=w90t}VnlDf zw=?t(5bqr#*V(#oMui4Nt&aWZ4(>$gjzGv;&JgH?{KKACYp)<9-xY{AI1YdMTs8b@ zhn<0cfEZY-ay8y}Wv;a?@l><&hI^VB8-?obn5QkB$9t4(759``j=%^cMc zSS@q~?C3$+cs2ir@f3Guv_FAb>h zD7+%H)lYM-uzGKVR~<=44?c zi70K7^7D!|f853C_ubM|zYJe!>Ud~y^0TLI+MiJsNEj1|h3S7V>!V?8xhVa^yFl=} z$mwAWkM!Bty;Yo}kdnl@5|MF*`rJ2(crSk+>zd7}0!sc6@A$Xx&>al$e8OuBN2~Ej zaN|hl<%zc`71^8Y^Tyv3KE^UY6`w51^ZLe$Xw*AC-7dTmcW9y>xts=8sC(jE@2cBz zVJ9S>C=%TJJgNGFE#GXCd~c$=!%TDT~$B*{((uU;RXA>I=lfSq{q z@{o8SlS43X!8{k8@etiafVZ9+#ba7r=`!bhz@EAt0sa5t?X832_}XpZNwDA&Ah-k# z?ygDj-~^WhhY1jZ4KBeoKyY`0ySqbho8U0G&!7VgaLMnz_tbmpoO`Nn)mL9t|2MsR zPw(!%*0Y{x_g=^HG?Cn&@|fC%n310U#KKY|qtZQMidQ176DA(gb!WXm7gd}spFS2Fx>P4*w z-aKbX_Ybg{RhOYv^Oy=}M$XKQ$`c;stDE)@rFSmqCn+dQz><}9oX(IDG~E^2$@mNS zw17x50N|7JUzeOTxdNu2IoD=c`mR&^@@iDs)IEOL&HxQa>T9X~fXGy%h&@Rb>!4@! z%)>dKqeyCskuUif_;MT7u*qLhqVRQ-yQtY9zE z{BxP&qDO$nBj6-!+nDH1jM1S@4PiDKiIwTm?m0)Kqo(G3_rvk~OP5=nD4(%)YMeu< zY{)*>YA2KG6Zb6>;shi%XNB6DZ0v?=xmBe-0;KteeJ0>f?a)xH29~&euLCkNzylBWIjv+73`H4 zMw~J;N~9L%VJbV~Ux_A|X2F&IgW|yP4qA|bHW=}7Lv&1n!TJkFWPI}%J5tSi)~V7F zgm0d$eoQ|u%JQP#Fn@Vzt1^vA0;9e761^PRj%i~n=YE$9Wn9Hm%gT-0cd#r+<{)kO^VHL=)rNnDL7_F()| zEuVolosZS9%Fqtxy#{a#-&dJ}W%Q`!XOV1y0V+GE1KjiNXEm28m&krHg-an#N!tXS z%Mtf^hZki^lIXv4t!I|@1u^(p7X*#gMw?xkPPwirL!|XPsGtK`8?Ab;Yc-}vSIy6d zN8<%csV@6FVvC1i_xvAgl8*3gJh2D3TEoPw+P}cRZv=mbP~$BDozfyahveDjC#rr& zr_g1Jm)1mc6MmMae-;@ZZ_K{QTPz3Lm2Rz>vFG%e0LK0BxIevJK~Z>i$&07?%lrn+Kwv zl`eu+BoSupK|?Bdr4ICdwZJ>CU!wf;75Owb+p}I2i9Q|jJOpFav=7Y$B)>D`cdLBj z*4K)aZ=TU0qP+_ZHQ~em?P95Hft61c{FCEq8Y2>)?3EOanh`X=b1x%c;n z)Y3+=OcnQk(&@?{F}U8$YG|4%r!_OtXL|nYj358U#p<6AA2gK!QYU`_>ObcD|5NfF z&Evl$H4Ec|k*s}ti9uvHB5 zeCQZF8aYu7hb1uTL=|Y}9ur?TdK|8gILebboaNcF`v1U7{Nc zfV`{vdaKfo?4|BH_<80z;xUIG5t2F9K4cBejZ??#4N>_#DtH$TzA7v`F%>o~_oXW~ zZm~vE(Po_ZLs%l=Qx#?q8nh=QL9(L$lqPg|t^BPMpyER+_Y_ITH2W5KME%E~q9y&$ z2$-_XaepU^Fmn~|m-z1n>&3rL4>cHIvgvt%{e0tK`##wf(<8 z6m@wIoslf+FCAkrJmol<{#*&Cliph$VQA%pVn|5m;gK($iPeAPezXMTh^MozaL+1n z?$d|q`kEgBnN#sk;{$FU<8y`a)wJYWWB%jU!`SgHt*^x`P=etRU<2~(ySmm_`SnI{ zvbFX_m@t!&_yihsUpJEkb_TcH9cYQl=wo;HnB!z;iyL!IPhb~|ZN9;YJ(-pe!llJKBVi@cti56KI@l`j@ z`~NzTrGfGPQ{w;T5pWeV4IZ7UXWlTQ)q5Q$CA7#TC7Dvm1=o25FudzsyS$Q&t*qVq zKMh#OGuaCyLVXiJZbt`wjbU;QBD{})9GylJgQb;)F$dSst7+L`7RePBIU4ZqRgoDl zYNt}p5Cmqv_-d|sUwl7n%`eKgTkCh30ZrwCJ!Av9i@A#i?$i5Luke2Trjn(o`s;QJZF$}Xg=V0m#)h9_p%`Y$8S@b5OB zPoWG=L2lf?CR)B2#*^AkC*$FbzNicI{|8%{o}wLjl{eP;Lk0O1lPb(i|3!xX{Lgkq z3Nruw@(e;vg-=~5L*n=UIP&`KJat)Ei*l&=g6{Q?Dh(dTR2N#IzbV+x!kiJNd`&=%$^|>P|S_4Mt z{p|rme{7?#Q5z3Qo z?Dyp^6?%rheTxlAQ-Pq_09>JNI*RxkaDk2fZlIUjM(0a?kn7;lb^K!IB2pKf6+Ip~ zO*%NDuq`#ISDdvQihHp$C(pWOv;Tx4g8L@=HVrmK`-u(KTtD7d$7GXK_(JsPHX1{} z@;-d$a6b;;^+BRB3A+08z#69T2#kp!ioQS)r>!R+7p<0fyoG0u%GQ z6X9zUarrlq&z<(ct1Y^hn0gi4_0f=5O@T=Cit9Bh3@s^1^!*6@nka7mu0=KTU{SuL{0ir;V~73hw0K}J#We!kL0ul0rAoS21FCN0r=0F6tWF^%G{-gd_Jq`Zny)(y zD+*>kbd5vf9?ASP!gcVX6|_O6tyf{HjSfuv9Dh}RFmyYn-DBb`Qoxj z4OAhi29M3zf8c6>PT5$sr-g7aUWQ&_M`um9KmmMh8dD14`po$S`4yg8Fz?I+NEEA7 z9Qt<4?8g)=r5}E74$`MaNIWHp^Z;S{RI>@P_ZC*tB;*lsTxbl?B=4;#zCK17wR%Hj$*Ep3Sy%K%(Jc4 zdjL|#T04Y#j$u!{Oqnj9Jx|dw`Viv41TN2K_6XnxQX|k+VfhbhQ?N$>Ef5#+LKRkW zYZc+lZl%#Ob8)P)xO4CaqPyu8dvQsvxJb`Te}TjwZv*khxuq6a)2Vh|){*dtmP7uO zTIEvC<}zE>d3yT@h~hhJkv}ZaeFUt(^^KDL42gQBHM=|W#f23Z@%t-QtnB&^+;ar0 zX?R}gK|>2;g3~YKj^9A*(Ks$rA*uv}-b}igHqCsw5}R*ziPHqn%vq!j1=yJbm$gfD`v$7a1CBdei0gs(PEZ* zTQxc|!=&i*w{bjj6)aK!62cHPv5PVz&i)pOYK}ajj6a-3@@6eK1zt70vzg1(BSo`q z(nU7<6sco#J(w>hg%cz`Nw1qxddy|;YSzv3!5xm6^o|RShF?3suF%l-9&aqtw@tjY z=-SIS&3R0;$7Q%&{rkzXm4>B!Yh^IeuAU3?pX?S^fw{z7XO&nagsiu$k8{ zFHCWCp>Rw39EmTevjisc{p)bP`V-HC?CnU?Fp@-FU0vY%OD*RWGu64xIAw`5%!H^> zd(*E=x-O`dQwp-Oyr~Y!S!*VvY8H`iOb`8sg$e&Kh3^n0k`l--owVRd-;yOJpV5O> zyT5(qaU4^hzbvK3-Pg4Bi0t^7FSH70`s+-&rFA6|RgqWJ?+fG^2C|?NNO!S#o@+}F zJw-Bkbn}VvbV3FBri2740Mf!R{Jd3C#Z8*sNDUblWs+DD9;!fRzFX$(AJ2p-G++O- zi}l=8GgcAJYy$GNnn9Za-_*c#!=K(Nl$h*Ge*Sm-%fx5>6f<(FF<(Yr}-7%0A5DGy-> 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 DI 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

s3OS?z3F^InBTC6co;BRNs9?&z}DT|Scl^|)S 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

uAlm9DU6>{8KsNu^4iwV+B^qHKwd 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⪚urseJ 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

kBCjnUMk4a%mIQpGf{3tM ze;aR4HSzGRryQGj4Ua4M)+}Oj;Fa(B3e`R(Xs5DL<>Fn&Gyp;lzM`o#d(8R1j|GV2 z8u>&Y9um#v=sCu0+bG%-4Bq)=eIl~L8e#TB4*#R_pLnTiZiFD}n*`GMxc4-xPj`AX zQj4uv4>f!$l2kGG?Hcx)k>MY&Jku>ucC+fhc~{>Um+Qrp%})z_zWgWNh|%?D+Iy3f z4<4frNgLz+I%^~XvzpeDV6B_`Qo|P)`iYYjGc>1)s458BYr#ciNM&S8|XEt^h zKA-~*41mf)lD#3OGC*^!gV?^FCvjJ-J@C38mi}0cqCr|vZs#ES4ByFC1%6(XZ-R8$ zZ@$z1g-cH0OF(BAsoLZHKtHtShg_paO{e4O3x&wx)`;-EKH{ciXC4tWHn@AyA| z{O7jUyE_uCZw~e+*ZXT-gu|!Ot|b`1u^RjeG9QMD%qcUaZgF&e&*}HAjX*i3PvC;# zZ4q;|s>0i8O0VDc7BgH%yB{MCkOpNFOeyOivRZ$8PY}HW-?wF>KD<(Xmztkc@*$1M zU1y*aNvK#5unkW7ZHDPdQ+vv)jOoJzQx!MyPFfNFZb3Ugm*Co+Cjq+N_q*PdbMgL2 z;0YPParQYauO!(HqC+s=6vcWB>uR;7OZ6v9_gLeE#x^qeTeZYQ1|ZF)4>LZ+4ZKqx zn+*+6t!{5IdnF}ZY#tceJ)NP~m}E92M4EUTpN+Jw>08$Qi0A6ms$(d<2c`C;rMFdG z-lZuIe75EymD%YRF9+h=?^FcnPCrUN(SBfIvrzc+31REUy!Rmfjo5^lTGC)CHH3ve zyg#Sd!9aqf;FDWj&5{hALTxPCHu{`Vrk_`|n_isgbBG0w&{RjJi;W#C%O&I9qGF# zO#Y@CrUHzl5(cWKV*O;7?0!c#ZWcEr4xl^8FOyxyf}&BSqC?^aekPkHn>fr{1)zQz zP9GF!Df3vJb@Pbcq7yuiOG$ND6&{-mZ;;=BEHZT*(H#`$wyv*r#1xHr9LV&jbzF-U z1$rfh$0;-`k^OWH+vP5vKpEv(EGk=*=Fppc-%#WjI0_jgbWLB${qA{m-#&=0)+AGB z(=sl8dNm0;cI&0}v`FAq-Q@0S)9-_&%ZmtT2Ff z>V#2|78fUyd~T9fRm$i5#nF^xoiA(k{1<-l@Uk~Gr92E5esXva44|##NBSekMYwql zbY{s#N4EUy%{O%X`q^eW*cTP>E#GZuTGzdy_9I?LAa?Mfp% z38(k{KD^e{Bo~FRnnqCs8#5_X#1~rg#rB)=A{>C0JG3YV**RK9>2D&%4d}_{ zNFiTH^CC1en}PTw`k-rI_&k0{^y$-KY||SE(NH=Npdcunv=}hs#-McSIA{C zfDdWdJnyYpuX@9sKl^Z2N>Rw(>ybLQ2EJ3@39%aUVKwO-8iC@XZ?ouz5DAyk-_M=r zj*@3{jhm44_Bsq4_R{*1-2a{B2S0Jq6kY$6l-O%`whKWuA2!#o>_f#gjKShmzrjRO zAlr2^5{L4&yUu5nbYcC~ri(3H-_{vymn%_TYUD z3U=pNtCBUfiVe3m-4j~d-}_C8{REyTOzOr~eB8nS(g?n`-YJ?My5u0Rq~^8jdjDfICD0r-4UFozyMYtn zs}w~F*zv8-w(29eL`wtEsyMjvMIrHv$(Ju5tRMt#@}Jn&T;^6yJ~Pm0!y)g61SxNt zwD`H{5Q{)xXaw&i-J$tHFK$4?IcpdO@ZTB|vPHbC+-&B6;nTS(zM`eIDhjJ*xqbU-~ z!lG%)V2~6bTpwYIj9TlU=)3n|Ooiv|h(K_MKh8GwNr{x5;zj?_o%y-d#rd*iQ^8|> zkiyOw+7nw%U>)d4MoaX`Rwsw$nfNx>lwdxhEV0VQlJNW2P%^(jceu|=PlF6gARe#I zQk}3kKh7X)F@6r~WVr{`Mvxd%*?%noxZo2?qVw1Zn(|v|^~fv&DFDU#^|+K~o@g5^ zPC+FemhD(f$NmX?7qpeW(N2MqY=JXDf*NM4N2M2|z4|hvDH%Ku-Hm|vW$rsLi6CBQ zmAZV(zsKXqkT{s6h4Zyg@+;bNk6(FHK5--S8=hvsOR8b!S^Os-gw z8{FA3Q|?{2FG4+;(b1E;S9hGJFzMQ<1!4%&bBEPZi>{E?K6Vj&Wb$m_RVbd|tt(;! zJw#x)i!&`m53-meoH&%#`NjvU`vzCl7In^6e|Wm&=GdVDO^d}tSWrp zR88`s(BPxRje2)&r1`a0JMxaFZ}IY=rz?BP=n>m>SCA#1KU`vZloaU)x*tF@RxVa6 z#`z{`ek6i~xb(u1ZWd|3Rtll=d9~T0XeK}6RolEUp6Pl*R{XHOjzr9$vH67OtmC^v z1CzyE%H`RhNG~^!#k~p-4+Jo+V)V8uYur>rN#pP0xRbs0z z)K*!2{O|B23HQjJACuitWI_6_$0@v#S?~?yvb1LAwAgl7c`q|sh$0Nry=MQeNt(&i z_0u8fRSU8EN`ZqN&~8SCydvk@!o2k6OeR}X{Jp$8s^-$J(HX0|4^h11(OeZ9ZeFoA zM{m>j&V&UGf8?s_au2?LjaYGM^QG>U4s;TB1mpU+D>hU6MP26j5G*}#gI1_=lw3^@ zLGIi8_16@kKxsX*sUyr<-=!38XqCj1u69*YK0D| z62r0H&7M;Rq7#9GR+c~PUFH$5hGX9iiYik))q@7fii{wm*LxFv+;zb<_A&J{x=qe( zKTt(kI!!L`aV+YPj)goAQu%Ov6KIpX^t-&Ig7f_@%9fb$&2+1sQb)n@PBs(z~8*#{my@t|1fTCfL*EHjyUTf8p)DgPQuj zz2P7#C{0j$6;Py!^dcQ;A|N2007@qmLk+!2?;xOb=`A27^dcQZIuZ#GNFrSzp#})> z`n~US-!Kub!sugA*C# znshbR2c_Ik@;pkeWbaNS_c!+uKaQ>#w`E?}BRflF$KM$t)awRZf?h4TH63?{fiD(C z53inte5qy%i4)6vY4w=7Nh@srPLD6gH6Sz}WX&>dX@krA(ttJW3!Fu6>z6_sgh%vs zpBuLT4&m85V!I;4{qnctb#v8R1!|hdTLWuu5Po0!DI|LI5Wg73{?>YC7p2vf4;T(( zQ`dEg0AAKYZGyy75X&lJsh7vGJ*?ARSKS>@u;gwn37S=6WVvG06c~jtUQGN*B zEY(brb*m|F&y5T63mIIAMhqw2e|7b}Gxk=;vozk^s$2~DGnoYTiH>D5o%EO3V!b>_=G zH}YT9wFA_>l}U^9Q*PUeRJ(DP*&J?a>s`QujFU! zfA=My`OgdnZTq_-5H{F`888Q5hqmqJwjIhUc`={)s{hife82sI^7C<34|QRhZcP3S z$Xs4lk|tR$C6)LzK5N*=j6W#pJEOQZaEPpEDRN4B3Ny zzRdw6_A&zf5_%W3Gqv#Hr6x*oa>|&*59i*W$er14()F|M_8TQTm;K2yaNI^PTN~^IUYHzpJu=e+JxUXKl=cY{d-mxxOPfVa(Kq<(0#gSfb_xp=`YRjM1Wh1sh zso1*2#Xf0ld7_=UR)-kp{JBcZUJ)y0NLLbn7j~#de1&S!Ij%QtQ!F+tISWj7PGljs z5hv@)K3E~<*c7;VvqIF5JN$!f_f=>FqDwgr>&iJfEJ85CsTF^5inVk16Z&{6li={K z3Uf=53oHkjG~0wtMzt@3vejd}c0EjwN8BC&mtMVao;o!&WcW79u&-8ZpLR7($2^KS z7tN=nx)rTA?z~k%1{LV^3e=J>_w!q`Mf7^C5z>?B>ebt7*`)iU%Rd^C;;}@HCjxf;L#To5UJi6~;7{o@Tm_fwqM?2!F+}#@ zrSzn0K&e-IPo#JVlf^K73{TSJi=@ARbKzvXZG)@)(^Y=|VJ(`>5n8D6P*tP&bw%j= zLa!Tb$=>wpmzqQTe3B0fSo~B;mabTYppx2z`ZS!6i~mFn>tH& z2G@n+t;}&b(AqjkyH9M&jHy|@lf#McCdt>@Y)n7G1~#O^TyjPzTvd;lAir~M=4*NYGD;GBrAwweLgvNYiyKfjH1R^zo}8uy1L_d z%fyO;AT4|1o4$>t*XBg}$u8PPt-p9z-dO0?y>UR>gLc0?2zH1EKBds%APV5`_zdun zu})J9F2>dRYII|HVqwInab306`niKtQ@ip%^*HWyEG`>n4A zpOpI}6@gjg$c^Y=-?tv)i%I;&*p~33soGkY`A*rKc*lgB5G#22^j^r_xSomyZkpw; zk8fcVN;ib{3Fid(7`l#28g2b z!LUEv=v1Ui`A?4TtqF6s-+za?44$yCEh%$4%&Kb;p__lQsM>PD!YT44uz&7%3em;S zc}u*(8=QT)t7I&96f5V#K>gNxiEDs}($x1~zp0c4z1mO85OmSrA*^3>%?GT;koT;q z3}zaTI=1J z>1uN z&DEfyt@IV-cdnL5GSU0zRQ`ulcU3C4WSYw{P`A-esBJ|3y{2aH4Idhr)dUCDXQHN9 zB;I!*gmsSxbP*75^#^A1TPwU6!o|m^v5}v#>1#=g%{%T;@+SBEw$$VS?BG2Q{{_u^ zOd-?vouA^_Kr^0!3X*@xF#}SIFsS8Y%QQbJO}O zM&nGY!8SS;EAt>e$CdfPOr)VtV30UL@ z{d@hkZK;u7@eFKEpEgQ?+`>GktkpceEL*~M;p4a0;PeEHLZa`_jcdTYWnM5*hS`;xhg3C1zSH;5CAYoEhi%L&9C$D#vmf5H zEZ8sg&!g=Nd}qf_CjQlgeCX3g-2@D}+M#8zns_hf;rbBG`-qG1WF~}Z!A(%G?Y&(( zQTBGJGYVUR^qipBN~8?=X%@8-X^WwdKqz_Idr{zbDR1(Ud;a(QXRDuE%o%7*?ZX&J z@3<0w_xvMjX^73&ww&#Qw}0>#97mQ{TXZd?>2oHAUGxa=&S9y{{)n;PvJi@0!x_gs z&D=NQ(?>q(J%HYy79Ew^4w{4laRfbuC{v`EgL#YuokdFE+!jzKXj+q7Q{+La;Zy?c z+Y}I;?%iJkQRZ|xx*rd7jQPs9dwh?oKH+q-7>5_UKaeB^#)8i)6*7#ojImb@x4JvZ za-JuJ%PF&#gtT8Oa2dVD9?f@fPkUFQKd>L)XK#9;-mHT7@7E9g*p@z_@MlVZue_ZvI^di?8)LAoQN~{q1JOLHY9Jr5*?rBsa{L62dJzjPrYBp zsAAo8H+&KS(M(dh2HdbQyhp!Uz=aLi!#zn+Dz2YoATJ{g7llI{AdTd{tGgJuBvD zkV|g{)03!vzAN{2c!$~Z?EdSsZaVm0?7NheWQ)Zmp#$e0hcf48`l&Pj4xowce%uyO z3OP8MVN$-RC0WH%6t!z`VT0a?l~r!eGEOz&n1#|YoRTMZDs4)WT%Ffup7yo3B*H-E z$uw1Fj`L}E-px#(Hr2|A)kqO;dAB2>^wD1CiOL#m8m`4p$JmJO-VV6r>uQOm*)gnd zFxPxzX$JfL{GLQ4pERpF^1&q2&LQ5W&-c8ms~l0b+Ez+XeZCwwHqK#KoNVYWP&;oos+$pOa>G2Bp7FH@B#WmnM)F(Jtn-`xc|#W+9Z?@_T&SA|*<;Rn%o@u!+kH~0GRhbFUCQe+L+Q@* z%W>65h9Fn@naPj^*DoJN26KlQfCI-otj^=Kv1r{pn^yv}iJ5hdjp_tSDad41i;X_S zq5tHHeyVUr@Nu>|M1)K9p2-c(A@zA!rDIWCulrpSg?RYD#7xdn^Mwe-3TLgRtpB0; z+`sqTuqPAEtR7%;a~AVkc~MDzy;UI!$p{a8?hVzhRdPF($rx>uyrh_O?yeB9~LuQnPBEpW#eLdi!!-O9k+pt0tajp7~=qGa{{R`y}t zO}z1dnQ@}{a)5c<_{y8NQBm)P9+5=;_8OYT8qSYvNU%-r-Nk=qt`j~KOoyY7=>&e+zBg?D*QI$Yxv=&z zDx*Pq)ux4Z6W1tmV+U40GV$K&c)|j2=;nGnc;QtkU)90%zSv8%#nJGD<;uIU+$<BHO(7VQGvXM5z1!EGPFhG+hJk zZ28bnR*0$X=%w#lS`ZE{iLR*sJmdF>TR&d8>BMwZU$)(%Ct~^QC3lkJ1Y_t1$UgzD zsY)A$awpyDrf%+t);ZKgY=C03)kdF&q(IM~)aX7KthR78HbU?zx<5`VHqQHAWosi# zoIQkhLS3r&1>cWWo#P1ABop=fs@Z0{q{)*)Dhqdd;|-D)rw~EU@O}`Kb!GJE_)6M~ z;mj%eHCpCGH?Kdzf@L(CnGO=aoN01=FtTiNo?ZWX(Di}9pBUQQwO^Db7jyrtG6NuSr4gW#fnzGB zzQPdjWEJr2*6aDQo`_eUkH(a|{hDGhPB+L;xbuGw1@d8$ji?~Lt3|V>M7O=#?6r*~ z!}n|Tz5Dt6)BK{q=~;`}#Dtj#Vaw!&$H2hDXGUt$o@29>pgP#O

!6SKMp0PWXP+uIq#14Ru=R!P=Ni3OxkVu1 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Ð(g*-7B(o?kYu%bP|x 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

^bB_i6xTe@iLi*Ra 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%0DqhcX4{wMW1^VdOL;nSZrG>H>1 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༚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 z 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

rL`3A|DeFJVgK`QJ`w_OAp^K<+m<zX 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 h#-NYf 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

t(`RwAtvEjo^Gu0}S{=>2 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 XQ2t)mbqEOxi%1B;0AR3^j`F_&4M#CB literal 0 HcmV?d00001 diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index aeb84f8..8992b2e 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -24,6 +24,50 @@ def _skip_if_doc2x_internal_error(flag, failed): pytest.skip(f"Doc2X service internal_error: {first_error}") +def _skip_if_transient_integration_error(flag, failed): + if not flag or not failed: + return + error_texts = [] + for item in failed: + if isinstance(item, dict): + error_texts.append(str(item.get("error", ""))) + else: + error_texts.append(str(item)) + combined = " | ".join(error_texts).lower() + transient_markers = ( + "internal_error", + "connecterror", + "all connection attempts failed", + "name or service not known", + "nodename nor servname provided", + "temporary failure in name resolution", + "timed out", + ) + if any(marker in combined for marker in transient_markers): + pytest.skip(f"Transient integration error: {combined}") + + +def _count_pdf_files(path: str) -> int: + return sum( + 1 + for root, _, files in os.walk(path) + for file in files + if file.lower().endswith(".pdf") + ) + + +def _assert_multiple_pdf2file_result(output_path, failed, expected_count: int) -> None: + assert len(output_path) == expected_count + assert len(failed) == expected_count + for file_path, fail in zip(output_path, failed): + if isinstance(file_path, str): + if file_path == "": + assert fail["error"] != "" + else: + assert os.path.isfile(file_path) + assert fail["error"] == "" + + def test_pdf2file_v3_model_example(): client = _build_client() success, failed, flag = client.pdf2file( @@ -74,7 +118,7 @@ def test_pdf2file_v3_model_formula_level_enum_example(): client = _build_client() output_path = "./Output/test/single/formula_level_enum" success, failed, flag = client.pdf2file( - pdf_file="tests/pdf/sample.pdf", + pdf_file="tests/pdf/formula_level.pdf", output_path=output_path, output_format="md", model=V2ParseModel.V3_2026, @@ -96,7 +140,7 @@ def test_pdf2file_v3_model_formula_level_all_to_text_example(): client = _build_client() output_path = "./Output/test/single/formula_level_all_to_text" success, failed, flag = client.pdf2file( - pdf_file="tests/pdf/sample.pdf", + pdf_file="tests/pdf/formula_level.pdf", output_path=output_path, output_format="md", model=V2ParseModel.V3_2026, @@ -118,7 +162,7 @@ def test_pdf2file_invalid_formula_level(): client = _build_client(apikey="test_apikey") with pytest.raises(ValueError, match="formula_level must be one of 0, 1, 2"): client.pdf2file( - pdf_file="tests/pdf/sample.pdf", + pdf_file="tests/pdf/formula_level.pdf", output_path="./Output/test/single/pdf2file", output_format="md", formula_level=3, @@ -153,6 +197,7 @@ def test_single_pdf2file(): print(filepath) print(failed) print(flag) + _skip_if_transient_integration_error(flag, failed) assert flag == False assert os.path.dirname(filepath[0][0]) == output_path assert os.path.dirname(filepath[0][1]) == output_path @@ -171,6 +216,7 @@ def test_single_pdf2file_with_subdir(): print(filepath) print(failed) print(flag) + _skip_if_transient_integration_error(flag, failed) assert flag == False assert os.path.dirname(filepath[0][0]) == os.path.join(output_path, "sample") assert os.path.dirname(filepath[0][1]) == os.path.join(output_path, "sample") @@ -187,49 +233,21 @@ def test_error_input_pdf2file(): output_format="md_dallar", ) -# 测试一个文件夹下的多个文件,output_format -def test_multiple_pdf2file(): +@pytest.mark.parametrize("save_subdir", [False, True], ids=["flat", "with_subdir"]) +def test_multiple_pdf2file(save_subdir: bool): client = _build_client() + expected_count = _count_pdf_files("tests/pdf") output_path, failed, flag = client.pdf2file( pdf_file="tests/pdf", output_path="./Output/test/multiple/pdf2file", output_format="docx", - save_subdir=False, + save_subdir=save_subdir, ) print(output_path) print(failed) print(flag) assert flag - assert len(output_path) == 3 - for idx, file_path in enumerate(output_path): - if isinstance(file_path, str): - if file_path == '': - assert failed[idx]['error'] != "" - else: - assert os.path.isfile(file_path) - assert failed[idx]['error'] == "" - -# 测试一个文件夹下的多个pdf文件转化(包含其子文件夹下的pdf文件) -def test_multiple_pdf2file_with_subdir(): - client = _build_client() - output_path, failed, flag = client.pdf2file( - pdf_file="tests/pdf", - output_path="./Output/test/multiple/pdf2file", - output_format="docx", - save_subdir=True, - ) - print(output_path) - print(failed) - print(flag) - assert flag - assert len(output_path) == 3 - for idx, file_path in enumerate(output_path): - if isinstance(file_path, str): - if file_path == '': - assert failed[idx]['error'] != "" - else: - assert os.path.isfile(file_path) - assert failed[idx]['error'] == "" + _assert_multiple_pdf2file_result(output_path, failed, expected_count) # 测试格式错误或者损坏的pdf文件 def test_all_fail_pdf2file(): diff --git a/tests/test_types.py b/tests/test_types.py index 3a556e1..e1ca103 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -1,6 +1,11 @@ import pytest -from pdfdeal.Doc2X.Types import FormulaLevel, normalize_formula_level +from pdfdeal.Doc2X.Types import ( + FormulaLevel, + V2ParseModel, + normalize_formula_level, + normalize_v2_parse_model, +) @pytest.mark.parametrize( @@ -26,3 +31,26 @@ def test_normalize_formula_level_valid(value, expected): def test_normalize_formula_level_invalid(value): with pytest.raises(ValueError, match="formula_level must be one of 0, 1, 2"): normalize_formula_level(value) + + +@pytest.mark.parametrize( + ("value", "expected"), + [ + (None, ""), + ("", ""), + (" ", ""), + ("v2", ""), + ("V2", ""), + (V2ParseModel.V2, ""), + ("v3-2026", "v3-2026"), + ("V3-2026", "v3-2026"), + (V2ParseModel.V3_2026, "v3-2026"), + ], +) +def test_normalize_v2_parse_model_valid(value, expected): + assert normalize_v2_parse_model(value) == expected + + +def test_normalize_v2_parse_model_invalid(): + with pytest.raises(ValueError, match="is not a valid V2ParseModel"): + normalize_v2_parse_model("v3") From 09058103a4d1a96cb15854affa1ab38145fca850 Mon Sep 17 00:00:00 2001 From: cc Date: Thu, 12 Mar 2026 14:39:59 +0800 Subject: [PATCH 39/46] feat: add v3 json sidecars and crop helpers --- README.md | 62 +++++ README_CN.md | 63 ++++- scripts/extract_v3_figures.py | 6 + scripts/extract_v3_tables.py | 6 + scripts/v3_media_crop_utils.py | 388 ++++++++++++++++++++++++++++ src/pdfdeal/Doc2X/ConvertV2.py | 66 ++--- src/pdfdeal/Doc2X/Exception.py | 2 +- src/pdfdeal/FileTools/file_tools.py | 5 +- src/pdfdeal/doc2x.py | 84 ++++-- tests/test_pdf2file.py | 229 +++++++++++++++- tests/test_types.py | 36 +++ tests/test_v3_media_crop_scripts.py | 104 ++++++++ 12 files changed, 980 insertions(+), 71 deletions(-) create mode 100644 scripts/extract_v3_figures.py create mode 100644 scripts/extract_v3_tables.py create mode 100644 scripts/v3_media_crop_utils.py create mode 100644 tests/test_v3_media_crop_scripts.py diff --git a/README.md b/README.md index d88fa01..109cd5f 100644 --- a/README.md +++ b/README.md @@ -129,4 +129,66 @@ print(failed) print(flag) ``` +### V3 JSON updates + +When `model="v3-2026"`: + +- `output_format="json"` now saves the raw Doc2X v3 JSON (`result.pages...`) instead of the legacy simplified `[{text, location}]` structure. +- Raw v3 JSON is always saved as a sidecar `.json` file, even when `output_format` does not include `json` (for example `text`, `detailed`, `md`, `docx`). +- If `output_format` includes `json`, the sidecar JSON name follows the `json` slot in `output_names`. +- If `output_format` does not include `json`, the sidecar JSON name follows the first non-empty entry in `output_names`. +- If `output_names` is omitted, the sidecar JSON falls back to the original PDF basename. +- Deprecated direct upload is no longer used. `oss_choose="always"` and `oss_choose="auto"` both use the preupload API. `oss_choose="never"` / `oss_choose="none"` now raises an error. + +Example: + +```python +from pdfdeal import Doc2X + +client = Doc2X(apikey="Your API key", debug=True) +success, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_path="./Output/test/v3", + output_format="text,json", + output_names=[["plain.txt", "viz.data"]], + model="v3-2026", +) +print(success) # ["page text...", "./Output/test/v3/viz.json"] +print(failed) +print(flag) +``` + +### Helper scripts for v3 figure/table crops + +Two helper scripts were added under [`scripts/`](/Users/cc/work/NoEdgeAI/pdfdeal/scripts): + +- [`extract_v3_figures.py`](/Users/cc/work/NoEdgeAI/pdfdeal/scripts/extract_v3_figures.py): extract figure crops from a PDF using Doc2X v3 JSON +- [`extract_v3_tables.py`](/Users/cc/work/NoEdgeAI/pdfdeal/scripts/extract_v3_tables.py): extract table crops from a PDF using Doc2X v3 JSON + +Both scripts: + +- validate that the v3 JSON matches the crop rules first +- render only pages containing target blocks with `fitz` at the requested `dpi` +- save full-page PNGs under `_pages/` +- crop target regions using the block `bbox/xyxy` and page coordinates from the v3 JSON +- write `manifest.json` with crop metadata + +Examples: + +```bash +python scripts/extract_v3_figures.py \ + --pdf /path/to/input.pdf \ + --v3-json /path/to/input_v3.json \ + --dpi 200 \ + --output-dir ./Output/figures +``` + +```bash +python scripts/extract_v3_tables.py \ + --pdf /path/to/input.pdf \ + --v3-json /path/to/input_v3.json \ + --dpi 200 \ + --output-dir ./Output/tables +``` + See the online documentation for details. diff --git a/README_CN.md b/README_CN.md index 88ae1c4..5d3f545 100644 --- a/README_CN.md +++ b/README_CN.md @@ -127,4 +127,65 @@ print(failed) print(flag) ``` -更多详细请参见在线文档。 +### V3 JSON 更新 + +当 `model="v3-2026"` 时: + +- `output_format="json"` 现在会保存 Doc2X 原始 v3 JSON(`result.pages...`),不再保存旧的简化 `[{text, location}]` 结构。 +- 即使 `output_format` 不包含 `json`(例如 `text`、`detailed`、`md`、`docx`),也会额外保存一份 sidecar `.json`。 +- 如果 `output_format` 包含 `json`,sidecar JSON 的命名会跟随 `output_names` 里 `json` 这一槽位。 +- 如果 `output_format` 不包含 `json`,sidecar JSON 的命名会跟随 `output_names` 里第一个非空名字。 +- 如果没有传 `output_names`,sidecar JSON 会回退到原 PDF 文件名。 +- 已不再使用过期的小文件直传。`oss_choose="always"` 和 `oss_choose="auto"` 都会走 preupload;`oss_choose="never"` / `oss_choose="none"` 会直接报错。 + +示例: + +```python +from pdfdeal import Doc2X + +client = Doc2X(apikey="Your API key", debug=True) +success, failed, flag = client.pdf2file( + pdf_file="tests/pdf/sample.pdf", + output_path="./Output/test/v3", + output_format="text,json", + output_names=[["plain.txt", "viz.data"]], + model="v3-2026", +) +print(success) # ["页面文本...", "./Output/test/v3/viz.json"] +print(failed) +print(flag) +``` + +### V3 figure/table 裁剪辅助脚本 + +在 [`scripts/`](/Users/cc/work/NoEdgeAI/pdfdeal/scripts) 下新增了两个辅助脚本: + +- [`extract_v3_figures.py`](/Users/cc/work/NoEdgeAI/pdfdeal/scripts/extract_v3_figures.py):基于 Doc2X v3 JSON 从 PDF 中裁剪 figure 图片 +- [`extract_v3_tables.py`](/Users/cc/work/NoEdgeAI/pdfdeal/scripts/extract_v3_tables.py):基于 Doc2X v3 JSON 从 PDF 中裁剪 table 图片 + +这两个脚本都会: + +- 先校验 v3 JSON 是否符合裁剪规则 +- 用 `fitz` 按指定 `dpi` 只渲染包含目标 block 的页面 +- 将整页 PNG 保存到 `_pages/` +- 根据 v3 JSON 中的 block `bbox/xyxy` 和 page 坐标裁剪出目标区域 +- 输出带裁剪元数据的 `manifest.json` + +示例: + +```bash +python scripts/extract_v3_figures.py \ + --pdf /path/to/input.pdf \ + --v3-json /path/to/input_v3.json \ + --dpi 200 \ + --output-dir ./Output/figures +``` + +```bash +python scripts/extract_v3_tables.py \ + --pdf /path/to/input.pdf \ + --v3-json /path/to/input_v3.json \ + --dpi 200 \ + --output-dir ./Output/tables +``` + diff --git a/scripts/extract_v3_figures.py b/scripts/extract_v3_figures.py new file mode 100644 index 0000000..5ee5127 --- /dev/null +++ b/scripts/extract_v3_figures.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 +from v3_media_crop_utils import run_cli + + +if __name__ == "__main__": + raise SystemExit(run_cli("figure")) diff --git a/scripts/extract_v3_tables.py b/scripts/extract_v3_tables.py new file mode 100644 index 0000000..e10fe17 --- /dev/null +++ b/scripts/extract_v3_tables.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 +from v3_media_crop_utils import run_cli + + +if __name__ == "__main__": + raise SystemExit(run_cli("table")) diff --git a/scripts/v3_media_crop_utils.py b/scripts/v3_media_crop_utils.py new file mode 100644 index 0000000..9390322 --- /dev/null +++ b/scripts/v3_media_crop_utils.py @@ -0,0 +1,388 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import json +import re +import sys +from pathlib import Path +from typing import Any, Dict, Iterable, List, Tuple + +try: + import fitz +except ImportError as exc: # pragma: no cover - runtime guard + raise SystemExit( + "PyMuPDF is required. Install it with `pip install pymupdf`." + ) from exc + +try: + from PIL import Image +except ImportError as exc: # pragma: no cover - runtime guard + raise SystemExit( + "Pillow is required. Install it with `pip install pillow`." + ) from exc + + +TARGET_KIND_TO_BLOCK_TYPE = { + "figure": "Figure", + "table": "Table", +} + + +class V3ValidationError(ValueError): + pass + + +def load_v3_result(json_path: str) -> Dict[str, Any]: + path = Path(json_path) + with path.open("r", encoding="utf-8") as f: + payload = json.load(f) + + if isinstance(payload, dict): + if isinstance(payload.get("pages"), list): + return payload + data = payload.get("data") + if isinstance(data, dict) and isinstance(data.get("result"), dict): + return data["result"] + result = payload.get("result") + if isinstance(result, dict) and isinstance(result.get("pages"), list): + return result + + raise V3ValidationError( + "Unsupported v3 JSON structure. Expected either raw `result` with `pages`, " + "or a wrapped response containing `data.result.pages`." + ) + + +def _safe_stem(text: str) -> str: + cleaned = re.sub(r"[^A-Za-z0-9._-]+", "_", text.strip()) + return cleaned.strip("._-") or "item" + + +def _ensure_xyxy(value: Any, label: str) -> Tuple[float, float, float, float]: + if not isinstance(value, list) or len(value) != 4: + raise V3ValidationError(f"{label} must be a list of 4 numbers.") + try: + x1, y1, x2, y2 = (float(item) for item in value) + except (TypeError, ValueError) as exc: + raise V3ValidationError(f"{label} must contain only numeric values.") from exc + if x2 <= x1 or y2 <= y1: + raise V3ValidationError(f"{label} must satisfy x2>x1 and y2>y1.") + return x1, y1, x2, y2 + + +def _page_xyxy(page: Dict[str, Any]) -> Tuple[float, float, float, float]: + for key in ("page_xyxy", "page_bbox", "bbox", "xyxy"): + if key in page: + return _ensure_xyxy(page[key], f"page.{key}") + + width = page.get("page_width") + height = page.get("page_height") + if not isinstance(width, (int, float)) or not isinstance(height, (int, float)): + raise V3ValidationError( + "Each page must provide positive `page_width` and `page_height`, or an " + "explicit `page_xyxy/page_bbox`." + ) + if width <= 0 or height <= 0: + raise V3ValidationError("`page_width` and `page_height` must be positive.") + return 0.0, 0.0, float(width), float(height) + + +def _block_xyxy(block: Dict[str, Any]) -> Tuple[float, float, float, float]: + for key in ("bbox", "xyxy"): + if key in block: + return _ensure_xyxy(block[key], f"block.{key}") + raise V3ValidationError( + f"Block {block.get('id', '')} is missing `bbox`/`xyxy`." + ) + + +def _validate_ratio( + pdf_page: "fitz.Page", + page_xyxy: Tuple[float, float, float, float], + page_idx: int, +) -> None: + json_width = page_xyxy[2] - page_xyxy[0] + json_height = page_xyxy[3] - page_xyxy[1] + pdf_ratio = pdf_page.rect.width / pdf_page.rect.height + json_ratio = json_width / json_height + ratio_delta = abs(pdf_ratio - json_ratio) / json_ratio + if ratio_delta > 0.02: + raise V3ValidationError( + f"Page {page_idx} aspect ratio mismatch: PDF={pdf_ratio:.6f}, " + f"v3-json={json_ratio:.6f}. This violates the crop mapping rule." + ) + + +def _validate_block_within_page( + block_xyxy: Tuple[float, float, float, float], + page_xyxy: Tuple[float, float, float, float], + block_id: str, +) -> None: + bx1, by1, bx2, by2 = block_xyxy + px1, py1, px2, py2 = page_xyxy + if bx1 < px1 or by1 < py1 or bx2 > px2 or by2 > py2: + raise V3ValidationError( + f"Block {block_id} bbox {list(block_xyxy)} exceeds page bounds " + f"{list(page_xyxy)}." + ) + + +def validate_v3_result( + result: Dict[str, Any], + pdf_path: str, + target_block_type: str, +) -> List[Dict[str, Any]]: + pages = result.get("pages") + if not isinstance(pages, list) or not pages: + raise V3ValidationError("`pages` must be a non-empty list.") + + validated_pages: List[Dict[str, Any]] = [] + seen_page_idx = set() + + with fitz.open(pdf_path) as doc: + for page in pages: + if not isinstance(page, dict): + raise V3ValidationError("Each page entry must be an object.") + + page_idx = page.get("page_idx") + if not isinstance(page_idx, int): + raise V3ValidationError("Each page must provide integer `page_idx`.") + if page_idx in seen_page_idx: + raise V3ValidationError(f"Duplicate page_idx detected: {page_idx}.") + if page_idx < 0 or page_idx >= doc.page_count: + raise V3ValidationError( + f"page_idx {page_idx} is out of PDF page range 0..{doc.page_count - 1}." + ) + seen_page_idx.add(page_idx) + + layout = page.get("layout") + if not isinstance(layout, dict): + raise V3ValidationError( + f"Page {page_idx} is missing object field `layout`." + ) + blocks = layout.get("blocks") + if not isinstance(blocks, list): + raise V3ValidationError( + f"Page {page_idx} is missing list field `layout.blocks`." + ) + + page_xyxy = _page_xyxy(page) + pdf_page = doc.load_page(page_idx) + _validate_ratio(pdf_page, page_xyxy, page_idx) + + target_blocks = [] + for block in blocks: + if not isinstance(block, dict): + raise V3ValidationError( + f"Page {page_idx} contains a non-object block entry." + ) + block_type = block.get("type") + block_id = str(block.get("id", "")) + if not isinstance(block_type, str) or not block_type: + raise V3ValidationError( + f"Page {page_idx} has a block without valid `type`." + ) + if block_type != target_block_type: + continue + block_xyxy = _block_xyxy(block) + _validate_block_within_page(block_xyxy, page_xyxy, block_id or "") + target_blocks.append( + { + "id": block_id or f"{target_block_type.lower()}_{page_idx}", + "type": block_type, + "xyxy": block_xyxy, + "parent_id": str(block.get("parent_id", "")), + "src": str(block.get("src", "")), + "text": str(block.get("text", "")), + } + ) + + if target_blocks: + validated_pages.append( + { + "page_idx": page_idx, + "page_xyxy": page_xyxy, + "page_width": page_xyxy[2] - page_xyxy[0], + "page_height": page_xyxy[3] - page_xyxy[1], + "target_blocks": target_blocks, + } + ) + + return validated_pages + + +def _page_image_to_pil(page_pixmap: "fitz.Pixmap") -> Image.Image: + mode = "RGB" + if page_pixmap.alpha: + mode = "RGBA" + return Image.frombytes(mode, [page_pixmap.width, page_pixmap.height], page_pixmap.samples) + + +def _crop_box_in_pixels( + block_xyxy: Tuple[float, float, float, float], + page_xyxy: Tuple[float, float, float, float], + image_width: int, + image_height: int, +) -> Tuple[int, int, int, int]: + px1, py1, px2, py2 = page_xyxy + bx1, by1, bx2, by2 = block_xyxy + page_width = px2 - px1 + page_height = py2 - py1 + x1 = int(round((bx1 - px1) / page_width * image_width)) + y1 = int(round((by1 - py1) / page_height * image_height)) + x2 = int(round((bx2 - px1) / page_width * image_width)) + y2 = int(round((by2 - py1) / page_height * image_height)) + x1 = max(0, min(x1, image_width - 1)) + y1 = max(0, min(y1, image_height - 1)) + x2 = max(x1 + 1, min(x2, image_width)) + y2 = max(y1 + 1, min(y2, image_height)) + return x1, y1, x2, y2 + + +def extract_target_images( + pdf_path: str, + v3_json_path: str, + dpi: int, + output_dir: str, + target_kind: str, +) -> Dict[str, Any]: + if target_kind not in TARGET_KIND_TO_BLOCK_TYPE: + raise ValueError( + f"Unsupported target_kind={target_kind!r}. " + f"Choose one of {sorted(TARGET_KIND_TO_BLOCK_TYPE)}." + ) + if dpi <= 0: + raise ValueError("dpi must be a positive integer.") + + target_block_type = TARGET_KIND_TO_BLOCK_TYPE[target_kind] + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + page_images_dir = output_path / "_pages" + page_images_dir.mkdir(parents=True, exist_ok=True) + + result = load_v3_result(v3_json_path) + validated_pages = validate_v3_result(result, pdf_path, target_block_type) + + manifest: List[Dict[str, Any]] = [] + page_render_count = 0 + + with fitz.open(pdf_path) as doc: + matrix = fitz.Matrix(dpi / 72.0, dpi / 72.0) + for page_info in validated_pages: + page_idx = page_info["page_idx"] + page = doc.load_page(page_idx) + page_pixmap = page.get_pixmap(matrix=matrix, alpha=False) + page_image = _page_image_to_pil(page_pixmap) + page_image_path = page_images_dir / f"page_{page_idx + 1:04d}.png" + page_image.save(page_image_path) + page_render_count += 1 + + for block_idx, block in enumerate(page_info["target_blocks"], start=1): + crop_box = _crop_box_in_pixels( + block_xyxy=block["xyxy"], + page_xyxy=page_info["page_xyxy"], + image_width=page_image.width, + image_height=page_image.height, + ) + crop_image = page_image.crop(crop_box) + crop_name = ( + f"page_{page_idx + 1:04d}_{target_kind}_{block_idx:03d}_" + f"{_safe_stem(block['id'])}.png" + ) + crop_path = output_path / crop_name + crop_image.save(crop_path) + manifest.append( + { + "page_idx": page_idx, + "page_image_path": str(page_image_path), + "target_kind": target_kind, + "block_id": block["id"], + "block_type": block["type"], + "block_xyxy": list(block["xyxy"]), + "page_xyxy": list(page_info["page_xyxy"]), + "crop_box_pixels": list(crop_box), + "crop_path": str(crop_path), + } + ) + + manifest_path = output_path / "manifest.json" + with manifest_path.open("w", encoding="utf-8") as f: + json.dump( + { + "pdf_path": str(Path(pdf_path)), + "v3_json_path": str(Path(v3_json_path)), + "dpi": dpi, + "target_kind": target_kind, + "target_block_type": target_block_type, + "page_count_with_targets": page_render_count, + "crop_count": len(manifest), + "items": manifest, + }, + f, + ensure_ascii=False, + indent=2, + ) + + return { + "output_dir": str(output_path), + "page_images_dir": str(page_images_dir), + "manifest_path": str(manifest_path), + "page_count_with_targets": page_render_count, + "crop_count": len(manifest), + "items": manifest, + } + + +def build_parser(target_kind: str) -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + description=( + f"Extract {target_kind} crops from a PDF using Doc2X v3 JSON. " + "The script first validates that the v3 JSON matches the crop rules, " + "renders only pages containing target blocks, saves full-page PNGs " + "under `_pages/`, and writes cropped images plus `manifest.json`." + ) + ) + parser.add_argument("--pdf", required=True, help="Path to the source PDF.") + parser.add_argument( + "--v3-json", + required=True, + help="Path to the raw v3 JSON (`result`) or wrapped response JSON.", + ) + parser.add_argument( + "--dpi", + required=True, + type=int, + help="Render DPI used for the page PNGs and final crops.", + ) + parser.add_argument( + "--output-dir", + required=True, + help="Directory where crops, page PNGs, and manifest.json are written.", + ) + return parser + + +def run_cli(target_kind: str) -> int: + parser = build_parser(target_kind) + args = parser.parse_args() + try: + summary = extract_target_images( + pdf_path=args.pdf, + v3_json_path=args.v3_json, + dpi=args.dpi, + output_dir=args.output_dir, + target_kind=target_kind, + ) + except (ValueError, V3ValidationError) as exc: + print(f"Validation failed: {exc}", file=sys.stderr) + return 1 + + print( + f"Extracted {summary['crop_count']} {target_kind} crops from " + f"{summary['page_count_with_targets']} page(s)." + ) + print(f"Page PNGs: {summary['page_images_dir']}") + print(f"Manifest: {summary['manifest_path']}") + return 0 + diff --git a/src/pdfdeal/Doc2X/ConvertV2.py b/src/pdfdeal/Doc2X/ConvertV2.py index 8b58325..3a638ac 100644 --- a/src/pdfdeal/Doc2X/ConvertV2.py +++ b/src/pdfdeal/Doc2X/ConvertV2.py @@ -6,7 +6,7 @@ import json import os import re -from typing import Tuple +from typing import Any, Tuple from .Exception import RateLimit, FileError, RequestError, async_retry, code_check import logging from .Types import ( @@ -52,7 +52,10 @@ async def upload_pdf( Args: apikey (str): The key pdffile (str): The pdf file path - oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". + oss_choose (str, optional): Upload preference. The deprecated direct-upload + path is no longer used. "always" and "auto" both use the preupload API. + "never"/"none" is rejected because it would require the deprecated direct + upload endpoint. Defaults to "always". model (V2ParseModelType, optional): Upload model for preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). Raises: @@ -64,48 +67,18 @@ async def upload_pdf( Returns: str: The uid of the file """ - url = f"{Base_URL}/v2/parse/pdf" - if oss_choose == "always" or ( - oss_choose == "auto" and os.path.getsize(pdffile) >= 100 * 1024 * 1024 - ): - return await upload_pdf_big(apikey, pdffile, model=model) - elif oss_choose == "none" and os.path.getsize(pdffile) >= 100 * 1024 * 1024: - logger.warning("Now not support PDF file > 300MB!") - raise RequestError("parse_file_too_large") - try: - with open(pdffile, "rb") as f: - file = f.read() - except Exception as e: - raise FileError(f"Open file error! {e}") - - async with httpx.AsyncClient(timeout=httpx.Timeout(120), http2=True) as client: - post_res = await client.post( - url, - headers={ - "Authorization": f"Bearer {apikey}", - "Content-Type": "application/pdf", - }, - content=file, + oss_mode = oss_choose.strip().lower() + if oss_mode in {"never", "none"}: + raise ValueError( + "oss_choose='never'/'none' is no longer supported because the direct " + "upload endpoint has been deprecated. Use 'always' or 'auto' instead." ) - trace_id = post_res.headers.get("trace-id", "Failed to get trace-id ") - if post_res.status_code == 200: - response_data = json.loads(post_res.content.decode("utf-8")) - uid = response_data.get("data", {}).get("uid") - - await code_check( - code=response_data.get("code", response_data), uid=uid, trace_id=trace_id + if oss_mode not in {"always", "auto"}: + raise ValueError( + "oss_choose must be one of 'always', 'auto', 'never', 'none'" ) - return uid - if post_res.status_code == 429: - raise RateLimit(trace_id=trace_id) - if post_res.status_code == 400: - raise RequestError(error_code=post_res.text, trace_id=trace_id) - elif post_res.status_code == 401: - raise ValueError("API key is unauthorized. (认证失败,请检测API key是否正确)") - raise Exception( - f"Upload file error,trace_id{trace_id}:{post_res.status_code}:{post_res.text}" - ) + return await upload_pdf_big(apikey, pdffile, model=model) async def upload_pdf_big( @@ -218,7 +191,7 @@ async def uid_status( apikey: str, uid: str, convert: bool = False, -) -> Tuple[int, str, list, list]: +) -> Tuple[int, str, list, list, Any]: """Get the status of the file Args: @@ -231,7 +204,8 @@ async def uid_status( Exception: Get status error Returns: - Tuple[int, str, list, list]: The progress, status, texts and locations + Tuple[int, str, list, list, Any]: The progress, status, texts, locations, + and raw parse result. """ url = f"{Base_URL}/v2/parse/status?uid={uid}" async with httpx.AsyncClient(timeout=httpx.Timeout(30), http2=True) as client: @@ -255,10 +229,10 @@ async def uid_status( progress, status = data["data"].get("progress", 0), data["data"].get("status", "") if status == "processing": - return progress, "Processing file", [], [] + return progress, "Processing file", [], [], None elif status == "success": texts, locations = await decode_data(data["data"], convert) - return 100, "Success", texts, locations + return 100, "Success", texts, locations, data["data"].get("result") elif status == "failed": raise RequestError( f"Failed to deal with file uid {uid}! Trace-id:{trace_id}:{response_data.text}" @@ -267,7 +241,7 @@ async def uid_status( logger.warning( f"Unknown status: {status} in uid {uid} file! Trace-id:{trace_id}:{response_data.text}" ) - return progress, status, [], [] + return progress, status, [], [], None @async_retry() diff --git a/src/pdfdeal/Doc2X/Exception.py b/src/pdfdeal/Doc2X/Exception.py index 862a5a1..951028b 100644 --- a/src/pdfdeal/Doc2X/Exception.py +++ b/src/pdfdeal/Doc2X/Exception.py @@ -54,7 +54,7 @@ class RequestError(Exception): SOLUTIONS = { "parse_quota_limit": "当前可用的页数不足,请检查余额或联系负责人 (Insufficient parsing quota, check balance or contact support)", "parse_create_task_error": "短暂等待后重试, 如果还出现报错则请联系负责人 (Retry after a short wait, contact support if error persists)", - "parse_file_too_large": "当前允许单个文件大小 <= 300MB(直接上传) | <= 1GB(通过OSS上传), 请拆分 pdf (File size must be <= 300MB (direct upload) | <= 1GB (OSS upload), please split the PDF)", + "parse_file_too_large": "当前允许单个文件大小 <= 1GB(通过 preupload 上传), 请拆分 pdf (File size must be <= 1GB via preupload upload, please split the PDF)", "parse_file_page_limit": "当前允许单个文件页数 <= 1000页, 请拆分 pdf (File page count must be <= 1000 pages, please split the PDF)", "parse_file_lock": "为了防止反复解析, 暂时锁定一天,考虑PDF可能有兼容性问题, 重新打印后再尝试。仍然失败请反馈request_id给负责人 (Locked for a day to prevent repeated parsing. Consider reprinting the PDF if compatibility issues persist. Report request_id if it still fails)", "parse_pdf_invalid": "不是有效的PDF文件,考虑PDF可能有兼容性问题, 重新打印后再尝试。仍然失败请反馈request_id给负责人 (File is not a valid PDF. Consider reprinting the PDF if compatibility issues persist. Report request_id if it still fails)", diff --git a/src/pdfdeal/FileTools/file_tools.py b/src/pdfdeal/FileTools/file_tools.py index a54254c..57df178 100644 --- a/src/pdfdeal/FileTools/file_tools.py +++ b/src/pdfdeal/FileTools/file_tools.py @@ -407,14 +407,14 @@ def auto_split_mds( def save_json( output_path: str, output_name: str, - json_content: list[dict] = None, + json_content=None, save_subdir: bool = False, ): """Save the JSON file Args: output_path (str): The path to save the JSON file output_name(str): JSON file name - json_content (list[dict]): The JSON content to save + json_content: The JSON content to save """ if json_content is None: json_content = [] @@ -479,4 +479,3 @@ def save_md( return final_md_path, '' - diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index dbef43a..32b531d 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -148,7 +148,7 @@ async def parse_pdf( oss_choose: str = "auto", model: V2ParseModelType = None, export_history: str = "", -) -> Tuple[str, List[str], List[dict]]: +) -> Tuple[str, List[str], List[dict], Any]: """Parse PDF file and return uid and extracted text""" async def task_limit_lock(): @@ -186,7 +186,7 @@ async def task_limit_lock(): for _ in range(max_time // 3): try: - progress, status, texts, locations = await uid_status( + progress, status, texts, locations, raw_result = await uid_status( apikey, uid, convert ) if status == "Success": @@ -197,7 +197,7 @@ async def task_limit_lock(): uid=uid, status="Success", lock=asyncio.Lock()) - return uid, texts, locations + return uid, texts, locations, raw_result elif status == "Processing file": logger.info(f"Processing {uid} : {progress}%") await asyncio.sleep(3) @@ -275,14 +275,14 @@ async def convert_to_format( async def save_json_format( output_path: str, output_name: str, - json_content: list[dict] = None, + json_content: Any = None, save_subdir: bool = False, ): """Save the JSON file Args: output_path (str): The path to save the JSON file output_name(str): JSON file name - json_content (list[dict]): The JSON content to save + json_content (Any): The JSON content to save """ loop = asyncio.get_running_loop() saved_path = await loop.run_in_executor( @@ -524,7 +524,7 @@ async def process_file(index, pdf, name): # Process the file try: - uid, texts, locations = await parse_pdf( + uid, texts, locations, raw_result = await parse_pdf( apikey=self.apikey, pdf_path=pdf, maxretry=self.retry_time, @@ -535,7 +535,7 @@ async def process_file(index, pdf, name): model=model, export_history=export_history, ) - parse_results[index] = (uid, texts, locations) + parse_results[index] = (uid, texts, locations, raw_result) # Create convert task as soon as parse is complete task = asyncio.create_task(convert_file(index, name)) convert_tasks.add(task) @@ -555,9 +555,48 @@ async def process_file(index, pdf, name): async def convert_file(index, name): if parse_results[index] is None: return - uid, texts, locations = parse_results[index] + uid, texts, locations, raw_result = parse_results[index] all_results = [] all_errors = [] + json_output_reason = "single output name" + if isinstance(name, list): + json_output_name = None + if "json" in output_formats: + json_format_index = output_formats.index("json") + if json_format_index < len(name): + json_output_name = name[json_format_index] + json_output_reason = ( + f'using output_names[{json_format_index}] because ' + f'output_format includes "json"' + ) + if not json_output_name: + json_output_name = next((item for item in name if item), None) + json_output_reason = ( + "using the first non-empty output_names entry because " + 'output_format does not include "json"' + ) + else: + json_output_name = name + json_output_name = json_output_name or os.path.basename(pdf_file[index]) + v3_json_result_path = None + if model_enum == V2ParseModel.V3_2026 and raw_result is not None: + v3_json_result_path = await save_json_format( + output_path=os.path.join( + output_path, os.path.dirname(json_output_name) + ), + output_name=os.path.basename(json_output_name), + json_content=raw_result, + save_subdir=save_subdir, + ) + if isinstance(name, list) and len(name) > 1: + logger.info( + "V3 sidecar JSON naming for %s: %s. Requested output_names=%s. " + "Saved to %s", + pdf_file[index], + json_output_reason, + name, + v3_json_result_path, + ) for name_index, fmt in enumerate(output_formats): if isinstance(name, list): @@ -568,6 +607,7 @@ async def convert_file(index, name): else: name_fmt = name try: + output_name = name_fmt or os.path.basename(pdf_file[index]) if fmt in ["md", "md_dollar", "tex", "docx"]: nonlocal last_request_time # Wait for request interval @@ -619,14 +659,21 @@ async def convert_file(index, name): ] elif fmt == "json": - json_content = [ - {"text": text, "location": loc} - for text, loc in zip(texts, locations) - ] - result = await save_json_format(output_path=os.path.join(output_path, os.path.dirname(name_fmt)), - output_name=os.path.basename(name_fmt), - json_content=json_content, - save_subdir=save_subdir) + if v3_json_result_path is not None: + result = v3_json_result_path + else: + json_content = [ + {"text": text, "location": loc} + for text, loc in zip(texts, locations) + ] + result = await save_json_format( + output_path=os.path.join( + output_path, os.path.dirname(output_name) + ), + output_name=os.path.basename(output_name), + json_content=json_content, + save_subdir=save_subdir, + ) if export_history != "": @@ -751,7 +798,10 @@ def pdf2file( output_path (str, optional): The output path. Defaults to "./Output". output_format (str, optional): The output format. Defaults to "md_dollar". convert (bool, optional): Convert "[" and "[[" to "$" and "$$". Defaults to False. - oss_choose (str, optional): OSS upload preference. "always" for always using OSS, "auto" for using OSS only when the file size exceeds 100MB, "never" for never using OSS. Defaults to "always". + oss_choose (str, optional): Upload preference. The deprecated direct-upload + path is no longer used. "always" and "auto" both use preupload. + "never"/"none" is rejected because it would require the deprecated + direct-upload endpoint. Defaults to "always". model (V2ParseModelType, optional): Upload model for v2 preupload API. Use "v3-2026" for latest model experience. Defaults to None (server default model). merge_cross_page_forms (bool, optional): Whether to merge cross-page forms. Defaults to False. formula_level (FormulaLevelType, optional): Formula degradation level for export body. diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index 8992b2e..420ebf8 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -1,9 +1,13 @@ -from pdfdeal import Doc2X -from pdfdeal.Doc2X.Types import FormulaLevel, V2ParseModel +import asyncio +import json import os -import pytest from typing import Optional +import pytest + +from pdfdeal import Doc2X +from pdfdeal.Doc2X.Types import FormulaLevel, V2ParseModel + def _require_apikey() -> str: apikey = os.getenv("DOC2X_APIKEY") @@ -184,6 +188,225 @@ def test_pdf2json(): print(flag) assert flag + +def test_pdf2json_without_output_names_uses_pdf_basename(monkeypatch, tmp_path): + client = _build_client(apikey="test_apikey") + + async def fake_parse_pdf(**kwargs): + pdf_path = kwargs["pdf_path"] + return "uid", [f"text for {os.path.basename(pdf_path)}"], [{ + "url": "", + "page_idx": 0, + "page_width": 100, + "page_height": 200, + }], {"pages": [{"md": f"text for {os.path.basename(pdf_path)}"}]} + + monkeypatch.setattr("pdfdeal.doc2x.parse_pdf", fake_parse_pdf) + monkeypatch.setattr("pdfdeal.doc2x.get_pdf_page_count", lambda _: 1) + + success, failed, flag = asyncio.run( + client.pdf2file_back( + pdf_file=["tests/pdf/sample.pdf", "tests/pdf/sample_bad.pdf"], + output_path=str(tmp_path), + output_format="json", + ) + ) + + assert flag is False + assert [os.path.basename(path) for path in success] == [ + "sample.json", + "sample_bad.json", + ] + assert all(os.path.isfile(path) for path in success) + assert all(item["error"] == "" for item in failed) + + +def test_pdf2json_v3_model_saves_raw_v3_json(monkeypatch, tmp_path): + client = _build_client(apikey="test_apikey") + raw_result = { + "pages": [ + { + "page_idx": 0, + "md": "page markdown", + "layout": { + "blocks": [ + {"id": "blk_0", "type": "Text", "text": "page markdown"} + ] + }, + } + ] + } + + async def fake_parse_pdf(**kwargs): + return "uid", ["page markdown"], [{ + "url": "", + "page_idx": 0, + "page_width": 100, + "page_height": 200, + }], raw_result + + monkeypatch.setattr("pdfdeal.doc2x.parse_pdf", fake_parse_pdf) + monkeypatch.setattr("pdfdeal.doc2x.get_pdf_page_count", lambda _: 1) + + success, failed, flag = asyncio.run( + client.pdf2file_back( + pdf_file="tests/pdf/sample.pdf", + output_path=str(tmp_path), + output_format="json", + model=V2ParseModel.V3_2026, + ) + ) + + assert flag is False + assert os.path.isfile(success[0]) + with open(success[0], "r", encoding="utf-8") as f: + saved_json = json.load(f) + assert saved_json == raw_result + assert failed[0]["error"] == "" + + +def test_pdf2text_v3_model_saves_raw_v3_json_sidecar(monkeypatch, tmp_path): + client = _build_client(apikey="test_apikey") + raw_result = { + "pages": [ + { + "page_idx": 0, + "md": "page markdown", + "layout": { + "blocks": [ + {"id": "blk_0", "type": "Text", "text": "page markdown"} + ] + }, + } + ] + } + + async def fake_parse_pdf(**kwargs): + return "uid", ["page markdown"], [{ + "url": "", + "page_idx": 0, + "page_width": 100, + "page_height": 200, + }], raw_result + + monkeypatch.setattr("pdfdeal.doc2x.parse_pdf", fake_parse_pdf) + monkeypatch.setattr("pdfdeal.doc2x.get_pdf_page_count", lambda _: 1) + + success, failed, flag = asyncio.run( + client.pdf2file_back( + pdf_file="tests/pdf/sample.pdf", + output_path=str(tmp_path), + output_format="text", + model=V2ParseModel.V3_2026, + ) + ) + + sidecar_path = os.path.join(str(tmp_path), "sample.json") + + assert flag is False + assert success[0] == "page markdown" + assert os.path.isfile(sidecar_path) + with open(sidecar_path, "r", encoding="utf-8") as f: + saved_json = json.load(f) + assert saved_json == raw_result + assert failed[0]["error"] == "" + + +def test_pdf2detailed_v3_model_saves_raw_v3_json_sidecar(monkeypatch, tmp_path): + client = _build_client(apikey="test_apikey") + raw_result = { + "pages": [ + { + "page_idx": 0, + "md": "page markdown", + "layout": { + "blocks": [ + {"id": "blk_0", "type": "Text", "text": "page markdown"} + ] + }, + } + ] + } + + async def fake_parse_pdf(**kwargs): + return "uid", ["page markdown"], [{ + "url": "", + "page_idx": 0, + "page_width": 100, + "page_height": 200, + }], raw_result + + monkeypatch.setattr("pdfdeal.doc2x.parse_pdf", fake_parse_pdf) + monkeypatch.setattr("pdfdeal.doc2x.get_pdf_page_count", lambda _: 1) + + success, failed, flag = asyncio.run( + client.pdf2file_back( + pdf_file="tests/pdf/sample.pdf", + output_path=str(tmp_path), + output_format="detailed", + model=V2ParseModel.V3_2026, + ) + ) + + sidecar_path = os.path.join(str(tmp_path), "sample.json") + + assert flag is False + assert success[0] == [{ + "text": "page markdown", + "location": { + "url": "", + "page_idx": 0, + "page_width": 100, + "page_height": 200, + }, + }] + assert os.path.isfile(sidecar_path) + with open(sidecar_path, "r", encoding="utf-8") as f: + saved_json = json.load(f) + assert saved_json == raw_result + assert failed[0]["error"] == "" + + +def test_pdf2file_v3_logs_sidecar_json_naming_rule(monkeypatch, tmp_path, capsys): + client = _build_client(apikey="test_apikey") + raw_result = { + "pages": [ + { + "page_idx": 0, + "md": "page markdown", + "layout": {"blocks": [{"id": "blk_0", "type": "Text"}]}, + } + ] + } + + async def fake_parse_pdf(**kwargs): + return "uid", ["page markdown"], [{ + "url": "", + "page_idx": 0, + "page_width": 100, + "page_height": 200, + }], raw_result + + monkeypatch.setattr("pdfdeal.doc2x.parse_pdf", fake_parse_pdf) + monkeypatch.setattr("pdfdeal.doc2x.get_pdf_page_count", lambda _: 1) + + success, failed, flag = asyncio.run( + client.pdf2file_back( + pdf_file="tests/pdf/sample.pdf", + output_names=[["plain.txt", "viz.data"]], + output_path=str(tmp_path), + output_format="text,json", + model=V2ParseModel.V3_2026, + ) + ) + captured = capsys.readouterr() + + assert flag is False + assert os.path.basename(success[0][1]) == "viz.json" + assert failed[0]["error"] == ["", ""] + assert "using output_names[1] because output_format includes \"json\"" in captured.err + assert "Saved to" in captured.err + # 测试一个文件,output_format为md_dollar,tex,docx def test_single_pdf2file(): client = _build_client() diff --git a/tests/test_types.py b/tests/test_types.py index e1ca103..6ecb6ac 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -1,3 +1,6 @@ +import asyncio +import importlib + import pytest from pdfdeal.Doc2X.Types import ( @@ -7,6 +10,8 @@ normalize_v2_parse_model, ) +convert_v2 = importlib.import_module("pdfdeal.Doc2X.ConvertV2") + @pytest.mark.parametrize( ("value", "expected"), @@ -54,3 +59,34 @@ def test_normalize_v2_parse_model_valid(value, expected): def test_normalize_v2_parse_model_invalid(): with pytest.raises(ValueError, match="is not a valid V2ParseModel"): normalize_v2_parse_model("v3") + + +def test_upload_pdf_rejects_deprecated_direct_upload_mode(): + with pytest.raises(ValueError, match="direct upload endpoint has been deprecated"): + asyncio.run( + convert_v2.upload_pdf( + "test_apikey", "tests/pdf/sample.pdf", oss_choose="never" + ) + ) + + +def test_upload_pdf_auto_still_uses_preupload(monkeypatch): + calls = [] + + async def fake_upload_pdf_big(apikey, pdffile, model=None): + calls.append((apikey, pdffile, model)) + return "uid_123" + + monkeypatch.setattr(convert_v2, "upload_pdf_big", fake_upload_pdf_big) + + uid = asyncio.run( + convert_v2.upload_pdf( + "test_apikey", + "tests/pdf/sample.pdf", + oss_choose="auto", + model=V2ParseModel.V3_2026, + ) + ) + + assert uid == "uid_123" + assert calls == [("test_apikey", "tests/pdf/sample.pdf", V2ParseModel.V3_2026)] diff --git a/tests/test_v3_media_crop_scripts.py b/tests/test_v3_media_crop_scripts.py new file mode 100644 index 0000000..a003d13 --- /dev/null +++ b/tests/test_v3_media_crop_scripts.py @@ -0,0 +1,104 @@ +import importlib.util +import json +from pathlib import Path + +import fitz + + +def _load_crop_utils_module(): + module_path = ( + Path(__file__).resolve().parents[1] / "scripts" / "v3_media_crop_utils.py" + ) + spec = importlib.util.spec_from_file_location("v3_media_crop_utils", module_path) + module = importlib.util.module_from_spec(spec) + assert spec and spec.loader + spec.loader.exec_module(module) + return module + + +def _build_test_pdf(pdf_path: Path) -> None: + doc = fitz.open() + page = doc.new_page(width=200, height=200) + page.draw_rect(fitz.Rect(20, 20, 120, 100), color=(1, 0, 0), fill=(1, 0.8, 0.8)) + page.draw_rect( + fitz.Rect(40, 120, 180, 180), color=(0, 0, 1), fill=(0.8, 0.8, 1) + ) + doc.save(pdf_path) + doc.close() + + +def _build_test_v3_json(json_path: Path) -> None: + payload = { + "pages": [ + { + "page_idx": 0, + "page_width": 1000, + "page_height": 1000, + "layout": { + "blocks": [ + { + "id": "figure_0", + "type": "Figure", + "bbox": [100, 100, 600, 500], + }, + { + "id": "table_0", + "type": "Table", + "bbox": [200, 600, 900, 900], + }, + ] + }, + } + ] + } + json_path.write_text(json.dumps(payload), encoding="utf-8") + + +def test_extract_v3_figure_crops(tmp_path): + crop_utils = _load_crop_utils_module() + pdf_path = tmp_path / "sample.pdf" + json_path = tmp_path / "sample.json" + output_dir = tmp_path / "figures" + + _build_test_pdf(pdf_path) + _build_test_v3_json(json_path) + + summary = crop_utils.extract_target_images( + pdf_path=str(pdf_path), + v3_json_path=str(json_path), + dpi=144, + output_dir=str(output_dir), + target_kind="figure", + ) + + assert summary["crop_count"] == 1 + assert summary["page_count_with_targets"] == 1 + assert (output_dir / "_pages" / "page_0001.png").is_file() + assert (output_dir / "manifest.json").is_file() + crop_path = Path(summary["items"][0]["crop_path"]) + assert crop_path.is_file() + + +def test_extract_v3_table_crops(tmp_path): + crop_utils = _load_crop_utils_module() + pdf_path = tmp_path / "sample.pdf" + json_path = tmp_path / "sample.json" + output_dir = tmp_path / "tables" + + _build_test_pdf(pdf_path) + _build_test_v3_json(json_path) + + summary = crop_utils.extract_target_images( + pdf_path=str(pdf_path), + v3_json_path=str(json_path), + dpi=144, + output_dir=str(output_dir), + target_kind="table", + ) + + assert summary["crop_count"] == 1 + assert summary["page_count_with_targets"] == 1 + assert (output_dir / "_pages" / "page_0001.png").is_file() + assert (output_dir / "manifest.json").is_file() + crop_path = Path(summary["items"][0]["crop_path"]) + assert crop_path.is_file() From da07b3ebf36cb19d09aeb1c4169d9cf49ba03024 Mon Sep 17 00:00:00 2001 From: cc Date: Thu, 12 Mar 2026 14:42:31 +0800 Subject: [PATCH 40/46] chore: ignore local history and tmp outputs --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index d382e17..9dfc18f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ node_modules my-docs Output self_use.py +.history/ +tmp/ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] From 27616026a43a4ba8d32d33a0c89cc06876019dd1 Mon Sep 17 00:00:00 2001 From: cc Date: Thu, 12 Mar 2026 14:50:24 +0800 Subject: [PATCH 41/46] docs: add import examples for v3 crop helpers --- README.md | 21 +++++++++++++++++++++ README_CN.md | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/README.md b/README.md index 109cd5f..328bdbe 100644 --- a/README.md +++ b/README.md @@ -191,4 +191,25 @@ python scripts/extract_v3_tables.py \ --output-dir ./Output/tables ``` +You can also import the helpers directly: + +```python +from pdfdeal import extract_v3_figure_images, extract_v3_table_images + +figure_summary = extract_v3_figure_images( + pdf_path="/path/to/input.pdf", + v3_json_path="/path/to/input_v3.json", + dpi=200, + output_dir="./Output/figures", +) +table_summary = extract_v3_table_images( + pdf_path="/path/to/input.pdf", + v3_json_path="/path/to/input_v3.json", + dpi=200, + output_dir="./Output/tables", +) +print(figure_summary["crop_count"], figure_summary["manifest_path"]) +print(table_summary["crop_count"], table_summary["manifest_path"]) +``` + See the online documentation for details. diff --git a/README_CN.md b/README_CN.md index 5d3f545..131603b 100644 --- a/README_CN.md +++ b/README_CN.md @@ -189,3 +189,25 @@ python scripts/extract_v3_tables.py \ --output-dir ./Output/tables ``` +你也可以直接 import 这些工具函数: + +```python +from pdfdeal import extract_v3_figure_images, extract_v3_table_images + +figure_summary = extract_v3_figure_images( + pdf_path="/path/to/input.pdf", + v3_json_path="/path/to/input_v3.json", + dpi=200, + output_dir="./Output/figures", +) +table_summary = extract_v3_table_images( + pdf_path="/path/to/input.pdf", + v3_json_path="/path/to/input_v3.json", + dpi=200, + output_dir="./Output/tables", +) +print(figure_summary["crop_count"], figure_summary["manifest_path"]) +print(table_summary["crop_count"], table_summary["manifest_path"]) +``` + +更多详细请参见在线文档。 From 96b7bca58c41c428dd06b8fa6b6c1e8b922ec1a1 Mon Sep 17 00:00:00 2001 From: cc Date: Thu, 12 Mar 2026 14:51:26 +0800 Subject: [PATCH 42/46] refactor: move v3 crop helpers into package module --- scripts/extract_v3_figures.py | 10 +++- scripts/extract_v3_tables.py | 10 +++- src/pdfdeal/__init__.py | 3 +- .../pdfdeal/v3_media.py | 52 +++++++++++++++++-- tests/test_v3_media_crop_scripts.py | 21 ++------ 5 files changed, 71 insertions(+), 25 deletions(-) rename scripts/v3_media_crop_utils.py => src/pdfdeal/v3_media.py (92%) diff --git a/scripts/extract_v3_figures.py b/scripts/extract_v3_figures.py index 5ee5127..2acfa2c 100644 --- a/scripts/extract_v3_figures.py +++ b/scripts/extract_v3_figures.py @@ -1,5 +1,13 @@ #!/usr/bin/env python3 -from v3_media_crop_utils import run_cli +from pathlib import Path +import sys + +try: + from pdfdeal.v3_media import run_cli +except ImportError: # pragma: no cover - local repo execution fallback + sys.modules.pop("pdfdeal", None) + sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) + from pdfdeal.v3_media import run_cli if __name__ == "__main__": diff --git a/scripts/extract_v3_tables.py b/scripts/extract_v3_tables.py index e10fe17..9945ee4 100644 --- a/scripts/extract_v3_tables.py +++ b/scripts/extract_v3_tables.py @@ -1,5 +1,13 @@ #!/usr/bin/env python3 -from v3_media_crop_utils import run_cli +from pathlib import Path +import sys + +try: + from pdfdeal.v3_media import run_cli +except ImportError: # pragma: no cover - local repo execution fallback + sys.modules.pop("pdfdeal", None) + sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) + from pdfdeal.v3_media import run_cli if __name__ == "__main__": diff --git a/src/pdfdeal/__init__.py b/src/pdfdeal/__init__.py index cbb8e35..cc35f7f 100644 --- a/src/pdfdeal/__init__.py +++ b/src/pdfdeal/__init__.py @@ -1,3 +1,4 @@ from .doc2x import Doc2X +from .v3_media import extract_v3_figure_images, extract_v3_table_images -__all__ = ["Doc2X"] +__all__ = ["Doc2X", "extract_v3_figure_images", "extract_v3_table_images"] diff --git a/scripts/v3_media_crop_utils.py b/src/pdfdeal/v3_media.py similarity index 92% rename from scripts/v3_media_crop_utils.py rename to src/pdfdeal/v3_media.py index 9390322..a2ad275 100644 --- a/scripts/v3_media_crop_utils.py +++ b/src/pdfdeal/v3_media.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 from __future__ import annotations import argparse @@ -6,7 +5,7 @@ import re import sys from pathlib import Path -from typing import Any, Dict, Iterable, List, Tuple +from typing import Any, Dict, List, Tuple try: import fitz @@ -186,7 +185,9 @@ def validate_v3_result( if block_type != target_block_type: continue block_xyxy = _block_xyxy(block) - _validate_block_within_page(block_xyxy, page_xyxy, block_id or "") + _validate_block_within_page( + block_xyxy, page_xyxy, block_id or "" + ) target_blocks.append( { "id": block_id or f"{target_block_type.lower()}_{page_idx}", @@ -216,7 +217,9 @@ def _page_image_to_pil(page_pixmap: "fitz.Pixmap") -> Image.Image: mode = "RGB" if page_pixmap.alpha: mode = "RGBA" - return Image.frombytes(mode, [page_pixmap.width, page_pixmap.height], page_pixmap.samples) + return Image.frombytes( + mode, [page_pixmap.width, page_pixmap.height], page_pixmap.samples + ) def _crop_box_in_pixels( @@ -334,6 +337,36 @@ def extract_target_images( } +def extract_v3_figure_images( + pdf_path: str, + v3_json_path: str, + dpi: int, + output_dir: str, +) -> Dict[str, Any]: + return extract_target_images( + pdf_path=pdf_path, + v3_json_path=v3_json_path, + dpi=dpi, + output_dir=output_dir, + target_kind="figure", + ) + + +def extract_v3_table_images( + pdf_path: str, + v3_json_path: str, + dpi: int, + output_dir: str, +) -> Dict[str, Any]: + return extract_target_images( + pdf_path=pdf_path, + v3_json_path=v3_json_path, + dpi=dpi, + output_dir=output_dir, + target_kind="table", + ) + + def build_parser(target_kind: str) -> argparse.ArgumentParser: parser = argparse.ArgumentParser( description=( @@ -386,3 +419,14 @@ def run_cli(target_kind: str) -> int: print(f"Manifest: {summary['manifest_path']}") return 0 + +__all__ = [ + "V3ValidationError", + "load_v3_result", + "validate_v3_result", + "extract_target_images", + "extract_v3_figure_images", + "extract_v3_table_images", + "build_parser", + "run_cli", +] diff --git a/tests/test_v3_media_crop_scripts.py b/tests/test_v3_media_crop_scripts.py index a003d13..e8ba0f9 100644 --- a/tests/test_v3_media_crop_scripts.py +++ b/tests/test_v3_media_crop_scripts.py @@ -1,19 +1,8 @@ -import importlib.util import json from pathlib import Path import fitz - - -def _load_crop_utils_module(): - module_path = ( - Path(__file__).resolve().parents[1] / "scripts" / "v3_media_crop_utils.py" - ) - spec = importlib.util.spec_from_file_location("v3_media_crop_utils", module_path) - module = importlib.util.module_from_spec(spec) - assert spec and spec.loader - spec.loader.exec_module(module) - return module +from pdfdeal.v3_media import extract_v3_figure_images, extract_v3_table_images def _build_test_pdf(pdf_path: Path) -> None: @@ -55,7 +44,6 @@ def _build_test_v3_json(json_path: Path) -> None: def test_extract_v3_figure_crops(tmp_path): - crop_utils = _load_crop_utils_module() pdf_path = tmp_path / "sample.pdf" json_path = tmp_path / "sample.json" output_dir = tmp_path / "figures" @@ -63,12 +51,11 @@ def test_extract_v3_figure_crops(tmp_path): _build_test_pdf(pdf_path) _build_test_v3_json(json_path) - summary = crop_utils.extract_target_images( + summary = extract_v3_figure_images( pdf_path=str(pdf_path), v3_json_path=str(json_path), dpi=144, output_dir=str(output_dir), - target_kind="figure", ) assert summary["crop_count"] == 1 @@ -80,7 +67,6 @@ def test_extract_v3_figure_crops(tmp_path): def test_extract_v3_table_crops(tmp_path): - crop_utils = _load_crop_utils_module() pdf_path = tmp_path / "sample.pdf" json_path = tmp_path / "sample.json" output_dir = tmp_path / "tables" @@ -88,12 +74,11 @@ def test_extract_v3_table_crops(tmp_path): _build_test_pdf(pdf_path) _build_test_v3_json(json_path) - summary = crop_utils.extract_target_images( + summary = extract_v3_table_images( pdf_path=str(pdf_path), v3_json_path=str(json_path), dpi=144, output_dir=str(output_dir), - target_kind="table", ) assert summary["crop_count"] == 1 From bb0dd884440884e91be494338c29539f21c3f2ad Mon Sep 17 00:00:00 2001 From: HSn Date: Mon, 16 Mar 2026 18:07:58 +0800 Subject: [PATCH 43/46] fix(deps): bump vulnerable dependencies to patched versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address high/moderate severity CVEs reported in dependency review: - cryptography: 46.0.4 → >=46.0.5 (CVE-2026-26007, SECT curves subgroup attack) - h2: pin >=4.3.0 on Python>=3.9 (CVE-2025-57804, HTTP request smuggling) - pypdf: pin >=6.8.0 on Python>=3.9 (multiple DoS/RAM CVEs); <6.0.0 on 3.8 - urllib3: pin >=2.6.3 on Python>=3.9 (decompression bomb CVEs); 1.x branch has no patch - Pillow: pin >=12.1.1 on Python>=3.10 (CVE-2026-25990, PSD OOB write); use 10.x on <3.10 Note: h2, pypdf, urllib3 and Pillow vulnerabilities on Python 3.8 cannot be fixed as upstream dropped Python 3.8 support before releasing patches. --- pyproject.toml | 21 ++- uv.lock | 412 ++++++++++++++++++++++++++++--------------------- 2 files changed, 256 insertions(+), 177 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 623ce38..167a81c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,16 +12,28 @@ classifiers = [ ] dependencies = [ "aiofiles>=24.1.0", + "cryptography>=46.0.5", + "h2>=4.3.0; python_version>='3.9'", "httpx[http2]>=0.23.1, <1", - "pypdf", + "pypdf>=6.8.0; python_version>='3.9'", + "pypdf>=5.0.0,<6.0.0; python_version<'3.9'", "pytest>=8.3.5", + "urllib3>=2.6.3; python_version>='3.9'", + "urllib3>=1.26.20,<2.0.0; python_version<'3.9'", ] [project.optional-dependencies] -tools = ["emoji", "Pillow", "reportlab", "beautifulsoup4"] +tools = [ + "emoji", + "Pillow>=12.1.1; python_version>='3.10'", + "Pillow>=10.4.0,<12.0.0; python_version<'3.10'", + "reportlab", + "beautifulsoup4", +] rag = [ "emoji", - "Pillow", + "Pillow>=12.1.1; python_version>='3.10'", + "Pillow>=10.4.0,<12.0.0; python_version<'3.10'", "reportlab", "oss2", "boto3", @@ -31,7 +43,8 @@ rag = [ dev = [ "pytest", "emoji", - "Pillow", + "Pillow>=12.1.1; python_version>='3.10'", + "Pillow>=10.4.0,<12.0.0; python_version<'3.10'", "reportlab", "oss2", "boto3", diff --git a/uv.lock b/uv.lock index a23f4b3..463795c 100644 --- a/uv.lock +++ b/uv.lock @@ -195,6 +195,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, ] +[[package]] +name = "boto3" +version = "1.7.84" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "botocore", version = "1.10.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "jmespath", marker = "python_full_version == '3.9.*'" }, + { name = "s3transfer", version = "0.1.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/2b/7010a5189859eec725c36081b1d1c8e721000ebdf81a1682ec6b64e1c373/boto3-1.7.84.tar.gz", hash = "sha256:64496f2c814e454e26c024df86bd08fb4643770d0e2b7a8fd70055fc6683eb9d", size = 93151, upload-time = "2018-08-23T23:58:39.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/6e/faf7c6c3ae59641c75023fb5dcc8a02c33752ac8ccadf9931e8d8364f2fe/boto3-1.7.84-py2.py3-none-any.whl", hash = "sha256:0ed4b107c3b4550547aaec3c9bb17df068ff92d1f6f4781205800e2cb8a66de5", size = 128502, upload-time = "2018-08-23T23:58:41.734Z" }, +] + [[package]] name = "boto3" version = "1.37.38" @@ -220,18 +237,34 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14'", "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", ] dependencies = [ - { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "jmespath", marker = "python_full_version >= '3.9'" }, - { name = "s3transfer", version = "0.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "jmespath", marker = "python_full_version >= '3.10'" }, + { name = "s3transfer", version = "0.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1d/88/de5c2a0ce069973345f9fac81200de5b58f503e231dbd566357a5b8c9109/boto3-1.42.44.tar.gz", hash = "sha256:d5601ea520d30674c1d15791a1f98b5c055e973c775e1d9952ccc09ee5913c4e", size = 112865, upload-time = "2026-02-06T20:28:05.647Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/40/fb/0341da1482f7fa256d257cfba89383f6692570b741598d4e26d879b26c57/boto3-1.42.44-py3-none-any.whl", hash = "sha256:32e995b0d56e19422cff22f586f698e8924c792eb00943de9c517ff4607e4e18", size = 140604, upload-time = "2026-02-06T20:28:03.598Z" }, ] +[[package]] +name = "botocore" +version = "1.10.84" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "docutils", marker = "python_full_version == '3.9.*'" }, + { name = "jmespath", marker = "python_full_version == '3.9.*'" }, + { name = "python-dateutil", marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/01/43759329a6f7036aa739e86d446b908fa207222e224e537cd3d66fdb4c29/botocore-1.10.84.tar.gz", hash = "sha256:d3e4b5a2c903ea30d19d41ea2f65d0e51dce54f4f4c4dfd6ecd7b04f240844a8", size = 4612644, upload-time = "2018-08-23T23:58:44.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/b7/cb08cd1af2bb0d0dfb393101a93b6ab6fb80f109ab7b37f2f34386c11351/botocore-1.10.84-py2.py3-none-any.whl", hash = "sha256:380852e1adb9ba4ba9ff096af61f88a6888197b86e580e1bd786f04ebe6f9c0c", size = 4478913, upload-time = "2018-08-23T23:58:47.736Z" }, +] + [[package]] name = "botocore" version = "1.37.38" @@ -257,12 +290,10 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14'", "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", ] dependencies = [ - { name = "jmespath", marker = "python_full_version >= '3.9'" }, - { name = "python-dateutil", marker = "python_full_version >= '3.9'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "jmespath", marker = "python_full_version >= '3.10'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.10'" }, { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/29/ff/54cef2c5ff4e1c77fabc0ed68781e48eb36f33433f82bba3605e9c0e45ce/botocore-1.42.44.tar.gz", hash = "sha256:47ba27360f2afd2c2721545d8909217f7be05fdee16dd8fc0b09589535a0701c", size = 14936071, upload-time = "2026-02-06T20:27:53.654Z" } @@ -597,7 +628,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/6b/b0/e595ce2a2527e169c [[package]] name = "cryptography" -version = "46.0.4" +version = "46.0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9' and platform_python_implementation != 'PyPy'" }, @@ -605,56 +636,65 @@ dependencies = [ { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/19/f748958276519adf6a0c1e79e7b8860b4830dda55ccdf29f2719b5fc499c/cryptography-46.0.4.tar.gz", hash = "sha256:bfd019f60f8abc2ed1b9be4ddc21cfef059c841d86d710bb69909a688cbb8f59", size = 749301, upload-time = "2026-01-28T00:24:37.379Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/99/157aae7949a5f30d51fcb1a9851e8ebd5c74bf99b5285d8bb4b8b9ee641e/cryptography-46.0.4-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:281526e865ed4166009e235afadf3a4c4cba6056f99336a99efba65336fd5485", size = 7173686, upload-time = "2026-01-28T00:23:07.515Z" }, - { url = "https://files.pythonhosted.org/packages/87/91/874b8910903159043b5c6a123b7e79c4559ddd1896e38967567942635778/cryptography-46.0.4-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f14fba5bf6f4390d7ff8f086c566454bff0411f6d8aa7af79c88b6f9267aecc", size = 4275871, upload-time = "2026-01-28T00:23:09.439Z" }, - { url = "https://files.pythonhosted.org/packages/c0/35/690e809be77896111f5b195ede56e4b4ed0435b428c2f2b6d35046fbb5e8/cryptography-46.0.4-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:47bcd19517e6389132f76e2d5303ded6cf3f78903da2158a671be8de024f4cd0", size = 4423124, upload-time = "2026-01-28T00:23:11.529Z" }, - { url = "https://files.pythonhosted.org/packages/1a/5b/a26407d4f79d61ca4bebaa9213feafdd8806dc69d3d290ce24996d3cfe43/cryptography-46.0.4-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:01df4f50f314fbe7009f54046e908d1754f19d0c6d3070df1e6268c5a4af09fa", size = 4277090, upload-time = "2026-01-28T00:23:13.123Z" }, - { url = "https://files.pythonhosted.org/packages/0c/d8/4bb7aec442a9049827aa34cee1aa83803e528fa55da9a9d45d01d1bb933e/cryptography-46.0.4-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5aa3e463596b0087b3da0dbe2b2487e9fc261d25da85754e30e3b40637d61f81", size = 4947652, upload-time = "2026-01-28T00:23:14.554Z" }, - { url = "https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0a9ad24359fee86f131836a9ac3bffc9329e956624a2d379b613f8f8abaf5255", size = 4455157, upload-time = "2026-01-28T00:23:16.443Z" }, - { url = "https://files.pythonhosted.org/packages/0a/05/19d849cf4096448779d2dcc9bb27d097457dac36f7273ffa875a93b5884c/cryptography-46.0.4-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:dc1272e25ef673efe72f2096e92ae39dea1a1a450dd44918b15351f72c5a168e", size = 3981078, upload-time = "2026-01-28T00:23:17.838Z" }, - { url = "https://files.pythonhosted.org/packages/e6/89/f7bac81d66ba7cde867a743ea5b37537b32b5c633c473002b26a226f703f/cryptography-46.0.4-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:de0f5f4ec8711ebc555f54735d4c673fc34b65c44283895f1a08c2b49d2fd99c", size = 4276213, upload-time = "2026-01-28T00:23:19.257Z" }, - { url = "https://files.pythonhosted.org/packages/da/9f/7133e41f24edd827020ad21b068736e792bc68eecf66d93c924ad4719fb3/cryptography-46.0.4-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:eeeb2e33d8dbcccc34d64651f00a98cb41b2dc69cef866771a5717e6734dfa32", size = 4912190, upload-time = "2026-01-28T00:23:21.244Z" }, - { url = "https://files.pythonhosted.org/packages/a6/f7/6d43cbaddf6f65b24816e4af187d211f0bc536a29961f69faedc48501d8e/cryptography-46.0.4-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3d425eacbc9aceafd2cb429e42f4e5d5633c6f873f5e567077043ef1b9bbf616", size = 4454641, upload-time = "2026-01-28T00:23:22.866Z" }, - { url = "https://files.pythonhosted.org/packages/9e/4f/ebd0473ad656a0ac912a16bd07db0f5d85184924e14fc88feecae2492834/cryptography-46.0.4-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91627ebf691d1ea3976a031b61fb7bac1ccd745afa03602275dda443e11c8de0", size = 4405159, upload-time = "2026-01-28T00:23:25.278Z" }, - { url = "https://files.pythonhosted.org/packages/d1/f7/7923886f32dc47e27adeff8246e976d77258fd2aa3efdd1754e4e323bf49/cryptography-46.0.4-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2d08bc22efd73e8854b0b7caff402d735b354862f1145d7be3b9c0f740fef6a0", size = 4666059, upload-time = "2026-01-28T00:23:26.766Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a7/0fca0fd3591dffc297278a61813d7f661a14243dd60f499a7a5b48acb52a/cryptography-46.0.4-cp311-abi3-win32.whl", hash = "sha256:82a62483daf20b8134f6e92898da70d04d0ef9a75829d732ea1018678185f4f5", size = 3026378, upload-time = "2026-01-28T00:23:28.317Z" }, - { url = "https://files.pythonhosted.org/packages/2d/12/652c84b6f9873f0909374864a57b003686c642ea48c84d6c7e2c515e6da5/cryptography-46.0.4-cp311-abi3-win_amd64.whl", hash = "sha256:6225d3ebe26a55dbc8ead5ad1265c0403552a63336499564675b29eb3184c09b", size = 3478614, upload-time = "2026-01-28T00:23:30.275Z" }, - { url = "https://files.pythonhosted.org/packages/b9/27/542b029f293a5cce59349d799d4d8484b3b1654a7b9a0585c266e974a488/cryptography-46.0.4-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:485e2b65d25ec0d901bca7bcae0f53b00133bf3173916d8e421f6fddde103908", size = 7116417, upload-time = "2026-01-28T00:23:31.958Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f5/559c25b77f40b6bf828eabaf988efb8b0e17b573545edb503368ca0a2a03/cryptography-46.0.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:078e5f06bd2fa5aea5a324f2a09f914b1484f1d0c2a4d6a8a28c74e72f65f2da", size = 4264508, upload-time = "2026-01-28T00:23:34.264Z" }, - { url = "https://files.pythonhosted.org/packages/49/a1/551fa162d33074b660dc35c9bc3616fefa21a0e8c1edd27b92559902e408/cryptography-46.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dce1e4f068f03008da7fa51cc7abc6ddc5e5de3e3d1550334eaf8393982a5829", size = 4409080, upload-time = "2026-01-28T00:23:35.793Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/4d8d129a755f5d6df1bbee69ea2f35ebfa954fa1847690d1db2e8bca46a5/cryptography-46.0.4-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:2067461c80271f422ee7bdbe79b9b4be54a5162e90345f86a23445a0cf3fd8a2", size = 4270039, upload-time = "2026-01-28T00:23:37.263Z" }, - { url = "https://files.pythonhosted.org/packages/4c/f5/ed3fcddd0a5e39321e595e144615399e47e7c153a1fb8c4862aec3151ff9/cryptography-46.0.4-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:c92010b58a51196a5f41c3795190203ac52edfd5dc3ff99149b4659eba9d2085", size = 4926748, upload-time = "2026-01-28T00:23:38.884Z" }, - { url = "https://files.pythonhosted.org/packages/43/ae/9f03d5f0c0c00e85ecb34f06d3b79599f20630e4db91b8a6e56e8f83d410/cryptography-46.0.4-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:829c2b12bbc5428ab02d6b7f7e9bbfd53e33efd6672d21341f2177470171ad8b", size = 4442307, upload-time = "2026-01-28T00:23:40.56Z" }, - { url = "https://files.pythonhosted.org/packages/8b/22/e0f9f2dae8040695103369cf2283ef9ac8abe4d51f68710bec2afd232609/cryptography-46.0.4-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:62217ba44bf81b30abaeda1488686a04a702a261e26f87db51ff61d9d3510abd", size = 3959253, upload-time = "2026-01-28T00:23:42.827Z" }, - { url = "https://files.pythonhosted.org/packages/01/5b/6a43fcccc51dae4d101ac7d378a8724d1ba3de628a24e11bf2f4f43cba4d/cryptography-46.0.4-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:9c2da296c8d3415b93e6053f5a728649a87a48ce084a9aaf51d6e46c87c7f2d2", size = 4269372, upload-time = "2026-01-28T00:23:44.655Z" }, - { url = "https://files.pythonhosted.org/packages/17/b7/0f6b8c1dd0779df2b526e78978ff00462355e31c0a6f6cff8a3e99889c90/cryptography-46.0.4-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9b34d8ba84454641a6bf4d6762d15847ecbd85c1316c0a7984e6e4e9f748ec2e", size = 4891908, upload-time = "2026-01-28T00:23:46.48Z" }, - { url = "https://files.pythonhosted.org/packages/83/17/259409b8349aa10535358807a472c6a695cf84f106022268d31cea2b6c97/cryptography-46.0.4-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:df4a817fa7138dd0c96c8c8c20f04b8aaa1fac3bbf610913dcad8ea82e1bfd3f", size = 4441254, upload-time = "2026-01-28T00:23:48.403Z" }, - { url = "https://files.pythonhosted.org/packages/9c/fe/e4a1b0c989b00cee5ffa0764401767e2d1cf59f45530963b894129fd5dce/cryptography-46.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b1de0ebf7587f28f9190b9cb526e901bf448c9e6a99655d2b07fff60e8212a82", size = 4396520, upload-time = "2026-01-28T00:23:50.26Z" }, - { url = "https://files.pythonhosted.org/packages/b3/81/ba8fd9657d27076eb40d6a2f941b23429a3c3d2f56f5a921d6b936a27bc9/cryptography-46.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9b4d17bc7bd7cdd98e3af40b441feaea4c68225e2eb2341026c84511ad246c0c", size = 4651479, upload-time = "2026-01-28T00:23:51.674Z" }, - { url = "https://files.pythonhosted.org/packages/00/03/0de4ed43c71c31e4fe954edd50b9d28d658fef56555eba7641696370a8e2/cryptography-46.0.4-cp314-cp314t-win32.whl", hash = "sha256:c411f16275b0dea722d76544a61d6421e2cc829ad76eec79280dbdc9ddf50061", size = 3001986, upload-time = "2026-01-28T00:23:53.485Z" }, - { url = "https://files.pythonhosted.org/packages/5c/70/81830b59df7682917d7a10f833c4dab2a5574cd664e86d18139f2b421329/cryptography-46.0.4-cp314-cp314t-win_amd64.whl", hash = "sha256:728fedc529efc1439eb6107b677f7f7558adab4553ef8669f0d02d42d7b959a7", size = 3468288, upload-time = "2026-01-28T00:23:55.09Z" }, - { url = "https://files.pythonhosted.org/packages/56/f7/f648fdbb61d0d45902d3f374217451385edc7e7768d1b03ff1d0e5ffc17b/cryptography-46.0.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a9556ba711f7c23f77b151d5798f3ac44a13455cc68db7697a1096e6d0563cab", size = 7169583, upload-time = "2026-01-28T00:23:56.558Z" }, - { url = "https://files.pythonhosted.org/packages/d8/cc/8f3224cbb2a928de7298d6ed4790f5ebc48114e02bdc9559196bfb12435d/cryptography-46.0.4-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8bf75b0259e87fa70bddc0b8b4078b76e7fd512fd9afae6c1193bcf440a4dbef", size = 4275419, upload-time = "2026-01-28T00:23:58.364Z" }, - { url = "https://files.pythonhosted.org/packages/17/43/4a18faa7a872d00e4264855134ba82d23546c850a70ff209e04ee200e76f/cryptography-46.0.4-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3c268a3490df22270955966ba236d6bc4a8f9b6e4ffddb78aac535f1a5ea471d", size = 4419058, upload-time = "2026-01-28T00:23:59.867Z" }, - { url = "https://files.pythonhosted.org/packages/ee/64/6651969409821d791ba12346a124f55e1b76f66a819254ae840a965d4b9c/cryptography-46.0.4-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:812815182f6a0c1d49a37893a303b44eaac827d7f0d582cecfc81b6427f22973", size = 4278151, upload-time = "2026-01-28T00:24:01.731Z" }, - { url = "https://files.pythonhosted.org/packages/20/0b/a7fce65ee08c3c02f7a8310cc090a732344066b990ac63a9dfd0a655d321/cryptography-46.0.4-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:a90e43e3ef65e6dcf969dfe3bb40cbf5aef0d523dff95bfa24256be172a845f4", size = 4939441, upload-time = "2026-01-28T00:24:03.175Z" }, - { url = "https://files.pythonhosted.org/packages/db/a7/20c5701e2cd3e1dfd7a19d2290c522a5f435dd30957d431dcb531d0f1413/cryptography-46.0.4-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a05177ff6296644ef2876fce50518dffb5bcdf903c85250974fc8bc85d54c0af", size = 4451617, upload-time = "2026-01-28T00:24:05.403Z" }, - { url = "https://files.pythonhosted.org/packages/00/dc/3e16030ea9aa47b63af6524c354933b4fb0e352257c792c4deeb0edae367/cryptography-46.0.4-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:daa392191f626d50f1b136c9b4cf08af69ca8279d110ea24f5c2700054d2e263", size = 3977774, upload-time = "2026-01-28T00:24:06.851Z" }, - { url = "https://files.pythonhosted.org/packages/42/c8/ad93f14118252717b465880368721c963975ac4b941b7ef88f3c56bf2897/cryptography-46.0.4-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e07ea39c5b048e085f15923511d8121e4a9dc45cee4e3b970ca4f0d338f23095", size = 4277008, upload-time = "2026-01-28T00:24:08.926Z" }, - { url = "https://files.pythonhosted.org/packages/00/cf/89c99698151c00a4631fbfcfcf459d308213ac29e321b0ff44ceeeac82f1/cryptography-46.0.4-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d5a45ddc256f492ce42a4e35879c5e5528c09cd9ad12420828c972951d8e016b", size = 4903339, upload-time = "2026-01-28T00:24:12.009Z" }, - { url = "https://files.pythonhosted.org/packages/03/c3/c90a2cb358de4ac9309b26acf49b2a100957e1ff5cc1e98e6c4996576710/cryptography-46.0.4-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:6bb5157bf6a350e5b28aee23beb2d84ae6f5be390b2f8ee7ea179cda077e1019", size = 4451216, upload-time = "2026-01-28T00:24:13.975Z" }, - { url = "https://files.pythonhosted.org/packages/96/2c/8d7f4171388a10208671e181ca43cdc0e596d8259ebacbbcfbd16de593da/cryptography-46.0.4-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dd5aba870a2c40f87a3af043e0dee7d9eb02d4aff88a797b48f2b43eff8c3ab4", size = 4404299, upload-time = "2026-01-28T00:24:16.169Z" }, - { url = "https://files.pythonhosted.org/packages/e9/23/cbb2036e450980f65c6e0a173b73a56ff3bccd8998965dea5cc9ddd424a5/cryptography-46.0.4-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:93d8291da8d71024379ab2cb0b5c57915300155ad42e07f76bea6ad838d7e59b", size = 4664837, upload-time = "2026-01-28T00:24:17.629Z" }, - { url = "https://files.pythonhosted.org/packages/0a/21/f7433d18fe6d5845329cbdc597e30caf983229c7a245bcf54afecc555938/cryptography-46.0.4-cp38-abi3-win32.whl", hash = "sha256:0563655cb3c6d05fb2afe693340bc050c30f9f34e15763361cf08e94749401fc", size = 3009779, upload-time = "2026-01-28T00:24:20.198Z" }, - { url = "https://files.pythonhosted.org/packages/3a/6a/bd2e7caa2facffedf172a45c1a02e551e6d7d4828658c9a245516a598d94/cryptography-46.0.4-cp38-abi3-win_amd64.whl", hash = "sha256:fa0900b9ef9c49728887d1576fd8d9e7e3ea872fa9b25ef9b64888adc434e976", size = 3466633, upload-time = "2026-01-28T00:24:21.851Z" }, - { url = "https://files.pythonhosted.org/packages/59/e0/f9c6c53e1f2a1c2507f00f2faba00f01d2f334b35b0fbfe5286715da2184/cryptography-46.0.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:766330cce7416c92b5e90c3bb71b1b79521760cdcfc3a6a1a182d4c9fab23d2b", size = 3476316, upload-time = "2026-01-28T00:24:24.144Z" }, - { url = "https://files.pythonhosted.org/packages/27/7a/f8d2d13227a9a1a9fe9c7442b057efecffa41f1e3c51d8622f26b9edbe8f/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c236a44acfb610e70f6b3e1c3ca20ff24459659231ef2f8c48e879e2d32b73da", size = 4216693, upload-time = "2026-01-28T00:24:25.758Z" }, - { url = "https://files.pythonhosted.org/packages/c5/de/3787054e8f7972658370198753835d9d680f6cd4a39df9f877b57f0dd69c/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8a15fb869670efa8f83cbffbc8753c1abf236883225aed74cd179b720ac9ec80", size = 4382765, upload-time = "2026-01-28T00:24:27.577Z" }, - { url = "https://files.pythonhosted.org/packages/8a/5f/60e0afb019973ba6a0b322e86b3d61edf487a4f5597618a430a2a15f2d22/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:fdc3daab53b212472f1524d070735b2f0c214239df131903bae1d598016fa822", size = 4216066, upload-time = "2026-01-28T00:24:29.056Z" }, - { url = "https://files.pythonhosted.org/packages/81/8e/bf4a0de294f147fee66f879d9bae6f8e8d61515558e3d12785dd90eca0be/cryptography-46.0.4-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:44cc0675b27cadb71bdbb96099cca1fa051cd11d2ade09e5cd3a2edb929ed947", size = 4382025, upload-time = "2026-01-28T00:24:30.681Z" }, - { url = "https://files.pythonhosted.org/packages/79/f4/9ceb90cfd6a3847069b0b0b353fd3075dc69b49defc70182d8af0c4ca390/cryptography-46.0.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be8c01a7d5a55f9a47d1888162b76c8f49d62b234d88f0ff91a9fbebe32ffbc3", size = 3406043, upload-time = "2026-01-28T00:24:32.236Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, + { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, + { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, + { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, + { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, + { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, + { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, + { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, + { url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, + { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, + { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, + { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, + { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, + { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, + { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, + { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, + { url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" }, + { url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, + { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, + { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, + { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, + { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, + { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, + { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, + { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, + { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, + { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, + { url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload-time = "2026-02-10T19:18:20.687Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" }, + { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" }, + { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" }, + { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" }, +] + +[[package]] +name = "docutils" +version = "0.22.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/b6/03bb70946330e88ffec97aefd3ea75ba575cb2e762061e0e62a213befee8/docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968", size = 2291750, upload-time = "2025-12-18T19:00:26.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, ] [[package]] @@ -909,8 +949,7 @@ dependencies = [ { name = "certifi", marker = "python_full_version >= '3.9'" }, { name = "pycryptodome", marker = "python_full_version >= '3.9'" }, { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/40/df/6dfc6540f96a74125a11653cce717603fd5b7d0001a8e847b3e54e72d238/minio-7.2.20.tar.gz", hash = "sha256:95898b7a023fbbfde375985aa77e2cd6a0762268db79cf886f002a9ea8e68598", size = 136113, upload-time = "2025-11-27T00:37:15.569Z" } wheels = [ @@ -948,19 +987,24 @@ source = { editable = "." } dependencies = [ { name = "aiofiles", version = "24.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "aiofiles", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "cryptography" }, + { name = "h2", version = "4.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, { name = "httpx", extra = ["http2"] }, { name = "pypdf", version = "5.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pypdf", version = "6.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pypdf", version = "6.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] [package.optional-dependencies] dev = [ { name = "beautifulsoup4" }, + { name = "boto3", version = "1.7.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, { name = "boto3", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "emoji" }, { name = "minio", version = "7.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, { name = "minio", version = "7.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, @@ -968,7 +1012,7 @@ dev = [ { name = "oss2" }, { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, @@ -977,8 +1021,9 @@ dev = [ ] rag = [ { name = "beautifulsoup4" }, + { name = "boto3", version = "1.7.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, { name = "boto3", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "emoji" }, { name = "minio", version = "7.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, { name = "minio", version = "7.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, @@ -986,7 +1031,7 @@ rag = [ { name = "oss2" }, { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] @@ -995,7 +1040,7 @@ tools = [ { name = "emoji" }, { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] @@ -1008,23 +1053,31 @@ requires-dist = [ { name = "beautifulsoup4", marker = "extra == 'tools'" }, { name = "boto3", marker = "extra == 'dev'" }, { name = "boto3", marker = "extra == 'rag'" }, + { name = "cryptography", specifier = ">=46.0.5" }, { name = "emoji", marker = "extra == 'dev'" }, { name = "emoji", marker = "extra == 'rag'" }, { name = "emoji", marker = "extra == 'tools'" }, + { name = "h2", marker = "python_full_version >= '3.9'", specifier = ">=4.3.0" }, { name = "httpx", extras = ["http2"], specifier = ">=0.23.1,<1" }, { name = "minio", marker = "extra == 'dev'" }, { name = "minio", marker = "extra == 'rag'" }, { name = "oss2", marker = "extra == 'dev'" }, { name = "oss2", marker = "extra == 'rag'" }, - { name = "pillow", marker = "extra == 'dev'" }, - { name = "pillow", marker = "extra == 'rag'" }, - { name = "pillow", marker = "extra == 'tools'" }, - { name = "pypdf" }, + { name = "pillow", marker = "python_full_version >= '3.10' and extra == 'dev'", specifier = ">=12.1.1" }, + { name = "pillow", marker = "python_full_version >= '3.10' and extra == 'rag'", specifier = ">=12.1.1" }, + { name = "pillow", marker = "python_full_version >= '3.10' and extra == 'tools'", specifier = ">=12.1.1" }, + { name = "pillow", marker = "python_full_version < '3.10' and extra == 'dev'", specifier = ">=10.4.0,<12.0.0" }, + { name = "pillow", marker = "python_full_version < '3.10' and extra == 'rag'", specifier = ">=10.4.0,<12.0.0" }, + { name = "pillow", marker = "python_full_version < '3.10' and extra == 'tools'", specifier = ">=10.4.0,<12.0.0" }, + { name = "pypdf", marker = "python_full_version < '3.9'", specifier = ">=5.0.0,<6.0.0" }, + { name = "pypdf", marker = "python_full_version >= '3.9'", specifier = ">=6.8.0" }, { name = "pytest", specifier = ">=8.3.5" }, { name = "pytest", marker = "extra == 'dev'" }, { name = "reportlab", marker = "extra == 'dev'" }, { name = "reportlab", marker = "extra == 'rag'" }, { name = "reportlab", marker = "extra == 'tools'" }, + { name = "urllib3", marker = "python_full_version < '3.9'", specifier = ">=1.26.20,<2.0.0" }, + { name = "urllib3", marker = "python_full_version >= '3.9'", specifier = ">=2.6.3" }, ] provides-extras = ["tools", "rag", "dev"] @@ -1237,104 +1290,104 @@ wheels = [ [[package]] name = "pillow" -version = "12.1.0" +version = "12.1.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14'", "python_full_version >= '3.10' and python_full_version < '3.14'", ] -sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/41/f73d92b6b883a579e79600d391f2e21cb0df767b2714ecbd2952315dfeef/pillow-12.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:fb125d860738a09d363a88daa0f59c4533529a90e564785e20fe875b200b6dbd", size = 5304089, upload-time = "2026-01-02T09:10:24.953Z" }, - { url = "https://files.pythonhosted.org/packages/94/55/7aca2891560188656e4a91ed9adba305e914a4496800da6b5c0a15f09edf/pillow-12.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cad302dc10fac357d3467a74a9561c90609768a6f73a1923b0fd851b6486f8b0", size = 4657815, upload-time = "2026-01-02T09:10:27.063Z" }, - { url = "https://files.pythonhosted.org/packages/e9/d2/b28221abaa7b4c40b7dba948f0f6a708bd7342c4d47ce342f0ea39643974/pillow-12.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a40905599d8079e09f25027423aed94f2823adaf2868940de991e53a449e14a8", size = 6222593, upload-time = "2026-01-02T09:10:29.115Z" }, - { url = "https://files.pythonhosted.org/packages/71/b8/7a61fb234df6a9b0b479f69e66901209d89ff72a435b49933f9122f94cac/pillow-12.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a7fe4225365c5e3a8e598982269c6d6698d3e783b3b1ae979e7819f9cd55c1", size = 8027579, upload-time = "2026-01-02T09:10:31.182Z" }, - { url = "https://files.pythonhosted.org/packages/ea/51/55c751a57cc524a15a0e3db20e5cde517582359508d62305a627e77fd295/pillow-12.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f10c98f49227ed8383d28174ee95155a675c4ed7f85e2e573b04414f7e371bda", size = 6335760, upload-time = "2026-01-02T09:10:33.02Z" }, - { url = "https://files.pythonhosted.org/packages/dc/7c/60e3e6f5e5891a1a06b4c910f742ac862377a6fe842f7184df4a274ce7bf/pillow-12.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8637e29d13f478bc4f153d8daa9ffb16455f0a6cb287da1b432fdad2bfbd66c7", size = 7027127, upload-time = "2026-01-02T09:10:35.009Z" }, - { url = "https://files.pythonhosted.org/packages/06/37/49d47266ba50b00c27ba63a7c898f1bb41a29627ced8c09e25f19ebec0ff/pillow-12.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:21e686a21078b0f9cb8c8a961d99e6a4ddb88e0fc5ea6e130172ddddc2e5221a", size = 6449896, upload-time = "2026-01-02T09:10:36.793Z" }, - { url = "https://files.pythonhosted.org/packages/f9/e5/67fd87d2913902462cd9b79c6211c25bfe95fcf5783d06e1367d6d9a741f/pillow-12.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2415373395a831f53933c23ce051021e79c8cd7979822d8cc478547a3f4da8ef", size = 7151345, upload-time = "2026-01-02T09:10:39.064Z" }, - { url = "https://files.pythonhosted.org/packages/bd/15/f8c7abf82af68b29f50d77c227e7a1f87ce02fdc66ded9bf603bc3b41180/pillow-12.1.0-cp310-cp310-win32.whl", hash = "sha256:e75d3dba8fc1ddfec0cd752108f93b83b4f8d6ab40e524a95d35f016b9683b09", size = 6325568, upload-time = "2026-01-02T09:10:41.035Z" }, - { url = "https://files.pythonhosted.org/packages/d4/24/7d1c0e160b6b5ac2605ef7d8be537e28753c0db5363d035948073f5513d7/pillow-12.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:64efdf00c09e31efd754448a383ea241f55a994fd079866b92d2bbff598aad91", size = 7032367, upload-time = "2026-01-02T09:10:43.09Z" }, - { url = "https://files.pythonhosted.org/packages/f4/03/41c038f0d7a06099254c60f618d0ec7be11e79620fc23b8e85e5b31d9a44/pillow-12.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f188028b5af6b8fb2e9a76ac0f841a575bd1bd396e46ef0840d9b88a48fdbcea", size = 2452345, upload-time = "2026-01-02T09:10:44.795Z" }, - { url = "https://files.pythonhosted.org/packages/43/c4/bf8328039de6cc22182c3ef007a2abfbbdab153661c0a9aa78af8d706391/pillow-12.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3", size = 5304057, upload-time = "2026-01-02T09:10:46.627Z" }, - { url = "https://files.pythonhosted.org/packages/43/06/7264c0597e676104cc22ca73ee48f752767cd4b1fe084662620b17e10120/pillow-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0", size = 4657811, upload-time = "2026-01-02T09:10:49.548Z" }, - { url = "https://files.pythonhosted.org/packages/72/64/f9189e44474610daf83da31145fa56710b627b5c4c0b9c235e34058f6b31/pillow-12.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451", size = 6232243, upload-time = "2026-01-02T09:10:51.62Z" }, - { url = "https://files.pythonhosted.org/packages/ef/30/0df458009be6a4caca4ca2c52975e6275c387d4e5c95544e34138b41dc86/pillow-12.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e", size = 8037872, upload-time = "2026-01-02T09:10:53.446Z" }, - { url = "https://files.pythonhosted.org/packages/e4/86/95845d4eda4f4f9557e25381d70876aa213560243ac1a6d619c46caaedd9/pillow-12.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84", size = 6345398, upload-time = "2026-01-02T09:10:55.426Z" }, - { url = "https://files.pythonhosted.org/packages/5c/1f/8e66ab9be3aaf1435bc03edd1ebdf58ffcd17f7349c1d970cafe87af27d9/pillow-12.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0", size = 7034667, upload-time = "2026-01-02T09:10:57.11Z" }, - { url = "https://files.pythonhosted.org/packages/f9/f6/683b83cb9b1db1fb52b87951b1c0b99bdcfceaa75febf11406c19f82cb5e/pillow-12.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b", size = 6458743, upload-time = "2026-01-02T09:10:59.331Z" }, - { url = "https://files.pythonhosted.org/packages/9a/7d/de833d63622538c1d58ce5395e7c6cb7e7dce80decdd8bde4a484e095d9f/pillow-12.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18", size = 7159342, upload-time = "2026-01-02T09:11:01.82Z" }, - { url = "https://files.pythonhosted.org/packages/8c/40/50d86571c9e5868c42b81fe7da0c76ca26373f3b95a8dd675425f4a92ec1/pillow-12.1.0-cp311-cp311-win32.whl", hash = "sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64", size = 6328655, upload-time = "2026-01-02T09:11:04.556Z" }, - { url = "https://files.pythonhosted.org/packages/6c/af/b1d7e301c4cd26cd45d4af884d9ee9b6fab893b0ad2450d4746d74a6968c/pillow-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75", size = 7031469, upload-time = "2026-01-02T09:11:06.538Z" }, - { url = "https://files.pythonhosted.org/packages/48/36/d5716586d887fb2a810a4a61518a327a1e21c8b7134c89283af272efe84b/pillow-12.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304", size = 2452515, upload-time = "2026-01-02T09:11:08.226Z" }, - { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, - { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, - { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, - { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, - { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, - { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, - { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, - { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, - { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, - { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, - { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, - { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, - { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, - { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, - { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, - { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, - { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, - { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, - { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, - { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, - { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, - { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, - { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, - { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, - { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, - { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, - { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, - { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, - { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, - { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, - { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, - { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, - { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, - { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, - { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, - { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, - { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, - { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, - { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, - { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, - { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, - { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, - { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, - { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, - { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, - { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, - { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, - { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, - { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, - { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, - { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, - { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, - { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, - { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, - { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, - { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, - { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, - { url = "https://files.pythonhosted.org/packages/8b/bc/224b1d98cffd7164b14707c91aac83c07b047fbd8f58eba4066a3e53746a/pillow-12.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377", size = 5228605, upload-time = "2026-01-02T09:13:14.084Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ca/49ca7769c4550107de049ed85208240ba0f330b3f2e316f24534795702ce/pillow-12.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72", size = 4622245, upload-time = "2026-01-02T09:13:15.964Z" }, - { url = "https://files.pythonhosted.org/packages/73/48/fac807ce82e5955bcc2718642b94b1bd22a82a6d452aea31cbb678cddf12/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c", size = 5247593, upload-time = "2026-01-02T09:13:17.913Z" }, - { url = "https://files.pythonhosted.org/packages/d2/95/3e0742fe358c4664aed4fd05d5f5373dcdad0b27af52aa0972568541e3f4/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd", size = 6989008, upload-time = "2026-01-02T09:13:20.083Z" }, - { url = "https://files.pythonhosted.org/packages/5a/74/fe2ac378e4e202e56d50540d92e1ef4ff34ed687f3c60f6a121bcf99437e/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc", size = 5313824, upload-time = "2026-01-02T09:13:22.405Z" }, - { url = "https://files.pythonhosted.org/packages/f3/77/2a60dee1adee4e2655ac328dd05c02a955c1cd683b9f1b82ec3feb44727c/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a", size = 5963278, upload-time = "2026-01-02T09:13:24.706Z" }, - { url = "https://files.pythonhosted.org/packages/2d/71/64e9b1c7f04ae0027f788a248e6297d7fcc29571371fe7d45495a78172c0/pillow-12.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19", size = 7029809, upload-time = "2026-01-02T09:13:26.541Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1f/42/5c74462b4fd957fcd7b13b04fb3205ff8349236ea74c7c375766d6c82288/pillow-12.1.1.tar.gz", hash = "sha256:9ad8fa5937ab05218e2b6a4cff30295ad35afd2f83ac592e68c0d871bb0fdbc4", size = 46980264, upload-time = "2026-02-11T04:23:07.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/30/5bd3d794762481f8c8ae9c80e7b76ecea73b916959eb587521358ef0b2f9/pillow-12.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f1625b72740fdda5d77b4def688eb8fd6490975d06b909fd19f13f391e077e0", size = 5304099, upload-time = "2026-02-11T04:20:06.13Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c1/aab9e8f3eeb4490180e357955e15c2ef74b31f64790ff356c06fb6cf6d84/pillow-12.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:178aa072084bd88ec759052feca8e56cbb14a60b39322b99a049e58090479713", size = 4657880, upload-time = "2026-02-11T04:20:09.291Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0a/9879e30d56815ad529d3985aeff5af4964202425c27261a6ada10f7cbf53/pillow-12.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b66e95d05ba806247aaa1561f080abc7975daf715c30780ff92a20e4ec546e1b", size = 6222587, upload-time = "2026-02-11T04:20:10.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5f/a1b72ff7139e4f89014e8d451442c74a774d5c43cd938fb0a9f878576b37/pillow-12.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89c7e895002bbe49cdc5426150377cbbc04767d7547ed145473f496dfa40408b", size = 8027678, upload-time = "2026-02-11T04:20:12.455Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c2/c7cb187dac79a3d22c3ebeae727abee01e077c8c7d930791dc592f335153/pillow-12.1.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a5cbdcddad0af3da87cb16b60d23648bc3b51967eb07223e9fed77a82b457c4", size = 6335777, upload-time = "2026-02-11T04:20:14.441Z" }, + { url = "https://files.pythonhosted.org/packages/0c/7b/f9b09a7804ec7336effb96c26d37c29d27225783dc1501b7d62dcef6ae25/pillow-12.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f51079765661884a486727f0729d29054242f74b46186026582b4e4769918e4", size = 7027140, upload-time = "2026-02-11T04:20:16.387Z" }, + { url = "https://files.pythonhosted.org/packages/98/b2/2fa3c391550bd421b10849d1a2144c44abcd966daadd2f7c12e19ea988c4/pillow-12.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:99c1506ea77c11531d75e3a412832a13a71c7ebc8192ab9e4b2e355555920e3e", size = 6449855, upload-time = "2026-02-11T04:20:18.554Z" }, + { url = "https://files.pythonhosted.org/packages/96/ff/9caf4b5b950c669263c39e96c78c0d74a342c71c4f43fd031bb5cb7ceac9/pillow-12.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36341d06738a9f66c8287cf8b876d24b18db9bd8740fa0672c74e259ad408cff", size = 7151329, upload-time = "2026-02-11T04:20:20.646Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f8/4b24841f582704da675ca535935bccb32b00a6da1226820845fac4a71136/pillow-12.1.1-cp310-cp310-win32.whl", hash = "sha256:6c52f062424c523d6c4db85518774cc3d50f5539dd6eed32b8f6229b26f24d40", size = 6325574, upload-time = "2026-02-11T04:20:22.43Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f9/9f6b01c0881d7036063aa6612ef04c0e2cad96be21325a1e92d0203f8e91/pillow-12.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6008de247150668a705a6338156efb92334113421ceecf7438a12c9a12dab23", size = 7032347, upload-time = "2026-02-11T04:20:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/79/13/c7922edded3dcdaf10c59297540b72785620abc0538872c819915746757d/pillow-12.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:1a9b0ee305220b392e1124a764ee4265bd063e54a751a6b62eff69992f457fa9", size = 2453457, upload-time = "2026-02-11T04:20:25.392Z" }, + { url = "https://files.pythonhosted.org/packages/2b/46/5da1ec4a5171ee7bf1a0efa064aba70ba3d6e0788ce3f5acd1375d23c8c0/pillow-12.1.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:e879bb6cd5c73848ef3b2b48b8af9ff08c5b71ecda8048b7dd22d8a33f60be32", size = 5304084, upload-time = "2026-02-11T04:20:27.501Z" }, + { url = "https://files.pythonhosted.org/packages/78/93/a29e9bc02d1cf557a834da780ceccd54e02421627200696fcf805ebdc3fb/pillow-12.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:365b10bb9417dd4498c0e3b128018c4a624dc11c7b97d8cc54effe3b096f4c38", size = 4657866, upload-time = "2026-02-11T04:20:29.827Z" }, + { url = "https://files.pythonhosted.org/packages/13/84/583a4558d492a179d31e4aae32eadce94b9acf49c0337c4ce0b70e0a01f2/pillow-12.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d4ce8e329c93845720cd2014659ca67eac35f6433fd3050393d85f3ecef0dad5", size = 6232148, upload-time = "2026-02-11T04:20:31.329Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e2/53c43334bbbb2d3b938978532fbda8e62bb6e0b23a26ce8592f36bcc4987/pillow-12.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc354a04072b765eccf2204f588a7a532c9511e8b9c7f900e1b64e3e33487090", size = 8038007, upload-time = "2026-02-11T04:20:34.225Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a6/3d0e79c8a9d58150dd98e199d7c1c56861027f3829a3a60b3c2784190180/pillow-12.1.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e7976bf1910a8116b523b9f9f58bf410f3e8aa330cd9a2bb2953f9266ab49af", size = 6345418, upload-time = "2026-02-11T04:20:35.858Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c8/46dfeac5825e600579157eea177be43e2f7ff4a99da9d0d0a49533509ac5/pillow-12.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:597bd9c8419bc7c6af5604e55847789b69123bbe25d65cc6ad3012b4f3c98d8b", size = 7034590, upload-time = "2026-02-11T04:20:37.91Z" }, + { url = "https://files.pythonhosted.org/packages/af/bf/e6f65d3db8a8bbfeaf9e13cc0417813f6319863a73de934f14b2229ada18/pillow-12.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2c1fc0f2ca5f96a3c8407e41cca26a16e46b21060fe6d5b099d2cb01412222f5", size = 6458655, upload-time = "2026-02-11T04:20:39.496Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c2/66091f3f34a25894ca129362e510b956ef26f8fb67a0e6417bc5744e56f1/pillow-12.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:578510d88c6229d735855e1f278aa305270438d36a05031dfaae5067cc8eb04d", size = 7159286, upload-time = "2026-02-11T04:20:41.139Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5a/24bc8eb526a22f957d0cec6243146744966d40857e3d8deb68f7902ca6c1/pillow-12.1.1-cp311-cp311-win32.whl", hash = "sha256:7311c0a0dcadb89b36b7025dfd8326ecfa36964e29913074d47382706e516a7c", size = 6328663, upload-time = "2026-02-11T04:20:43.184Z" }, + { url = "https://files.pythonhosted.org/packages/31/03/bef822e4f2d8f9d7448c133d0a18185d3cce3e70472774fffefe8b0ed562/pillow-12.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:fbfa2a7c10cc2623f412753cddf391c7f971c52ca40a3f65dc5039b2939e8563", size = 7031448, upload-time = "2026-02-11T04:20:44.696Z" }, + { url = "https://files.pythonhosted.org/packages/49/70/f76296f53610bd17b2e7d31728b8b7825e3ac3b5b3688b51f52eab7c0818/pillow-12.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:b81b5e3511211631b3f672a595e3221252c90af017e399056d0faabb9538aa80", size = 2453651, upload-time = "2026-02-11T04:20:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/d3/8df65da0d4df36b094351dce696f2989bec731d4f10e743b1c5f4da4d3bf/pillow-12.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab323b787d6e18b3d91a72fc99b1a2c28651e4358749842b8f8dfacd28ef2052", size = 5262803, upload-time = "2026-02-11T04:20:47.653Z" }, + { url = "https://files.pythonhosted.org/packages/d6/71/5026395b290ff404b836e636f51d7297e6c83beceaa87c592718747e670f/pillow-12.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:adebb5bee0f0af4909c30db0d890c773d1a92ffe83da908e2e9e720f8edf3984", size = 4657601, upload-time = "2026-02-11T04:20:49.328Z" }, + { url = "https://files.pythonhosted.org/packages/b1/2e/1001613d941c67442f745aff0f7cc66dd8df9a9c084eb497e6a543ee6f7e/pillow-12.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb66b7cc26f50977108790e2456b7921e773f23db5630261102233eb355a3b79", size = 6234995, upload-time = "2026-02-11T04:20:51.032Z" }, + { url = "https://files.pythonhosted.org/packages/07/26/246ab11455b2549b9233dbd44d358d033a2f780fa9007b61a913c5b2d24e/pillow-12.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aee2810642b2898bb187ced9b349e95d2a7272930796e022efaf12e99dccd293", size = 8045012, upload-time = "2026-02-11T04:20:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/b2/8b/07587069c27be7535ac1fe33874e32de118fbd34e2a73b7f83436a88368c/pillow-12.1.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0b1cd6232e2b618adcc54d9882e4e662a089d5768cd188f7c245b4c8c44a397", size = 6349638, upload-time = "2026-02-11T04:20:54.444Z" }, + { url = "https://files.pythonhosted.org/packages/ff/79/6df7b2ee763d619cda2fb4fea498e5f79d984dae304d45a8999b80d6cf5c/pillow-12.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7aac39bcf8d4770d089588a2e1dd111cbaa42df5a94be3114222057d68336bd0", size = 7041540, upload-time = "2026-02-11T04:20:55.97Z" }, + { url = "https://files.pythonhosted.org/packages/2c/5e/2ba19e7e7236d7529f4d873bdaf317a318896bac289abebd4bb00ef247f0/pillow-12.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ab174cd7d29a62dd139c44bf74b698039328f45cb03b4596c43473a46656b2f3", size = 6462613, upload-time = "2026-02-11T04:20:57.542Z" }, + { url = "https://files.pythonhosted.org/packages/03/03/31216ec124bb5c3dacd74ce8efff4cc7f52643653bad4825f8f08c697743/pillow-12.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:339ffdcb7cbeaa08221cd401d517d4b1fe7a9ed5d400e4a8039719238620ca35", size = 7166745, upload-time = "2026-02-11T04:20:59.196Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e7/7c4552d80052337eb28653b617eafdef39adfb137c49dd7e831b8dc13bc5/pillow-12.1.1-cp312-cp312-win32.whl", hash = "sha256:5d1f9575a12bed9e9eedd9a4972834b08c97a352bd17955ccdebfeca5913fa0a", size = 6328823, upload-time = "2026-02-11T04:21:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/3d/17/688626d192d7261bbbf98846fc98995726bddc2c945344b65bec3a29d731/pillow-12.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:21329ec8c96c6e979cd0dfd29406c40c1d52521a90544463057d2aaa937d66a6", size = 7033367, upload-time = "2026-02-11T04:21:03.536Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fe/a0ef1f73f939b0eca03ee2c108d0043a87468664770612602c63266a43c4/pillow-12.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:af9a332e572978f0218686636610555ae3defd1633597be015ed50289a03c523", size = 2453811, upload-time = "2026-02-11T04:21:05.116Z" }, + { url = "https://files.pythonhosted.org/packages/d5/11/6db24d4bd7685583caeae54b7009584e38da3c3d4488ed4cd25b439de486/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d242e8ac078781f1de88bf823d70c1a9b3c7950a44cdf4b7c012e22ccbcd8e4e", size = 4062689, upload-time = "2026-02-11T04:21:06.804Z" }, + { url = "https://files.pythonhosted.org/packages/33/c0/ce6d3b1fe190f0021203e0d9b5b99e57843e345f15f9ef22fcd43842fd21/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:02f84dfad02693676692746df05b89cf25597560db2857363a208e393429f5e9", size = 4138535, upload-time = "2026-02-11T04:21:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c6/d5eb6a4fb32a3f9c21a8c7613ec706534ea1cf9f4b3663e99f0d83f6fca8/pillow-12.1.1-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e65498daf4b583091ccbb2556c7000abf0f3349fcd57ef7adc9a84a394ed29f6", size = 3601364, upload-time = "2026-02-11T04:21:10.194Z" }, + { url = "https://files.pythonhosted.org/packages/14/a1/16c4b823838ba4c9c52c0e6bbda903a3fe5a1bdbf1b8eb4fff7156f3e318/pillow-12.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c6db3b84c87d48d0088943bf33440e0c42370b99b1c2a7989216f7b42eede60", size = 5262561, upload-time = "2026-02-11T04:21:11.742Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ad/ad9dc98ff24f485008aa5cdedaf1a219876f6f6c42a4626c08bc4e80b120/pillow-12.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b7e5304e34942bf62e15184219a7b5ad4ff7f3bb5cca4d984f37df1a0e1aee2", size = 4657460, upload-time = "2026-02-11T04:21:13.786Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1b/f1a4ea9a895b5732152789326202a82464d5254759fbacae4deea3069334/pillow-12.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5bddd742a44b7e6b1e773ab5db102bd7a94c32555ba656e76d319d19c3850", size = 6232698, upload-time = "2026-02-11T04:21:15.949Z" }, + { url = "https://files.pythonhosted.org/packages/95/f4/86f51b8745070daf21fd2e5b1fe0eb35d4db9ca26e6d58366562fb56a743/pillow-12.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc44ef1f3de4f45b50ccf9136999d71abb99dca7706bc75d222ed350b9fd2289", size = 8041706, upload-time = "2026-02-11T04:21:17.723Z" }, + { url = "https://files.pythonhosted.org/packages/29/9b/d6ecd956bb1266dd1045e995cce9b8d77759e740953a1c9aad9502a0461e/pillow-12.1.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a8eb7ed8d4198bccbd07058416eeec51686b498e784eda166395a23eb99138e", size = 6346621, upload-time = "2026-02-11T04:21:19.547Z" }, + { url = "https://files.pythonhosted.org/packages/71/24/538bff45bde96535d7d998c6fed1a751c75ac7c53c37c90dc2601b243893/pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47b94983da0c642de92ced1702c5b6c292a84bd3a8e1d1702ff923f183594717", size = 7038069, upload-time = "2026-02-11T04:21:21.378Z" }, + { url = "https://files.pythonhosted.org/packages/94/0e/58cb1a6bc48f746bc4cb3adb8cabff73e2742c92b3bf7a220b7cf69b9177/pillow-12.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:518a48c2aab7ce596d3bf79d0e275661b846e86e4d0e7dec34712c30fe07f02a", size = 6460040, upload-time = "2026-02-11T04:21:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/6c/57/9045cb3ff11eeb6c1adce3b2d60d7d299d7b273a2e6c8381a524abfdc474/pillow-12.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a550ae29b95c6dc13cf69e2c9dc5747f814c54eeb2e32d683e5e93af56caa029", size = 7164523, upload-time = "2026-02-11T04:21:25.01Z" }, + { url = "https://files.pythonhosted.org/packages/73/f2/9be9cb99f2175f0d4dbadd6616ce1bf068ee54a28277ea1bf1fbf729c250/pillow-12.1.1-cp313-cp313-win32.whl", hash = "sha256:a003d7422449f6d1e3a34e3dd4110c22148336918ddbfc6a32581cd54b2e0b2b", size = 6332552, upload-time = "2026-02-11T04:21:27.238Z" }, + { url = "https://files.pythonhosted.org/packages/3f/eb/b0834ad8b583d7d9d42b80becff092082a1c3c156bb582590fcc973f1c7c/pillow-12.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:344cf1e3dab3be4b1fa08e449323d98a2a3f819ad20f4b22e77a0ede31f0faa1", size = 7040108, upload-time = "2026-02-11T04:21:29.462Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/fc09634e2aabdd0feabaff4a32f4a7d97789223e7c2042fd805ea4b4d2c2/pillow-12.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c0dd1636633e7e6a0afe7bf6a51a14992b7f8e60de5789018ebbdfae55b040a", size = 2453712, upload-time = "2026-02-11T04:21:31.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/b9d62794fc8a0dd14c1943df68347badbd5511103e0d04c035ffe5cf2255/pillow-12.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0330d233c1a0ead844fc097a7d16c0abff4c12e856c0b325f231820fee1f39da", size = 5264880, upload-time = "2026-02-11T04:21:32.865Z" }, + { url = "https://files.pythonhosted.org/packages/26/9d/e03d857d1347fa5ed9247e123fcd2a97b6220e15e9cb73ca0a8d91702c6e/pillow-12.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5dae5f21afb91322f2ff791895ddd8889e5e947ff59f71b46041c8ce6db790bc", size = 4660616, upload-time = "2026-02-11T04:21:34.97Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/8a6d22afd02570d30954e043f09c32772bfe143ba9285e2fdb11284952cd/pillow-12.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2e0c664be47252947d870ac0d327fea7e63985a08794758aa8af5b6cb6ec0c9c", size = 6269008, upload-time = "2026-02-11T04:21:36.623Z" }, + { url = "https://files.pythonhosted.org/packages/3d/1d/6d875422c9f28a4a361f495a5f68d9de4a66941dc2c619103ca335fa6446/pillow-12.1.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:691ab2ac363b8217f7d31b3497108fb1f50faab2f75dfb03284ec2f217e87bf8", size = 8073226, upload-time = "2026-02-11T04:21:38.585Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cd/134b0b6ee5eda6dc09e25e24b40fdafe11a520bc725c1d0bbaa5e00bf95b/pillow-12.1.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9e8064fb1cc019296958595f6db671fba95209e3ceb0c4734c9baf97de04b20", size = 6380136, upload-time = "2026-02-11T04:21:40.562Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a9/7628f013f18f001c1b98d8fffe3452f306a70dc6aba7d931019e0492f45e/pillow-12.1.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:472a8d7ded663e6162dafdf20015c486a7009483ca671cece7a9279b512fcb13", size = 7067129, upload-time = "2026-02-11T04:21:42.521Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f8/66ab30a2193b277785601e82ee2d49f68ea575d9637e5e234faaa98efa4c/pillow-12.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:89b54027a766529136a06cfebeecb3a04900397a3590fd252160b888479517bf", size = 6491807, upload-time = "2026-02-11T04:21:44.22Z" }, + { url = "https://files.pythonhosted.org/packages/da/0b/a877a6627dc8318fdb84e357c5e1a758c0941ab1ddffdafd231983788579/pillow-12.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:86172b0831b82ce4f7877f280055892b31179e1576aa00d0df3bb1bbf8c3e524", size = 7190954, upload-time = "2026-02-11T04:21:46.114Z" }, + { url = "https://files.pythonhosted.org/packages/83/43/6f732ff85743cf746b1361b91665d9f5155e1483817f693f8d57ea93147f/pillow-12.1.1-cp313-cp313t-win32.whl", hash = "sha256:44ce27545b6efcf0fdbdceb31c9a5bdea9333e664cda58a7e674bb74608b3986", size = 6336441, upload-time = "2026-02-11T04:21:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/3b/44/e865ef3986611bb75bfabdf94a590016ea327833f434558801122979cd0e/pillow-12.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a285e3eb7a5a45a2ff504e31f4a8d1b12ef62e84e5411c6804a42197c1cf586c", size = 7045383, upload-time = "2026-02-11T04:21:50.015Z" }, + { url = "https://files.pythonhosted.org/packages/a8/c6/f4fb24268d0c6908b9f04143697ea18b0379490cb74ba9e8d41b898bd005/pillow-12.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cc7d296b5ea4d29e6570dabeaed58d31c3fea35a633a69679fb03d7664f43fb3", size = 2456104, upload-time = "2026-02-11T04:21:51.633Z" }, + { url = "https://files.pythonhosted.org/packages/03/d0/bebb3ffbf31c5a8e97241476c4cf8b9828954693ce6744b4a2326af3e16b/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:417423db963cb4be8bac3fc1204fe61610f6abeed1580a7a2cbb2fbda20f12af", size = 4062652, upload-time = "2026-02-11T04:21:53.19Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c0/0e16fb0addda4851445c28f8350d8c512f09de27bbb0d6d0bbf8b6709605/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:b957b71c6b2387610f556a7eb0828afbe40b4a98036fc0d2acfa5a44a0c2036f", size = 4138823, upload-time = "2026-02-11T04:22:03.088Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fb/6170ec655d6f6bb6630a013dd7cf7bc218423d7b5fa9071bf63dc32175ae/pillow-12.1.1-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:097690ba1f2efdeb165a20469d59d8bb03c55fb6621eb2041a060ae8ea3e9642", size = 3601143, upload-time = "2026-02-11T04:22:04.909Z" }, + { url = "https://files.pythonhosted.org/packages/59/04/dc5c3f297510ba9a6837cbb318b87dd2b8f73eb41a43cc63767f65cb599c/pillow-12.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2815a87ab27848db0321fb78c7f0b2c8649dee134b7f2b80c6a45c6831d75ccd", size = 5266254, upload-time = "2026-02-11T04:22:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/05/30/5db1236b0d6313f03ebf97f5e17cda9ca060f524b2fcc875149a8360b21c/pillow-12.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f7ed2c6543bad5a7d5530eb9e78c53132f93dfa44a28492db88b41cdab885202", size = 4657499, upload-time = "2026-02-11T04:22:09.613Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/008d2ca0eb612e81968e8be0bbae5051efba24d52debf930126d7eaacbba/pillow-12.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:652a2c9ccfb556235b2b501a3a7cf3742148cd22e04b5625c5fe057ea3e3191f", size = 6232137, upload-time = "2026-02-11T04:22:11.434Z" }, + { url = "https://files.pythonhosted.org/packages/70/f1/f14d5b8eeb4b2cd62b9f9f847eb6605f103df89ef619ac68f92f748614ea/pillow-12.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d6e4571eedf43af33d0fc233a382a76e849badbccdf1ac438841308652a08e1f", size = 8042721, upload-time = "2026-02-11T04:22:13.321Z" }, + { url = "https://files.pythonhosted.org/packages/5a/d6/17824509146e4babbdabf04d8171491fa9d776f7061ff6e727522df9bd03/pillow-12.1.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b574c51cf7d5d62e9be37ba446224b59a2da26dc4c1bb2ecbe936a4fb1a7cb7f", size = 6347798, upload-time = "2026-02-11T04:22:15.449Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ee/c85a38a9ab92037a75615aba572c85ea51e605265036e00c5b67dfafbfe2/pillow-12.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a37691702ed687799de29a518d63d4682d9016932db66d4e90c345831b02fb4e", size = 7039315, upload-time = "2026-02-11T04:22:17.24Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f3/bc8ccc6e08a148290d7523bde4d9a0d6c981db34631390dc6e6ec34cacf6/pillow-12.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f95c00d5d6700b2b890479664a06e754974848afaae5e21beb4d83c106923fd0", size = 6462360, upload-time = "2026-02-11T04:22:19.111Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ab/69a42656adb1d0665ab051eec58a41f169ad295cf81ad45406963105408f/pillow-12.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:559b38da23606e68681337ad74622c4dbba02254fc9cb4488a305dd5975c7eeb", size = 7165438, upload-time = "2026-02-11T04:22:21.041Z" }, + { url = "https://files.pythonhosted.org/packages/02/46/81f7aa8941873f0f01d4b55cc543b0a3d03ec2ee30d617a0448bf6bd6dec/pillow-12.1.1-cp314-cp314-win32.whl", hash = "sha256:03edcc34d688572014ff223c125a3f77fb08091e4607e7745002fc214070b35f", size = 6431503, upload-time = "2026-02-11T04:22:22.833Z" }, + { url = "https://files.pythonhosted.org/packages/40/72/4c245f7d1044b67affc7f134a09ea619d4895333d35322b775b928180044/pillow-12.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:50480dcd74fa63b8e78235957d302d98d98d82ccbfac4c7e12108ba9ecbdba15", size = 7176748, upload-time = "2026-02-11T04:22:24.64Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ad/8a87bdbe038c5c698736e3348af5c2194ffb872ea52f11894c95f9305435/pillow-12.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:5cb1785d97b0c3d1d1a16bc1d710c4a0049daefc4935f3a8f31f827f4d3d2e7f", size = 2544314, upload-time = "2026-02-11T04:22:26.685Z" }, + { url = "https://files.pythonhosted.org/packages/6c/9d/efd18493f9de13b87ede7c47e69184b9e859e4427225ea962e32e56a49bc/pillow-12.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1f90cff8aa76835cba5769f0b3121a22bd4eb9e6884cfe338216e557a9a548b8", size = 5268612, upload-time = "2026-02-11T04:22:29.884Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f1/4f42eb2b388eb2ffc660dcb7f7b556c1015c53ebd5f7f754965ef997585b/pillow-12.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f1be78ce9466a7ee64bfda57bdba0f7cc499d9794d518b854816c41bf0aa4e9", size = 4660567, upload-time = "2026-02-11T04:22:31.799Z" }, + { url = "https://files.pythonhosted.org/packages/01/54/df6ef130fa43e4b82e32624a7b821a2be1c5653a5fdad8469687a7db4e00/pillow-12.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:42fc1f4677106188ad9a55562bbade416f8b55456f522430fadab3cef7cd4e60", size = 6269951, upload-time = "2026-02-11T04:22:33.921Z" }, + { url = "https://files.pythonhosted.org/packages/a9/48/618752d06cc44bb4aae8ce0cd4e6426871929ed7b46215638088270d9b34/pillow-12.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98edb152429ab62a1818039744d8fbb3ccab98a7c29fc3d5fcef158f3f1f68b7", size = 8074769, upload-time = "2026-02-11T04:22:35.877Z" }, + { url = "https://files.pythonhosted.org/packages/c3/bd/f1d71eb39a72fa088d938655afba3e00b38018d052752f435838961127d8/pillow-12.1.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d470ab1178551dd17fdba0fef463359c41aaa613cdcd7ff8373f54be629f9f8f", size = 6381358, upload-time = "2026-02-11T04:22:37.698Z" }, + { url = "https://files.pythonhosted.org/packages/64/ef/c784e20b96674ed36a5af839305f55616f8b4f8aa8eeccf8531a6e312243/pillow-12.1.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6408a7b064595afcab0a49393a413732a35788f2a5092fdc6266952ed67de586", size = 7068558, upload-time = "2026-02-11T04:22:39.597Z" }, + { url = "https://files.pythonhosted.org/packages/73/cb/8059688b74422ae61278202c4e1ad992e8a2e7375227be0a21c6b87ca8d5/pillow-12.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5d8c41325b382c07799a3682c1c258469ea2ff97103c53717b7893862d0c98ce", size = 6493028, upload-time = "2026-02-11T04:22:42.73Z" }, + { url = "https://files.pythonhosted.org/packages/c6/da/e3c008ed7d2dd1f905b15949325934510b9d1931e5df999bb15972756818/pillow-12.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c7697918b5be27424e9ce568193efd13d925c4481dd364e43f5dff72d33e10f8", size = 7191940, upload-time = "2026-02-11T04:22:44.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/4a/9202e8d11714c1fc5951f2e1ef362f2d7fbc595e1f6717971d5dd750e969/pillow-12.1.1-cp314-cp314t-win32.whl", hash = "sha256:d2912fd8114fc5545aa3a4b5576512f64c55a03f3ebcca4c10194d593d43ea36", size = 6438736, upload-time = "2026-02-11T04:22:46.347Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ca/cbce2327eb9885476b3957b2e82eb12c866a8b16ad77392864ad601022ce/pillow-12.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:4ceb838d4bd9dab43e06c363cab2eebf63846d6a4aeaea283bbdfd8f1a8ed58b", size = 7182894, upload-time = "2026-02-11T04:22:48.114Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d2/de599c95ba0a973b94410477f8bf0b6f0b5e67360eb89bcb1ad365258beb/pillow-12.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:7b03048319bfc6170e93bd60728a1af51d3dd7704935feb228c4d4faab35d334", size = 2546446, upload-time = "2026-02-11T04:22:50.342Z" }, + { url = "https://files.pythonhosted.org/packages/56/11/5d43209aa4cb58e0cc80127956ff1796a68b928e6324bbf06ef4db34367b/pillow-12.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:600fd103672b925fe62ed08e0d874ea34d692474df6f4bf7ebe148b30f89f39f", size = 5228606, upload-time = "2026-02-11T04:22:52.106Z" }, + { url = "https://files.pythonhosted.org/packages/5f/d5/3b005b4e4fda6698b371fa6c21b097d4707585d7db99e98d9b0b87ac612a/pillow-12.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:665e1b916b043cef294bc54d47bf02d87e13f769bc4bc5fa225a24b3a6c5aca9", size = 4622321, upload-time = "2026-02-11T04:22:53.827Z" }, + { url = "https://files.pythonhosted.org/packages/df/36/ed3ea2d594356fd8037e5a01f6156c74bc8d92dbb0fa60746cc96cabb6e8/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:495c302af3aad1ca67420ddd5c7bd480c8867ad173528767d906428057a11f0e", size = 5247579, upload-time = "2026-02-11T04:22:56.094Z" }, + { url = "https://files.pythonhosted.org/packages/54/9a/9cc3e029683cf6d20ae5085da0dafc63148e3252c2f13328e553aaa13cfb/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fd420ef0c52c88b5a035a0886f367748c72147b2b8f384c9d12656678dfdfa9", size = 6989094, upload-time = "2026-02-11T04:22:58.288Z" }, + { url = "https://files.pythonhosted.org/packages/00/98/fc53ab36da80b88df0967896b6c4b4cd948a0dc5aa40a754266aa3ae48b3/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f975aa7ef9684ce7e2c18a3aa8f8e2106ce1e46b94ab713d156b2898811651d3", size = 5313850, upload-time = "2026-02-11T04:23:00.554Z" }, + { url = "https://files.pythonhosted.org/packages/30/02/00fa585abfd9fe9d73e5f6e554dc36cc2b842898cbfc46d70353dae227f8/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8089c852a56c2966cf18835db62d9b34fef7ba74c726ad943928d494fa7f4735", size = 5963343, upload-time = "2026-02-11T04:23:02.934Z" }, + { url = "https://files.pythonhosted.org/packages/f2/26/c56ce33ca856e358d27fda9676c055395abddb82c35ac0f593877ed4562e/pillow-12.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:cb9bb857b2d057c6dfc72ac5f3b44836924ba15721882ef103cecb40d002d80e", size = 7029880, upload-time = "2026-02-11T04:23:04.783Z" }, ] [[package]] @@ -1458,7 +1511,7 @@ wheels = [ [[package]] name = "pypdf" -version = "6.7.0" +version = "6.9.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14'", @@ -1468,9 +1521,9 @@ resolution-markers = [ dependencies = [ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/45/8340de1c752bfda2da912ea0fa8c9a432f7de3f6315e82f1c0847811dff6/pypdf-6.7.0.tar.gz", hash = "sha256:eb95e244d9f434e6cfd157272283339ef586e593be64ee699c620f756d5c3f7e", size = 5299947, upload-time = "2026-02-08T14:47:11.897Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/c8/1f40699576c70a6c90d4bf47705a12a0bed1b02964a6bee039016279e126/pypdf-6.9.0.tar.gz", hash = "sha256:a59257869fc575ba2ccc10100a36be0a47cd1bc1fb00f2950abf1d219fa94c01", size = 5311107, upload-time = "2026-03-15T15:28:26.402Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/f1/c92e75a0eb18bb10845e792054ded113010de958b6d4998e201c029417bb/pypdf-6.7.0-py3-none-any.whl", hash = "sha256:62e85036d50839cbdf45b8067c2c1a1b925517514d7cba4cbe8755a6c2829bc9", size = 330557, upload-time = "2026-02-08T14:47:10.111Z" }, + { url = "https://files.pythonhosted.org/packages/00/64/ac6159cfbeabab3cf54873bbf7314b29183c7ff547c9776596d63170d7c0/pypdf-6.9.0-py3-none-any.whl", hash = "sha256:85805ad7457ca878c4cfd1bc026c4b3dcae359b4a80f889fa7e8c5a1c1a83e51", size = 333408, upload-time = "2026-03-15T15:28:24.667Z" }, ] [[package]] @@ -1578,7 +1631,7 @@ resolution-markers = [ dependencies = [ { name = "charset-normalizer", marker = "python_full_version >= '3.9'" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1a/39/42cf24aee570a80e1903221ae3a92a2e34c324794a392eb036cbb6dc3839/reportlab-4.4.9.tar.gz", hash = "sha256:7cf487764294ee791a4781f5a157bebce262a666ae4bbb87786760a9676c9378", size = 3911246, upload-time = "2026-01-15T10:07:56.08Z" } wheels = [ @@ -1617,14 +1670,28 @@ dependencies = [ { name = "certifi", marker = "python_full_version >= '3.9'" }, { name = "charset-normalizer", marker = "python_full_version >= '3.9'" }, { name = "idna", marker = "python_full_version >= '3.9'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] 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 = "s3transfer" +version = "0.1.13" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "botocore", version = "1.10.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/66/c6a5ae4dbbaf253bd662921b805e4972451a6d214d0dc9fb3300cb642320/s3transfer-0.1.13.tar.gz", hash = "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", size = 103335, upload-time = "2018-02-15T00:25:02.494Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/14/2a0004d487464d120c9fb85313a75cd3d71a7506955be458eebfe19a6b1d/s3transfer-0.1.13-py2.py3-none-any.whl", hash = "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f", size = 59642, upload-time = "2018-02-15T00:25:05.113Z" }, +] + [[package]] name = "s3transfer" version = "0.11.5" @@ -1648,10 +1715,9 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14'", "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", ] dependencies = [ - { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } wheels = [ @@ -1789,7 +1855,6 @@ name = "urllib3" version = "1.26.20" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.9.*'", "python_full_version > '3.8' and python_full_version < '3.9'", "python_full_version <= '3.8'", ] @@ -1805,6 +1870,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14'", "python_full_version >= '3.10' and python_full_version < '3.14'", + "python_full_version == '3.9.*'", ] sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ From e1884a55bfa6faa2b0069b0dfa384dee8bd75d4a Mon Sep 17 00:00:00 2001 From: HSn Date: Mon, 16 Mar 2026 19:30:52 +0800 Subject: [PATCH 44/46] remove unfinished export_history from public pdf2file API --- src/pdfdeal/doc2x.py | 5 ----- tests/test_pdf2file.py | 10 ---------- 2 files changed, 15 deletions(-) diff --git a/src/pdfdeal/doc2x.py b/src/pdfdeal/doc2x.py index 32b531d..26c87f3 100644 --- a/src/pdfdeal/doc2x.py +++ b/src/pdfdeal/doc2x.py @@ -812,7 +812,6 @@ def pdf2file( This option only takes effect when upload model is "v3-2026". ocr (bool, optional): This option is deprecated and will not be used. save_subdir (bool, optional): Save the output to a subfolder under output_path. Defaults to False. - export_history(str, optional): Export history file. Defaults to None. Returns: Tuple[List[str], List[dict], bool]: A tuple containing: - List[str]: List of output file paths @@ -820,9 +819,6 @@ def pdf2file( - bool: Whether there was an error """ - # 未完全测试完 - export_history = "" - if ocr: import warnings @@ -843,6 +839,5 @@ def pdf2file( merge_cross_page_forms=merge_cross_page_forms, formula_level=formula_level, save_subdir=save_subdir, - export_history=export_history, ) ) diff --git a/tests/test_pdf2file.py b/tests/test_pdf2file.py index 420ebf8..11d196b 100644 --- a/tests/test_pdf2file.py +++ b/tests/test_pdf2file.py @@ -484,13 +484,3 @@ def test_all_fail_pdf2file(): print(failed) print(flag) assert flag - - -def test_export_history(): - client = _build_client() - output_path, failed, flag = client.pdf2file( - pdf_file="tests/pdf", - output_path="./Output/", - output_format="md", - export_history="./Output/history/history.csv", - ) From 4695875d660e9e1e8b3952ca47a844fb87c2a4f8 Mon Sep 17 00:00:00 2001 From: HSn Date: Mon, 16 Mar 2026 19:46:27 +0800 Subject: [PATCH 45/46] remove: remove uv lock --- uv.lock | 1878 ------------------------------------------------------- 1 file changed, 1878 deletions(-) delete mode 100644 uv.lock diff --git a/uv.lock b/uv.lock deleted file mode 100644 index 463795c..0000000 --- a/uv.lock +++ /dev/null @@ -1,1878 +0,0 @@ -version = 1 -revision = 2 -requires-python = ">=3.8" -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] - -[[package]] -name = "aiofiles" -version = "24.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247, upload-time = "2024-06-24T11:02:03.584Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896, upload-time = "2024-06-24T11:02:01.529Z" }, -] - -[[package]] -name = "aiofiles" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/41/c3/534eac40372d8ee36ef40df62ec129bee4fdb5ad9706e58a29be53b2c970/aiofiles-25.1.0.tar.gz", hash = "sha256:a8d728f0a29de45dc521f18f07297428d56992a742f0cd2701ba86e44d23d5b2", size = 46354, upload-time = "2025-10-09T20:51:04.358Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl", hash = "sha256:abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695", size = 14668, upload-time = "2025-10-09T20:51:03.174Z" }, -] - -[[package]] -name = "aliyun-python-sdk-core" -version = "2.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cryptography" }, - { name = "jmespath" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/09/da9f58eb38b4fdb97ba6523274fbf445ef6a06be64b433693da8307b4bec/aliyun-python-sdk-core-2.16.0.tar.gz", hash = "sha256:651caad597eb39d4fad6cf85133dffe92837d53bdf62db9d8f37dab6508bb8f9", size = 449555, upload-time = "2024-10-09T06:01:01.762Z" } - -[[package]] -name = "aliyun-python-sdk-kms" -version = "2.16.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aliyun-python-sdk-core" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/2c/9877d0e6b18ecf246df671ac65a5d1d9fecbf85bdcb5d43efbde0d4662eb/aliyun-python-sdk-kms-2.16.5.tar.gz", hash = "sha256:f328a8a19d83ecbb965ffce0ec1e9930755216d104638cd95ecd362753b813b3", size = 12018, upload-time = "2024-08-30T09:01:20.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/5c/0132193d7da2c735669a1ed103b142fd63c9455984d48c5a88a1a516efaa/aliyun_python_sdk_kms-2.16.5-py2.py3-none-any.whl", hash = "sha256:24b6cdc4fd161d2942619479c8d050c63ea9cd22b044fe33b60bbb60153786f0", size = 99495, upload-time = "2024-08-30T09:01:18.462Z" }, -] - -[[package]] -name = "anyio" -version = "4.5.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, - { name = "idna", marker = "python_full_version < '3.9'" }, - { name = "sniffio", marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4d/f9/9a7ce600ebe7804daf90d4d48b1c0510a4561ddce43a596be46676f82343/anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b", size = 171293, upload-time = "2024-10-13T22:18:03.307Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/b4/f7e396030e3b11394436358ca258a81d6010106582422f23443c16ca1873/anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f", size = 89766, upload-time = "2024-10-13T22:18:01.524Z" }, -] - -[[package]] -name = "anyio" -version = "4.12.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "exceptiongroup", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, - { name = "idna", marker = "python_full_version >= '3.9'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, -] - -[[package]] -name = "argon2-cffi" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argon2-cffi-bindings", version = "21.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "argon2-cffi-bindings", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, -] - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "cffi", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, - { url = "https://files.pythonhosted.org/packages/34/da/d105a3235ae86c1c1a80c1e9c46953e6e53cc8c4c61fb3c5ac8a39bbca48/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583", size = 23689, upload-time = "2021-12-01T09:09:40.511Z" }, - { url = "https://files.pythonhosted.org/packages/43/f3/20bc53a6e50471dfea16a63dc9b69d2a9ec78fd2b9532cc25f8317e121d9/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d", size = 28122, upload-time = "2021-12-01T09:09:42.818Z" }, - { url = "https://files.pythonhosted.org/packages/2e/f1/48888db30b6a4a0c78ab7bc7444058a1135b223b6a2a5f2ac7d6780e7443/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670", size = 27882, upload-time = "2021-12-01T09:09:43.93Z" }, - { url = "https://files.pythonhosted.org/packages/ee/0f/a2260a207f21ce2ff4cad00a417c31597f08eafb547e00615bcbf403d8ea/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb", size = 30745, upload-time = "2021-12-01T09:09:41.73Z" }, - { url = "https://files.pythonhosted.org/packages/ed/55/f8ba268bc9005d0ca57a862e8f1b55bf1775e97a36bd30b0a8fb568c265c/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a", size = 28587, upload-time = "2021-12-01T09:09:45.508Z" }, -] - -[[package]] -name = "argon2-cffi-bindings" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "cffi", version = "2.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5c/2d/db8af0df73c1cf454f71b2bbe5e356b8c1f8041c979f505b3d3186e520a9/argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d", size = 1783441, upload-time = "2025-07-30T10:02:05.147Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/97/3c0a35f46e52108d4707c44b95cfe2afcafc50800b5450c197454569b776/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f", size = 54393, upload-time = "2025-07-30T10:01:40.97Z" }, - { url = "https://files.pythonhosted.org/packages/9d/f4/98bbd6ee89febd4f212696f13c03ca302b8552e7dbf9c8efa11ea4a388c3/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b", size = 29328, upload-time = "2025-07-30T10:01:41.916Z" }, - { url = "https://files.pythonhosted.org/packages/43/24/90a01c0ef12ac91a6be05969f29944643bc1e5e461155ae6559befa8f00b/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a", size = 31269, upload-time = "2025-07-30T10:01:42.716Z" }, - { url = "https://files.pythonhosted.org/packages/d4/d3/942aa10782b2697eee7af5e12eeff5ebb325ccfb86dd8abda54174e377e4/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44", size = 86558, upload-time = "2025-07-30T10:01:43.943Z" }, - { url = "https://files.pythonhosted.org/packages/0d/82/b484f702fec5536e71836fc2dbc8c5267b3f6e78d2d539b4eaa6f0db8bf8/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb", size = 92364, upload-time = "2025-07-30T10:01:44.887Z" }, - { url = "https://files.pythonhosted.org/packages/c9/c1/a606ff83b3f1735f3759ad0f2cd9e038a0ad11a3de3b6c673aa41c24bb7b/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92", size = 85637, upload-time = "2025-07-30T10:01:46.225Z" }, - { url = "https://files.pythonhosted.org/packages/44/b4/678503f12aceb0262f84fa201f6027ed77d71c5019ae03b399b97caa2f19/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85", size = 91934, upload-time = "2025-07-30T10:01:47.203Z" }, - { url = "https://files.pythonhosted.org/packages/f0/c7/f36bd08ef9bd9f0a9cff9428406651f5937ce27b6c5b07b92d41f91ae541/argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f", size = 28158, upload-time = "2025-07-30T10:01:48.341Z" }, - { url = "https://files.pythonhosted.org/packages/b3/80/0106a7448abb24a2c467bf7d527fe5413b7fdfa4ad6d6a96a43a62ef3988/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6", size = 32597, upload-time = "2025-07-30T10:01:49.112Z" }, - { url = "https://files.pythonhosted.org/packages/05/b8/d663c9caea07e9180b2cb662772865230715cbd573ba3b5e81793d580316/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623", size = 28231, upload-time = "2025-07-30T10:01:49.92Z" }, - { url = "https://files.pythonhosted.org/packages/1d/57/96b8b9f93166147826da5f90376e784a10582dd39a393c99bb62cfcf52f0/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500", size = 54121, upload-time = "2025-07-30T10:01:50.815Z" }, - { url = "https://files.pythonhosted.org/packages/0a/08/a9bebdb2e0e602dde230bdde8021b29f71f7841bd54801bcfd514acb5dcf/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44", size = 29177, upload-time = "2025-07-30T10:01:51.681Z" }, - { url = "https://files.pythonhosted.org/packages/b6/02/d297943bcacf05e4f2a94ab6f462831dc20158614e5d067c35d4e63b9acb/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0", size = 31090, upload-time = "2025-07-30T10:01:53.184Z" }, - { url = "https://files.pythonhosted.org/packages/c1/93/44365f3d75053e53893ec6d733e4a5e3147502663554b4d864587c7828a7/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6", size = 81246, upload-time = "2025-07-30T10:01:54.145Z" }, - { url = "https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a", size = 87126, upload-time = "2025-07-30T10:01:55.074Z" }, - { url = "https://files.pythonhosted.org/packages/72/70/7a2993a12b0ffa2a9271259b79cc616e2389ed1a4d93842fac5a1f923ffd/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d", size = 80343, upload-time = "2025-07-30T10:01:56.007Z" }, - { url = "https://files.pythonhosted.org/packages/78/9a/4e5157d893ffc712b74dbd868c7f62365618266982b64accab26bab01edc/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99", size = 86777, upload-time = "2025-07-30T10:01:56.943Z" }, - { url = "https://files.pythonhosted.org/packages/74/cd/15777dfde1c29d96de7f18edf4cc94c385646852e7c7b0320aa91ccca583/argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2", size = 27180, upload-time = "2025-07-30T10:01:57.759Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98", size = 31715, upload-time = "2025-07-30T10:01:58.56Z" }, - { url = "https://files.pythonhosted.org/packages/42/b9/f8d6fa329ab25128b7e98fd83a3cb34d9db5b059a9847eddb840a0af45dd/argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94", size = 27149, upload-time = "2025-07-30T10:01:59.329Z" }, - { url = "https://files.pythonhosted.org/packages/11/2d/ba4e4ca8d149f8dcc0d952ac0967089e1d759c7e5fcf0865a317eb680fbb/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e", size = 24549, upload-time = "2025-07-30T10:02:00.101Z" }, - { url = "https://files.pythonhosted.org/packages/5c/82/9b2386cc75ac0bd3210e12a44bfc7fd1632065ed8b80d573036eecb10442/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d", size = 25539, upload-time = "2025-07-30T10:02:00.929Z" }, - { url = "https://files.pythonhosted.org/packages/31/db/740de99a37aa727623730c90d92c22c9e12585b3c98c54b7960f7810289f/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584", size = 28467, upload-time = "2025-07-30T10:02:02.08Z" }, - { url = "https://files.pythonhosted.org/packages/71/7a/47c4509ea18d755f44e2b92b7178914f0c113946d11e16e626df8eaa2b0b/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690", size = 27355, upload-time = "2025-07-30T10:02:02.867Z" }, - { url = "https://files.pythonhosted.org/packages/ee/82/82745642d3c46e7cea25e1885b014b033f4693346ce46b7f47483cf5d448/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520", size = 29187, upload-time = "2025-07-30T10:02:03.674Z" }, -] - -[[package]] -name = "beautifulsoup4" -version = "4.14.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve", version = "2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "soupsieve", version = "2.8.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, -] - -[[package]] -name = "boto3" -version = "1.7.84" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "botocore", version = "1.10.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "jmespath", marker = "python_full_version == '3.9.*'" }, - { name = "s3transfer", version = "0.1.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/2b/7010a5189859eec725c36081b1d1c8e721000ebdf81a1682ec6b64e1c373/boto3-1.7.84.tar.gz", hash = "sha256:64496f2c814e454e26c024df86bd08fb4643770d0e2b7a8fd70055fc6683eb9d", size = 93151, upload-time = "2018-08-23T23:58:39.6Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/6e/faf7c6c3ae59641c75023fb5dcc8a02c33752ac8ccadf9931e8d8364f2fe/boto3-1.7.84-py2.py3-none-any.whl", hash = "sha256:0ed4b107c3b4550547aaec3c9bb17df068ff92d1f6f4781205800e2cb8a66de5", size = 128502, upload-time = "2018-08-23T23:58:41.734Z" }, -] - -[[package]] -name = "boto3" -version = "1.37.38" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "botocore", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "jmespath", marker = "python_full_version < '3.9'" }, - { name = "s3transfer", version = "0.11.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0d/b5/d1c2e8c484cea43891629bbab6ca90ce9ca932586750bc0e786c8f096ccf/boto3-1.37.38.tar.gz", hash = "sha256:88c02910933ab7777597d1ca7c62375f52822e0aa1a8e0c51b2598a547af42b2", size = 111623, upload-time = "2025-04-21T19:27:18.06Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/87/8189f22ee798177bc7b40afd13f046442c5f91b699e70a950b42ff447e80/boto3-1.37.38-py3-none-any.whl", hash = "sha256:b6d42803607148804dff82389757827a24ce9271f0583748853934c86310999f", size = 139922, upload-time = "2025-04-21T19:27:16.107Z" }, -] - -[[package]] -name = "boto3" -version = "1.42.44" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -dependencies = [ - { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "jmespath", marker = "python_full_version >= '3.10'" }, - { name = "s3transfer", version = "0.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1d/88/de5c2a0ce069973345f9fac81200de5b58f503e231dbd566357a5b8c9109/boto3-1.42.44.tar.gz", hash = "sha256:d5601ea520d30674c1d15791a1f98b5c055e973c775e1d9952ccc09ee5913c4e", size = 112865, upload-time = "2026-02-06T20:28:05.647Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/fb/0341da1482f7fa256d257cfba89383f6692570b741598d4e26d879b26c57/boto3-1.42.44-py3-none-any.whl", hash = "sha256:32e995b0d56e19422cff22f586f698e8924c792eb00943de9c517ff4607e4e18", size = 140604, upload-time = "2026-02-06T20:28:03.598Z" }, -] - -[[package]] -name = "botocore" -version = "1.10.84" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "docutils", marker = "python_full_version == '3.9.*'" }, - { name = "jmespath", marker = "python_full_version == '3.9.*'" }, - { name = "python-dateutil", marker = "python_full_version == '3.9.*'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/67/01/43759329a6f7036aa739e86d446b908fa207222e224e537cd3d66fdb4c29/botocore-1.10.84.tar.gz", hash = "sha256:d3e4b5a2c903ea30d19d41ea2f65d0e51dce54f4f4c4dfd6ecd7b04f240844a8", size = 4612644, upload-time = "2018-08-23T23:58:44.898Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/b7/cb08cd1af2bb0d0dfb393101a93b6ab6fb80f109ab7b37f2f34386c11351/botocore-1.10.84-py2.py3-none-any.whl", hash = "sha256:380852e1adb9ba4ba9ff096af61f88a6888197b86e580e1bd786f04ebe6f9c0c", size = 4478913, upload-time = "2018-08-23T23:58:47.736Z" }, -] - -[[package]] -name = "botocore" -version = "1.37.38" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "jmespath", marker = "python_full_version < '3.9'" }, - { name = "python-dateutil", marker = "python_full_version < '3.9'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/34/79/4e072e614339727f79afef704e5993b5b4d2667c1671c757cc4deb954744/botocore-1.37.38.tar.gz", hash = "sha256:c3ea386177171f2259b284db6afc971c959ec103fa2115911c4368bea7cbbc5d", size = 13832365, upload-time = "2025-04-21T19:27:05.245Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/1b/93f3504afc7c523dcaa8a8147cfc75421983e30b08d9f93a533929589630/botocore-1.37.38-py3-none-any.whl", hash = "sha256:23b4097780e156a4dcaadfc1ed156ce25cb95b6087d010c4bb7f7f5d9bc9d219", size = 13499391, upload-time = "2025-04-21T19:27:00.869Z" }, -] - -[[package]] -name = "botocore" -version = "1.42.44" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -dependencies = [ - { name = "jmespath", marker = "python_full_version >= '3.10'" }, - { name = "python-dateutil", marker = "python_full_version >= '3.10'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/29/ff/54cef2c5ff4e1c77fabc0ed68781e48eb36f33433f82bba3605e9c0e45ce/botocore-1.42.44.tar.gz", hash = "sha256:47ba27360f2afd2c2721545d8909217f7be05fdee16dd8fc0b09589535a0701c", size = 14936071, upload-time = "2026-02-06T20:27:53.654Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/b45c54abfbb902ff174444a48558f97f9917143bc2e996729220f2631db1/botocore-1.42.44-py3-none-any.whl", hash = "sha256:ba406b9243a20591ee87d53abdb883d46416705cebccb639a7f1c923f9dd82df", size = 14611152, upload-time = "2026-02-06T20:27:49.565Z" }, -] - -[[package]] -name = "certifi" -version = "2026.1.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "pycparser", version = "2.23", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, - { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, - { url = "https://files.pythonhosted.org/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457, upload-time = "2024-09-04T20:44:47.892Z" }, - { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932, upload-time = "2024-09-04T20:44:49.491Z" }, - { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585, upload-time = "2024-09-04T20:44:51.671Z" }, - { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268, upload-time = "2024-09-04T20:44:53.51Z" }, - { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592, upload-time = "2024-09-04T20:44:55.085Z" }, - { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512, upload-time = "2024-09-04T20:44:57.135Z" }, - { url = "https://files.pythonhosted.org/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576, upload-time = "2024-09-04T20:44:58.535Z" }, - { url = "https://files.pythonhosted.org/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229, upload-time = "2024-09-04T20:44:59.963Z" }, - { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220, upload-time = "2024-09-04T20:45:01.577Z" }, - { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605, upload-time = "2024-09-04T20:45:03.837Z" }, - { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910, upload-time = "2024-09-04T20:45:05.315Z" }, - { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200, upload-time = "2024-09-04T20:45:06.903Z" }, - { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565, upload-time = "2024-09-04T20:45:08.975Z" }, - { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635, upload-time = "2024-09-04T20:45:10.64Z" }, - { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218, upload-time = "2024-09-04T20:45:12.366Z" }, - { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486, upload-time = "2024-09-04T20:45:13.935Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911, upload-time = "2024-09-04T20:45:15.696Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632, upload-time = "2024-09-04T20:45:17.284Z" }, - { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820, upload-time = "2024-09-04T20:45:18.762Z" }, - { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, -] - -[[package]] -name = "cffi" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "pycparser", version = "2.23", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*' and implementation_name != 'PyPy'" }, - { name = "pycparser", version = "3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10' and 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/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, - { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, - { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, - { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, - { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, - { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, - { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, - { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, - { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, - { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, - { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, - { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, - { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, - { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, - { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, - { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, - { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, - { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, - { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, - { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, - { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, - { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, - { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, - { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, - { 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" }, - { url = "https://files.pythonhosted.org/packages/c0/cc/08ed5a43f2996a16b462f64a7055c6e962803534924b9b2f1371d8c00b7b/cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf", size = 184288, upload-time = "2025-09-08T23:23:48.404Z" }, - { url = "https://files.pythonhosted.org/packages/3d/de/38d9726324e127f727b4ecc376bc85e505bfe61ef130eaf3f290c6847dd4/cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7", size = 180509, upload-time = "2025-09-08T23:23:49.73Z" }, - { url = "https://files.pythonhosted.org/packages/9b/13/c92e36358fbcc39cf0962e83223c9522154ee8630e1df7c0b3a39a8124e2/cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c", size = 208813, upload-time = "2025-09-08T23:23:51.263Z" }, - { url = "https://files.pythonhosted.org/packages/15/12/a7a79bd0df4c3bff744b2d7e52cc1b68d5e7e427b384252c42366dc1ecbc/cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165", size = 216498, upload-time = "2025-09-08T23:23:52.494Z" }, - { url = "https://files.pythonhosted.org/packages/a3/ad/5c51c1c7600bdd7ed9a24a203ec255dccdd0ebf4527f7b922a0bde2fb6ed/cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534", size = 203243, upload-time = "2025-09-08T23:23:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/32/f2/81b63e288295928739d715d00952c8c6034cb6c6a516b17d37e0c8be5600/cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f", size = 203158, upload-time = "2025-09-08T23:23:55.169Z" }, - { url = "https://files.pythonhosted.org/packages/1f/74/cc4096ce66f5939042ae094e2e96f53426a979864aa1f96a621ad128be27/cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63", size = 216548, upload-time = "2025-09-08T23:23:56.506Z" }, - { url = "https://files.pythonhosted.org/packages/e8/be/f6424d1dc46b1091ffcc8964fa7c0ab0cd36839dd2761b49c90481a6ba1b/cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2", size = 218897, upload-time = "2025-09-08T23:23:57.825Z" }, - { url = "https://files.pythonhosted.org/packages/f7/e0/dda537c2309817edf60109e39265f24f24aa7f050767e22c98c53fe7f48b/cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65", size = 211249, upload-time = "2025-09-08T23:23:59.139Z" }, - { url = "https://files.pythonhosted.org/packages/2b/e7/7c769804eb75e4c4b35e658dba01de1640a351a9653c3d49ca89d16ccc91/cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322", size = 218041, upload-time = "2025-09-08T23:24:00.496Z" }, - { url = "https://files.pythonhosted.org/packages/aa/d9/6218d78f920dcd7507fc16a766b5ef8f3b913cc7aa938e7fc80b9978d089/cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a", size = 172138, upload-time = "2025-09-08T23:24:01.7Z" }, - { url = "https://files.pythonhosted.org/packages/54/8f/a1e836f82d8e32a97e6b29cc8f641779181ac7363734f12df27db803ebda/cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9", size = 182794, upload-time = "2025-09-08T23:24:02.943Z" }, -] - -[[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/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload-time = "2025-10-14T04:40:11.385Z" }, - { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload-time = "2025-10-14T04:40:13.135Z" }, - { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload-time = "2025-10-14T04:40:14.728Z" }, - { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload-time = "2025-10-14T04:40:16.14Z" }, - { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload-time = "2025-10-14T04:40:17.567Z" }, - { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload-time = "2025-10-14T04:40:19.08Z" }, - { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload-time = "2025-10-14T04:40:20.607Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload-time = "2025-10-14T04:40:21.719Z" }, - { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload-time = "2025-10-14T04:40:23.069Z" }, - { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload-time = "2025-10-14T04:40:24.17Z" }, - { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload-time = "2025-10-14T04:40:25.368Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload-time = "2025-10-14T04:40:26.806Z" }, - { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload-time = "2025-10-14T04:40:28.284Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload-time = "2025-10-14T04:40:29.613Z" }, - { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload-time = "2025-10-14T04:40:30.644Z" }, - { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload-time = "2025-10-14T04:40:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, - { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, - { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, - { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, - { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, - { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, - { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, - { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, - { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, - { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, - { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, - { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, - { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, - { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, - { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, - { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, - { 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/4e/3926a1c11f0433791985727965263f788af00db3482d89a7545ca5ecc921/charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84", size = 198599, upload-time = "2025-10-14T04:41:53.213Z" }, - { url = "https://files.pythonhosted.org/packages/ec/7c/b92d1d1dcffc34592e71ea19c882b6709e43d20fa498042dea8b815638d7/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3", size = 143090, upload-time = "2025-10-14T04:41:54.385Z" }, - { url = "https://files.pythonhosted.org/packages/84/ce/61a28d3bb77281eb24107b937a497f3c43089326d27832a63dcedaab0478/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac", size = 139490, upload-time = "2025-10-14T04:41:55.551Z" }, - { url = "https://files.pythonhosted.org/packages/c0/bd/c9e59a91b2061c6f8bb98a150670cb16d4cd7c4ba7d11ad0cdf789155f41/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af", size = 155334, upload-time = "2025-10-14T04:41:56.724Z" }, - { url = "https://files.pythonhosted.org/packages/bf/37/f17ae176a80f22ff823456af91ba3bc59df308154ff53aef0d39eb3d3419/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2", size = 152823, upload-time = "2025-10-14T04:41:58.236Z" }, - { url = "https://files.pythonhosted.org/packages/bf/fa/cf5bb2409a385f78750e78c8d2e24780964976acdaaed65dbd6083ae5b40/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d", size = 147618, upload-time = "2025-10-14T04:41:59.409Z" }, - { url = "https://files.pythonhosted.org/packages/9b/63/579784a65bc7de2d4518d40bb8f1870900163e86f17f21fd1384318c459d/charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3", size = 145516, upload-time = "2025-10-14T04:42:00.579Z" }, - { url = "https://files.pythonhosted.org/packages/a3/a9/94ec6266cd394e8f93a4d69cca651d61bf6ac58d2a0422163b30c698f2c7/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63", size = 145266, upload-time = "2025-10-14T04:42:01.684Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/d6626eb97764b58c2779fa7928fa7d1a49adb8ce687c2dbba4db003c1939/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7", size = 139559, upload-time = "2025-10-14T04:42:02.902Z" }, - { url = "https://files.pythonhosted.org/packages/09/01/ddbe6b01313ba191dbb0a43c7563bc770f2448c18127f9ea4b119c44dff0/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4", size = 156653, upload-time = "2025-10-14T04:42:04.005Z" }, - { url = "https://files.pythonhosted.org/packages/95/c8/d05543378bea89296e9af4510b44c704626e191da447235c8fdedfc5b7b2/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf", size = 145644, upload-time = "2025-10-14T04:42:05.211Z" }, - { url = "https://files.pythonhosted.org/packages/72/01/2866c4377998ef8a1f6802f6431e774a4c8ebe75b0a6e569ceec55c9cbfb/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074", size = 153964, upload-time = "2025-10-14T04:42:06.341Z" }, - { url = "https://files.pythonhosted.org/packages/4a/66/66c72468a737b4cbd7851ba2c522fe35c600575fbeac944460b4fd4a06fe/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a", size = 148777, upload-time = "2025-10-14T04:42:07.535Z" }, - { url = "https://files.pythonhosted.org/packages/50/94/d0d56677fdddbffa8ca00ec411f67bb8c947f9876374ddc9d160d4f2c4b3/charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa", size = 98687, upload-time = "2025-10-14T04:42:08.678Z" }, - { url = "https://files.pythonhosted.org/packages/00/64/c3bc303d1b586480b1c8e6e1e2191a6d6dd40255244e5cf16763dcec52e6/charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576", size = 106115, upload-time = "2025-10-14T04:42:09.793Z" }, - { url = "https://files.pythonhosted.org/packages/46/7c/0c4760bccf082737ca7ab84a4c2034fcc06b1f21cf3032ea98bd6feb1725/charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9", size = 209609, upload-time = "2025-10-14T04:42:10.922Z" }, - { url = "https://files.pythonhosted.org/packages/bb/a4/69719daef2f3d7f1819de60c9a6be981b8eeead7542d5ec4440f3c80e111/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d", size = 149029, upload-time = "2025-10-14T04:42:12.38Z" }, - { url = "https://files.pythonhosted.org/packages/e6/21/8d4e1d6c1e6070d3672908b8e4533a71b5b53e71d16828cc24d0efec564c/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608", size = 144580, upload-time = "2025-10-14T04:42:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a7/0a/a616d001b3f25647a9068e0b9199f697ce507ec898cacb06a0d5a1617c99/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc", size = 162340, upload-time = "2025-10-14T04:42:14.892Z" }, - { url = "https://files.pythonhosted.org/packages/85/93/060b52deb249a5450460e0585c88a904a83aec474ab8e7aba787f45e79f2/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e", size = 159619, upload-time = "2025-10-14T04:42:16.676Z" }, - { url = "https://files.pythonhosted.org/packages/dd/21/0274deb1cc0632cd587a9a0ec6b4674d9108e461cb4cd40d457adaeb0564/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1", size = 153980, upload-time = "2025-10-14T04:42:17.917Z" }, - { url = "https://files.pythonhosted.org/packages/28/2b/e3d7d982858dccc11b31906976323d790dded2017a0572f093ff982d692f/charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3", size = 152174, upload-time = "2025-10-14T04:42:19.018Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ff/4a269f8e35f1e58b2df52c131a1fa019acb7ef3f8697b7d464b07e9b492d/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6", size = 151666, upload-time = "2025-10-14T04:42:20.171Z" }, - { url = "https://files.pythonhosted.org/packages/da/c9/ec39870f0b330d58486001dd8e532c6b9a905f5765f58a6f8204926b4a93/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88", size = 145550, upload-time = "2025-10-14T04:42:21.324Z" }, - { url = "https://files.pythonhosted.org/packages/75/8f/d186ab99e40e0ed9f82f033d6e49001701c81244d01905dd4a6924191a30/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1", size = 163721, upload-time = "2025-10-14T04:42:22.46Z" }, - { url = "https://files.pythonhosted.org/packages/96/b1/6047663b9744df26a7e479ac1e77af7134b1fcf9026243bb48ee2d18810f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf", size = 152127, upload-time = "2025-10-14T04:42:23.712Z" }, - { url = "https://files.pythonhosted.org/packages/59/78/e5a6eac9179f24f704d1be67d08704c3c6ab9f00963963524be27c18ed87/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318", size = 161175, upload-time = "2025-10-14T04:42:24.87Z" }, - { url = "https://files.pythonhosted.org/packages/e5/43/0e626e42d54dd2f8dd6fc5e1c5ff00f05fbca17cb699bedead2cae69c62f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c", size = 155375, upload-time = "2025-10-14T04:42:27.246Z" }, - { url = "https://files.pythonhosted.org/packages/e9/91/d9615bf2e06f35e4997616ff31248c3657ed649c5ab9d35ea12fce54e380/charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505", size = 99692, upload-time = "2025-10-14T04:42:28.425Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a9/6c040053909d9d1ef4fcab45fddec083aedc9052c10078339b47c8573ea8/charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966", size = 107192, upload-time = "2025-10-14T04:42:29.482Z" }, - { url = "https://files.pythonhosted.org/packages/f0/c6/4fa536b2c0cd3edfb7ccf8469fa0f363ea67b7213a842b90909ca33dd851/charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50", size = 100220, upload-time = "2025-10-14T04:42:30.632Z" }, - { 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 = "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 = "crcmod" -version = "1.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/b0/e595ce2a2527e169c3bcd6c33d2473c1918e0b7f6826a043ca1245dd4e5b/crcmod-1.7.tar.gz", hash = "sha256:dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e", size = 89670, upload-time = "2010-06-27T14:35:29.538Z" } - -[[package]] -name = "cryptography" -version = "46.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9' and platform_python_implementation != 'PyPy'" }, - { name = "cffi", version = "2.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and platform_python_implementation != 'PyPy'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, - { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, - { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, - { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, - { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, - { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, - { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, - { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, - { url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" }, - { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, - { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, - { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, - { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, - { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, - { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, - { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, - { url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" }, - { url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" }, - { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, - { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, - { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, - { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, - { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, - { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, - { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, - { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, - { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, - { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, - { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, - { url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload-time = "2026-02-10T19:18:20.687Z" }, - { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" }, - { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" }, - { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" }, - { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" }, - { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" }, -] - -[[package]] -name = "docutils" -version = "0.22.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ae/b6/03bb70946330e88ffec97aefd3ea75ba575cb2e762061e0e62a213befee8/docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968", size = 2291750, upload-time = "2025-12-18T19:00:26.443Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, -] - -[[package]] -name = "emoji" -version = "2.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/78/0d2db9382c92a163d7095fc08efff7800880f830a152cfced40161e7638d/emoji-2.15.0.tar.gz", hash = "sha256:eae4ab7d86456a70a00a985125a03263a5eac54cd55e51d7e184b1ed3b6757e4", size = 615483, upload-time = "2025-09-21T12:13:02.755Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/5e/4b5aaaabddfacfe36ba7768817bd1f71a7a810a43705e531f3ae4c690767/emoji-2.15.0-py3-none-any.whl", hash = "sha256:205296793d66a89d88af4688fa57fd6496732eb48917a87175a023c8138995eb", size = 608433, upload-time = "2025-09-21T12:13:01.197Z" }, -] - -[[package]] -name = "exceptiongroup" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, -] - -[[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 = "h2" -version = "4.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "hpack", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "hyperframe", version = "6.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1/h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb", size = 2145593, upload-time = "2021-10-05T18:27:47.18Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", size = 57488, upload-time = "2021-10-05T18:27:39.977Z" }, -] - -[[package]] -name = "h2" -version = "4.3.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "hpack", version = "4.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "hyperframe", version = "6.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026, upload-time = "2025-08-23T18:12:19.778Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, -] - -[[package]] -name = "hpack" -version = "4.0.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954/hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095", size = 49117, upload-time = "2020-08-30T10:35:57.868Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611, upload-time = "2020-08-30T10:35:56.357Z" }, -] - -[[package]] -name = "hpack" -version = "4.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" }, -] - -[[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 = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio", version = "4.5.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "anyio", version = "4.12.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { 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.optional-dependencies] -http2 = [ - { name = "h2", version = "4.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "h2", version = "4.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] - -[[package]] -name = "hyperframe" -version = "6.0.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb/hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914", size = 25008, upload-time = "2021-04-17T12:11:22.757Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/de/85a784bcc4a3779d1753a7ec2dee5de90e18c7bcf402e71b51fcf150b129/hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", size = 12389, upload-time = "2021-04-17T12:11:21.045Z" }, -] - -[[package]] -name = "hyperframe" -version = "6.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, -] - -[[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 = "iniconfig" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, -] - -[[package]] -name = "iniconfig" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, -] - -[[package]] -name = "jmespath" -version = "0.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3c/56/3f325b1eef9791759784aa5046a8f6a1aff8f7c898a2e34506771d3b99d8/jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", size = 21607, upload-time = "2020-05-12T22:03:47.267Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/cb/5f001272b6faeb23c1c9e0acc04d48eaaf5c862c17709d20e3469c6e0139/jmespath-0.10.0-py2.py3-none-any.whl", hash = "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f", size = 24489, upload-time = "2020-05-12T22:03:45.643Z" }, -] - -[[package]] -name = "minio" -version = "7.2.7" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "argon2-cffi", marker = "python_full_version <= '3.8'" }, - { name = "certifi", marker = "python_full_version <= '3.8'" }, - { name = "pycryptodome", marker = "python_full_version <= '3.8'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ea/96/979d7231fbe2768813cd41675ced868ecbc47c4fb4c926d1c29d557a79e6/minio-7.2.7.tar.gz", hash = "sha256:473d5d53d79f340f3cd632054d0c82d2f93177ce1af2eac34a235bea55708d98", size = 135065, upload-time = "2024-04-30T21:09:36.934Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/9a/66fc4e8c861fa4e3029da41569531a56c471abb3c3e08d236115807fb476/minio-7.2.7-py3-none-any.whl", hash = "sha256:59d1f255d852fe7104018db75b3bebbd987e538690e680f7c5de835e422de837", size = 93462, upload-time = "2024-04-30T21:09:34.74Z" }, -] - -[[package]] -name = "minio" -version = "7.2.10" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", -] -dependencies = [ - { name = "argon2-cffi", marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, - { name = "certifi", marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, - { name = "pycryptodome", marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/84/d8/04b4c8ceaa7bae49a674ccdba53530599e73fb3c6a8f8cf8e26ee0eb390d/minio-7.2.10.tar.gz", hash = "sha256:418c31ac79346a580df04a0e14db1becbc548a6e7cca61f9bc4ef3bcd336c449", size = 135388, upload-time = "2024-10-24T20:23:56.795Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/6f/1b1f5025bf43c2a4ca8112332db586c8077048ec8bcea2deb269eac84577/minio-7.2.10-py3-none-any.whl", hash = "sha256:5961c58192b1d70d3a2a362064b8e027b8232688998a6d1251dadbb02ab57a7d", size = 93943, upload-time = "2024-10-24T20:23:55.49Z" }, -] - -[[package]] -name = "minio" -version = "7.2.20" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "argon2-cffi", marker = "python_full_version >= '3.9'" }, - { name = "certifi", marker = "python_full_version >= '3.9'" }, - { name = "pycryptodome", marker = "python_full_version >= '3.9'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/40/df/6dfc6540f96a74125a11653cce717603fd5b7d0001a8e847b3e54e72d238/minio-7.2.20.tar.gz", hash = "sha256:95898b7a023fbbfde375985aa77e2cd6a0762268db79cf886f002a9ea8e68598", size = 136113, upload-time = "2025-11-27T00:37:15.569Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/9a/b697530a882588a84db616580f2ba5d1d515c815e11c30d219145afeec87/minio-7.2.20-py3-none-any.whl", hash = "sha256:eb33dd2fb80e04c3726a76b13241c6be3c4c46f8d81e1d58e757786f6501897e", size = 93751, upload-time = "2025-11-27T00:37:13.993Z" }, -] - -[[package]] -name = "oss2" -version = "2.19.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aliyun-python-sdk-core" }, - { name = "aliyun-python-sdk-kms" }, - { name = "crcmod" }, - { name = "pycryptodome" }, - { name = "requests", version = "2.32.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "requests", version = "2.32.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/df/b5/f2cb1950dda46ac2284d6c950489fdacd0e743c2d79a347924d3cc44b86f/oss2-2.19.1.tar.gz", hash = "sha256:a8ab9ee7eb99e88a7e1382edc6ea641d219d585a7e074e3776e9dec9473e59c1", size = 298845, upload-time = "2024-10-25T11:37:46.638Z" } - -[[package]] -name = "packaging" -version = "26.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, -] - -[[package]] -name = "pdfdeal" -version = "1.0.4" -source = { editable = "." } -dependencies = [ - { name = "aiofiles", version = "24.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "aiofiles", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "cryptography" }, - { name = "h2", version = "4.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "httpx", extra = ["http2"] }, - { name = "pypdf", version = "5.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pypdf", version = "6.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] - -[package.optional-dependencies] -dev = [ - { name = "beautifulsoup4" }, - { name = "boto3", version = "1.7.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "boto3", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "emoji" }, - { name = "minio", version = "7.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, - { name = "minio", version = "7.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, - { name = "minio", version = "7.2.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "oss2" }, - { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -rag = [ - { name = "beautifulsoup4" }, - { name = "boto3", version = "1.7.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "boto3", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "boto3", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "emoji" }, - { name = "minio", version = "7.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version <= '3.8'" }, - { name = "minio", version = "7.2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version > '3.8' and python_full_version < '3.9'" }, - { name = "minio", version = "7.2.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "oss2" }, - { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -tools = [ - { name = "beautifulsoup4" }, - { name = "emoji" }, - { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "reportlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "reportlab", version = "4.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] - -[package.metadata] -requires-dist = [ - { name = "aiofiles", specifier = ">=24.1.0" }, - { name = "beautifulsoup4", marker = "extra == 'dev'" }, - { name = "beautifulsoup4", marker = "extra == 'rag'" }, - { name = "beautifulsoup4", marker = "extra == 'tools'" }, - { name = "boto3", marker = "extra == 'dev'" }, - { name = "boto3", marker = "extra == 'rag'" }, - { name = "cryptography", specifier = ">=46.0.5" }, - { name = "emoji", marker = "extra == 'dev'" }, - { name = "emoji", marker = "extra == 'rag'" }, - { name = "emoji", marker = "extra == 'tools'" }, - { name = "h2", marker = "python_full_version >= '3.9'", specifier = ">=4.3.0" }, - { name = "httpx", extras = ["http2"], specifier = ">=0.23.1,<1" }, - { name = "minio", marker = "extra == 'dev'" }, - { name = "minio", marker = "extra == 'rag'" }, - { name = "oss2", marker = "extra == 'dev'" }, - { name = "oss2", marker = "extra == 'rag'" }, - { name = "pillow", marker = "python_full_version >= '3.10' and extra == 'dev'", specifier = ">=12.1.1" }, - { name = "pillow", marker = "python_full_version >= '3.10' and extra == 'rag'", specifier = ">=12.1.1" }, - { name = "pillow", marker = "python_full_version >= '3.10' and extra == 'tools'", specifier = ">=12.1.1" }, - { name = "pillow", marker = "python_full_version < '3.10' and extra == 'dev'", specifier = ">=10.4.0,<12.0.0" }, - { name = "pillow", marker = "python_full_version < '3.10' and extra == 'rag'", specifier = ">=10.4.0,<12.0.0" }, - { name = "pillow", marker = "python_full_version < '3.10' and extra == 'tools'", specifier = ">=10.4.0,<12.0.0" }, - { name = "pypdf", marker = "python_full_version < '3.9'", specifier = ">=5.0.0,<6.0.0" }, - { name = "pypdf", marker = "python_full_version >= '3.9'", specifier = ">=6.8.0" }, - { name = "pytest", specifier = ">=8.3.5" }, - { name = "pytest", marker = "extra == 'dev'" }, - { name = "reportlab", marker = "extra == 'dev'" }, - { name = "reportlab", marker = "extra == 'rag'" }, - { name = "reportlab", marker = "extra == 'tools'" }, - { name = "urllib3", marker = "python_full_version < '3.9'", specifier = ">=1.26.20,<2.0.0" }, - { name = "urllib3", marker = "python_full_version >= '3.9'", specifier = ">=2.6.3" }, -] -provides-extras = ["tools", "rag", "dev"] - -[[package]] -name = "pillow" -version = "10.4.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271, upload-time = "2024-07-01T09:45:22.07Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658, upload-time = "2024-07-01T09:45:25.292Z" }, - { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075, upload-time = "2024-07-01T09:45:27.94Z" }, - { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808, upload-time = "2024-07-01T09:45:30.305Z" }, - { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290, upload-time = "2024-07-01T09:45:32.868Z" }, - { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163, upload-time = "2024-07-01T09:45:35.279Z" }, - { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100, upload-time = "2024-07-01T09:45:37.74Z" }, - { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880, upload-time = "2024-07-01T09:45:39.89Z" }, - { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218, upload-time = "2024-07-01T09:45:42.771Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487, upload-time = "2024-07-01T09:45:45.176Z" }, - { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219, upload-time = "2024-07-01T09:45:47.274Z" }, - { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, - { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, - { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, - { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, - { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, - { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, - { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, - { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, - { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, - { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, - { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, - { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, - { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, - { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, - { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, - { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, - { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, - { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685, upload-time = "2024-07-01T09:46:45.194Z" }, - { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883, upload-time = "2024-07-01T09:46:47.331Z" }, - { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837, upload-time = "2024-07-01T09:46:49.647Z" }, - { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562, upload-time = "2024-07-01T09:46:51.811Z" }, - { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761, upload-time = "2024-07-01T09:46:53.961Z" }, - { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767, upload-time = "2024-07-01T09:46:56.664Z" }, - { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989, upload-time = "2024-07-01T09:46:58.977Z" }, - { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255, upload-time = "2024-07-01T09:47:01.189Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, - { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, - { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, - { url = "https://files.pythonhosted.org/packages/56/70/f40009702a477ce87d8d9faaa4de51d6562b3445d7a314accd06e4ffb01d/pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", size = 3509213, upload-time = "2024-07-01T09:47:11.662Z" }, - { url = "https://files.pythonhosted.org/packages/10/43/105823d233c5e5d31cea13428f4474ded9d961652307800979a59d6a4276/pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", size = 3375883, upload-time = "2024-07-01T09:47:14.453Z" }, - { url = "https://files.pythonhosted.org/packages/3c/ad/7850c10bac468a20c918f6a5dbba9ecd106ea1cdc5db3c35e33a60570408/pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", size = 4330810, upload-time = "2024-07-01T09:47:16.695Z" }, - { url = "https://files.pythonhosted.org/packages/84/4c/69bbed9e436ac22f9ed193a2b64f64d68fcfbc9f4106249dc7ed4889907b/pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", size = 4444341, upload-time = "2024-07-01T09:47:19.334Z" }, - { url = "https://files.pythonhosted.org/packages/8f/4f/c183c63828a3f37bf09644ce94cbf72d4929b033b109160a5379c2885932/pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", size = 4356005, upload-time = "2024-07-01T09:47:21.805Z" }, - { url = "https://files.pythonhosted.org/packages/fb/ad/435fe29865f98a8fbdc64add8875a6e4f8c97749a93577a8919ec6f32c64/pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", size = 4525201, upload-time = "2024-07-01T09:47:24.457Z" }, - { url = "https://files.pythonhosted.org/packages/80/74/be8bf8acdfd70e91f905a12ae13cfb2e17c0f1da745c40141e26d0971ff5/pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", size = 4460635, upload-time = "2024-07-01T09:47:26.841Z" }, - { url = "https://files.pythonhosted.org/packages/e4/90/763616e66dc9ad59c9b7fb58f863755e7934ef122e52349f62c7742b82d3/pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", size = 4590283, upload-time = "2024-07-01T09:47:29.247Z" }, - { url = "https://files.pythonhosted.org/packages/69/66/03002cb5b2c27bb519cba63b9f9aa3709c6f7a5d3b285406c01f03fb77e5/pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", size = 2235185, upload-time = "2024-07-01T09:47:32.205Z" }, - { url = "https://files.pythonhosted.org/packages/f2/75/3cb820b2812405fc7feb3d0deb701ef0c3de93dc02597115e00704591bc9/pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", size = 2554594, upload-time = "2024-07-01T09:47:34.285Z" }, - { url = "https://files.pythonhosted.org/packages/31/85/955fa5400fa8039921f630372cfe5056eed6e1b8e0430ee4507d7de48832/pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", size = 3509283, upload-time = "2024-07-01T09:47:36.394Z" }, - { url = "https://files.pythonhosted.org/packages/23/9c/343827267eb28d41cd82b4180d33b10d868af9077abcec0af9793aa77d2d/pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", size = 3375691, upload-time = "2024-07-01T09:47:38.853Z" }, - { url = "https://files.pythonhosted.org/packages/60/a3/7ebbeabcd341eab722896d1a5b59a3df98c4b4d26cf4b0385f8aa94296f7/pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", size = 4328295, upload-time = "2024-07-01T09:47:41.765Z" }, - { url = "https://files.pythonhosted.org/packages/32/3f/c02268d0c6fb6b3958bdda673c17b315c821d97df29ae6969f20fb49388a/pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", size = 4440810, upload-time = "2024-07-01T09:47:44.27Z" }, - { url = "https://files.pythonhosted.org/packages/67/5d/1c93c8cc35f2fdd3d6cc7e4ad72d203902859a2867de6ad957d9b708eb8d/pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", size = 4352283, upload-time = "2024-07-01T09:47:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/bc/a8/8655557c9c7202b8abbd001f61ff36711cefaf750debcaa1c24d154ef602/pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", size = 4521800, upload-time = "2024-07-01T09:47:48.813Z" }, - { url = "https://files.pythonhosted.org/packages/58/78/6f95797af64d137124f68af1bdaa13b5332da282b86031f6fa70cf368261/pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", size = 4459177, upload-time = "2024-07-01T09:47:52.104Z" }, - { url = "https://files.pythonhosted.org/packages/8a/6d/2b3ce34f1c4266d79a78c9a51d1289a33c3c02833fe294ef0dcbb9cba4ed/pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", size = 4589079, upload-time = "2024-07-01T09:47:54.999Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e0/456258c74da1ff5bf8ef1eab06a95ca994d8b9ed44c01d45c3f8cbd1db7e/pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", size = 2235247, upload-time = "2024-07-01T09:47:57.666Z" }, - { url = "https://files.pythonhosted.org/packages/37/f8/bef952bdb32aa53741f58bf21798642209e994edc3f6598f337f23d5400a/pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", size = 2554479, upload-time = "2024-07-01T09:47:59.881Z" }, - { url = "https://files.pythonhosted.org/packages/bb/8e/805201619cad6651eef5fc1fdef913804baf00053461522fabbc5588ea12/pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", size = 2243226, upload-time = "2024-07-01T09:48:02.508Z" }, - { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889, upload-time = "2024-07-01T09:48:04.815Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160, upload-time = "2024-07-01T09:48:07.206Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020, upload-time = "2024-07-01T09:48:09.66Z" }, - { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539, upload-time = "2024-07-01T09:48:12.529Z" }, - { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125, upload-time = "2024-07-01T09:48:14.891Z" }, - { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373, upload-time = "2024-07-01T09:48:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661, upload-time = "2024-07-01T09:48:20.293Z" }, - { url = "https://files.pythonhosted.org/packages/e1/1f/5a9fcd6ced51633c22481417e11b1b47d723f64fb536dfd67c015eb7f0ab/pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", size = 3493850, upload-time = "2024-07-01T09:48:23.03Z" }, - { url = "https://files.pythonhosted.org/packages/cb/e6/3ea4755ed5320cb62aa6be2f6de47b058c6550f752dd050e86f694c59798/pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", size = 3346118, upload-time = "2024-07-01T09:48:25.256Z" }, - { url = "https://files.pythonhosted.org/packages/0a/22/492f9f61e4648422b6ca39268ec8139277a5b34648d28f400faac14e0f48/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", size = 3434958, upload-time = "2024-07-01T09:48:28.078Z" }, - { url = "https://files.pythonhosted.org/packages/f9/19/559a48ad4045704bb0547965b9a9345f5cd461347d977a56d178db28819e/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", size = 3490340, upload-time = "2024-07-01T09:48:30.734Z" }, - { url = "https://files.pythonhosted.org/packages/d9/de/cebaca6fb79905b3a1aa0281d238769df3fb2ede34fd7c0caa286575915a/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", size = 3476048, upload-time = "2024-07-01T09:48:33.292Z" }, - { url = "https://files.pythonhosted.org/packages/71/f0/86d5b2f04693b0116a01d75302b0a307800a90d6c351a8aa4f8ae76cd499/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", size = 3579366, upload-time = "2024-07-01T09:48:36.527Z" }, - { url = "https://files.pythonhosted.org/packages/37/ae/2dbfc38cc4fd14aceea14bc440d5151b21f64c4c3ba3f6f4191610b7ee5d/pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", size = 2554652, upload-time = "2024-07-01T09:48:38.789Z" }, -] - -[[package]] -name = "pillow" -version = "11.3.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, - { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, - { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, - { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, - { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, - { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, - { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, - { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, - { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, - { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, - { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, - { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, - { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, - { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, - { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, - { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, - { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, - { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, - { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, - { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, - { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, - { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, - { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, - { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, - { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, - { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, - { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, - { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, - { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, - { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, - { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, - { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, - { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, - { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, - { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, - { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, - { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, - { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, - { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, - { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, - { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, - { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, - { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, - { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, - { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, - { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, - { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, - { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, - { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, - { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, - { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, - { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, - { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, - { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, - { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, - { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8e/9c089f01677d1264ab8648352dcb7773f37da6ad002542760c80107da816/pillow-11.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:48d254f8a4c776de343051023eb61ffe818299eeac478da55227d96e241de53f", size = 5316478, upload-time = "2025-07-01T09:15:52.209Z" }, - { url = "https://files.pythonhosted.org/packages/b5/a9/5749930caf674695867eb56a581e78eb5f524b7583ff10b01b6e5048acb3/pillow-11.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7aee118e30a4cf54fdd873bd3a29de51e29105ab11f9aad8c32123f58c8f8081", size = 4686522, upload-time = "2025-07-01T09:15:54.162Z" }, - { url = "https://files.pythonhosted.org/packages/43/46/0b85b763eb292b691030795f9f6bb6fcaf8948c39413c81696a01c3577f7/pillow-11.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:23cff760a9049c502721bdb743a7cb3e03365fafcdfc2ef9784610714166e5a4", size = 5853376, upload-time = "2025-07-03T13:11:01.066Z" }, - { url = "https://files.pythonhosted.org/packages/5e/c6/1a230ec0067243cbd60bc2dad5dc3ab46a8a41e21c15f5c9b52b26873069/pillow-11.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6359a3bc43f57d5b375d1ad54a0074318a0844d11b76abccf478c37c986d3cfc", size = 7626020, upload-time = "2025-07-03T13:11:06.479Z" }, - { url = "https://files.pythonhosted.org/packages/63/dd/f296c27ffba447bfad76c6a0c44c1ea97a90cb9472b9304c94a732e8dbfb/pillow-11.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:092c80c76635f5ecb10f3f83d76716165c96f5229addbd1ec2bdbbda7d496e06", size = 5956732, upload-time = "2025-07-01T09:15:56.111Z" }, - { url = "https://files.pythonhosted.org/packages/a5/a0/98a3630f0b57f77bae67716562513d3032ae70414fcaf02750279c389a9e/pillow-11.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cadc9e0ea0a2431124cde7e1697106471fc4c1da01530e679b2391c37d3fbb3a", size = 6624404, upload-time = "2025-07-01T09:15:58.245Z" }, - { url = "https://files.pythonhosted.org/packages/de/e6/83dfba5646a290edd9a21964da07674409e410579c341fc5b8f7abd81620/pillow-11.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6a418691000f2a418c9135a7cf0d797c1bb7d9a485e61fe8e7722845b95ef978", size = 6067760, upload-time = "2025-07-01T09:16:00.003Z" }, - { url = "https://files.pythonhosted.org/packages/bc/41/15ab268fe6ee9a2bc7391e2bbb20a98d3974304ab1a406a992dcb297a370/pillow-11.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:97afb3a00b65cc0804d1c7abddbf090a81eaac02768af58cbdcaaa0a931e0b6d", size = 6700534, upload-time = "2025-07-01T09:16:02.29Z" }, - { url = "https://files.pythonhosted.org/packages/64/79/6d4f638b288300bed727ff29f2a3cb63db054b33518a95f27724915e3fbc/pillow-11.3.0-cp39-cp39-win32.whl", hash = "sha256:ea944117a7974ae78059fcc1800e5d3295172bb97035c0c1d9345fca1419da71", size = 6277091, upload-time = "2025-07-01T09:16:04.4Z" }, - { url = "https://files.pythonhosted.org/packages/46/05/4106422f45a05716fd34ed21763f8ec182e8ea00af6e9cb05b93a247361a/pillow-11.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:e5c5858ad8ec655450a7c7df532e9842cf8df7cc349df7225c60d5d348c8aada", size = 6986091, upload-time = "2025-07-01T09:16:06.342Z" }, - { url = "https://files.pythonhosted.org/packages/63/c6/287fd55c2c12761d0591549d48885187579b7c257bef0c6660755b0b59ae/pillow-11.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:6abdbfd3aea42be05702a8dd98832329c167ee84400a1d1f61ab11437f1717eb", size = 2422632, upload-time = "2025-07-01T09:16:08.142Z" }, - { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, - { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, - { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, - { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, - { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, - { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, - { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, - { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, - { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, - { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, - { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, - { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, - { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, -] - -[[package]] -name = "pillow" -version = "12.1.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -sdist = { url = "https://files.pythonhosted.org/packages/1f/42/5c74462b4fd957fcd7b13b04fb3205ff8349236ea74c7c375766d6c82288/pillow-12.1.1.tar.gz", hash = "sha256:9ad8fa5937ab05218e2b6a4cff30295ad35afd2f83ac592e68c0d871bb0fdbc4", size = 46980264, upload-time = "2026-02-11T04:23:07.146Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/30/5bd3d794762481f8c8ae9c80e7b76ecea73b916959eb587521358ef0b2f9/pillow-12.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f1625b72740fdda5d77b4def688eb8fd6490975d06b909fd19f13f391e077e0", size = 5304099, upload-time = "2026-02-11T04:20:06.13Z" }, - { url = "https://files.pythonhosted.org/packages/bd/c1/aab9e8f3eeb4490180e357955e15c2ef74b31f64790ff356c06fb6cf6d84/pillow-12.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:178aa072084bd88ec759052feca8e56cbb14a60b39322b99a049e58090479713", size = 4657880, upload-time = "2026-02-11T04:20:09.291Z" }, - { url = "https://files.pythonhosted.org/packages/f1/0a/9879e30d56815ad529d3985aeff5af4964202425c27261a6ada10f7cbf53/pillow-12.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b66e95d05ba806247aaa1561f080abc7975daf715c30780ff92a20e4ec546e1b", size = 6222587, upload-time = "2026-02-11T04:20:10.82Z" }, - { url = "https://files.pythonhosted.org/packages/5a/5f/a1b72ff7139e4f89014e8d451442c74a774d5c43cd938fb0a9f878576b37/pillow-12.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89c7e895002bbe49cdc5426150377cbbc04767d7547ed145473f496dfa40408b", size = 8027678, upload-time = "2026-02-11T04:20:12.455Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c2/c7cb187dac79a3d22c3ebeae727abee01e077c8c7d930791dc592f335153/pillow-12.1.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a5cbdcddad0af3da87cb16b60d23648bc3b51967eb07223e9fed77a82b457c4", size = 6335777, upload-time = "2026-02-11T04:20:14.441Z" }, - { url = "https://files.pythonhosted.org/packages/0c/7b/f9b09a7804ec7336effb96c26d37c29d27225783dc1501b7d62dcef6ae25/pillow-12.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f51079765661884a486727f0729d29054242f74b46186026582b4e4769918e4", size = 7027140, upload-time = "2026-02-11T04:20:16.387Z" }, - { url = "https://files.pythonhosted.org/packages/98/b2/2fa3c391550bd421b10849d1a2144c44abcd966daadd2f7c12e19ea988c4/pillow-12.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:99c1506ea77c11531d75e3a412832a13a71c7ebc8192ab9e4b2e355555920e3e", size = 6449855, upload-time = "2026-02-11T04:20:18.554Z" }, - { url = "https://files.pythonhosted.org/packages/96/ff/9caf4b5b950c669263c39e96c78c0d74a342c71c4f43fd031bb5cb7ceac9/pillow-12.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36341d06738a9f66c8287cf8b876d24b18db9bd8740fa0672c74e259ad408cff", size = 7151329, upload-time = "2026-02-11T04:20:20.646Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f8/4b24841f582704da675ca535935bccb32b00a6da1226820845fac4a71136/pillow-12.1.1-cp310-cp310-win32.whl", hash = "sha256:6c52f062424c523d6c4db85518774cc3d50f5539dd6eed32b8f6229b26f24d40", size = 6325574, upload-time = "2026-02-11T04:20:22.43Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f9/9f6b01c0881d7036063aa6612ef04c0e2cad96be21325a1e92d0203f8e91/pillow-12.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6008de247150668a705a6338156efb92334113421ceecf7438a12c9a12dab23", size = 7032347, upload-time = "2026-02-11T04:20:23.932Z" }, - { url = "https://files.pythonhosted.org/packages/79/13/c7922edded3dcdaf10c59297540b72785620abc0538872c819915746757d/pillow-12.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:1a9b0ee305220b392e1124a764ee4265bd063e54a751a6b62eff69992f457fa9", size = 2453457, upload-time = "2026-02-11T04:20:25.392Z" }, - { url = "https://files.pythonhosted.org/packages/2b/46/5da1ec4a5171ee7bf1a0efa064aba70ba3d6e0788ce3f5acd1375d23c8c0/pillow-12.1.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:e879bb6cd5c73848ef3b2b48b8af9ff08c5b71ecda8048b7dd22d8a33f60be32", size = 5304084, upload-time = "2026-02-11T04:20:27.501Z" }, - { url = "https://files.pythonhosted.org/packages/78/93/a29e9bc02d1cf557a834da780ceccd54e02421627200696fcf805ebdc3fb/pillow-12.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:365b10bb9417dd4498c0e3b128018c4a624dc11c7b97d8cc54effe3b096f4c38", size = 4657866, upload-time = "2026-02-11T04:20:29.827Z" }, - { url = "https://files.pythonhosted.org/packages/13/84/583a4558d492a179d31e4aae32eadce94b9acf49c0337c4ce0b70e0a01f2/pillow-12.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d4ce8e329c93845720cd2014659ca67eac35f6433fd3050393d85f3ecef0dad5", size = 6232148, upload-time = "2026-02-11T04:20:31.329Z" }, - { url = "https://files.pythonhosted.org/packages/d5/e2/53c43334bbbb2d3b938978532fbda8e62bb6e0b23a26ce8592f36bcc4987/pillow-12.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc354a04072b765eccf2204f588a7a532c9511e8b9c7f900e1b64e3e33487090", size = 8038007, upload-time = "2026-02-11T04:20:34.225Z" }, - { url = "https://files.pythonhosted.org/packages/b8/a6/3d0e79c8a9d58150dd98e199d7c1c56861027f3829a3a60b3c2784190180/pillow-12.1.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e7976bf1910a8116b523b9f9f58bf410f3e8aa330cd9a2bb2953f9266ab49af", size = 6345418, upload-time = "2026-02-11T04:20:35.858Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c8/46dfeac5825e600579157eea177be43e2f7ff4a99da9d0d0a49533509ac5/pillow-12.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:597bd9c8419bc7c6af5604e55847789b69123bbe25d65cc6ad3012b4f3c98d8b", size = 7034590, upload-time = "2026-02-11T04:20:37.91Z" }, - { url = "https://files.pythonhosted.org/packages/af/bf/e6f65d3db8a8bbfeaf9e13cc0417813f6319863a73de934f14b2229ada18/pillow-12.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2c1fc0f2ca5f96a3c8407e41cca26a16e46b21060fe6d5b099d2cb01412222f5", size = 6458655, upload-time = "2026-02-11T04:20:39.496Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c2/66091f3f34a25894ca129362e510b956ef26f8fb67a0e6417bc5744e56f1/pillow-12.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:578510d88c6229d735855e1f278aa305270438d36a05031dfaae5067cc8eb04d", size = 7159286, upload-time = "2026-02-11T04:20:41.139Z" }, - { url = "https://files.pythonhosted.org/packages/7b/5a/24bc8eb526a22f957d0cec6243146744966d40857e3d8deb68f7902ca6c1/pillow-12.1.1-cp311-cp311-win32.whl", hash = "sha256:7311c0a0dcadb89b36b7025dfd8326ecfa36964e29913074d47382706e516a7c", size = 6328663, upload-time = "2026-02-11T04:20:43.184Z" }, - { url = "https://files.pythonhosted.org/packages/31/03/bef822e4f2d8f9d7448c133d0a18185d3cce3e70472774fffefe8b0ed562/pillow-12.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:fbfa2a7c10cc2623f412753cddf391c7f971c52ca40a3f65dc5039b2939e8563", size = 7031448, upload-time = "2026-02-11T04:20:44.696Z" }, - { url = "https://files.pythonhosted.org/packages/49/70/f76296f53610bd17b2e7d31728b8b7825e3ac3b5b3688b51f52eab7c0818/pillow-12.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:b81b5e3511211631b3f672a595e3221252c90af017e399056d0faabb9538aa80", size = 2453651, upload-time = "2026-02-11T04:20:46.243Z" }, - { url = "https://files.pythonhosted.org/packages/07/d3/8df65da0d4df36b094351dce696f2989bec731d4f10e743b1c5f4da4d3bf/pillow-12.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab323b787d6e18b3d91a72fc99b1a2c28651e4358749842b8f8dfacd28ef2052", size = 5262803, upload-time = "2026-02-11T04:20:47.653Z" }, - { url = "https://files.pythonhosted.org/packages/d6/71/5026395b290ff404b836e636f51d7297e6c83beceaa87c592718747e670f/pillow-12.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:adebb5bee0f0af4909c30db0d890c773d1a92ffe83da908e2e9e720f8edf3984", size = 4657601, upload-time = "2026-02-11T04:20:49.328Z" }, - { url = "https://files.pythonhosted.org/packages/b1/2e/1001613d941c67442f745aff0f7cc66dd8df9a9c084eb497e6a543ee6f7e/pillow-12.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb66b7cc26f50977108790e2456b7921e773f23db5630261102233eb355a3b79", size = 6234995, upload-time = "2026-02-11T04:20:51.032Z" }, - { url = "https://files.pythonhosted.org/packages/07/26/246ab11455b2549b9233dbd44d358d033a2f780fa9007b61a913c5b2d24e/pillow-12.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aee2810642b2898bb187ced9b349e95d2a7272930796e022efaf12e99dccd293", size = 8045012, upload-time = "2026-02-11T04:20:52.882Z" }, - { url = "https://files.pythonhosted.org/packages/b2/8b/07587069c27be7535ac1fe33874e32de118fbd34e2a73b7f83436a88368c/pillow-12.1.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0b1cd6232e2b618adcc54d9882e4e662a089d5768cd188f7c245b4c8c44a397", size = 6349638, upload-time = "2026-02-11T04:20:54.444Z" }, - { url = "https://files.pythonhosted.org/packages/ff/79/6df7b2ee763d619cda2fb4fea498e5f79d984dae304d45a8999b80d6cf5c/pillow-12.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7aac39bcf8d4770d089588a2e1dd111cbaa42df5a94be3114222057d68336bd0", size = 7041540, upload-time = "2026-02-11T04:20:55.97Z" }, - { url = "https://files.pythonhosted.org/packages/2c/5e/2ba19e7e7236d7529f4d873bdaf317a318896bac289abebd4bb00ef247f0/pillow-12.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ab174cd7d29a62dd139c44bf74b698039328f45cb03b4596c43473a46656b2f3", size = 6462613, upload-time = "2026-02-11T04:20:57.542Z" }, - { url = "https://files.pythonhosted.org/packages/03/03/31216ec124bb5c3dacd74ce8efff4cc7f52643653bad4825f8f08c697743/pillow-12.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:339ffdcb7cbeaa08221cd401d517d4b1fe7a9ed5d400e4a8039719238620ca35", size = 7166745, upload-time = "2026-02-11T04:20:59.196Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e7/7c4552d80052337eb28653b617eafdef39adfb137c49dd7e831b8dc13bc5/pillow-12.1.1-cp312-cp312-win32.whl", hash = "sha256:5d1f9575a12bed9e9eedd9a4972834b08c97a352bd17955ccdebfeca5913fa0a", size = 6328823, upload-time = "2026-02-11T04:21:01.385Z" }, - { url = "https://files.pythonhosted.org/packages/3d/17/688626d192d7261bbbf98846fc98995726bddc2c945344b65bec3a29d731/pillow-12.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:21329ec8c96c6e979cd0dfd29406c40c1d52521a90544463057d2aaa937d66a6", size = 7033367, upload-time = "2026-02-11T04:21:03.536Z" }, - { url = "https://files.pythonhosted.org/packages/ed/fe/a0ef1f73f939b0eca03ee2c108d0043a87468664770612602c63266a43c4/pillow-12.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:af9a332e572978f0218686636610555ae3defd1633597be015ed50289a03c523", size = 2453811, upload-time = "2026-02-11T04:21:05.116Z" }, - { url = "https://files.pythonhosted.org/packages/d5/11/6db24d4bd7685583caeae54b7009584e38da3c3d4488ed4cd25b439de486/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d242e8ac078781f1de88bf823d70c1a9b3c7950a44cdf4b7c012e22ccbcd8e4e", size = 4062689, upload-time = "2026-02-11T04:21:06.804Z" }, - { url = "https://files.pythonhosted.org/packages/33/c0/ce6d3b1fe190f0021203e0d9b5b99e57843e345f15f9ef22fcd43842fd21/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:02f84dfad02693676692746df05b89cf25597560db2857363a208e393429f5e9", size = 4138535, upload-time = "2026-02-11T04:21:08.452Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c6/d5eb6a4fb32a3f9c21a8c7613ec706534ea1cf9f4b3663e99f0d83f6fca8/pillow-12.1.1-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e65498daf4b583091ccbb2556c7000abf0f3349fcd57ef7adc9a84a394ed29f6", size = 3601364, upload-time = "2026-02-11T04:21:10.194Z" }, - { url = "https://files.pythonhosted.org/packages/14/a1/16c4b823838ba4c9c52c0e6bbda903a3fe5a1bdbf1b8eb4fff7156f3e318/pillow-12.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c6db3b84c87d48d0088943bf33440e0c42370b99b1c2a7989216f7b42eede60", size = 5262561, upload-time = "2026-02-11T04:21:11.742Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ad/ad9dc98ff24f485008aa5cdedaf1a219876f6f6c42a4626c08bc4e80b120/pillow-12.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b7e5304e34942bf62e15184219a7b5ad4ff7f3bb5cca4d984f37df1a0e1aee2", size = 4657460, upload-time = "2026-02-11T04:21:13.786Z" }, - { url = "https://files.pythonhosted.org/packages/9e/1b/f1a4ea9a895b5732152789326202a82464d5254759fbacae4deea3069334/pillow-12.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5bddd742a44b7e6b1e773ab5db102bd7a94c32555ba656e76d319d19c3850", size = 6232698, upload-time = "2026-02-11T04:21:15.949Z" }, - { url = "https://files.pythonhosted.org/packages/95/f4/86f51b8745070daf21fd2e5b1fe0eb35d4db9ca26e6d58366562fb56a743/pillow-12.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc44ef1f3de4f45b50ccf9136999d71abb99dca7706bc75d222ed350b9fd2289", size = 8041706, upload-time = "2026-02-11T04:21:17.723Z" }, - { url = "https://files.pythonhosted.org/packages/29/9b/d6ecd956bb1266dd1045e995cce9b8d77759e740953a1c9aad9502a0461e/pillow-12.1.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a8eb7ed8d4198bccbd07058416eeec51686b498e784eda166395a23eb99138e", size = 6346621, upload-time = "2026-02-11T04:21:19.547Z" }, - { url = "https://files.pythonhosted.org/packages/71/24/538bff45bde96535d7d998c6fed1a751c75ac7c53c37c90dc2601b243893/pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47b94983da0c642de92ced1702c5b6c292a84bd3a8e1d1702ff923f183594717", size = 7038069, upload-time = "2026-02-11T04:21:21.378Z" }, - { url = "https://files.pythonhosted.org/packages/94/0e/58cb1a6bc48f746bc4cb3adb8cabff73e2742c92b3bf7a220b7cf69b9177/pillow-12.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:518a48c2aab7ce596d3bf79d0e275661b846e86e4d0e7dec34712c30fe07f02a", size = 6460040, upload-time = "2026-02-11T04:21:23.148Z" }, - { url = "https://files.pythonhosted.org/packages/6c/57/9045cb3ff11eeb6c1adce3b2d60d7d299d7b273a2e6c8381a524abfdc474/pillow-12.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a550ae29b95c6dc13cf69e2c9dc5747f814c54eeb2e32d683e5e93af56caa029", size = 7164523, upload-time = "2026-02-11T04:21:25.01Z" }, - { url = "https://files.pythonhosted.org/packages/73/f2/9be9cb99f2175f0d4dbadd6616ce1bf068ee54a28277ea1bf1fbf729c250/pillow-12.1.1-cp313-cp313-win32.whl", hash = "sha256:a003d7422449f6d1e3a34e3dd4110c22148336918ddbfc6a32581cd54b2e0b2b", size = 6332552, upload-time = "2026-02-11T04:21:27.238Z" }, - { url = "https://files.pythonhosted.org/packages/3f/eb/b0834ad8b583d7d9d42b80becff092082a1c3c156bb582590fcc973f1c7c/pillow-12.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:344cf1e3dab3be4b1fa08e449323d98a2a3f819ad20f4b22e77a0ede31f0faa1", size = 7040108, upload-time = "2026-02-11T04:21:29.462Z" }, - { url = "https://files.pythonhosted.org/packages/d5/7d/fc09634e2aabdd0feabaff4a32f4a7d97789223e7c2042fd805ea4b4d2c2/pillow-12.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c0dd1636633e7e6a0afe7bf6a51a14992b7f8e60de5789018ebbdfae55b040a", size = 2453712, upload-time = "2026-02-11T04:21:31.072Z" }, - { url = "https://files.pythonhosted.org/packages/19/2a/b9d62794fc8a0dd14c1943df68347badbd5511103e0d04c035ffe5cf2255/pillow-12.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0330d233c1a0ead844fc097a7d16c0abff4c12e856c0b325f231820fee1f39da", size = 5264880, upload-time = "2026-02-11T04:21:32.865Z" }, - { url = "https://files.pythonhosted.org/packages/26/9d/e03d857d1347fa5ed9247e123fcd2a97b6220e15e9cb73ca0a8d91702c6e/pillow-12.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5dae5f21afb91322f2ff791895ddd8889e5e947ff59f71b46041c8ce6db790bc", size = 4660616, upload-time = "2026-02-11T04:21:34.97Z" }, - { url = "https://files.pythonhosted.org/packages/f7/ec/8a6d22afd02570d30954e043f09c32772bfe143ba9285e2fdb11284952cd/pillow-12.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2e0c664be47252947d870ac0d327fea7e63985a08794758aa8af5b6cb6ec0c9c", size = 6269008, upload-time = "2026-02-11T04:21:36.623Z" }, - { url = "https://files.pythonhosted.org/packages/3d/1d/6d875422c9f28a4a361f495a5f68d9de4a66941dc2c619103ca335fa6446/pillow-12.1.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:691ab2ac363b8217f7d31b3497108fb1f50faab2f75dfb03284ec2f217e87bf8", size = 8073226, upload-time = "2026-02-11T04:21:38.585Z" }, - { url = "https://files.pythonhosted.org/packages/a1/cd/134b0b6ee5eda6dc09e25e24b40fdafe11a520bc725c1d0bbaa5e00bf95b/pillow-12.1.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9e8064fb1cc019296958595f6db671fba95209e3ceb0c4734c9baf97de04b20", size = 6380136, upload-time = "2026-02-11T04:21:40.562Z" }, - { url = "https://files.pythonhosted.org/packages/7a/a9/7628f013f18f001c1b98d8fffe3452f306a70dc6aba7d931019e0492f45e/pillow-12.1.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:472a8d7ded663e6162dafdf20015c486a7009483ca671cece7a9279b512fcb13", size = 7067129, upload-time = "2026-02-11T04:21:42.521Z" }, - { url = "https://files.pythonhosted.org/packages/1e/f8/66ab30a2193b277785601e82ee2d49f68ea575d9637e5e234faaa98efa4c/pillow-12.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:89b54027a766529136a06cfebeecb3a04900397a3590fd252160b888479517bf", size = 6491807, upload-time = "2026-02-11T04:21:44.22Z" }, - { url = "https://files.pythonhosted.org/packages/da/0b/a877a6627dc8318fdb84e357c5e1a758c0941ab1ddffdafd231983788579/pillow-12.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:86172b0831b82ce4f7877f280055892b31179e1576aa00d0df3bb1bbf8c3e524", size = 7190954, upload-time = "2026-02-11T04:21:46.114Z" }, - { url = "https://files.pythonhosted.org/packages/83/43/6f732ff85743cf746b1361b91665d9f5155e1483817f693f8d57ea93147f/pillow-12.1.1-cp313-cp313t-win32.whl", hash = "sha256:44ce27545b6efcf0fdbdceb31c9a5bdea9333e664cda58a7e674bb74608b3986", size = 6336441, upload-time = "2026-02-11T04:21:48.22Z" }, - { url = "https://files.pythonhosted.org/packages/3b/44/e865ef3986611bb75bfabdf94a590016ea327833f434558801122979cd0e/pillow-12.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a285e3eb7a5a45a2ff504e31f4a8d1b12ef62e84e5411c6804a42197c1cf586c", size = 7045383, upload-time = "2026-02-11T04:21:50.015Z" }, - { url = "https://files.pythonhosted.org/packages/a8/c6/f4fb24268d0c6908b9f04143697ea18b0379490cb74ba9e8d41b898bd005/pillow-12.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cc7d296b5ea4d29e6570dabeaed58d31c3fea35a633a69679fb03d7664f43fb3", size = 2456104, upload-time = "2026-02-11T04:21:51.633Z" }, - { url = "https://files.pythonhosted.org/packages/03/d0/bebb3ffbf31c5a8e97241476c4cf8b9828954693ce6744b4a2326af3e16b/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:417423db963cb4be8bac3fc1204fe61610f6abeed1580a7a2cbb2fbda20f12af", size = 4062652, upload-time = "2026-02-11T04:21:53.19Z" }, - { url = "https://files.pythonhosted.org/packages/2d/c0/0e16fb0addda4851445c28f8350d8c512f09de27bbb0d6d0bbf8b6709605/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:b957b71c6b2387610f556a7eb0828afbe40b4a98036fc0d2acfa5a44a0c2036f", size = 4138823, upload-time = "2026-02-11T04:22:03.088Z" }, - { url = "https://files.pythonhosted.org/packages/6b/fb/6170ec655d6f6bb6630a013dd7cf7bc218423d7b5fa9071bf63dc32175ae/pillow-12.1.1-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:097690ba1f2efdeb165a20469d59d8bb03c55fb6621eb2041a060ae8ea3e9642", size = 3601143, upload-time = "2026-02-11T04:22:04.909Z" }, - { url = "https://files.pythonhosted.org/packages/59/04/dc5c3f297510ba9a6837cbb318b87dd2b8f73eb41a43cc63767f65cb599c/pillow-12.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2815a87ab27848db0321fb78c7f0b2c8649dee134b7f2b80c6a45c6831d75ccd", size = 5266254, upload-time = "2026-02-11T04:22:07.656Z" }, - { url = "https://files.pythonhosted.org/packages/05/30/5db1236b0d6313f03ebf97f5e17cda9ca060f524b2fcc875149a8360b21c/pillow-12.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f7ed2c6543bad5a7d5530eb9e78c53132f93dfa44a28492db88b41cdab885202", size = 4657499, upload-time = "2026-02-11T04:22:09.613Z" }, - { url = "https://files.pythonhosted.org/packages/6f/18/008d2ca0eb612e81968e8be0bbae5051efba24d52debf930126d7eaacbba/pillow-12.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:652a2c9ccfb556235b2b501a3a7cf3742148cd22e04b5625c5fe057ea3e3191f", size = 6232137, upload-time = "2026-02-11T04:22:11.434Z" }, - { url = "https://files.pythonhosted.org/packages/70/f1/f14d5b8eeb4b2cd62b9f9f847eb6605f103df89ef619ac68f92f748614ea/pillow-12.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d6e4571eedf43af33d0fc233a382a76e849badbccdf1ac438841308652a08e1f", size = 8042721, upload-time = "2026-02-11T04:22:13.321Z" }, - { url = "https://files.pythonhosted.org/packages/5a/d6/17824509146e4babbdabf04d8171491fa9d776f7061ff6e727522df9bd03/pillow-12.1.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b574c51cf7d5d62e9be37ba446224b59a2da26dc4c1bb2ecbe936a4fb1a7cb7f", size = 6347798, upload-time = "2026-02-11T04:22:15.449Z" }, - { url = "https://files.pythonhosted.org/packages/d1/ee/c85a38a9ab92037a75615aba572c85ea51e605265036e00c5b67dfafbfe2/pillow-12.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a37691702ed687799de29a518d63d4682d9016932db66d4e90c345831b02fb4e", size = 7039315, upload-time = "2026-02-11T04:22:17.24Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f3/bc8ccc6e08a148290d7523bde4d9a0d6c981db34631390dc6e6ec34cacf6/pillow-12.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f95c00d5d6700b2b890479664a06e754974848afaae5e21beb4d83c106923fd0", size = 6462360, upload-time = "2026-02-11T04:22:19.111Z" }, - { url = "https://files.pythonhosted.org/packages/f6/ab/69a42656adb1d0665ab051eec58a41f169ad295cf81ad45406963105408f/pillow-12.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:559b38da23606e68681337ad74622c4dbba02254fc9cb4488a305dd5975c7eeb", size = 7165438, upload-time = "2026-02-11T04:22:21.041Z" }, - { url = "https://files.pythonhosted.org/packages/02/46/81f7aa8941873f0f01d4b55cc543b0a3d03ec2ee30d617a0448bf6bd6dec/pillow-12.1.1-cp314-cp314-win32.whl", hash = "sha256:03edcc34d688572014ff223c125a3f77fb08091e4607e7745002fc214070b35f", size = 6431503, upload-time = "2026-02-11T04:22:22.833Z" }, - { url = "https://files.pythonhosted.org/packages/40/72/4c245f7d1044b67affc7f134a09ea619d4895333d35322b775b928180044/pillow-12.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:50480dcd74fa63b8e78235957d302d98d98d82ccbfac4c7e12108ba9ecbdba15", size = 7176748, upload-time = "2026-02-11T04:22:24.64Z" }, - { url = "https://files.pythonhosted.org/packages/e4/ad/8a87bdbe038c5c698736e3348af5c2194ffb872ea52f11894c95f9305435/pillow-12.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:5cb1785d97b0c3d1d1a16bc1d710c4a0049daefc4935f3a8f31f827f4d3d2e7f", size = 2544314, upload-time = "2026-02-11T04:22:26.685Z" }, - { url = "https://files.pythonhosted.org/packages/6c/9d/efd18493f9de13b87ede7c47e69184b9e859e4427225ea962e32e56a49bc/pillow-12.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1f90cff8aa76835cba5769f0b3121a22bd4eb9e6884cfe338216e557a9a548b8", size = 5268612, upload-time = "2026-02-11T04:22:29.884Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f1/4f42eb2b388eb2ffc660dcb7f7b556c1015c53ebd5f7f754965ef997585b/pillow-12.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f1be78ce9466a7ee64bfda57bdba0f7cc499d9794d518b854816c41bf0aa4e9", size = 4660567, upload-time = "2026-02-11T04:22:31.799Z" }, - { url = "https://files.pythonhosted.org/packages/01/54/df6ef130fa43e4b82e32624a7b821a2be1c5653a5fdad8469687a7db4e00/pillow-12.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:42fc1f4677106188ad9a55562bbade416f8b55456f522430fadab3cef7cd4e60", size = 6269951, upload-time = "2026-02-11T04:22:33.921Z" }, - { url = "https://files.pythonhosted.org/packages/a9/48/618752d06cc44bb4aae8ce0cd4e6426871929ed7b46215638088270d9b34/pillow-12.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98edb152429ab62a1818039744d8fbb3ccab98a7c29fc3d5fcef158f3f1f68b7", size = 8074769, upload-time = "2026-02-11T04:22:35.877Z" }, - { url = "https://files.pythonhosted.org/packages/c3/bd/f1d71eb39a72fa088d938655afba3e00b38018d052752f435838961127d8/pillow-12.1.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d470ab1178551dd17fdba0fef463359c41aaa613cdcd7ff8373f54be629f9f8f", size = 6381358, upload-time = "2026-02-11T04:22:37.698Z" }, - { url = "https://files.pythonhosted.org/packages/64/ef/c784e20b96674ed36a5af839305f55616f8b4f8aa8eeccf8531a6e312243/pillow-12.1.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6408a7b064595afcab0a49393a413732a35788f2a5092fdc6266952ed67de586", size = 7068558, upload-time = "2026-02-11T04:22:39.597Z" }, - { url = "https://files.pythonhosted.org/packages/73/cb/8059688b74422ae61278202c4e1ad992e8a2e7375227be0a21c6b87ca8d5/pillow-12.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5d8c41325b382c07799a3682c1c258469ea2ff97103c53717b7893862d0c98ce", size = 6493028, upload-time = "2026-02-11T04:22:42.73Z" }, - { url = "https://files.pythonhosted.org/packages/c6/da/e3c008ed7d2dd1f905b15949325934510b9d1931e5df999bb15972756818/pillow-12.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c7697918b5be27424e9ce568193efd13d925c4481dd364e43f5dff72d33e10f8", size = 7191940, upload-time = "2026-02-11T04:22:44.543Z" }, - { url = "https://files.pythonhosted.org/packages/01/4a/9202e8d11714c1fc5951f2e1ef362f2d7fbc595e1f6717971d5dd750e969/pillow-12.1.1-cp314-cp314t-win32.whl", hash = "sha256:d2912fd8114fc5545aa3a4b5576512f64c55a03f3ebcca4c10194d593d43ea36", size = 6438736, upload-time = "2026-02-11T04:22:46.347Z" }, - { url = "https://files.pythonhosted.org/packages/f3/ca/cbce2327eb9885476b3957b2e82eb12c866a8b16ad77392864ad601022ce/pillow-12.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:4ceb838d4bd9dab43e06c363cab2eebf63846d6a4aeaea283bbdfd8f1a8ed58b", size = 7182894, upload-time = "2026-02-11T04:22:48.114Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d2/de599c95ba0a973b94410477f8bf0b6f0b5e67360eb89bcb1ad365258beb/pillow-12.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:7b03048319bfc6170e93bd60728a1af51d3dd7704935feb228c4d4faab35d334", size = 2546446, upload-time = "2026-02-11T04:22:50.342Z" }, - { url = "https://files.pythonhosted.org/packages/56/11/5d43209aa4cb58e0cc80127956ff1796a68b928e6324bbf06ef4db34367b/pillow-12.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:600fd103672b925fe62ed08e0d874ea34d692474df6f4bf7ebe148b30f89f39f", size = 5228606, upload-time = "2026-02-11T04:22:52.106Z" }, - { url = "https://files.pythonhosted.org/packages/5f/d5/3b005b4e4fda6698b371fa6c21b097d4707585d7db99e98d9b0b87ac612a/pillow-12.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:665e1b916b043cef294bc54d47bf02d87e13f769bc4bc5fa225a24b3a6c5aca9", size = 4622321, upload-time = "2026-02-11T04:22:53.827Z" }, - { url = "https://files.pythonhosted.org/packages/df/36/ed3ea2d594356fd8037e5a01f6156c74bc8d92dbb0fa60746cc96cabb6e8/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:495c302af3aad1ca67420ddd5c7bd480c8867ad173528767d906428057a11f0e", size = 5247579, upload-time = "2026-02-11T04:22:56.094Z" }, - { url = "https://files.pythonhosted.org/packages/54/9a/9cc3e029683cf6d20ae5085da0dafc63148e3252c2f13328e553aaa13cfb/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fd420ef0c52c88b5a035a0886f367748c72147b2b8f384c9d12656678dfdfa9", size = 6989094, upload-time = "2026-02-11T04:22:58.288Z" }, - { url = "https://files.pythonhosted.org/packages/00/98/fc53ab36da80b88df0967896b6c4b4cd948a0dc5aa40a754266aa3ae48b3/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f975aa7ef9684ce7e2c18a3aa8f8e2106ce1e46b94ab713d156b2898811651d3", size = 5313850, upload-time = "2026-02-11T04:23:00.554Z" }, - { url = "https://files.pythonhosted.org/packages/30/02/00fa585abfd9fe9d73e5f6e554dc36cc2b842898cbfc46d70353dae227f8/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8089c852a56c2966cf18835db62d9b34fef7ba74c726ad943928d494fa7f4735", size = 5963343, upload-time = "2026-02-11T04:23:02.934Z" }, - { url = "https://files.pythonhosted.org/packages/f2/26/c56ce33ca856e358d27fda9676c055395abddb82c35ac0f593877ed4562e/pillow-12.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:cb9bb857b2d057c6dfc72ac5f3b44836924ba15721882ef103cecb40d002d80e", size = 7029880, upload-time = "2026-02-11T04:23:04.783Z" }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, -] - -[[package]] -name = "pluggy" -version = "1.6.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, -] - -[[package]] -name = "pycparser" -version = "2.23" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -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 = "pycparser" -version = "3.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, -] - -[[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" }, - { url = "https://files.pythonhosted.org/packages/d9/12/e33935a0709c07de084d7d58d330ec3f4daf7910a18e77937affdb728452/pycryptodome-3.23.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddb95b49df036ddd264a0ad246d1be5b672000f12d6961ea2c267083a5e19379", size = 1623886, upload-time = "2025-05-17T17:21:20.614Z" }, - { url = "https://files.pythonhosted.org/packages/22/0b/aa8f9419f25870889bebf0b26b223c6986652bdf071f000623df11212c90/pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e95564beb8782abfd9e431c974e14563a794a4944c29d6d3b7b5ea042110b4", size = 1672151, upload-time = "2025-05-17T17:21:22.666Z" }, - { url = "https://files.pythonhosted.org/packages/d4/5e/63f5cbde2342b7f70a39e591dbe75d9809d6338ce0b07c10406f1a140cdc/pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14e15c081e912c4b0d75632acd8382dfce45b258667aa3c67caf7a4d4c13f630", size = 1664461, upload-time = "2025-05-17T17:21:25.225Z" }, - { url = "https://files.pythonhosted.org/packages/d6/92/608fbdad566ebe499297a86aae5f2a5263818ceeecd16733006f1600403c/pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7fc76bf273353dc7e5207d172b83f569540fc9a28d63171061c42e361d22353", size = 1702440, upload-time = "2025-05-17T17:21:27.991Z" }, - { url = "https://files.pythonhosted.org/packages/d1/92/2eadd1341abd2989cce2e2740b4423608ee2014acb8110438244ee97d7ff/pycryptodome-3.23.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:45c69ad715ca1a94f778215a11e66b7ff989d792a4d63b68dc586a1da1392ff5", size = 1803005, upload-time = "2025-05-17T17:21:31.37Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c4/6925ad41576d3e84f03aaf9a0411667af861f9fa2c87553c7dd5bde01518/pycryptodome-3.23.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:865d83c906b0fc6a59b510deceee656b6bc1c4fa0d82176e2b77e97a420a996a", size = 1623768, upload-time = "2025-05-17T17:21:33.418Z" }, - { url = "https://files.pythonhosted.org/packages/a8/14/d6c6a3098ddf2624068f041c5639be5092ad4ae1a411842369fd56765994/pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d4d56153efc4d81defe8b65fd0821ef8b2d5ddf8ed19df31ba2f00872b8002", size = 1672070, upload-time = "2025-05-17T17:21:35.565Z" }, - { url = "https://files.pythonhosted.org/packages/20/89/5d29c8f178fea7c92fd20d22f9ddd532a5e3ac71c574d555d2362aaa832a/pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3f2d0aaf8080bda0587d58fc9fe4766e012441e2eed4269a77de6aea981c8be", size = 1664359, upload-time = "2025-05-17T17:21:37.551Z" }, - { url = "https://files.pythonhosted.org/packages/38/bc/a287d41b4421ad50eafb02313137d0276d6aeffab90a91e2b08f64140852/pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64093fc334c1eccfd3933c134c4457c34eaca235eeae49d69449dc4728079339", size = 1702359, upload-time = "2025-05-17T17:21:39.827Z" }, - { url = "https://files.pythonhosted.org/packages/2b/62/2392b7879f4d2c1bfa20815720b89d464687877851716936b9609959c201/pycryptodome-3.23.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ce64e84a962b63a47a592690bdc16a7eaf709d2c2697ababf24a0def566899a6", size = 1802461, upload-time = "2025-05-17T17:21:41.722Z" }, -] - -[[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 = "pypdf" -version = "5.9.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/89/3a/584b97a228950ed85aec97c811c68473d9b8d149e6a8c155668287cf1a28/pypdf-5.9.0.tar.gz", hash = "sha256:30f67a614d558e495e1fbb157ba58c1de91ffc1718f5e0dfeb82a029233890a1", size = 5035118, upload-time = "2025-07-27T14:04:52.364Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/d9/6cff57c80a6963e7dd183bf09e9f21604a77716644b1e580e97b259f7612/pypdf-5.9.0-py3-none-any.whl", hash = "sha256:be10a4c54202f46d9daceaa8788be07aa8cd5ea8c25c529c50dd509206382c35", size = 313193, upload-time = "2025-07-27T14:04:50.53Z" }, -] - -[[package]] -name = "pypdf" -version = "6.9.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/c8/1f40699576c70a6c90d4bf47705a12a0bed1b02964a6bee039016279e126/pypdf-6.9.0.tar.gz", hash = "sha256:a59257869fc575ba2ccc10100a36be0a47cd1bc1fb00f2950abf1d219fa94c01", size = 5311107, upload-time = "2026-03-15T15:28:26.402Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/64/ac6159cfbeabab3cf54873bbf7314b29183c7ff547c9776596d63170d7c0/pypdf-6.9.0-py3-none-any.whl", hash = "sha256:85805ad7457ca878c4cfd1bc026c4b3dcae359b4a80f889fa7e8c5a1c1a83e51", size = 333408, upload-time = "2026-03-15T15:28:24.667Z" }, -] - -[[package]] -name = "pytest" -version = "8.3.5" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, - { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "packaging", marker = "python_full_version < '3.9'" }, - { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "tomli", marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, -] - -[[package]] -name = "pytest" -version = "8.4.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "colorama", marker = "python_full_version == '3.9.*' and sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version == '3.9.*'" }, - { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "packaging", marker = "python_full_version == '3.9.*'" }, - { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pygments", marker = "python_full_version == '3.9.*'" }, - { name = "tomli", marker = "python_full_version == '3.9.*'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, -] - -[[package]] -name = "pytest" -version = "9.0.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, - { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "packaging", marker = "python_full_version >= '3.10'" }, - { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pygments", marker = "python_full_version >= '3.10'" }, - { name = "tomli", marker = "python_full_version == '3.10.*'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, -] - -[[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 = "reportlab" -version = "4.4.3" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "charset-normalizer", marker = "python_full_version < '3.9'" }, - { name = "pillow", version = "10.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/83/3d44b873fa71ddc7d323c577fe4cfb61e05b34d14e64b6a232f9cfbff89d/reportlab-4.4.3.tar.gz", hash = "sha256:073b0975dab69536acd3251858e6b0524ed3e087e71f1d0d1895acb50acf9c7b", size = 3887532, upload-time = "2025-07-23T11:18:23.799Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/c8/aaf4e08679e7b1dc896ad30de0d0527f0fd55582c2e6deee4f2cc899bf9f/reportlab-4.4.3-py3-none-any.whl", hash = "sha256:df905dc5ec5ddaae91fc9cb3371af863311271d555236410954961c5ee6ee1b5", size = 1953896, upload-time = "2025-07-23T11:18:20.572Z" }, -] - -[[package]] -name = "reportlab" -version = "4.4.9" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "charset-normalizer", marker = "python_full_version >= '3.9'" }, - { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pillow", version = "12.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1a/39/42cf24aee570a80e1903221ae3a92a2e34c324794a392eb036cbb6dc3839/reportlab-4.4.9.tar.gz", hash = "sha256:7cf487764294ee791a4781f5a157bebce262a666ae4bbb87786760a9676c9378", size = 3911246, upload-time = "2026-01-15T10:07:56.08Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/77/546e50edfaba6a0e58e8ec5fdc4446510227cec9e8f40172b60941d5a633/reportlab-4.4.9-py3-none-any.whl", hash = "sha256:68e2d103ae8041a37714e8896ec9b79a1c1e911d68c3bd2ea17546568cf17bfd", size = 1954401, upload-time = "2026-01-15T09:27:59.133Z" }, -] - -[[package]] -name = "requests" -version = "2.32.4" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "certifi", marker = "python_full_version < '3.9'" }, - { name = "charset-normalizer", marker = "python_full_version < '3.9'" }, - { name = "idna", marker = "python_full_version < '3.9'" }, - { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, -] - -[[package]] -name = "requests" -version = "2.32.5" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "certifi", marker = "python_full_version >= '3.9'" }, - { name = "charset-normalizer", marker = "python_full_version >= '3.9'" }, - { name = "idna", marker = "python_full_version >= '3.9'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, -] -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 = "s3transfer" -version = "0.1.13" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version == '3.9.*'", -] -dependencies = [ - { name = "botocore", version = "1.10.84", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9a/66/c6a5ae4dbbaf253bd662921b805e4972451a6d214d0dc9fb3300cb642320/s3transfer-0.1.13.tar.gz", hash = "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", size = 103335, upload-time = "2018-02-15T00:25:02.494Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/14/2a0004d487464d120c9fb85313a75cd3d71a7506955be458eebfe19a6b1d/s3transfer-0.1.13-py2.py3-none-any.whl", hash = "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f", size = 59642, upload-time = "2018-02-15T00:25:05.113Z" }, -] - -[[package]] -name = "s3transfer" -version = "0.11.5" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -dependencies = [ - { name = "botocore", version = "1.37.38", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/2b/5c9562795c2eb2b5f63536961754760c25bf0f34af93d36aa28dea2fb303/s3transfer-0.11.5.tar.gz", hash = "sha256:8c8aad92784779ab8688a61aefff3e28e9ebdce43142808eaa3f0b0f402f68b7", size = 149107, upload-time = "2025-04-17T19:23:19.051Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/45/39/13402e323666d17850eca87e4cd6ecfcf9fd7809cac9efdcce10272fc29d/s3transfer-0.11.5-py3-none-any.whl", hash = "sha256:757af0f2ac150d3c75bc4177a32355c3862a98d20447b69a0161812992fe0bd4", size = 84782, upload-time = "2025-04-17T19:23:17.516Z" }, -] - -[[package]] -name = "s3transfer" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", -] -dependencies = [ - { name = "botocore", version = "1.42.44", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" }, -] - -[[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.7" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, -] - -[[package]] -name = "soupsieve" -version = "2.8.3" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, -] - -[[package]] -name = "tomli" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, - { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, - { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, - { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, - { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, - { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, - { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, - { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, - { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, - { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, - { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, - { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, - { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, - { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, - { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, - { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, - { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, - { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, - { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, - { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, - { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, - { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, - { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, - { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, - { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, - { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, - { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, - { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, - { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, - { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, - { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, - { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, - { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, - { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, - { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, - { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, - { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, - { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, - { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, - { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.13.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.15.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -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 = "urllib3" -version = "1.26.20" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version > '3.8' and python_full_version < '3.9'", - "python_full_version <= '3.8'", -] -sdist = { url = "https://files.pythonhosted.org/packages/e4/e8/6ff5e6bc22095cfc59b6ea711b687e2b7ed4bdb373f7eeec370a97d7392f/urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32", size = 307380, upload-time = "2024-08-29T15:43:11.37Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9c83a95896ed596f68cf798005fe107cc655b5c5c14704/urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e", size = 144225, upload-time = "2024-08-29T15:43:08.921Z" }, -] - -[[package]] -name = "urllib3" -version = "2.6.3" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version >= '3.10' and python_full_version < '3.14'", - "python_full_version == '3.9.*'", -] -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, -] From e75e99c7b05640c3850808f4cdfc7f8ee4049406 Mon Sep 17 00:00:00 2001 From: HSn Date: Tue, 17 Mar 2026 11:32:55 +0800 Subject: [PATCH 46/46] chore: drop Python 3.8 support, require >=3.9 Remove vulnerable fallback constraints for urllib3 1.x and pypdf 5.x that had no upstream security patches on Python 3.8. --- pyproject.toml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 167a81c..40c1a8f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ version = "1.0.4" authors = [{ name = "noedgeai", email = "support@noedgeai.com" }] description = "Python SDK for Doc2X API and some native texts processing (to improve texts recall in RAG)." readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", @@ -13,13 +13,11 @@ classifiers = [ dependencies = [ "aiofiles>=24.1.0", "cryptography>=46.0.5", - "h2>=4.3.0; python_version>='3.9'", + "h2>=4.3.0", "httpx[http2]>=0.23.1, <1", - "pypdf>=6.8.0; python_version>='3.9'", - "pypdf>=5.0.0,<6.0.0; python_version<'3.9'", + "pypdf>=6.8.0", "pytest>=8.3.5", - "urllib3>=2.6.3; python_version>='3.9'", - "urllib3>=1.26.20,<2.0.0; python_version<'3.9'", + "urllib3>=2.6.3", ] [project.optional-dependencies]