From fb8e81ee97dd3528f1f4903fe1d77e051253a108 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Fri, 28 Nov 2025 13:49:12 -0500 Subject: [PATCH 01/27] simplify pixelblaze steps, automatic pattern render --- .gitignore | 5 ++++- .../backends/pixelblaze/pixelblaze_backend.py | 17 +++++------------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 0f7f8e7..2ba71cc 100644 --- a/.gitignore +++ b/.gitignore @@ -160,4 +160,7 @@ cython_debug/ *.csv *.ply -.idea/ \ No newline at end of file +.idea/ + +# uv is referenced, but not primary package management system +uv.lock \ No newline at end of file diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index 7c9aa74..b2a194e 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -10,6 +10,7 @@ from ipaddress import ip_address from functools import partial +from pathlib import Path import argparse logger = get_logger() @@ -35,18 +36,10 @@ def __init__(self, pixelblaze_ip: str): ) self.pb = pixelblaze.Pixelblaze(pixelblaze_ip) - try: - self.pb.setActivePatternByName( - "marimapper" - ) # Need to install marimapper.js to your pixelblaze - except TypeError as e: - if "'NoneType' has no len()" in str(e): - raise RuntimeError( - "Pixelblaze may have failed to find the effect 'marimapper'. " - "Have you uploaded marimapper.epe to your controller?" - ) - else: - raise e + with open(Path(__file__).parent / "marimapper.js", 'r', encoding='utf-8-sig') as f: + source_code = f.read() + bytecode = self.pb.compilePattern(source_code) + self.pb.sendPatternToRenderer(bytecode) def get_led_count(self): pixel_count = self.pb.getPixelCount() From aae2ffbc7eb547ed19072ff41aab8c20fd6773e9 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Fri, 28 Nov 2025 14:05:54 -0500 Subject: [PATCH 02/27] logs are pretty tough to follow, add simple script to assess what's been done --- marimapper/scripts/results.py | 73 +++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 marimapper/scripts/results.py diff --git a/marimapper/scripts/results.py b/marimapper/scripts/results.py new file mode 100644 index 0000000..fd16400 --- /dev/null +++ b/marimapper/scripts/results.py @@ -0,0 +1,73 @@ +import glob +import csv +import sys +import os + +def log(msg): + sys.stderr.write(msg + "\n") + +def load_3d_map(filename): + data = {} + with open(filename, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + data[int(row['index'])] = row + return data + +def scan_2d_indices(): + files = glob.glob("./led_map_2d_*.csv") + detection_log = {} + + for fname in files: + with open(fname, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + if 'index' in row: + idx = int(row['index']) + if idx not in detection_log: + detection_log[idx] = [] + detection_log[idx].append(os.path.basename(fname)) + + return detection_log, files + +def main(): + map_file = "led_map_3d.csv" + + map_data = load_3d_map(map_file) + data_2d_log, files_2d = scan_2d_indices() + + all_2d_indices = set(data_2d_log.keys()) + existing_3d_indices = set(map_data.keys()) + + # Identify Missing + missing_indices = sorted(list(all_2d_indices - existing_3d_indices)) + + log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") + log(f"3D Indices Mapped: {len(existing_3d_indices)}") + + if not missing_indices: + log("Status: COMPLETE") + else: + log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") + log("-" * 40) + log(f"{'Index':<8} | {'# Views':<8}") + log("-" * 40) + for idx in missing_indices: + count = len(data_2d_log[idx]) + log(f"{idx:<8} | {count:<8}") + log("-" * 40) + + # 4. Output Final 3D List to Stdout + if map_data: + # Get fieldnames from the first entry + first_key = next(iter(map_data)) + fieldnames = list(map_data[first_key].keys()) + + writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) + writer.writeheader() + + for idx in sorted(map_data.keys()): + writer.writerow(map_data[idx]) + +if __name__ == "__main__": + main() \ No newline at end of file From ef5a5dd506ddb996b6678ebd931152f8f8c08b4b Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 29 Nov 2025 09:37:40 -0500 Subject: [PATCH 03/27] vibe code simpler DLT + SVD solver, erring on completeness - COLMAP + RANSAC are amazeballs, but they require enough complacent input data. - This is a lighter weight similar solver using Direct Linear Transform and triangulation by Single Value Decomposition that will fill in any missing LEDs that have at least 1 2d scan with at least 6 common points with existing 3d - For LEDs (as opposed to complicated 3d images), this should work pretty well in practice (says: Robots) --- .../scripts/basic_photogrametry_solver.py | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 marimapper/scripts/basic_photogrametry_solver.py diff --git a/marimapper/scripts/basic_photogrametry_solver.py b/marimapper/scripts/basic_photogrametry_solver.py new file mode 100644 index 0000000..bb2f563 --- /dev/null +++ b/marimapper/scripts/basic_photogrametry_solver.py @@ -0,0 +1,228 @@ +import glob +import csv +import sys +import numpy as np +import os + +# --- MATH HELPERS (The "Not Naive" Part) --- + +def compute_projection_matrix(obj_points, img_points): + """ + Computes the 3x4 Camera Projection Matrix (P) using Direct Linear Transform (DLT). + Maps 3D world coords -> 2D image coords. + Requires at least 6 common points. + """ + if len(obj_points) < 6: + return None + + # Construct the DLT matrix A + A = [] + for i in range(len(obj_points)): + X, Y, Z = obj_points[i] + u, v = img_points[i] + # Two equations per point + A.append([X, Y, Z, 1, 0, 0, 0, 0, -u*X, -u*Y, -u*Z, -u]) + A.append([0, 0, 0, 0, X, Y, Z, 1, -v*X, -v*Y, -v*Z, -v]) + + A = np.array(A) + # Solve A*p = 0 using SVD + U, S, Vh = np.linalg.svd(A) + L = Vh[-1] # The last row of Vh is the solution + + # Reshape into 3x4 projection matrix + P = L.reshape(3, 4) + return P + +def triangulate_point(cameras, detections): + """ + Triangulates a single 3D point given n cameras and n 2D detections. + cameras: list of 3x4 Projection Matrices + detections: list of (u, v) tuples + """ + if len(cameras) < 2: + return None # Need at least 2 views to intersect rays + + # Construct system A*X = 0 + A = [] + for P, (u, v) in zip(cameras, detections): + # P[0], P[1], P[2] are the rows of P + # u * P_2 * X = P_0 * X => (u*P_2 - P_0) * X = 0 + A.append(u * P[2] - P[0]) + # v * P_2 * X = P_1 * X => (v*P_2 - P_1) * X = 0 + A.append(v * P[2] - P[1]) + + A = np.array(A) + + # Solve using SVD + U, S, Vh = np.linalg.svd(A) + X_homogeneous = Vh[-1] + + # Convert from Homogeneous (X,Y,Z,W) to Cartesian (X/W, Y/W, Z/W) + X_cartesian = X_homogeneous[:3] / X_homogeneous[3] + return X_cartesian + +# --- STANDARD LOADERS --- + +def load_3d_map(filename): + data = {} + if not os.path.exists(filename): + sys.stderr.write(f"Error: {filename} not found.\n") + sys.exit(1) + with open(filename, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + idx = int(row['index']) + data[idx] = { + 'pos': np.array([float(row['x']), float(row['y']), float(row['z'])]), + 'norm': np.array([float(row['xn']), float(row['yn']), float(row['zn'])]), + 'error': float(row['error']) + } + return data + +def load_all_2d_files(): + files = glob.glob("./led_map_2d_*.csv") + views = [] # List of dicts: [{'filename': str, 'points': {index: (u,v)}}] + + for fname in files: + view_data = {} + with open(fname, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + idx = int(row['index']) + # Assuming detections are floats + view_data[idx] = (float(row['u']), float(row['v'])) + views.append({'filename': fname, 'points': view_data}) + + return views + +def interpolate_linear(idx, known_data): + """Fallback: Linear interpolation for normals or failed triangulation.""" + keys = sorted(known_data.keys()) + if idx in keys: return known_data[idx]['pos'], known_data[idx]['norm'] + + prev_k = next((k for k in reversed(keys) if k < idx), None) + next_k = next((k for k in keys if k > idx), None) + + pos, norm = np.array([0.,0.,0.]), np.array([0.,0.,1.]) + + if prev_k is not None and next_k is not None: + alpha = (idx - prev_k) / (next_k - prev_k) + p1, n1 = known_data[prev_k]['pos'], known_data[prev_k]['norm'] + p2, n2 = known_data[next_k]['pos'], known_data[next_k]['norm'] + pos = (1-alpha)*p1 + alpha*p2 + norm = (1-alpha)*n1 + alpha*n2 + elif prev_k is not None: + pos, norm = known_data[prev_k]['pos'], known_data[prev_k]['norm'] + elif next_k is not None: + pos, norm = known_data[next_k]['pos'], known_data[next_k]['norm'] + + return pos, norm / (np.linalg.norm(norm) + 1e-9) + +# --- MAIN EXECUTION --- + +def main(): + # 1. Load Data + map_3d = load_3d_map("led_map_3d.csv") + views = load_all_2d_files() + + # 2. Estimate Cameras (Projection Matrices) + # We define a "Camera" for each 2D file + valid_cameras = [] + + sys.stderr.write(f"Calculating camera poses for {len(views)} views...\n") + + for view in views: + # Find common points between this 2D view and the known 3D map + common_indices = set(view['points'].keys()).intersection(set(map_3d.keys())) + + if len(common_indices) < 8: # DLT needs 6, but 8+ is safer for noise + continue + + obj_pts = [] + img_pts = [] + for idx in common_indices: + obj_pts.append(map_3d[idx]['pos']) + img_pts.append(view['points'][idx]) + + P = compute_projection_matrix(obj_pts, img_pts) + if P is not None: + valid_cameras.append({ + 'P': P, + 'points': view['points'], + 'filename': view['filename'] + }) + + sys.stderr.write(f"Successfully calibrated {len(valid_cameras)} / {len(views)} views.\n") + + # 3. Identify Missing Pixels + # We want to check ranges. Let's assume the max index in 2D files is the strip length + all_2d_indices = set() + for v in views: + all_2d_indices.update(v['points'].keys()) + + missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) + + sys.stderr.write(f"Attempting to reconstruct {len(missing_indices)} missing pixels.\n") + sys.stderr.write("-" * 60 + "\n") + sys.stderr.write(f"{'Index':<6} | {'Method':<15} | {'Views used':<10} | {'Result'}\n") + sys.stderr.write("-" * 60 + "\n") + + final_map = map_3d.copy() + + for idx in missing_indices: + # Gather all cameras that saw this missing index + participating_cameras = [] + participating_detections = [] + + for cam in valid_cameras: + if idx in cam['points']: + participating_cameras.append(cam['P']) + participating_detections.append(cam['points'][idx]) + + method = "FAILED" + result_pos = None + + # Try Triangulation first + if len(participating_cameras) >= 2: + result_pos = triangulate_point(participating_cameras, participating_detections) + if result_pos is not None: + method = "Triangulated" + + # Fallback to Interpolation if Triangulation failed or not enough views + if result_pos is None: + method = "Interpolated" + result_pos, _ = interpolate_linear(idx, final_map) + + # For normals, triangulation doesn't help us (cameras don't see orientation easily). + # We assume standard linear flow for normals. + _, interp_norm = interpolate_linear(idx, final_map) + + # Add to map + final_map[idx] = { + 'pos': result_pos, + 'norm': interp_norm, + 'error': -1.0 if method == "Interpolated" else 0.001 + } + + sys.stderr.write(f"{idx:<6} | {method:<15} | {len(participating_cameras):<10} | {result_pos}\n") + + # 4. Output + fieldnames = ['index', 'x', 'y', 'z', 'xn', 'yn', 'zn', 'error'] + writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) + writer.writeheader() + + for idx in sorted(final_map.keys()): + d = final_map[idx] + writer.writerow({ + 'index': idx, + 'x': f"{d['pos'][0]:.6f}", + 'y': f"{d['pos'][1]:.6f}", + 'z': f"{d['pos'][2]:.6f}", + 'xn': f"{d['norm'][0]:.6f}", + 'yn': f"{d['norm'][1]:.6f}", + 'zn': f"{d['norm'][2]:.6f}", + 'error': f"{d['error']:.6f}" + }) + +if __name__ == "__main__": + main() \ No newline at end of file From a937e2e2c1f33b929d6b9712aa83f00b96489188 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 29 Nov 2025 10:21:54 -0500 Subject: [PATCH 04/27] wrap in project cli style --- CLAUDE.md | 13 + .../scripts/basic_photogrametry_solver.py | 228 --------------- .../scripts/basic_photogrammetry_solver.py | 263 ++++++++++++++++++ marimapper/scripts/results_cli.py | 178 ++++++++++++ pyproject.toml | 1 + 5 files changed, 455 insertions(+), 228 deletions(-) create mode 100644 CLAUDE.md delete mode 100644 marimapper/scripts/basic_photogrametry_solver.py create mode 100644 marimapper/scripts/basic_photogrammetry_solver.py create mode 100644 marimapper/scripts/results_cli.py diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..24cb9ba --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,13 @@ +# Marimapper Development Context + +## Virtual Environment +- **Location:** `$(pwd)/.venv` +- **Python at time of writing:** 3.12 +- **Package Manager:** Use `uv pip` with `-p /path/to/venv/bin/python` flag + - Example: `uv pip install -p /path/to/venv/bin/python package_name` +- **Already Installed:** `uv pip freeze` + +## Key Dependencies +- numpy, opencv-python, tqdm, open3d +- pycolmap==3.11.1 (do NOT update - breaks on > 3.12) +- click (present transitively, can be used for CLI commands) diff --git a/marimapper/scripts/basic_photogrametry_solver.py b/marimapper/scripts/basic_photogrametry_solver.py deleted file mode 100644 index bb2f563..0000000 --- a/marimapper/scripts/basic_photogrametry_solver.py +++ /dev/null @@ -1,228 +0,0 @@ -import glob -import csv -import sys -import numpy as np -import os - -# --- MATH HELPERS (The "Not Naive" Part) --- - -def compute_projection_matrix(obj_points, img_points): - """ - Computes the 3x4 Camera Projection Matrix (P) using Direct Linear Transform (DLT). - Maps 3D world coords -> 2D image coords. - Requires at least 6 common points. - """ - if len(obj_points) < 6: - return None - - # Construct the DLT matrix A - A = [] - for i in range(len(obj_points)): - X, Y, Z = obj_points[i] - u, v = img_points[i] - # Two equations per point - A.append([X, Y, Z, 1, 0, 0, 0, 0, -u*X, -u*Y, -u*Z, -u]) - A.append([0, 0, 0, 0, X, Y, Z, 1, -v*X, -v*Y, -v*Z, -v]) - - A = np.array(A) - # Solve A*p = 0 using SVD - U, S, Vh = np.linalg.svd(A) - L = Vh[-1] # The last row of Vh is the solution - - # Reshape into 3x4 projection matrix - P = L.reshape(3, 4) - return P - -def triangulate_point(cameras, detections): - """ - Triangulates a single 3D point given n cameras and n 2D detections. - cameras: list of 3x4 Projection Matrices - detections: list of (u, v) tuples - """ - if len(cameras) < 2: - return None # Need at least 2 views to intersect rays - - # Construct system A*X = 0 - A = [] - for P, (u, v) in zip(cameras, detections): - # P[0], P[1], P[2] are the rows of P - # u * P_2 * X = P_0 * X => (u*P_2 - P_0) * X = 0 - A.append(u * P[2] - P[0]) - # v * P_2 * X = P_1 * X => (v*P_2 - P_1) * X = 0 - A.append(v * P[2] - P[1]) - - A = np.array(A) - - # Solve using SVD - U, S, Vh = np.linalg.svd(A) - X_homogeneous = Vh[-1] - - # Convert from Homogeneous (X,Y,Z,W) to Cartesian (X/W, Y/W, Z/W) - X_cartesian = X_homogeneous[:3] / X_homogeneous[3] - return X_cartesian - -# --- STANDARD LOADERS --- - -def load_3d_map(filename): - data = {} - if not os.path.exists(filename): - sys.stderr.write(f"Error: {filename} not found.\n") - sys.exit(1) - with open(filename, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - idx = int(row['index']) - data[idx] = { - 'pos': np.array([float(row['x']), float(row['y']), float(row['z'])]), - 'norm': np.array([float(row['xn']), float(row['yn']), float(row['zn'])]), - 'error': float(row['error']) - } - return data - -def load_all_2d_files(): - files = glob.glob("./led_map_2d_*.csv") - views = [] # List of dicts: [{'filename': str, 'points': {index: (u,v)}}] - - for fname in files: - view_data = {} - with open(fname, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - idx = int(row['index']) - # Assuming detections are floats - view_data[idx] = (float(row['u']), float(row['v'])) - views.append({'filename': fname, 'points': view_data}) - - return views - -def interpolate_linear(idx, known_data): - """Fallback: Linear interpolation for normals or failed triangulation.""" - keys = sorted(known_data.keys()) - if idx in keys: return known_data[idx]['pos'], known_data[idx]['norm'] - - prev_k = next((k for k in reversed(keys) if k < idx), None) - next_k = next((k for k in keys if k > idx), None) - - pos, norm = np.array([0.,0.,0.]), np.array([0.,0.,1.]) - - if prev_k is not None and next_k is not None: - alpha = (idx - prev_k) / (next_k - prev_k) - p1, n1 = known_data[prev_k]['pos'], known_data[prev_k]['norm'] - p2, n2 = known_data[next_k]['pos'], known_data[next_k]['norm'] - pos = (1-alpha)*p1 + alpha*p2 - norm = (1-alpha)*n1 + alpha*n2 - elif prev_k is not None: - pos, norm = known_data[prev_k]['pos'], known_data[prev_k]['norm'] - elif next_k is not None: - pos, norm = known_data[next_k]['pos'], known_data[next_k]['norm'] - - return pos, norm / (np.linalg.norm(norm) + 1e-9) - -# --- MAIN EXECUTION --- - -def main(): - # 1. Load Data - map_3d = load_3d_map("led_map_3d.csv") - views = load_all_2d_files() - - # 2. Estimate Cameras (Projection Matrices) - # We define a "Camera" for each 2D file - valid_cameras = [] - - sys.stderr.write(f"Calculating camera poses for {len(views)} views...\n") - - for view in views: - # Find common points between this 2D view and the known 3D map - common_indices = set(view['points'].keys()).intersection(set(map_3d.keys())) - - if len(common_indices) < 8: # DLT needs 6, but 8+ is safer for noise - continue - - obj_pts = [] - img_pts = [] - for idx in common_indices: - obj_pts.append(map_3d[idx]['pos']) - img_pts.append(view['points'][idx]) - - P = compute_projection_matrix(obj_pts, img_pts) - if P is not None: - valid_cameras.append({ - 'P': P, - 'points': view['points'], - 'filename': view['filename'] - }) - - sys.stderr.write(f"Successfully calibrated {len(valid_cameras)} / {len(views)} views.\n") - - # 3. Identify Missing Pixels - # We want to check ranges. Let's assume the max index in 2D files is the strip length - all_2d_indices = set() - for v in views: - all_2d_indices.update(v['points'].keys()) - - missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) - - sys.stderr.write(f"Attempting to reconstruct {len(missing_indices)} missing pixels.\n") - sys.stderr.write("-" * 60 + "\n") - sys.stderr.write(f"{'Index':<6} | {'Method':<15} | {'Views used':<10} | {'Result'}\n") - sys.stderr.write("-" * 60 + "\n") - - final_map = map_3d.copy() - - for idx in missing_indices: - # Gather all cameras that saw this missing index - participating_cameras = [] - participating_detections = [] - - for cam in valid_cameras: - if idx in cam['points']: - participating_cameras.append(cam['P']) - participating_detections.append(cam['points'][idx]) - - method = "FAILED" - result_pos = None - - # Try Triangulation first - if len(participating_cameras) >= 2: - result_pos = triangulate_point(participating_cameras, participating_detections) - if result_pos is not None: - method = "Triangulated" - - # Fallback to Interpolation if Triangulation failed or not enough views - if result_pos is None: - method = "Interpolated" - result_pos, _ = interpolate_linear(idx, final_map) - - # For normals, triangulation doesn't help us (cameras don't see orientation easily). - # We assume standard linear flow for normals. - _, interp_norm = interpolate_linear(idx, final_map) - - # Add to map - final_map[idx] = { - 'pos': result_pos, - 'norm': interp_norm, - 'error': -1.0 if method == "Interpolated" else 0.001 - } - - sys.stderr.write(f"{idx:<6} | {method:<15} | {len(participating_cameras):<10} | {result_pos}\n") - - # 4. Output - fieldnames = ['index', 'x', 'y', 'z', 'xn', 'yn', 'zn', 'error'] - writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) - writer.writeheader() - - for idx in sorted(final_map.keys()): - d = final_map[idx] - writer.writerow({ - 'index': idx, - 'x': f"{d['pos'][0]:.6f}", - 'y': f"{d['pos'][1]:.6f}", - 'z': f"{d['pos'][2]:.6f}", - 'xn': f"{d['norm'][0]:.6f}", - 'yn': f"{d['norm'][1]:.6f}", - 'zn': f"{d['norm'][2]:.6f}", - 'error': f"{d['error']:.6f}" - }) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py new file mode 100644 index 0000000..010c62a --- /dev/null +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -0,0 +1,263 @@ +import glob +import csv +import sys +import numpy as np +import os + +# --- MATHS HELPERS --- + +def compute_projection_matrix(obj_points, img_points): + """ + Computes the 3x4 Camera Projection Matrix (P) using Direct Linear Transform (DLT). + Maps 3D world coords -> 2D image coords. + Requires at least 6 common points. + """ + if len(obj_points) < 6: + return None + + # Construct the DLT matrix A + A = [] + for i in range(len(obj_points)): + X, Y, Z = obj_points[i] + u, v = img_points[i] + # Two equations per point + A.append([X, Y, Z, 1, 0, 0, 0, 0, -u*X, -u*Y, -u*Z, -u]) + A.append([0, 0, 0, 0, X, Y, Z, 1, -v*X, -v*Y, -v*Z, -v]) + + A = np.array(A) + # Solve A*p = 0 using SVD + U, S, Vh = np.linalg.svd(A) + L = Vh[-1] # The last row of Vh is the solution + + # Reshape into 3x4 projection matrix + P = L.reshape(3, 4) + return P + +def triangulate_point(cameras, detections): + """ + Triangulates a single 3D point given n cameras and n 2D detections. + cameras: list of 3x4 Projection Matrices + detections: list of (u, v) tuples + """ + if len(cameras) < 2: + return None # Need at least 2 views to intersect rays + + # Construct system A*X = 0 + A = [] + for P, (u, v) in zip(cameras, detections): + # P[0], P[1], P[2] are the rows of P + # u * P_2 * X = P_0 * X => (u*P_2 - P_0) * X = 0 + A.append(u * P[2] - P[0]) + # v * P_2 * X = P_1 * X => (v*P_2 - P_1) * X = 0 + A.append(v * P[2] - P[1]) + + A = np.array(A) + + # Solve using SVD + U, S, Vh = np.linalg.svd(A) + X_homogeneous = Vh[-1] + + # Convert from Homogeneous (X,Y,Z,W) to Cartesian (X/W, Y/W, Z/W) + X_cartesian = X_homogeneous[:3] / X_homogeneous[3] + return X_cartesian + +# --- STANDARD LOADERS --- + +def load_3d_map(filename): + data = {} + if not os.path.exists(filename): + sys.stderr.write(f"Error: {filename} not found.\n") + sys.exit(1) + with open(filename, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + idx = int(row['index']) + data[idx] = { + 'pos': np.array([float(row['x']), float(row['y']), float(row['z'])]), + 'norm': np.array([float(row['xn']), float(row['yn']), float(row['zn'])]), + 'error': float(row['error']) + } + return data + +def load_all_2d_files(): + files = glob.glob("./led_map_2d_*.csv") + views = [] # List of dicts: [{'filename': str, 'points': {index: (u,v)}}] + + for fname in files: + view_data = {} + with open(fname, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + idx = int(row['index']) + # Assuming detections are floats + view_data[idx] = (float(row['u']), float(row['v'])) + views.append({'filename': fname, 'points': view_data}) + + return views + +def interpolate_linear(idx, known_data): + """Fallback: Linear interpolation for normals or failed triangulation.""" + keys = sorted(known_data.keys()) + if idx in keys: return known_data[idx]['pos'], known_data[idx]['norm'] + + prev_k = next((k for k in reversed(keys) if k < idx), None) + next_k = next((k for k in keys if k > idx), None) + + pos, norm = np.array([0.,0.,0.]), np.array([0.,0.,1.]) + + if prev_k is not None and next_k is not None: + alpha = (idx - prev_k) / (next_k - prev_k) + p1, n1 = known_data[prev_k]['pos'], known_data[prev_k]['norm'] + p2, n2 = known_data[next_k]['pos'], known_data[next_k]['norm'] + pos = (1-alpha)*p1 + alpha*p2 + norm = (1-alpha)*n1 + alpha*n2 + elif prev_k is not None: + pos, norm = known_data[prev_k]['pos'], known_data[prev_k]['norm'] + elif next_k is not None: + pos, norm = known_data[next_k]['pos'], known_data[next_k]['norm'] + + return pos, norm / (np.linalg.norm(norm) + 1e-9) + +# --- MAIN EXECUTION --- + +def fill_missing_indices(data_dir="."): + """ + Fills in missing LED indices using photogrammetric reconstruction. + + Uses DLT (Direct Linear Transform) to estimate camera projection matrices + from known calibration points, then SVD-based triangulation to reconstruct + missing 3D positions. Falls back to linear interpolation for points with + insufficient view coverage. + + Args: + data_dir: Directory containing led_map_3d.csv and led_map_2d_*.csv files + + Returns: + dict: Final map with all indices, or None if processing failed + """ + import os + old_cwd = os.getcwd() + try: + os.chdir(data_dir) + + # 1. Load Data + map_3d = load_3d_map("led_map_3d.csv") + views = load_all_2d_files() + + # 2. Estimate Cameras (Projection Matrices using DLT + SVD) + # We define a "Camera" for each 2D file + valid_cameras = [] + + sys.stderr.write(f"Step 1: Estimating camera poses using DLT for {len(views)} views...\n") + + for view in views: + # Find common points between this 2D view and the known 3D map + common_indices = set(view['points'].keys()).intersection(set(map_3d.keys())) + + if len(common_indices) < 8: # DLT needs 6, but 8+ is safer for noise + sys.stderr.write(f" Skipped {view['filename']}: only {len(common_indices)} common points (need 8+)\n") + continue + + obj_pts = [] + img_pts = [] + for idx in common_indices: + obj_pts.append(map_3d[idx]['pos']) + img_pts.append(view['points'][idx]) + + P = compute_projection_matrix(obj_pts, img_pts) + if P is not None: + valid_cameras.append({ + 'P': P, + 'points': view['points'], + 'filename': view['filename'] + }) + sys.stderr.write(f" Calibrated {view['filename']}: {len(common_indices)} control points\n") + + sys.stderr.write(f"Step 2: Successfully calibrated {len(valid_cameras)} / {len(views)} views using DLT\n\n") + + # 3. Identify Missing Pixels + # We want to check ranges. Let's assume the max index in 2D files is the strip length + all_2d_indices = set() + for v in views: + all_2d_indices.update(v['points'].keys()) + + missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) + + sys.stderr.write(f"Step 3: Reconstructing {len(missing_indices)} missing pixels using SVD triangulation\n") + sys.stderr.write("-" * 70 + "\n") + sys.stderr.write(f"{'Index':<6} | {'Method':<15} | {'Views':<6} | {'3D Position'}\n") + sys.stderr.write("-" * 70 + "\n") + + final_map = map_3d.copy() + + for idx in missing_indices: + # Gather all cameras that saw this missing index + participating_cameras = [] + participating_detections = [] + + for cam in valid_cameras: + if idx in cam['points']: + participating_cameras.append(cam['P']) + participating_detections.append(cam['points'][idx]) + + method = "FAILED" + result_pos = None + + # Try Triangulation first (SVD-based) + if len(participating_cameras) >= 2: + result_pos = triangulate_point(participating_cameras, participating_detections) + if result_pos is not None: + method = "Triangulated (SVD)" + + # Fallback to Interpolation if Triangulation failed or not enough views + if result_pos is None: + method = "Interpolated" + result_pos, _ = interpolate_linear(idx, final_map) + + # For normals, triangulation doesn't help us (cameras don't see orientation easily). + # We assume standard linear flow for normals. + _, interp_norm = interpolate_linear(idx, final_map) + + # Add to map + final_map[idx] = { + 'pos': result_pos, + 'norm': interp_norm, + 'error': -1.0 if method == "Interpolated" else 0.001 + } + + sys.stderr.write(f"{idx:<6} | {method:<15} | {len(participating_cameras):<6} | {result_pos}\n") + + sys.stderr.write("-" * 70 + "\n") + sys.stderr.write(f"Reconstruction complete. Total pixels in final map: {len(final_map)}\n\n") + + return final_map + + finally: + os.chdir(old_cwd) + + +def main(): + final_map = fill_missing_indices(".") + if final_map is None: + sys.exit(1) + + # 4. Output to stdout + fieldnames = ['index', 'x', 'y', 'z', 'xn', 'yn', 'zn', 'error'] + writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) + writer.writeheader() + + for idx in sorted(final_map.keys()): + d = final_map[idx] + writer.writerow({ + 'index': idx, + 'x': f"{d['pos'][0]:.6f}", + 'y': f"{d['pos'][1]:.6f}", + 'z': f"{d['pos'][2]:.6f}", + 'xn': f"{d['norm'][0]:.6f}", + 'yn': f"{d['norm'][1]:.6f}", + 'zn': f"{d['norm'][2]:.6f}", + 'error': f"{d['error']:.6f}" + }) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py new file mode 100644 index 0000000..a85763a --- /dev/null +++ b/marimapper/scripts/results_cli.py @@ -0,0 +1,178 @@ +import click +import sys +import os +import csv +import glob +from marimapper.scripts.basic_photogrammetry_solver import fill_missing_indices + + +def load_3d_map(filename): + """Load 3D mapping data from CSV file.""" + data = {} + with open(filename, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + data[int(row['index'])] = row + return data + + +def scan_2d_indices(data_dir): + """Scan all 2D detection files in directory.""" + old_cwd = os.getcwd() + try: + os.chdir(data_dir) + files = glob.glob("./led_map_2d_*.csv") + detection_log = {} + + for fname in files: + with open(fname, 'r') as f: + reader = csv.DictReader(f) + for row in reader: + if 'index' in row: + idx = int(row['index']) + if idx not in detection_log: + detection_log[idx] = [] + detection_log[idx].append(os.path.basename(fname)) + + return detection_log, files + finally: + os.chdir(old_cwd) + + +def normalize_map_for_csv(final_map): + """ + Normalize map data for CSV output. + Converts numpy arrays in pos/norm to individual x,y,z,xn,yn,zn fields. + Returns dict keyed by index with CSV-ready field values. + """ + import numpy as np + + normalized = {} + for idx in sorted(final_map.keys()): + row_data = final_map[idx] + + # Check if this is the filled format (has 'pos' and 'norm' keys) + if isinstance(row_data, dict) and 'pos' in row_data: + pos = row_data['pos'] + norm = row_data['norm'] + error = row_data['error'] + + # Convert numpy arrays to floats + normalized[idx] = { + 'index': idx, + 'x': f"{float(pos[0]):.6f}" if isinstance(pos, np.ndarray) else f"{float(pos[0]):.6f}", + 'y': f"{float(pos[1]):.6f}" if isinstance(pos, np.ndarray) else f"{float(pos[1]):.6f}", + 'z': f"{float(pos[2]):.6f}" if isinstance(pos, np.ndarray) else f"{float(pos[2]):.6f}", + 'xn': f"{float(norm[0]):.6f}" if isinstance(norm, np.ndarray) else f"{float(norm[0]):.6f}", + 'yn': f"{float(norm[1]):.6f}" if isinstance(norm, np.ndarray) else f"{float(norm[1]):.6f}", + 'zn': f"{float(norm[2]):.6f}" if isinstance(norm, np.ndarray) else f"{float(norm[2]):.6f}", + 'error': f"{float(error):.6f}" + } + else: + # Already in CSV format (string fields) + normalized[idx] = { + 'index': idx, + **row_data + } + + return normalized + + +@click.command() +@click.option( + '--dir', + default='.', + type=click.Path(exists=True, file_okay=False, dir_okay=True), + help='Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)' +) +@click.option( + '--fill', + is_flag=True, + help='Fill in missing LED indices using photogrammetric reconstruction (DLT + SVD)' +) +def main(dir, fill): + """ + Process LED mapping results. + + Shows mapping status (2D detections vs 3D calibration). When --fill is used, + reconstructs missing 3D positions using photogrammetric methods. + + Outputs final 3D mapping as CSV to stdout (all logging goes to stderr). + """ + old_cwd = os.getcwd() + try: + # Check if required files exist + map_file = os.path.join(dir, "led_map_3d.csv") + if not os.path.exists(map_file): + click.secho(f"Error: {map_file} not found", fg='red', err=True) + sys.exit(1) + + os.chdir(dir) + + # Load existing 3D map + try: + map_data = load_3d_map("led_map_3d.csv") + except Exception as e: + click.secho(f"Error loading 3D map: {e}", fg='red', err=True) + sys.exit(1) + + # Scan 2D detections + try: + data_2d_log, files_2d = scan_2d_indices(".") + except Exception as e: + click.secho(f"Error scanning 2D files: {e}", fg='red', err=True) + sys.exit(1) + + all_2d_indices = set(data_2d_log.keys()) + existing_3d_indices = set(map_data.keys()) + missing_indices = sorted(list(all_2d_indices - existing_3d_indices)) + + # Report status + click.secho(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans", err=True) + click.secho(f"3D Indices Mapped: {len(existing_3d_indices)}", err=True) + click.secho("", err=True) + + if not missing_indices: + click.secho("Status: COMPLETE", err=True) + final_map = map_data + else: + click.secho(f"Status: INCOMPLETE ({len(missing_indices)} missing)", err=True) + click.secho("-" * 40, err=True) + click.secho(f"{'Index':<8} | {'# Views':<8}", err=True) + click.secho("-" * 40, err=True) + for idx in missing_indices: + count = len(data_2d_log[idx]) + click.secho(f"{idx:<8} | {count:<8}", err=True) + click.secho("-" * 40, err=True) + click.secho("", err=True) + + if fill: + # Run photogrammetric reconstruction + click.secho("Running photogrammetric reconstruction...", err=True) + click.secho("", err=True) + final_map = fill_missing_indices(".") + if final_map is None: + click.secho("Error: Photogrammetric reconstruction failed", fg='red', err=True) + sys.exit(1) + else: + final_map = map_data + click.secho("(Use --fill to reconstruct missing indices using photogrammetry)", err=True) + click.secho("", err=True) + + # Output final 3D map to stdout + if final_map: + normalized_map = normalize_map_for_csv(final_map) + fieldnames = ['index', 'x', 'y', 'z', 'xn', 'yn', 'zn', 'error'] + + writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) + writer.writeheader() + + for idx in sorted(normalized_map.keys()): + writer.writerow(normalized_map[idx]) + + finally: + os.chdir(old_cwd) + + +if __name__ == "__main__": + main() diff --git a/pyproject.toml b/pyproject.toml index ae394a6..006a709 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,6 +55,7 @@ marimapper = "marimapper.scripts.scanner_cli:main" marimapper_check_camera = "marimapper.scripts.check_camera_cli:main" marimapper_check_backend ="marimapper.scripts.check_backend_cli:main" marimapper_upload_mapping_to_pixelblaze = "marimapper.scripts.upload_map_to_pixelblaze_cli:main" +marimapper_results = "marimapper.scripts.results_cli:main" [tool.coverage.run] From 554aad9692648c3e75ffd32dbf74896c953db92f Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 29 Nov 2025 10:44:03 -0500 Subject: [PATCH 05/27] simplify text displays --- CLAUDE.md | 4 +- .../scripts/basic_photogrammetry_solver.py | 95 ++++++++++-------- marimapper/scripts/results_cli.py | 97 +++++++------------ 3 files changed, 93 insertions(+), 103 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 24cb9ba..d067e76 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,9 +5,9 @@ - **Python at time of writing:** 3.12 - **Package Manager:** Use `uv pip` with `-p /path/to/venv/bin/python` flag - Example: `uv pip install -p /path/to/venv/bin/python package_name` -- **Already Installed:** `uv pip freeze` +- **Deps Already Installed:** `uv pip freeze` +- **Check present transitive deps, ASK FIRST to require installing new ones** ## Key Dependencies - numpy, opencv-python, tqdm, open3d - pycolmap==3.11.1 (do NOT update - breaks on > 3.12) -- click (present transitively, can be used for CLI commands) diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index 010c62a..f9aa084 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -1,8 +1,8 @@ import glob -import csv import sys import numpy as np import os +import pandas as pd # --- MATHS HELPERS --- @@ -64,35 +64,35 @@ def triangulate_point(cameras, detections): # --- STANDARD LOADERS --- def load_3d_map(filename): - data = {} + """Load 3D map from CSV using pandas.""" if not os.path.exists(filename): sys.stderr.write(f"Error: {filename} not found.\n") sys.exit(1) - with open(filename, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - idx = int(row['index']) - data[idx] = { - 'pos': np.array([float(row['x']), float(row['y']), float(row['z'])]), - 'norm': np.array([float(row['xn']), float(row['yn']), float(row['zn'])]), - 'error': float(row['error']) - } + + df = pd.read_csv(filename) + data = {} + for _, row in df.iterrows(): + idx = int(row['index']) + data[idx] = { + 'pos': np.array([float(row['x']), float(row['y']), float(row['z'])]), + 'norm': np.array([float(row['xn']), float(row['yn']), float(row['zn'])]), + 'error': float(row['error']) + } return data def load_all_2d_files(): + """Load all 2D detection files using pandas.""" files = glob.glob("./led_map_2d_*.csv") - views = [] # List of dicts: [{'filename': str, 'points': {index: (u,v)}}] - + views = [] # List of dicts: [{'filename': str, 'points': {index: (u,v)}}] + for fname in files: + df = pd.read_csv(fname) view_data = {} - with open(fname, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - idx = int(row['index']) - # Assuming detections are floats - view_data[idx] = (float(row['u']), float(row['v'])) + for _, row in df.iterrows(): + idx = int(row['index']) + view_data[idx] = (float(row['u']), float(row['v'])) views.append({'filename': fname, 'points': view_data}) - + return views def interpolate_linear(idx, known_data): @@ -183,13 +183,16 @@ def fill_missing_indices(data_dir="."): missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) - sys.stderr.write(f"Step 3: Reconstructing {len(missing_indices)} missing pixels using SVD triangulation\n") - sys.stderr.write("-" * 70 + "\n") - sys.stderr.write(f"{'Index':<6} | {'Method':<15} | {'Views':<6} | {'3D Position'}\n") - sys.stderr.write("-" * 70 + "\n") + sys.stderr.write(f"Step 3: Reconstructing {len(missing_indices)} missing pixels using SVD triangulation\n\n") final_map = map_3d.copy() + # Track reconstruction outcomes + triangulated_count = 0 + interpolated_insufficient_count = 0 + interpolated_failed_count = 0 + reconstruction_table = [] + for idx in missing_indices: # Gather all cameras that saw this missing index participating_cameras = [] @@ -208,10 +211,16 @@ def fill_missing_indices(data_dir="."): result_pos = triangulate_point(participating_cameras, participating_detections) if result_pos is not None: method = "Triangulated (SVD)" - - # Fallback to Interpolation if Triangulation failed or not enough views - if result_pos is None: - method = "Interpolated" + triangulated_count += 1 + else: + # Triangulation failed despite having enough views + method = "Interpolated (SVD failed)" + interpolated_failed_count += 1 + result_pos, _ = interpolate_linear(idx, final_map) + else: + # Not enough views for triangulation + method = "Interpolated (insufficient)" + interpolated_insufficient_count += 1 result_pos, _ = interpolate_linear(idx, final_map) # For normals, triangulation doesn't help us (cameras don't see orientation easily). @@ -222,13 +231,23 @@ def fill_missing_indices(data_dir="."): final_map[idx] = { 'pos': result_pos, 'norm': interp_norm, - 'error': -1.0 if method == "Interpolated" else 0.001 + 'error': -1.0 if "Interpolated" in method else 0.001 } - sys.stderr.write(f"{idx:<6} | {method:<15} | {len(participating_cameras):<6} | {result_pos}\n") + pos_str = f"[{result_pos[0]:.6f}, {result_pos[1]:.6f}, {result_pos[2]:.6f}]" + reconstruction_table.append([idx, method, len(participating_cameras), pos_str]) - sys.stderr.write("-" * 70 + "\n") - sys.stderr.write(f"Reconstruction complete. Total pixels in final map: {len(final_map)}\n\n") + # Print reconstruction table using pandas + if reconstruction_table: + df_table = pd.DataFrame(reconstruction_table, columns=["Index", "Method", "Views", "3D Position"]) + sys.stderr.write(df_table.to_string(index=False) + "\n\n") + + # Print summary + sys.stderr.write("Reconstruction Summary:\n") + sys.stderr.write(f" Triangulated (SVD): {triangulated_count}\n") + sys.stderr.write(f" Interpolated (insufficient): {interpolated_insufficient_count}\n") + sys.stderr.write(f" Interpolated (SVD failed): {interpolated_failed_count}\n") + sys.stderr.write(f" Total pixels in final map: {len(final_map)}\n\n") return final_map @@ -241,14 +260,11 @@ def main(): if final_map is None: sys.exit(1) - # 4. Output to stdout - fieldnames = ['index', 'x', 'y', 'z', 'xn', 'yn', 'zn', 'error'] - writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) - writer.writeheader() - + # 4. Output to stdout using pandas + rows = [] for idx in sorted(final_map.keys()): d = final_map[idx] - writer.writerow({ + rows.append({ 'index': idx, 'x': f"{d['pos'][0]:.6f}", 'y': f"{d['pos'][1]:.6f}", @@ -259,5 +275,8 @@ def main(): 'error': f"{d['error']:.6f}" }) + df = pd.DataFrame(rows) + df.to_csv(sys.stdout, index=False) + if __name__ == "__main__": main() \ No newline at end of file diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index a85763a..2bc2f8a 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -1,20 +1,11 @@ import click import sys import os -import csv import glob +import pandas as pd from marimapper.scripts.basic_photogrammetry_solver import fill_missing_indices - -def load_3d_map(filename): - """Load 3D mapping data from CSV file.""" - data = {} - with open(filename, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - data[int(row['index'])] = row - return data - +log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) def scan_2d_indices(data_dir): """Scan all 2D detection files in directory.""" @@ -25,14 +16,12 @@ def scan_2d_indices(data_dir): detection_log = {} for fname in files: - with open(fname, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - if 'index' in row: - idx = int(row['index']) - if idx not in detection_log: - detection_log[idx] = [] - detection_log[idx].append(os.path.basename(fname)) + df = pd.read_csv(fname) + for _, row in df.iterrows(): + idx = int(row['index']) + if idx not in detection_log: + detection_log[idx] = [] + detection_log[idx].append(os.path.basename(fname)) return detection_log, files finally: @@ -40,42 +29,31 @@ def scan_2d_indices(data_dir): def normalize_map_for_csv(final_map): - """ - Normalize map data for CSV output. - Converts numpy arrays in pos/norm to individual x,y,z,xn,yn,zn fields. - Returns dict keyed by index with CSV-ready field values. - """ - import numpy as np - - normalized = {} + """Convert final map data to pandas DataFrame for CSV output.""" + rows = [] for idx in sorted(final_map.keys()): row_data = final_map[idx] - # Check if this is the filled format (has 'pos' and 'norm' keys) + # Handle filled format (numpy arrays) and CSV format (strings) if isinstance(row_data, dict) and 'pos' in row_data: pos = row_data['pos'] norm = row_data['norm'] error = row_data['error'] - - # Convert numpy arrays to floats - normalized[idx] = { + rows.append({ 'index': idx, - 'x': f"{float(pos[0]):.6f}" if isinstance(pos, np.ndarray) else f"{float(pos[0]):.6f}", - 'y': f"{float(pos[1]):.6f}" if isinstance(pos, np.ndarray) else f"{float(pos[1]):.6f}", - 'z': f"{float(pos[2]):.6f}" if isinstance(pos, np.ndarray) else f"{float(pos[2]):.6f}", - 'xn': f"{float(norm[0]):.6f}" if isinstance(norm, np.ndarray) else f"{float(norm[0]):.6f}", - 'yn': f"{float(norm[1]):.6f}" if isinstance(norm, np.ndarray) else f"{float(norm[1]):.6f}", - 'zn': f"{float(norm[2]):.6f}" if isinstance(norm, np.ndarray) else f"{float(norm[2]):.6f}", + 'x': f"{float(pos[0]):.6f}", + 'y': f"{float(pos[1]):.6f}", + 'z': f"{float(pos[2]):.6f}", + 'xn': f"{float(norm[0]):.6f}", + 'yn': f"{float(norm[1]):.6f}", + 'zn': f"{float(norm[2]):.6f}", 'error': f"{float(error):.6f}" - } + }) else: - # Already in CSV format (string fields) - normalized[idx] = { - 'index': idx, - **row_data - } + # Already in CSV format + rows.append({'index': idx, **row_data}) - return normalized + return pd.DataFrame(rows) @click.command() @@ -104,14 +82,15 @@ def main(dir, fill): # Check if required files exist map_file = os.path.join(dir, "led_map_3d.csv") if not os.path.exists(map_file): - click.secho(f"Error: {map_file} not found", fg='red', err=True) + log(f"Error: {map_file} not found", fg='red') sys.exit(1) os.chdir(dir) # Load existing 3D map try: - map_data = load_3d_map("led_map_3d.csv") + map_df = pd.read_csv("led_map_3d.csv") + map_data = {int(idx): row.to_dict() for idx, row in map_df.iterrows()} except Exception as e: click.secho(f"Error loading 3D map: {e}", fg='red', err=True) sys.exit(1) @@ -128,7 +107,7 @@ def main(dir, fill): missing_indices = sorted(list(all_2d_indices - existing_3d_indices)) # Report status - click.secho(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans", err=True) + log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") click.secho(f"3D Indices Mapped: {len(existing_3d_indices)}", err=True) click.secho("", err=True) @@ -137,13 +116,11 @@ def main(dir, fill): final_map = map_data else: click.secho(f"Status: INCOMPLETE ({len(missing_indices)} missing)", err=True) - click.secho("-" * 40, err=True) - click.secho(f"{'Index':<8} | {'# Views':<8}", err=True) - click.secho("-" * 40, err=True) - for idx in missing_indices: - count = len(data_2d_log[idx]) - click.secho(f"{idx:<8} | {count:<8}", err=True) - click.secho("-" * 40, err=True) + + # Display missing indices table using pandas + missing_table_data = [[idx, len(data_2d_log[idx])] for idx in missing_indices] + df_missing = pd.DataFrame(missing_table_data, columns=["Index", "# Views"]) + click.secho(df_missing.to_string(index=False), err=True) click.secho("", err=True) if fill: @@ -159,16 +136,10 @@ def main(dir, fill): click.secho("(Use --fill to reconstruct missing indices using photogrammetry)", err=True) click.secho("", err=True) - # Output final 3D map to stdout + # Output final 3D map to stdout using pandas if final_map: - normalized_map = normalize_map_for_csv(final_map) - fieldnames = ['index', 'x', 'y', 'z', 'xn', 'yn', 'zn', 'error'] - - writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) - writer.writeheader() - - for idx in sorted(normalized_map.keys()): - writer.writerow(normalized_map[idx]) + df_output = normalize_map_for_csv(final_map) + df_output.to_csv(sys.stdout, index=False) finally: os.chdir(old_cwd) From e179e2303a7c02aaaa9a2da20953e717674107b1 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 29 Nov 2025 10:55:04 -0500 Subject: [PATCH 06/27] minor log cosmetics --- .../scripts/basic_photogrammetry_solver.py | 27 ++++++++++--------- marimapper/scripts/results_cli.py | 22 +++++++-------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index f9aa084..abcf710 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -3,6 +3,9 @@ import numpy as np import os import pandas as pd +import click + +log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) # --- MATHS HELPERS --- @@ -66,7 +69,7 @@ def triangulate_point(cameras, detections): def load_3d_map(filename): """Load 3D map from CSV using pandas.""" if not os.path.exists(filename): - sys.stderr.write(f"Error: {filename} not found.\n") + log(f"Error: {filename} not found.", fg='red') sys.exit(1) df = pd.read_csv(filename) @@ -148,14 +151,14 @@ def fill_missing_indices(data_dir="."): # We define a "Camera" for each 2D file valid_cameras = [] - sys.stderr.write(f"Step 1: Estimating camera poses using DLT for {len(views)} views...\n") + log(f"Step 1: Estimating camera poses using DLT for {len(views)} views...") for view in views: # Find common points between this 2D view and the known 3D map common_indices = set(view['points'].keys()).intersection(set(map_3d.keys())) if len(common_indices) < 8: # DLT needs 6, but 8+ is safer for noise - sys.stderr.write(f" Skipped {view['filename']}: only {len(common_indices)} common points (need 8+)\n") + log(f" Skipped {view['filename']}: only {len(common_indices)} common points (need 8+)") continue obj_pts = [] @@ -171,9 +174,9 @@ def fill_missing_indices(data_dir="."): 'points': view['points'], 'filename': view['filename'] }) - sys.stderr.write(f" Calibrated {view['filename']}: {len(common_indices)} control points\n") + log(f" Calibrated {view['filename']}: {len(common_indices)} control points") - sys.stderr.write(f"Step 2: Successfully calibrated {len(valid_cameras)} / {len(views)} views using DLT\n\n") + log(f"Step 2: Successfully calibrated {len(valid_cameras)} / {len(views)} views using DLT\n") # 3. Identify Missing Pixels # We want to check ranges. Let's assume the max index in 2D files is the strip length @@ -183,7 +186,7 @@ def fill_missing_indices(data_dir="."): missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) - sys.stderr.write(f"Step 3: Reconstructing {len(missing_indices)} missing pixels using SVD triangulation\n\n") + log(f"Step 3: Reconstructing {len(missing_indices)} missing pixels using SVD triangulation\n") final_map = map_3d.copy() @@ -240,14 +243,14 @@ def fill_missing_indices(data_dir="."): # Print reconstruction table using pandas if reconstruction_table: df_table = pd.DataFrame(reconstruction_table, columns=["Index", "Method", "Views", "3D Position"]) - sys.stderr.write(df_table.to_string(index=False) + "\n\n") + log(df_table.to_string(index=False) + "\n") # Print summary - sys.stderr.write("Reconstruction Summary:\n") - sys.stderr.write(f" Triangulated (SVD): {triangulated_count}\n") - sys.stderr.write(f" Interpolated (insufficient): {interpolated_insufficient_count}\n") - sys.stderr.write(f" Interpolated (SVD failed): {interpolated_failed_count}\n") - sys.stderr.write(f" Total pixels in final map: {len(final_map)}\n\n") + log("Reconstruction Summary:") + log(f" Triangulated (SVD): {triangulated_count}") + log(f" Interpolated (insufficient): {interpolated_insufficient_count}") + log(f" Interpolated (SVD failed): {interpolated_failed_count}") + log(f" Total pixels in final map: {len(final_map)}\n") return final_map diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 2bc2f8a..af3ba89 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -92,14 +92,14 @@ def main(dir, fill): map_df = pd.read_csv("led_map_3d.csv") map_data = {int(idx): row.to_dict() for idx, row in map_df.iterrows()} except Exception as e: - click.secho(f"Error loading 3D map: {e}", fg='red', err=True) + log(f"Error loading 3D map: {e}", fg='red') sys.exit(1) # Scan 2D detections try: data_2d_log, files_2d = scan_2d_indices(".") except Exception as e: - click.secho(f"Error scanning 2D files: {e}", fg='red', err=True) + log(f"Error scanning 2D files: {e}", fg='red') sys.exit(1) all_2d_indices = set(data_2d_log.keys()) @@ -108,33 +108,29 @@ def main(dir, fill): # Report status log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") - click.secho(f"3D Indices Mapped: {len(existing_3d_indices)}", err=True) - click.secho("", err=True) + log(f"3D Indices Mapped: {len(existing_3d_indices)}\n") if not missing_indices: - click.secho("Status: COMPLETE", err=True) + log("Status: COMPLETE") final_map = map_data else: - click.secho(f"Status: INCOMPLETE ({len(missing_indices)} missing)", err=True) + log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") # Display missing indices table using pandas missing_table_data = [[idx, len(data_2d_log[idx])] for idx in missing_indices] df_missing = pd.DataFrame(missing_table_data, columns=["Index", "# Views"]) - click.secho(df_missing.to_string(index=False), err=True) - click.secho("", err=True) + log(df_missing.to_string(index=False) + "\n") if fill: # Run photogrammetric reconstruction - click.secho("Running photogrammetric reconstruction...", err=True) - click.secho("", err=True) + log("Running photogrammetric reconstruction...\n") final_map = fill_missing_indices(".") if final_map is None: - click.secho("Error: Photogrammetric reconstruction failed", fg='red', err=True) + log("Error: Photogrammetric reconstruction failed", fg='red') sys.exit(1) else: final_map = map_data - click.secho("(Use --fill to reconstruct missing indices using photogrammetry)", err=True) - click.secho("", err=True) + log("(Use --fill to reconstruct missing indices using photogrammetry)\n") # Output final 3D map to stdout using pandas if final_map: From 7470053b22751ade37b5799799557d0aea9651d0 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 29 Nov 2025 11:05:42 -0500 Subject: [PATCH 07/27] first pass at estimated camera logging, looks wrong --- .../scripts/basic_photogrammetry_solver.py | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index abcf710..51b075f 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -4,9 +4,45 @@ import os import pandas as pd import click +import math +from scipy.linalg import rq +from pathlib import Path log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) + +def extract_camera_pose(P): + """ + Extract camera center and orientation from projection matrix P (3x4). + Returns: (camera_center, yaw_deg, pitch_deg, roll_deg, distance_from_origin) + """ + try: + M = P[:, :3] + p4 = P[:, 3] + + # Extract camera center: C = -M^(-1) * p4 + M_inv = np.linalg.inv(M) + C = -M_inv @ p4 + distance = np.linalg.norm(C) + + # Extract rotation via RQ decomposition + R, K = rq(M) + # Make sure R is a proper rotation matrix (det = 1) + if np.linalg.det(R) < 0: + R = -R + K = -K + + # Extract Euler angles (ZYX order: yaw, pitch, roll) + # From rotation matrix to angles + yaw = math.atan2(R[1, 0], R[0, 0]) * 180 / math.pi + pitch = math.asin(-np.clip(R[2, 0], -1, 1)) * 180 / math.pi + roll = math.atan2(R[2, 1], R[2, 2]) * 180 / math.pi + + return C, yaw, pitch, roll, distance + except Exception: + return None, None, None, None, None + + # --- MATHS HELPERS --- def compute_projection_matrix(obj_points, img_points): @@ -174,7 +210,17 @@ def fill_missing_indices(data_dir="."): 'points': view['points'], 'filename': view['filename'] }) - log(f" Calibrated {view['filename']}: {len(common_indices)} control points") + + # Extract timestamp from filename (e.g., "led_map_2d_20251128-133730.csv" -> "20251128-133730") + timestamp = Path(view['filename']).stem.split('_')[-1] + + # Extract camera pose + C, yaw, pitch, roll, dist = extract_camera_pose(P) + if C is not None: + pose_str = f"yaw={yaw:+6.1f}° pitch={pitch:+6.1f}° roll={roll:+6.1f}° dist={dist:6.2f}" + log(f" {timestamp}: {len(common_indices)} pts, {pose_str}") + else: + log(f" {timestamp}: {len(common_indices)} points") log(f"Step 2: Successfully calibrated {len(valid_cameras)} / {len(views)} views using DLT\n") From d59562d48bf40f34ea02183526c029127feefa6d Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 29 Nov 2025 11:21:28 -0500 Subject: [PATCH 08/27] improve the relative camera estimated logs, use azimuth + elevaishe --- .../scripts/basic_photogrammetry_solver.py | 69 +++++++++++-------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index 51b075f..213af19 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -4,17 +4,24 @@ import os import pandas as pd import click -import math -from scipy.linalg import rq from pathlib import Path log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) -def extract_camera_pose(P): +def extract_camera_info(P, com): """ - Extract camera center and orientation from projection matrix P (3x4). - Returns: (camera_center, yaw_deg, pitch_deg, roll_deg, distance_from_origin) + Extract camera position and orientation relative to subject COM. + + Args: + P: 3x4 projection matrix + com: 3D center of mass of the LED points + + Returns: + (azimuth_deg, elevation_deg, distance) + - azimuth: angle in XY plane around Z axis (degrees, 0=+Y, 90=+X, etc.) + - elevation: angle down from horizontal (degrees, 0=horiz, -90=down, 90=up) + - distance: 3D distance from COM to camera """ try: M = P[:, :3] @@ -23,24 +30,28 @@ def extract_camera_pose(P): # Extract camera center: C = -M^(-1) * p4 M_inv = np.linalg.inv(M) C = -M_inv @ p4 - distance = np.linalg.norm(C) - - # Extract rotation via RQ decomposition - R, K = rq(M) - # Make sure R is a proper rotation matrix (det = 1) - if np.linalg.det(R) < 0: - R = -R - K = -K - - # Extract Euler angles (ZYX order: yaw, pitch, roll) - # From rotation matrix to angles - yaw = math.atan2(R[1, 0], R[0, 0]) * 180 / math.pi - pitch = math.asin(-np.clip(R[2, 0], -1, 1)) * 180 / math.pi - roll = math.atan2(R[2, 1], R[2, 2]) * 180 / math.pi - - return C, yaw, pitch, roll, distance + + # Vector from subject COM to camera + cam_rel = C - com + distance = np.linalg.norm(cam_rel) + + if distance < 1e-6: + return None, None, None + + # Normalize direction vector + cam_dir = cam_rel / distance + + # Azimuth: angle in XY plane (assuming Z is up) + # atan2(x, y) gives angle from Y axis, 0 = +Y, 90 = +X + azimuth = np.degrees(np.arctan2(cam_dir[0], cam_dir[1])) + + # Elevation: angle below horizontal plane + # 0 = horizontal, -90 = straight down, 90 = straight up + elevation = -np.degrees(np.arcsin(np.clip(cam_dir[2], -1, 1))) + + return azimuth, elevation, distance except Exception: - return None, None, None, None, None + return None, None, None # --- MATHS HELPERS --- @@ -183,6 +194,10 @@ def fill_missing_indices(data_dir="."): map_3d = load_3d_map("led_map_3d.csv") views = load_all_2d_files() + # Compute center of mass of 3D points (subject position) + positions = np.array([map_3d[idx]['pos'] for idx in sorted(map_3d.keys())]) + com = np.mean(positions, axis=0) + # 2. Estimate Cameras (Projection Matrices using DLT + SVD) # We define a "Camera" for each 2D file valid_cameras = [] @@ -214,11 +229,11 @@ def fill_missing_indices(data_dir="."): # Extract timestamp from filename (e.g., "led_map_2d_20251128-133730.csv" -> "20251128-133730") timestamp = Path(view['filename']).stem.split('_')[-1] - # Extract camera pose - C, yaw, pitch, roll, dist = extract_camera_pose(P) - if C is not None: - pose_str = f"yaw={yaw:+6.1f}° pitch={pitch:+6.1f}° roll={roll:+6.1f}° dist={dist:6.2f}" - log(f" {timestamp}: {len(common_indices)} pts, {pose_str}") + # Extract camera position relative to subject COM + azimuth, elevation, distance = extract_camera_info(P, com) + if azimuth is not None: + info_str = f"azim={azimuth:+7.1f}° elev={elevation:+6.1f}° dist={distance:6.2f}" + log(f" {timestamp}: {len(common_indices)} pts, {info_str}") else: log(f" {timestamp}: {len(common_indices)} points") From 7b11d701e2bdea1021070d88225270f4b148bd1e Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Mon, 1 Dec 2025 12:42:56 -0500 Subject: [PATCH 09/27] Burn more forests using more AI for improved math --- .gitignore | 5 +- .../scripts/basic_photogrammetry_solver.py | 909 ++++++++++++++---- marimapper/scripts/results.py | 73 -- marimapper/scripts/results_cli.py | 57 +- 4 files changed, 763 insertions(+), 281 deletions(-) delete mode 100644 marimapper/scripts/results.py diff --git a/.gitignore b/.gitignore index 2ba71cc..01c964b 100644 --- a/.gitignore +++ b/.gitignore @@ -163,4 +163,7 @@ cython_debug/ .idea/ # uv is referenced, but not primary package management system -uv.lock \ No newline at end of file +uv.lock + +# Mac Spotlight +.DS_Store \ No newline at end of file diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index 213af19..f71934c 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -1,3 +1,11 @@ +#!/usr/bin/env python3 +""" +Marimapper results summary and gap fill script + +Uses DLT with Hartley normalization for camera calibration, +RANSAC for outlier rejection, and quality-checked triangulation. +""" + import glob import sys import numpy as np @@ -5,120 +13,540 @@ import pandas as pd import click from pathlib import Path +from dataclasses import dataclass +from typing import Optional log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) -def extract_camera_info(P, com): +# --- DATA STRUCTURES --- + +@dataclass +class CameraInfo: + """Stores calibrated camera data with quality metrics.""" + P: np.ndarray # 3x4 projection matrix + points: dict # {index: (u, v)} + filename: str + reprojection_error: float # RMS reprojection error + inlier_count: int # Number of inliers used + center: Optional[np.ndarray] # Camera center in world coords + azimuth: Optional[float] # Degrees + elevation: Optional[float] # Degrees + distance: Optional[float] # Distance to COM + + +# --- NORMALIZATION (Critical for DLT stability) --- + +def normalize_2d_points(points): """ - Extract camera position and orientation relative to subject COM. + Hartley normalization for 2D points. + Translates centroid to origin, scales so RMS distance from origin is sqrt(2). + + Returns: (normalized_points, 3x3 transformation matrix T) + """ + points = np.asarray(points) + centroid = np.mean(points, axis=0) + centered = points - centroid + + rms_dist = np.sqrt(np.mean(np.sum(centered**2, axis=1))) + if rms_dist < 1e-10: + rms_dist = 1.0 + + scale = np.sqrt(2) / rms_dist + + T = np.array([ + [scale, 0, -scale * centroid[0]], + [0, scale, -scale * centroid[1]], + [0, 0, 1] + ]) + + normalized = centered * scale + return normalized, T + +def normalize_3d_points(points): + """ + Hartley normalization for 3D points. + Translates centroid to origin, scales so RMS distance from origin is sqrt(3). + + Returns: (normalized_points, 4x4 transformation matrix U) + """ + points = np.asarray(points) + centroid = np.mean(points, axis=0) + centered = points - centroid + + rms_dist = np.sqrt(np.mean(np.sum(centered**2, axis=1))) + if rms_dist < 1e-10: + rms_dist = 1.0 + + scale = np.sqrt(3) / rms_dist + + U = np.array([ + [scale, 0, 0, -scale * centroid[0]], + [0, scale, 0, -scale * centroid[1]], + [0, 0, scale, -scale * centroid[2]], + [0, 0, 0, 1] + ]) + + normalized = centered * scale + return normalized, U + + +# --- CAMERA CALIBRATION --- + +def compute_projection_matrix_normalized(obj_points, img_points): + """ + Computes 3x4 projection matrix using DLT with Hartley normalization. + Much more numerically stable than raw DLT. + + Returns: P matrix in original coordinates, or None if failed + """ + if len(obj_points) < 6: + return None + + obj_points = np.asarray(obj_points) + img_points = np.asarray(img_points) + + # Normalize both point sets + img_norm, T = normalize_2d_points(img_points) + obj_norm, U = normalize_3d_points(obj_points) + + # Build DLT matrix with normalized coordinates + A = [] + for i in range(len(obj_points)): + X, Y, Z = obj_norm[i] + u, v = img_norm[i] + A.append([X, Y, Z, 1, 0, 0, 0, 0, -u*X, -u*Y, -u*Z, -u]) + A.append([0, 0, 0, 0, X, Y, Z, 1, -v*X, -v*Y, -v*Z, -v]) + + A = np.array(A) + + try: + _, S, Vh = np.linalg.svd(A) + + # Check conditioning - ratio of largest to smallest singular value + # If too large, the solution is unreliable + if S[-1] < 1e-10 or S[0] / S[-1] > 1e10: + return None + + P_norm = Vh[-1].reshape(3, 4) + + # Denormalize: P = T^(-1) @ P_norm @ U + T_inv = np.linalg.inv(T) + P = T_inv @ P_norm @ U + + # Normalize so ||P[2,:3]|| = 1 (makes depth computation consistent) + scale = np.linalg.norm(P[2, :3]) + if scale < 1e-10: + return None + P = P / scale + + # Ensure positive depth for the centroid of object points + centroid_3d = np.mean(obj_points, axis=0) + depth = P[2] @ np.append(centroid_3d, 1) + if depth < 0: + P = -P # Flip sign to get positive depth + + return P + + except np.linalg.LinAlgError: + return None + + +def compute_reprojection_error(P, obj_points, img_points): + """ + Compute RMS reprojection error for a projection matrix. + + Returns: (rms_error, individual_errors) + """ + obj_points = np.asarray(obj_points) + img_points = np.asarray(img_points) + + errors = [] + for obj, img in zip(obj_points, img_points): + proj = P @ np.append(obj, 1) + if abs(proj[2]) < 1e-10: + errors.append(float('inf')) + continue + + proj_2d = proj[:2] / proj[2] + error = np.linalg.norm(proj_2d - img) + errors.append(error) + + errors = np.array(errors) + rms = np.sqrt(np.mean(errors**2)) + return rms, errors + + +def calibrate_camera_ransac(obj_points, img_points, + n_iterations=500, + inlier_threshold=5.0, + min_inliers=8): + """ + RANSAC-based camera calibration for robustness to outliers. + Args: - P: 3x4 projection matrix - com: 3D center of mass of the LED points + obj_points: List of 3D points + img_points: List of corresponding 2D points + n_iterations: Number of RANSAC iterations + inlier_threshold: Max reprojection error (pixels) to be considered inlier + min_inliers: Minimum inliers required for valid model + + Returns: (best_P, inlier_mask) or (None, None) + """ + obj_points = np.asarray(obj_points) + img_points = np.asarray(img_points) + n_points = len(obj_points) + + if n_points < 6: + return None, None + + best_P = None + best_inliers = None + best_inlier_count = 0 + + # Minimum sample size for DLT + sample_size = 6 + + for _ in range(n_iterations): + # Random sample + indices = np.random.choice(n_points, sample_size, replace=False) + + P = compute_projection_matrix_normalized( + obj_points[indices], + img_points[indices] + ) + + if P is None: + continue + + # Evaluate on all points + _, errors = compute_reprojection_error(P, obj_points, img_points) + inliers = errors < inlier_threshold + inlier_count = np.sum(inliers) + + if inlier_count > best_inlier_count: + best_inlier_count = inlier_count + best_inliers = inliers + best_P = P + + if best_inlier_count < min_inliers: + return None, None + + # Refine using all inliers + refined_P = compute_projection_matrix_normalized( + obj_points[best_inliers], + img_points[best_inliers] + ) + + if refined_P is not None: + return refined_P, best_inliers + + return best_P, best_inliers - Returns: - (azimuth_deg, elevation_deg, distance) - - azimuth: angle in XY plane around Z axis (degrees, 0=+Y, 90=+X, etc.) - - elevation: angle down from horizontal (degrees, 0=horiz, -90=down, 90=up) - - distance: 3D distance from COM to camera + +# --- CAMERA POSE EXTRACTION --- + +def extract_camera_info(P, com): + """ + Extract camera position and orientation relative to subject COM. + + Returns: (azimuth_deg, elevation_deg, distance, camera_center) """ try: M = P[:, :3] p4 = P[:, 3] - - # Extract camera center: C = -M^(-1) * p4 + + # Camera center: C = -M^(-1) * p4 + det = np.linalg.det(M) + if abs(det) < 1e-10: + return None, None, None, None + M_inv = np.linalg.inv(M) C = -M_inv @ p4 - + # Vector from subject COM to camera cam_rel = C - com distance = np.linalg.norm(cam_rel) - + if distance < 1e-6: - return None, None, None - - # Normalize direction vector + return None, None, None, C + cam_dir = cam_rel / distance - - # Azimuth: angle in XY plane (assuming Z is up) - # atan2(x, y) gives angle from Y axis, 0 = +Y, 90 = +X + + # Azimuth: angle in XY plane from +Y axis azimuth = np.degrees(np.arctan2(cam_dir[0], cam_dir[1])) - - # Elevation: angle below horizontal plane - # 0 = horizontal, -90 = straight down, 90 = straight up - elevation = -np.degrees(np.arcsin(np.clip(cam_dir[2], -1, 1))) - - return azimuth, elevation, distance + + # Elevation: angle from horizontal (positive = up) + elevation = np.degrees(np.arcsin(np.clip(cam_dir[2], -1, 1))) + + return azimuth, elevation, distance, C + except Exception: - return None, None, None + return None, None, None, None -# --- MATHS HELPERS --- +# --- TRIANGULATION WITH FALLBACKS --- -def compute_projection_matrix(obj_points, img_points): +def triangulate_point_dlt(cameras, detections): """ - Computes the 3x4 Camera Projection Matrix (P) using Direct Linear Transform (DLT). - Maps 3D world coords -> 2D image coords. - Requires at least 6 common points. + Triangulates a single 3D point using DLT (SVD-based). + + Returns: 3D point or None """ - if len(obj_points) < 6: + if len(cameras) < 2: return None - - # Construct the DLT matrix A + A = [] - for i in range(len(obj_points)): - X, Y, Z = obj_points[i] - u, v = img_points[i] - # Two equations per point - A.append([X, Y, Z, 1, 0, 0, 0, 0, -u*X, -u*Y, -u*Z, -u]) - A.append([0, 0, 0, 0, X, Y, Z, 1, -v*X, -v*Y, -v*Z, -v]) + for P, (u, v) in zip(cameras, detections): + A.append(u * P[2] - P[0]) + A.append(v * P[2] - P[1]) A = np.array(A) - # Solve A*p = 0 using SVD - U, S, Vh = np.linalg.svd(A) - L = Vh[-1] # The last row of Vh is the solution - # Reshape into 3x4 projection matrix - P = L.reshape(3, 4) - return P + try: + _, S, Vh = np.linalg.svd(A) + + # Check if solution is well-conditioned + if S[-1] < 1e-10: + return None + + X_homogeneous = Vh[-1] + + if abs(X_homogeneous[3]) < 1e-10: + return None + + X_cartesian = X_homogeneous[:3] / X_homogeneous[3] + return X_cartesian + + except np.linalg.LinAlgError: + return None + + +def compute_reprojection_errors(point_3d, cameras, detections): + """Compute reprojection errors for a 3D point across all views.""" + errors = [] + depths = [] + for P, (u, v) in zip(cameras, detections): + proj = P @ np.append(point_3d, 1) + depths.append(proj[2]) + if abs(proj[2]) < 1e-10: + errors.append(float('inf')) + else: + proj_2d = proj[:2] / proj[2] + errors.append(np.linalg.norm(proj_2d - np.array([u, v]))) + return errors, depths + + +def compute_ray_angle(point_3d, cam_infos): + """Compute maximum angle between camera rays to a 3D point.""" + centers = [c.center for c in cam_infos if c.center is not None] + if len(centers) < 2: + return 180.0 # Assume good if we can't compute + + rays = [] + for c in centers: + ray = point_3d - c + norm = np.linalg.norm(ray) + if norm > 1e-6: + rays.append(ray / norm) + + if len(rays) < 2: + return 180.0 + + max_angle = 0 + for i in range(len(rays)): + for j in range(i + 1, len(rays)): + cos_angle = np.clip(np.dot(rays[i], rays[j]), -1, 1) + angle = np.degrees(np.arccos(cos_angle)) + max_angle = max(max_angle, angle) + + return max_angle + -def triangulate_point(cameras, detections): +def backproject_with_depth_estimate(cam_info, detection, reference_depth): """ - Triangulates a single 3D point given n cameras and n 2D detections. - cameras: list of 3x4 Projection Matrices - detections: list of (u, v) tuples + Back-project a 2D point using estimated depth from nearby known points. + + This is a fallback when triangulation fails - uses single view + depth guess. + Less accurate but always produces a result. + + Args: + cam_info: CameraInfo with projection matrix P + detection: (u, v) pixel coordinates + reference_depth: Estimated depth from known nearby points + + Returns: 3D point estimate """ - if len(cameras) < 2: - return None # Need at least 2 views to intersect rays + P = cam_info.P + u, v = detection + + # P = [M | p4], we need to invert the projection + # For a point at depth d along the ray: X = C + d * ray_direction + M = P[:, :3] + p4 = P[:, 3] + + try: + M_inv = np.linalg.inv(M) + C = -M_inv @ p4 # Camera center + + # Ray direction: M^(-1) @ [u, v, 1]^T (unnormalized) + ray = M_inv @ np.array([u, v, 1]) + ray_norm = np.linalg.norm(ray) + if ray_norm < 1e-10: + return None + ray = ray / ray_norm + + # Project along ray to estimated depth + point_3d = C + reference_depth * ray + return point_3d + + except np.linalg.LinAlgError: + return None - # Construct system A*X = 0 - A = [] - for P, (u, v) in zip(cameras, detections): - # P[0], P[1], P[2] are the rows of P - # u * P_2 * X = P_0 * X => (u*P_2 - P_0) * X = 0 - A.append(u * P[2] - P[0]) - # v * P_2 * X = P_1 * X => (v*P_2 - P_1) * X = 0 - A.append(v * P[2] - P[1]) + +@dataclass +class TriangulationResult: + """Result of triangulation attempt with metadata.""" + point: Optional[np.ndarray] + method: str + quality: float # Lower is better, -1 for interpolated + num_views: int + confidence: str # "high", "medium", "low", "fallback" + + +def triangulate_with_fallbacks(idx, cameras, detections, cam_infos, + known_data, com, + strict_reproj=10.0, + relaxed_reproj=50.0, + strict_ray_angle=2.0, + relaxed_ray_angle=0.5): + """ + Triangulate a point with cascading fallback strategies. + + Cascade order: + 1. Strict triangulation (tight reprojection + ray angle thresholds) + 2. Relaxed triangulation (looser thresholds) + 3. Best-effort triangulation (any result with positive depth) + 4. Single-view backprojection with depth estimate + 5. Linear interpolation (always succeeds) + + Returns: TriangulationResult (always contains a valid point) + """ + num_views = len(cameras) + + # === TIER 1: Strict quality triangulation === + if num_views >= 2: + point_3d = triangulate_point_dlt(cameras, detections) - A = np.array(A) + if point_3d is not None: + errors, depths = compute_reprojection_errors(point_3d, cameras, detections) + ray_angle = compute_ray_angle(point_3d, cam_infos) + + all_positive_depth = all(d > 0 for d in depths) + max_error = max(errors) + mean_error = np.mean(errors) + + # Tier 1: Strict thresholds + if all_positive_depth and max_error < strict_reproj and ray_angle > strict_ray_angle: + return TriangulationResult( + point=point_3d, + method="Triangulated (strict)", + quality=mean_error, + num_views=num_views, + confidence="high" + ) + + # === TIER 2: Relaxed thresholds === + if all_positive_depth and max_error < relaxed_reproj and ray_angle > relaxed_ray_angle: + return TriangulationResult( + point=point_3d, + method="Triangulated (relaxed)", + quality=mean_error, + num_views=num_views, + confidence="medium" + ) + + # === TIER 3: Best-effort (just need positive depth and bounded error) === + if all_positive_depth and max_error < 200.0: + return TriangulationResult( + point=point_3d, + method="Triangulated (best-effort)", + quality=mean_error, + num_views=num_views, + confidence="low" + ) + + # Check if flipping helps (camera behind subject issue) + if not all_positive_depth: + point_flipped = -point_3d + errors_f, depths_f = compute_reprojection_errors(point_flipped, cameras, detections) + if all(d > 0 for d in depths_f) and max(errors_f) < relaxed_reproj: + return TriangulationResult( + point=point_flipped, + method="Triangulated (flipped)", + quality=np.mean(errors_f), + num_views=num_views, + confidence="low" + ) - # Solve using SVD - U, S, Vh = np.linalg.svd(A) - X_homogeneous = Vh[-1] + # === TIER 4: Single-view backprojection === + if num_views >= 1: + # Estimate depth from nearby known points + nearby_depths = [] + for known_idx, data in known_data.items(): + if abs(known_idx - idx) <= 10: # Within 10 indices + # Compute depth of known point from first camera + P = cam_infos[0].P + proj = P @ np.append(data['pos'], 1) + if proj[2] > 0: + nearby_depths.append(proj[2]) + + if not nearby_depths: + # Use distance to COM as fallback depth estimate + if cam_infos[0].distance is not None: + reference_depth = cam_infos[0].distance + else: + reference_depth = np.linalg.norm(com) + else: + reference_depth = np.median(nearby_depths) + + # Try backprojection from camera with best view + for cam, det in zip(cam_infos, detections): + point_3d = backproject_with_depth_estimate(cam, det, reference_depth) + if point_3d is not None: + # Sanity check: point should be reasonably close to known points + distances_to_known = [np.linalg.norm(point_3d - known_data[k]['pos']) + for k in known_data.keys()] + if min(distances_to_known) < reference_depth * 2: # Within 2x expected range + return TriangulationResult( + point=point_3d, + method="Backprojected", + quality=-1.0, + num_views=1, + confidence="low" + ) + + # === TIER 5: Linear interpolation (always succeeds) === + interp_pos, _ = interpolate_linear(idx, known_data) - # Convert from Homogeneous (X,Y,Z,W) to Cartesian (X/W, Y/W, Z/W) - X_cartesian = X_homogeneous[:3] / X_homogeneous[3] - return X_cartesian + return TriangulationResult( + point=interp_pos, + method="Interpolated", + quality=-1.0, + num_views=0, + confidence="fallback" + ) + # --- STANDARD LOADERS --- def load_3d_map(filename): - """Load 3D map from CSV using pandas.""" + """Load 3D map from CSV.""" if not os.path.exists(filename): log(f"Error: {filename} not found.", fg='red') sys.exit(1) - + df = pd.read_csv(filename) data = {} for _, row in df.iterrows(): @@ -130,11 +558,12 @@ def load_3d_map(filename): } return data -def load_all_2d_files(): - """Load all 2D detection files using pandas.""" - files = glob.glob("./led_map_2d_*.csv") - views = [] # List of dicts: [{'filename': str, 'points': {index: (u,v)}}] +def load_all_2d_files(): + """Load all 2D detection files.""" + files = sorted(glob.glob("./led_map_2d_*.csv")) + views = [] + for fname in files: df = pd.read_csv(fname) view_data = {} @@ -142,189 +571,268 @@ def load_all_2d_files(): idx = int(row['index']) view_data[idx] = (float(row['u']), float(row['v'])) views.append({'filename': fname, 'points': view_data}) - + return views + def interpolate_linear(idx, known_data): """Fallback: Linear interpolation for normals or failed triangulation.""" keys = sorted(known_data.keys()) - if idx in keys: return known_data[idx]['pos'], known_data[idx]['norm'] - + if idx in keys: + return known_data[idx]['pos'], known_data[idx]['norm'] + prev_k = next((k for k in reversed(keys) if k < idx), None) next_k = next((k for k in keys if k > idx), None) - - pos, norm = np.array([0.,0.,0.]), np.array([0.,0.,1.]) + + pos = np.array([0., 0., 0.]) + norm = np.array([0., 0., 1.]) if prev_k is not None and next_k is not None: alpha = (idx - prev_k) / (next_k - prev_k) p1, n1 = known_data[prev_k]['pos'], known_data[prev_k]['norm'] p2, n2 = known_data[next_k]['pos'], known_data[next_k]['norm'] - pos = (1-alpha)*p1 + alpha*p2 - norm = (1-alpha)*n1 + alpha*n2 + pos = (1 - alpha) * p1 + alpha * p2 + norm = (1 - alpha) * n1 + alpha * n2 elif prev_k is not None: pos, norm = known_data[prev_k]['pos'], known_data[prev_k]['norm'] elif next_k is not None: pos, norm = known_data[next_k]['pos'], known_data[next_k]['norm'] - - return pos, norm / (np.linalg.norm(norm) + 1e-9) + + norm_len = np.linalg.norm(norm) + if norm_len > 1e-9: + norm = norm / norm_len + + return pos, norm + # --- MAIN EXECUTION --- -def fill_missing_indices(data_dir="."): +def fill_missing_indices(data_dir=".", + ransac_iterations=500, + ransac_threshold=5.0, + min_calibration_points=8, + triangulation_reproj_threshold=10.0, + min_ray_angle=2.0): """ Fills in missing LED indices using photogrammetric reconstruction. - - Uses DLT (Direct Linear Transform) to estimate camera projection matrices - from known calibration points, then SVD-based triangulation to reconstruct - missing 3D positions. Falls back to linear interpolation for points with - insufficient view coverage. - + + Improvements over basic implementation: + - Hartley normalization for numerical stability + - RANSAC for outlier rejection during camera calibration + - Quality-checked triangulation with ray angle validation + - Reprojection error reporting + Args: - data_dir: Directory containing led_map_3d.csv and led_map_2d_*.csv files - + data_dir: Directory containing led_map_3d.csv and led_map_2d_*.csv + ransac_iterations: Number of RANSAC iterations for camera calibration + ransac_threshold: Reprojection error threshold (pixels) for RANSAC inliers + min_calibration_points: Minimum points needed for camera calibration + triangulation_reproj_threshold: Max reprojection error for triangulated points + min_ray_angle: Minimum angle (degrees) between rays for valid triangulation + Returns: dict: Final map with all indices, or None if processing failed """ - import os old_cwd = os.getcwd() try: os.chdir(data_dir) - + # 1. Load Data map_3d = load_3d_map("led_map_3d.csv") views = load_all_2d_files() - - # Compute center of mass of 3D points (subject position) + + if not views: + log("Error: No 2D view files found.", fg='red') + return None + + # Compute center of mass positions = np.array([map_3d[idx]['pos'] for idx in sorted(map_3d.keys())]) com = np.mean(positions, axis=0) - - # 2. Estimate Cameras (Projection Matrices using DLT + SVD) - # We define a "Camera" for each 2D file - valid_cameras = [] - - log(f"Step 1: Estimating camera poses using DLT for {len(views)} views...") - + + log(f"Loaded {len(map_3d)} known 3D points, COM at [{com[0]:.2f}, {com[1]:.2f}, {com[2]:.2f}]") + log(f"Found {len(views)} 2D view files\n") + + # 2. Calibrate cameras with RANSAC + log(f"Step 1: Camera calibration (RANSAC, {ransac_iterations} iterations, {ransac_threshold}px threshold)") + log("-" * 80) + + calibrated_cameras = [] + for view in views: - # Find common points between this 2D view and the known 3D map common_indices = set(view['points'].keys()).intersection(set(map_3d.keys())) - - if len(common_indices) < 8: # DLT needs 6, but 8+ is safer for noise - log(f" Skipped {view['filename']}: only {len(common_indices)} common points (need 8+)") + + if len(common_indices) < min_calibration_points: + log(f" {Path(view['filename']).name}: SKIPPED ({len(common_indices)} pts < {min_calibration_points} required)") continue - - obj_pts = [] - img_pts = [] - for idx in common_indices: - obj_pts.append(map_3d[idx]['pos']) - img_pts.append(view['points'][idx]) - - P = compute_projection_matrix(obj_pts, img_pts) - if P is not None: - valid_cameras.append({ - 'P': P, - 'points': view['points'], - 'filename': view['filename'] - }) - - # Extract timestamp from filename (e.g., "led_map_2d_20251128-133730.csv" -> "20251128-133730") - timestamp = Path(view['filename']).stem.split('_')[-1] - - # Extract camera position relative to subject COM - azimuth, elevation, distance = extract_camera_info(P, com) - if azimuth is not None: - info_str = f"azim={azimuth:+7.1f}° elev={elevation:+6.1f}° dist={distance:6.2f}" - log(f" {timestamp}: {len(common_indices)} pts, {info_str}") - else: - log(f" {timestamp}: {len(common_indices)} points") - - log(f"Step 2: Successfully calibrated {len(valid_cameras)} / {len(views)} views using DLT\n") - - # 3. Identify Missing Pixels - # We want to check ranges. Let's assume the max index in 2D files is the strip length + + obj_pts = np.array([map_3d[idx]['pos'] for idx in common_indices]) + img_pts = np.array([view['points'][idx] for idx in common_indices]) + + P, inlier_mask = calibrate_camera_ransac( + obj_pts, img_pts, + n_iterations=ransac_iterations, + inlier_threshold=ransac_threshold, + min_inliers=min_calibration_points + ) + + if P is None: + log(f" {Path(view['filename']).name}: FAILED (RANSAC found no good model)") + continue + + # Compute final reprojection error on inliers + inlier_obj = obj_pts[inlier_mask] + inlier_img = img_pts[inlier_mask] + rms_error, _ = compute_reprojection_error(P, inlier_obj, inlier_img) + + # Extract camera pose + azimuth, elevation, distance, center = extract_camera_info(P, com) + + cam_info = CameraInfo( + P=P, + points=view['points'], + filename=view['filename'], + reprojection_error=rms_error, + inlier_count=int(np.sum(inlier_mask)), + center=center, + azimuth=azimuth, + elevation=elevation, + distance=distance + ) + calibrated_cameras.append(cam_info) + + # Log result + timestamp = Path(view['filename']).stem.split('_')[-1] + pose_str = "" + if azimuth is not None: + pose_str = f"az={azimuth:+6.1f}° el={elevation:+5.1f}° d={distance:.2f}" + + log(f" {timestamp}: {cam_info.inlier_count}/{len(common_indices)} inliers, " + f"RMS={rms_error:.2f}px, {pose_str}") + + log(f"\nStep 2: Calibrated {len(calibrated_cameras)}/{len(views)} cameras\n") + + if len(calibrated_cameras) < 2: + log("Error: Need at least 2 calibrated cameras for triangulation.", fg='red') + return None + + # 3. Identify missing indices all_2d_indices = set() for v in views: all_2d_indices.update(v['points'].keys()) - + missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) - - log(f"Step 3: Reconstructing {len(missing_indices)} missing pixels using SVD triangulation\n") - + log(f"Step 3: Reconstructing {len(missing_indices)} missing points") + log("-" * 80) + final_map = map_3d.copy() - - # Track reconstruction outcomes - triangulated_count = 0 - interpolated_insufficient_count = 0 - interpolated_failed_count = 0 + + # Track outcomes by confidence level + stats = { + 'high': 0, + 'medium': 0, + 'low': 0, + 'fallback': 0 + } + method_counts = {} reconstruction_table = [] - + for idx in missing_indices: - # Gather all cameras that saw this missing index - participating_cameras = [] + # Gather cameras that see this point + participating_cams = [] participating_detections = [] - - for cam in valid_cameras: - if idx in cam['points']: - participating_cameras.append(cam['P']) - participating_detections.append(cam['points'][idx]) - - method = "FAILED" - result_pos = None - - # Try Triangulation first (SVD-based) - if len(participating_cameras) >= 2: - result_pos = triangulate_point(participating_cameras, participating_detections) - if result_pos is not None: - method = "Triangulated (SVD)" - triangulated_count += 1 - else: - # Triangulation failed despite having enough views - method = "Interpolated (SVD failed)" - interpolated_failed_count += 1 - result_pos, _ = interpolate_linear(idx, final_map) - else: - # Not enough views for triangulation - method = "Interpolated (insufficient)" - interpolated_insufficient_count += 1 - result_pos, _ = interpolate_linear(idx, final_map) - - # For normals, triangulation doesn't help us (cameras don't see orientation easily). - # We assume standard linear flow for normals. + participating_infos = [] + + for cam in calibrated_cameras: + if idx in cam.points: + participating_cams.append(cam.P) + participating_detections.append(cam.points[idx]) + participating_infos.append(cam) + + # Use cascading fallback system + result = triangulate_with_fallbacks( + idx=idx, + cameras=participating_cams, + detections=participating_detections, + cam_infos=participating_infos, + known_data=final_map, + com=com, + strict_reproj=triangulation_reproj_threshold, + relaxed_reproj=triangulation_reproj_threshold * 5, + strict_ray_angle=min_ray_angle, + relaxed_ray_angle=min_ray_angle / 4 + ) + + # Track statistics + stats[result.confidence] += 1 + method_counts[result.method] = method_counts.get(result.method, 0) + 1 + + # Get interpolated normal (triangulation doesn't give us surface normals) _, interp_norm = interpolate_linear(idx, final_map) - - # Add to map + + # Store result final_map[idx] = { - 'pos': result_pos, + 'pos': result.point, 'norm': interp_norm, - 'error': -1.0 if "Interpolated" in method else 0.001 + 'error': result.quality if result.quality >= 0 else -1.0 } - - pos_str = f"[{result_pos[0]:.6f}, {result_pos[1]:.6f}, {result_pos[2]:.6f}]" - reconstruction_table.append([idx, method, len(participating_cameras), pos_str]) - - # Print reconstruction table using pandas + + pos_str = f"[{result.point[0]:.4f}, {result.point[1]:.4f}, {result.point[2]:.4f}]" + quality_str = f"{result.quality:.2f}" if result.quality >= 0 else "N/A" + reconstruction_table.append([ + idx, result.method, result.num_views, + result.confidence, quality_str, pos_str + ]) + + # Print reconstruction table if reconstruction_table: - df_table = pd.DataFrame(reconstruction_table, columns=["Index", "Method", "Views", "3D Position"]) + df_table = pd.DataFrame( + reconstruction_table, + columns=["Index", "Method", "Views", "Confidence", "Quality", "Position"] + ) log(df_table.to_string(index=False) + "\n") - - # Print summary - log("Reconstruction Summary:") - log(f" Triangulated (SVD): {triangulated_count}") - log(f" Interpolated (insufficient): {interpolated_insufficient_count}") - log(f" Interpolated (SVD failed): {interpolated_failed_count}") - log(f" Total pixels in final map: {len(final_map)}\n") - + + # Summary + log("Reconstruction Summary by Confidence:") + log(f" High (strict triangulation): {stats['high']}") + log(f" Medium (relaxed triangulation): {stats['medium']}") + log(f" Low (best-effort/backproject): {stats['low']}") + log(f" Fallback (interpolated): {stats['fallback']}") + log(f" Total points in final map: {len(final_map)}") + log("") + log("Methods used:") + for method, count in sorted(method_counts.items(), key=lambda x: -x[1]): + log(f" {method}: {count}") + log("") + return final_map - + finally: os.chdir(old_cwd) -def main(): - final_map = fill_missing_indices(".") +@click.command() +@click.option('--dir', '-d', default='.', help='Data directory') +@click.option('--ransac-iter', default=500, help='RANSAC iterations') +@click.option('--ransac-thresh', default=5.0, help='RANSAC inlier threshold (pixels)') +@click.option('--min-points', default=8, help='Min calibration points per camera') +@click.option('--reproj-thresh', default=10.0, help='Max reprojection error for triangulation') +@click.option('--min-angle', default=2.0, help='Min ray angle (degrees) for triangulation') +def main(dir, ransac_iter, ransac_thresh, min_points, reproj_thresh, min_angle): + """Fill missing LED indices using photogrammetric reconstruction.""" + + final_map = fill_missing_indices( + data_dir=dir, + ransac_iterations=ransac_iter, + ransac_threshold=ransac_thresh, + min_calibration_points=min_points, + triangulation_reproj_threshold=reproj_thresh, + min_ray_angle=min_angle + ) + if final_map is None: sys.exit(1) - - # 4. Output to stdout using pandas + + # Output CSV to stdout rows = [] for idx in sorted(final_map.keys()): d = final_map[idx] @@ -338,9 +846,10 @@ def main(): 'zn': f"{d['norm'][2]:.6f}", 'error': f"{d['error']:.6f}" }) - + df = pd.DataFrame(rows) df.to_csv(sys.stdout, index=False) + if __name__ == "__main__": main() \ No newline at end of file diff --git a/marimapper/scripts/results.py b/marimapper/scripts/results.py deleted file mode 100644 index fd16400..0000000 --- a/marimapper/scripts/results.py +++ /dev/null @@ -1,73 +0,0 @@ -import glob -import csv -import sys -import os - -def log(msg): - sys.stderr.write(msg + "\n") - -def load_3d_map(filename): - data = {} - with open(filename, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - data[int(row['index'])] = row - return data - -def scan_2d_indices(): - files = glob.glob("./led_map_2d_*.csv") - detection_log = {} - - for fname in files: - with open(fname, 'r') as f: - reader = csv.DictReader(f) - for row in reader: - if 'index' in row: - idx = int(row['index']) - if idx not in detection_log: - detection_log[idx] = [] - detection_log[idx].append(os.path.basename(fname)) - - return detection_log, files - -def main(): - map_file = "led_map_3d.csv" - - map_data = load_3d_map(map_file) - data_2d_log, files_2d = scan_2d_indices() - - all_2d_indices = set(data_2d_log.keys()) - existing_3d_indices = set(map_data.keys()) - - # Identify Missing - missing_indices = sorted(list(all_2d_indices - existing_3d_indices)) - - log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") - log(f"3D Indices Mapped: {len(existing_3d_indices)}") - - if not missing_indices: - log("Status: COMPLETE") - else: - log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") - log("-" * 40) - log(f"{'Index':<8} | {'# Views':<8}") - log("-" * 40) - for idx in missing_indices: - count = len(data_2d_log[idx]) - log(f"{idx:<8} | {count:<8}") - log("-" * 40) - - # 4. Output Final 3D List to Stdout - if map_data: - # Get fieldnames from the first entry - first_key = next(iter(map_data)) - fieldnames = list(map_data[first_key].keys()) - - writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) - writer.writeheader() - - for idx in sorted(map_data.keys()): - writer.writerow(map_data[idx]) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index af3ba89..42917cb 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -58,22 +58,58 @@ def normalize_map_for_csv(final_map): @click.command() @click.option( - '--dir', + '--dir', '-d', default='.', type=click.Path(exists=True, file_okay=False, dir_okay=True), help='Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)' ) @click.option( - '--fill', + '--fill', '-f', is_flag=True, - help='Fill in missing LED indices using photogrammetric reconstruction (DLT + SVD)' + help='Fill missing indices using photogrammetric reconstruction' ) -def main(dir, fill): +@click.option( + '--ransac-iter', '-n', + default=500, + type=int, + show_default=True, + help='RANSAC iterations for camera calibration' +) +@click.option( + '--ransac-thresh', '-t', + default=5.0, + type=float, + show_default=True, + help='RANSAC inlier threshold (pixels)' +) +@click.option( + '--min-calib-pts', '-p', + default=8, + type=int, + show_default=True, + help='Min calibration points per camera' +) +@click.option( + '--reproj-thresh', '-r', + default=10.0, + type=float, + show_default=True, + help='Max reprojection error for strict triangulation (pixels)' +) +@click.option( + '--min-angle', '-a', + default=2.0, + type=float, + show_default=True, + help='Min ray angle for strict triangulation (degrees)' +) +def main(dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, min_angle): """ - Process LED mapping results. + Summarize LED mapping results. Shows mapping status (2D detections vs 3D calibration). When --fill is used, - reconstructs missing 3D positions using photogrammetric methods. + reconstructs missing 3D positions using photogrammetric methods. Camera + positions and orientations are also estimated and summarized. Outputs final 3D mapping as CSV to stdout (all logging goes to stderr). """ @@ -124,7 +160,14 @@ def main(dir, fill): if fill: # Run photogrammetric reconstruction log("Running photogrammetric reconstruction...\n") - final_map = fill_missing_indices(".") + final_map = fill_missing_indices( + data_dir=".", + ransac_iterations=ransac_iter, + ransac_threshold=ransac_thresh, + min_calibration_points=min_calib_pts, + triangulation_reproj_threshold=reproj_thresh, + min_ray_angle=min_angle + ) if final_map is None: log("Error: Photogrammetric reconstruction failed", fg='red') sys.exit(1) From 45acc5a6ef800db3e0562b0ed41a04e6257c2101 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 2 Dec 2025 12:12:49 -0500 Subject: [PATCH 10/27] Small doc addition --- marimapper/scripts/basic_photogrammetry_solver.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index f71934c..c6ad7cf 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -2,6 +2,8 @@ """ Marimapper results summary and gap fill script +Lighter weight than COLMAP, tries multiple best effort approaches +with fallback results. Uses DLT with Hartley normalization for camera calibration, RANSAC for outlier rejection, and quality-checked triangulation. """ From eec626e3d204c8688f4b1fc05e246c95019083e0 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 2 Dec 2025 12:13:13 -0500 Subject: [PATCH 11/27] Simplify pattern loading even more, impl set_leds() --- .../backends/pixelblaze/pixelblaze_backend.py | 62 +++++++++++++++++-- marimapper/backends/pixelblaze/rgb.js | 11 ++++ 2 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 marimapper/backends/pixelblaze/rgb.js diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index b2a194e..648cda7 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -11,8 +11,12 @@ from ipaddress import ip_address from functools import partial from pathlib import Path +from os import PathLike import argparse +MARIMAPPER_PATTERN = Path(__file__).parent / "marimapper.js" +RGB_PATTERN = Path(__file__).parent / "rgb.js" + logger = get_logger() @@ -25,6 +29,7 @@ def pixelblaze_backend_set_args(parser): class Backend: + _pattern_cache = {} # Class-level cache: source_code -> compiled bytecode def __init__(self, pixelblaze_ip: str): @@ -36,10 +41,10 @@ def __init__(self, pixelblaze_ip: str): ) self.pb = pixelblaze.Pixelblaze(pixelblaze_ip) - with open(Path(__file__).parent / "marimapper.js", 'r', encoding='utf-8-sig') as f: - source_code = f.read() - bytecode = self.pb.compilePattern(source_code) - self.pb.sendPatternToRenderer(bytecode) + try: + self.render_pattern(MARIMAPPER_PATTERN) + except Exception as err: + self.load_existing_pattern(MARIMAPPER_PATTERN.stem) def get_led_count(self): pixel_count = self.pb.getPixelCount() @@ -48,6 +53,26 @@ def get_led_count(self): def set_led(self, led_index: int, on: bool): self.pb.setActiveVariables({"pixel_to_light": led_index, "turn_on": on}) + + def set_leds(self, buffer: list[list[int]]): + """Set arbitrary pixel indices with RGB colors. Buffer format: [[index, r, g, b], ...]""" + self.render_pattern(RGB_PATTERN) + + if not buffer: + self.pb.setActiveVariables({"colors": []}) + return + + # Find the maximum index to size the array + max_index = max(entry[0] for entry in buffer) + colors = [None] * (max_index + 1) + + # Fill in the colors array, scaling 0-255 to 0-1 + for entry in buffer: + index, r, g, b = entry[0], entry[1], entry[2], entry[3] + colors[index] = [r / 255.0, g / 255.0, b / 255.0] + + # Send to pixelblaze + self.pb.setActiveVariables({"colors": colors}) def set_map_coordinates(self, pixelmap: list): result = self.pb.setMapCoordinates(pixelmap) @@ -55,5 +80,30 @@ def set_map_coordinates(self, pixelmap: list): raise RuntimeError("Pixelblaze Backend failed to upload map coordinates.") self.pb.wsSendJson({"mapperFit": 0}) - def set_current_map(self, pixelmap_name: str): - self.pb.setActivePatternByName(pixelmap_name) + def load_existing_pattern(self, pattern_name: str): + try: + self.pb.setActivePatternByName( + pattern_name + ) # Need to install marimapper.js to your pixelblaze + except TypeError as e: + if "'NoneType' has no len()" in str(e): + raise RuntimeError( + f"Pixelblaze may have failed to find the effect '{pattern_name}'. " + f"Have you uploaded {pattern_name}.epe to your controller?" + ) + else: + raise e + + def render_pattern(self, source_code: PathLike | str): + """Sets current PixelBlaze renderer to this pattern source code, compiles and uses caching.""" + with open(Path(source_code), 'r', encoding='utf-8-sig') as f: + source_code = f.read() + + # Check cache for compiled bytecode + if source_code in self._pattern_cache: + bytecode = self._pattern_cache[source_code] + else: + bytecode = self.pb.compilePattern(source_code) + self._pattern_cache[source_code] = bytecode + + self.pb.sendPatternToRenderer(bytecode) \ No newline at end of file diff --git a/marimapper/backends/pixelblaze/rgb.js b/marimapper/backends/pixelblaze/rgb.js new file mode 100644 index 0000000..a707ffd --- /dev/null +++ b/marimapper/backends/pixelblaze/rgb.js @@ -0,0 +1,11 @@ +// Color array indexed by pixel index: [r, g, b] or null for black +export var colors = [] + +export function render(index) { + var color = colors[index] + if (color) { + rgb(color[0], color[1], color[2]) + } else { + rgb(0, 0, 0) + } +} From 33953fd6bcbc3b3cc7025d9fe0ec708bf9931615 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Wed, 3 Dec 2025 13:39:48 -0500 Subject: [PATCH 12/27] big improvements: pixelblaze auto discover, fully fix set_leds() + mapping iterations --- .../backends/pixelblaze/pixelblaze_backend.py | 95 +++++++++++++++---- marimapper/backends/pixelblaze/rgb.js | 14 ++- .../pixelblaze/upload_map_to_pixelblaze.py | 2 +- 3 files changed, 89 insertions(+), 22 deletions(-) diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index 648cda7..4309055 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -1,4 +1,6 @@ from multiprocessing import get_logger +import time +import socket # see https://github.com/TheMariday/marimapper/issues/78 # why this is a UserWarning and not a DepreciationWarning is beyond me... @@ -20,18 +22,72 @@ logger = get_logger() +def check_pixelblaze_reachable(ip, timeout=0.5): + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout) + result = sock.connect_ex((ip, 81)) + sock.close() + return result == 0 + except: + return False + + +def discover_pixelblazes(timeout=3.0): + logger.info(f"Listening for PixelBlaze beacon packets ({timeout}s)...") + + enumerator = pixelblaze.PixelblazeEnumerator() + + time.sleep(timeout) + devices = enumerator.getPixelblazeList() + enumerator.stop() + + logger.info(f"Found {len(devices)} PixelBlaze(s)") + return devices + + def pixelblaze_backend_factory(argparse_args: argparse.Namespace): return partial(Backend, argparse_args.server) def pixelblaze_backend_set_args(parser): - parser.add_argument("--server", default="4.3.2.1") + parser.add_argument( + "--server", + default="auto", + help='IP address of PixelBlaze (default: "auto" - discovers first PixelBlaze on network)' + ) class Backend: _pattern_cache = {} # Class-level cache: source_code -> compiled bytecode + _last_rendered_pattern = "" def __init__(self, pixelblaze_ip: str): + self.pb = self.init_pixelblaze(pixelblaze_ip) + self.switch_to_mapper_pattern() + + def init_pixelblaze(self, pixelblaze_ip: str): + # Handle auto-discovery mode + if pixelblaze_ip.lower() == "auto": + logger.info("Auto-discovering PixelBlaze...") + + # First check Ad Hoc mode (fast) + logger.info("Checking for Ad Hoc mode (192.168.4.1)...") + if check_pixelblaze_reachable("192.168.4.1"): + pixelblaze_ip = "192.168.4.1" + logger.info("Found PixelBlaze in Ad Hoc mode at 192.168.4.1") + else: + # Try beacon scan on network + devices = discover_pixelblazes(timeout=3.0) + if devices: + first_device = devices[0] + pixelblaze_ip = first_device.get('address') if isinstance(first_device, dict) else str(first_device) + logger.info(f"Found PixelBlaze at {pixelblaze_ip}") + else: + logger.error("No PixelBlazes found. Specify IP with --server") + raise RuntimeError("No PixelBlazes found on network") + + logger.info(f"PixelBlaze server: {pixelblaze_ip}") try: ip_address(pixelblaze_ip) @@ -40,12 +96,14 @@ def __init__(self, pixelblaze_ip: str): f"Pixelblaze backend failed to start due as {pixelblaze_ip} is not a valid IP address" ) - self.pb = pixelblaze.Pixelblaze(pixelblaze_ip) + return pixelblaze.Pixelblaze(pixelblaze_ip) + + def switch_to_mapper_pattern(self): try: self.render_pattern(MARIMAPPER_PATTERN) except Exception as err: self.load_existing_pattern(MARIMAPPER_PATTERN.stem) - + def get_led_count(self): pixel_count = self.pb.getPixelCount() logger.info(f"Pixelblaze reports {pixel_count} pixels") @@ -55,24 +113,25 @@ def set_led(self, led_index: int, on: bool): self.pb.setActiveVariables({"pixel_to_light": led_index, "turn_on": on}) def set_leds(self, buffer: list[list[int]]): - """Set arbitrary pixel indices with RGB colors. Buffer format: [[index, r, g, b], ...]""" - self.render_pattern(RGB_PATTERN) + """Set arbitrary pixel colors. Buffer format: [[r, g, b], ...] where index is position in list""" - if not buffer: - self.pb.setActiveVariables({"colors": []}) + # If setting all black or empty... + if not buffer or all(rgb == [0, 0, 0] for rgb in buffer): + self.switch_to_mapper_pattern() return - # Find the maximum index to size the array - max_index = max(entry[0] for entry in buffer) - colors = [None] * (max_index + 1) + try: + self.render_pattern(RGB_PATTERN) - # Fill in the colors array, scaling 0-255 to 0-1 - for entry in buffer: - index, r, g, b = entry[0], entry[1], entry[2], entry[3] - colors[index] = [r / 255.0, g / 255.0, b / 255.0] + # Scale 0-255 to 0-1 and flatten to [r,g,b,r,g,b,...] format + colors = [] + for r, g, b in buffer: + colors.extend([r / 255.0, g / 255.0, b / 255.0]) - # Send to pixelblaze - self.pb.setActiveVariables({"colors": colors}) + # Send to pixelblaze + self.pb.setActiveVariables({"colors": colors}) + except Exception as e: + logger.error(f"Failed to set RGB pixels on PixelBlaze: {e}") def set_map_coordinates(self, pixelmap: list): result = self.pb.setMapCoordinates(pixelmap) @@ -95,6 +154,9 @@ def load_existing_pattern(self, pattern_name: str): raise e def render_pattern(self, source_code: PathLike | str): + if self._last_rendered_pattern == source_code: + return + """Sets current PixelBlaze renderer to this pattern source code, compiles and uses caching.""" with open(Path(source_code), 'r', encoding='utf-8-sig') as f: source_code = f.read() @@ -106,4 +168,5 @@ def render_pattern(self, source_code: PathLike | str): bytecode = self.pb.compilePattern(source_code) self._pattern_cache[source_code] = bytecode + self._last_rendered_pattern = source_code self.pb.sendPatternToRenderer(bytecode) \ No newline at end of file diff --git a/marimapper/backends/pixelblaze/rgb.js b/marimapper/backends/pixelblaze/rgb.js index a707ffd..66b7587 100644 --- a/marimapper/backends/pixelblaze/rgb.js +++ b/marimapper/backends/pixelblaze/rgb.js @@ -1,10 +1,14 @@ -// Color array indexed by pixel index: [r, g, b] or null for black -export var colors = [] +// Color array flat format: [r,g,b,r,g,b,...] for pixelCount pixels +export var colors = array(pixelCount * 3) export function render(index) { - var color = colors[index] - if (color) { - rgb(color[0], color[1], color[2]) + var baseIdx = index * 3 + var r = colors[baseIdx] + var g = colors[baseIdx + 1] + var b = colors[baseIdx + 2] + + if (r || g || b) { + rgb(r, g, b) } else { rgb(0, 0, 0) } diff --git a/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py b/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py index f69d006..09d87f3 100644 --- a/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py +++ b/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py @@ -48,6 +48,6 @@ def upload_map_to_pixelblaze(cli_args): f"Uploading coordinates to pixelblaze {cli_args.server if cli_args.server is not None else ''}" ) - led_backend = pixelblaze_backend.pixelblaze_backend_factory(cli_args) + led_backend: pixelblaze_backend.Backend = pixelblaze_backend.pixelblaze_backend_factory(cli_args) led_backend.set_map_coordinates(final_coordinate_list) logger.info("Finished") From 22d6594072f0fe37e3c33c1ac13416c73e9bbd50 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 11:23:17 -0500 Subject: [PATCH 13/27] persist window size and location, yeesh cv2 / this window system sucks for this --- marimapper/detector.py | 34 +++++- marimapper/window_state.py | 241 +++++++++++++++++++++++++++++++++++++ 2 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 marimapper/window_state.py diff --git a/marimapper/detector.py b/marimapper/detector.py index 73c3529..952d243 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -2,6 +2,7 @@ import cv2 import time +import atexit from typing import Optional import numpy as np from multiprocessing import get_logger @@ -9,9 +10,12 @@ from marimapper.camera import Camera from marimapper.timeout_controller import TimeoutController from marimapper.led import Point2D, LED2D +from marimapper.window_state import apply_window_state, capture_window_state logger = get_logger() +_window_created = False +_state_applied = False def contour_brightness(image: np.ndarray, contour: np.ndarray) -> int: @@ -88,8 +92,36 @@ def draw_led_detections(image: cv2.Mat, led_detection: Optional[Point2D]) -> np. return render_image +def _register_window_state_handler(): + """Register atexit handler to save window state on exit.""" + def _save_on_exit(): + try: + capture_window_state("MariMapper - Detector") + except Exception: + pass # Silently fail if we can't capture state + atexit.register(_save_on_exit) + + def show_image(image: np.ndarray) -> None: - cv2.imshow("MariMapper - Detector", image) + global _window_created, _state_applied + + window_name = "MariMapper - Detector" + + # First call: create resizable window + if not _window_created: + logger.debug(f"First call to show_image, creating resizable window...") + cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) + _window_created = True + _register_window_state_handler() + + cv2.imshow(window_name, image) + + # Apply saved state after first imshow (window must exist for resize/move to work) + if not _state_applied: + logger.debug(f"Applying saved window state...") + apply_window_state(window_name) + _state_applied = True + key = cv2.waitKey(1) if key == 27: # esc diff --git a/marimapper/window_state.py b/marimapper/window_state.py new file mode 100644 index 0000000..ca31da5 --- /dev/null +++ b/marimapper/window_state.py @@ -0,0 +1,241 @@ +import json +import cv2 +import platform +import subprocess +from pathlib import Path +from multiprocessing import get_logger + +logger = get_logger() + + +def get_state_file(): + """Get the path to the window state configuration file.""" + config_dir = Path.home() / ".config" / "marimapper" + config_dir.mkdir(parents=True, exist_ok=True) + return config_dir / "window_state.json" + + +def load_window_state(window_name="MariMapper - Detector"): + """Load saved window state for a given window name.""" + try: + state_file = get_state_file() + if state_file.exists(): + with open(state_file, "r") as f: + state = json.load(f) + return state.get(window_name, {}) + except Exception as e: + logger.debug(f"Failed to load window state: {e}") + return {} + + +def save_window_state(window_name="MariMapper - Detector", x=None, y=None, width=None, height=None): + """Save window state to configuration file.""" + try: + state_file = get_state_file() + state = {} + if state_file.exists(): + with open(state_file, "r") as f: + state = json.load(f) + + window_state = {} + if x is not None: + window_state["x"] = x + if y is not None: + window_state["y"] = y + if width is not None: + window_state["width"] = width + if height is not None: + window_state["height"] = height + + if window_state: # Only update if we have something to save + state[window_name] = window_state + with open(state_file, "w") as f: + json.dump(state, f, indent=2) + logger.debug(f"Saved window state for {window_name}: {window_state}") + except Exception as e: + logger.debug(f"Failed to save window state: {e}") + + +def apply_window_state(window_name="MariMapper - Detector"): + """Apply saved window state (position and size) to a window.""" + state = load_window_state(window_name) + + if not state: + logger.debug(f"No saved state found for {window_name}") + return False + + try: + logger.debug(f"Attempting to apply window state: {state}") + # Apply size first (if window was created with cv2.WINDOW_NORMAL) + if "width" in state and "height" in state: + logger.debug(f"Resizing window to {state['width']}x{state['height']}") + cv2.resizeWindow(window_name, state["width"], state["height"]) + # Then apply position + if "x" in state and "y" in state: + logger.debug(f"Moving window to x={state['x']}, y={state['y']}") + cv2.moveWindow(window_name, state["x"], state["y"]) + logger.debug(f"Successfully applied window state for {window_name}") + return True + except Exception as e: + logger.debug(f"Failed to apply window state: {e}") + return False + + +def get_window_size_macos_pyobjc(window_name="MariMapper - Detector"): + """Get window size on macOS using PyObjC (fast, native method).""" + try: + import Quartz + from Quartz import CGWindowListCopyWindowInfo, kCGWindowListOptionOnScreenOnly, kCGNullWindowID + + # Get all on-screen windows + windows = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID) + + for window in windows: + # Check if window name contains "MariMapper" + window_name_value = window.get("kCGWindowName", "") + if "MariMapper" in window_name_value: + bounds = window.get("kCGWindowBounds", {}) + logger.debug(f"Found MariMapper window, bounds object type: {type(bounds)}, value: {bounds}") + if bounds: + # Objective-C NSDictionary uses subscript notation + try: + x = int(bounds["X"]) + y = int(bounds["Y"]) + w = int(bounds["Width"]) + h = int(bounds["Height"]) + except (KeyError, TypeError, ValueError) as e: + logger.debug(f"Failed to extract bounds: {e}") + continue + + if w > 0 and h > 0: + logger.debug(f"Captured window size: x={x}, y={y}, w={w}, h={h}") + return x, y, w, h + except ImportError: + pass # PyObjC not available + except Exception as e: + logger.debug(f"Failed with PyObjC method: {e}") + + return None + + +def get_window_size_macos(window_name="MariMapper - Detector"): + """Get window size on macOS using fastest available method.""" + # Try PyObjC first (fastest, native) + result = get_window_size_macos_pyobjc(window_name) + if result: + return result + + # Fall back to osascript (slower but always available) + try: + script = ''' +tell application "System Events" + try + repeat with proc in (processes) + set procName to name of proc + if procName contains "python" then + try + set windowList to every window of proc whose name contains "MariMapper" + if (count of windowList) > 0 then + set firstWindow to item 1 of windowList + set windowPos to position of firstWindow + set windowSize to size of firstWindow + return (item 1 of windowPos) & "," & (item 2 of windowPos) & "," & (item 1 of windowSize) & "," & (item 2 of windowSize) + end if + end try + end if + end repeat + end try +end tell +''' + result = subprocess.run( + ["osascript", "-e", script], + capture_output=True, + text=True, + timeout=5 + ) + if result.returncode == 0 and result.stdout.strip(): + try: + parts = result.stdout.strip().split(",") + if len(parts) >= 4: + return int(parts[0]), int(parts[1]), int(parts[2]), int(parts[3]) + except (ValueError, IndexError): + pass + except subprocess.TimeoutExpired: + logger.debug("macOS window size query timed out, will use fallback") + except Exception as e: + logger.debug(f"Failed osascript method: {e}") + + return None + + +def get_window_size_linux(window_name="MariMapper - Detector"): + """Get window size on Linux using xdotool.""" + try: + # Search for window by name + search_result = subprocess.run( + ["xdotool", "search", "--name", window_name], + capture_output=True, + text=True, + timeout=1 + ) + if search_result.returncode == 0 and search_result.stdout.strip(): + window_id = search_result.stdout.strip().split()[0] + # Get window geometry + geom_result = subprocess.run( + ["xdotool", "getwindowgeometry", window_id], + capture_output=True, + text=True, + timeout=1 + ) + if geom_result.returncode == 0: + # Parse output like: Position: 0,0 (screen: 0) + # Geometry: 1280x720 + lines = geom_result.stdout.strip().split("\n") + x, y = 0, 0 + w, h = 0, 0 + for line in lines: + if "Position:" in line: + coords = line.split("Position:")[1].split("(")[0].strip().split(",") + x, y = int(coords[0]), int(coords[1]) + elif "Geometry:" in line: + size = line.split("Geometry:")[1].strip().split("x") + w, h = int(size[0]), int(size[1]) + if w > 0 and h > 0: + return x, y, w, h + except Exception as e: + logger.debug(f"Failed to get Linux window size: {e}") + return None + + +def get_window_size_platform_specific(window_name="MariMapper - Detector"): + """Try to get actual window size using platform-specific methods.""" + system = platform.system() + + if system == "Darwin": # macOS + return get_window_size_macos(window_name) + elif system == "Linux": + return get_window_size_linux(window_name) + # Windows support could be added here with ctypes if needed + + return None + + +def capture_window_state(window_name="MariMapper - Detector"): + """Attempt to capture and save window state (position and size).""" + try: + # Try platform-specific method to get window position and size + size_info = get_window_size_platform_specific(window_name) + if size_info: + x, y, w, h = size_info[0], size_info[1], size_info[2], size_info[3] + save_window_state(window_name, x=x, y=y, width=w, height=h) + return True + + # Fallback to OpenCV's image rect + rect = cv2.getWindowImageRect(window_name) + if rect and len(rect) >= 4: + x, y, w, h = rect[0], rect[1], rect[2], rect[3] + save_window_state(window_name, x=x, y=y, width=w, height=h) + return True + except Exception as e: + logger.debug(f"Failed to capture window state: {e}") + return False From bac0dfa2ea2fbd02e57bf937c3f0e27d67e1a6f3 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 11:34:15 -0500 Subject: [PATCH 14/27] windows... --- marimapper/detector.py | 15 +----- marimapper/visualize_process.py | 25 ++++++++-- marimapper/window_state.py | 87 +++++++++++++++++++++++++++++---- 3 files changed, 101 insertions(+), 26 deletions(-) diff --git a/marimapper/detector.py b/marimapper/detector.py index 952d243..7e3e8b4 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -2,7 +2,6 @@ import cv2 import time -import atexit from typing import Optional import numpy as np from multiprocessing import get_logger @@ -10,7 +9,7 @@ from marimapper.camera import Camera from marimapper.timeout_controller import TimeoutController from marimapper.led import Point2D, LED2D -from marimapper.window_state import apply_window_state, capture_window_state +from marimapper.window_state import apply_window_state, register_on_exit_capture logger = get_logger() @@ -92,16 +91,6 @@ def draw_led_detections(image: cv2.Mat, led_detection: Optional[Point2D]) -> np. return render_image -def _register_window_state_handler(): - """Register atexit handler to save window state on exit.""" - def _save_on_exit(): - try: - capture_window_state("MariMapper - Detector") - except Exception: - pass # Silently fail if we can't capture state - atexit.register(_save_on_exit) - - def show_image(image: np.ndarray) -> None: global _window_created, _state_applied @@ -112,7 +101,7 @@ def show_image(image: np.ndarray) -> None: logger.debug(f"First call to show_image, creating resizable window...") cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) _window_created = True - _register_window_state_handler() + register_on_exit_capture(window_name) cv2.imshow(window_name, image) diff --git a/marimapper/visualize_process.py b/marimapper/visualize_process.py index 3a51576..7914c1d 100644 --- a/marimapper/visualize_process.py +++ b/marimapper/visualize_process.py @@ -3,6 +3,11 @@ from multiprocessing import get_logger, Process, Event from marimapper.queues import Queue3D from marimapper.led import LED3D, View, get_next, get_distance +from marimapper.window_state import ( + get_saved_dimensions, + register_on_exit_capture, + apply_window_state, +) import time logger = get_logger() @@ -69,15 +74,29 @@ def run(self): def initialise_visualiser__(self): logger.debug("Renderer3D process initialising visualiser") + window_name = "MariMapper" + + # Get saved dimensions if available, with sanity checks + saved_w, saved_h = get_saved_dimensions(window_name) + width = saved_w if saved_w and saved_w >= 400 else 640 + height = saved_h if saved_h and saved_h >= 300 else 640 + logger.debug(f"Creating window with dimensions: {width}x{height}") + self._vis = ( open3d.visualization.Visualizer() ) # This needs to be updated to O3DVisualizer self._vis.create_window( - window_name="MariMapper", - width=640, - height=640, + window_name=window_name, + width=width, + height=height, ) + # Apply saved position after window creation + apply_window_state(window_name) + + # Register handler to capture window state on exit + register_on_exit_capture(window_name) + view_ctl = ( self._vis.get_view_control() ) # I'm not sure the camera controls work anymore, bar the z dist diff --git a/marimapper/window_state.py b/marimapper/window_state.py index ca31da5..86d4b12 100644 --- a/marimapper/window_state.py +++ b/marimapper/window_state.py @@ -2,10 +2,12 @@ import cv2 import platform import subprocess +import atexit from pathlib import Path from multiprocessing import get_logger logger = get_logger() +_exit_handlers_registered = set() # Track which windows have exit handlers def get_state_file(): @@ -43,9 +45,17 @@ def save_window_state(window_name="MariMapper - Detector", x=None, y=None, width if y is not None: window_state["y"] = y if width is not None: - window_state["width"] = width + # Sanity check: don't save unreasonably small widths (min 400px) + if width >= 400: + window_state["width"] = width + else: + logger.debug(f"Rejecting width {width} (too small, min 400px)") if height is not None: - window_state["height"] = height + # Sanity check: don't save unreasonably small heights (min 300px) + if height >= 300: + window_state["height"] = height + else: + logger.debug(f"Rejecting height {height} (too small, min 300px)") if window_state: # Only update if we have something to save state[window_name] = window_state @@ -57,7 +67,7 @@ def save_window_state(window_name="MariMapper - Detector", x=None, y=None, width def apply_window_state(window_name="MariMapper - Detector"): - """Apply saved window state (position and size) to a window.""" + """Apply saved window state (position and size with sanity checks).""" state = load_window_state(window_name) if not state: @@ -65,11 +75,13 @@ def apply_window_state(window_name="MariMapper - Detector"): return False try: - logger.debug(f"Attempting to apply window state: {state}") - # Apply size first (if window was created with cv2.WINDOW_NORMAL) + logger.debug(f"Applying window state: {state}") + # Apply size first (only for resizable windows created with cv2.WINDOW_NORMAL) if "width" in state and "height" in state: - logger.debug(f"Resizing window to {state['width']}x{state['height']}") - cv2.resizeWindow(window_name, state["width"], state["height"]) + w, h = state["width"], state["height"] + if w >= 400 and h >= 300: # Sanity check + logger.debug(f"Resizing window to {w}x{h}") + cv2.resizeWindow(window_name, w, h) # Then apply position if "x" in state and "y" in state: logger.debug(f"Moving window to x={state['x']}, y={state['y']}") @@ -78,7 +90,7 @@ def apply_window_state(window_name="MariMapper - Detector"): return True except Exception as e: logger.debug(f"Failed to apply window state: {e}") - return False + return False def get_window_size_macos_pyobjc(window_name="MariMapper - Detector"): @@ -221,12 +233,14 @@ def get_window_size_platform_specific(window_name="MariMapper - Detector"): def capture_window_state(window_name="MariMapper - Detector"): - """Attempt to capture and save window state (position and size).""" + """Attempt to capture and save window state (position and size with sanity checks).""" try: - # Try platform-specific method to get window position and size + # Try platform-specific method to get full window bounds size_info = get_window_size_platform_specific(window_name) if size_info: x, y, w, h = size_info[0], size_info[1], size_info[2], size_info[3] + logger.debug(f"Captured window bounds: x={x}, y={y}, w={w}, h={h}") + # save_window_state will apply sanity checks save_window_state(window_name, x=x, y=y, width=w, height=h) return True @@ -234,8 +248,61 @@ def capture_window_state(window_name="MariMapper - Detector"): rect = cv2.getWindowImageRect(window_name) if rect and len(rect) >= 4: x, y, w, h = rect[0], rect[1], rect[2], rect[3] + logger.debug(f"Captured window rect (OpenCV): x={x}, y={y}, w={w}, h={h}") + # save_window_state will apply sanity checks save_window_state(window_name, x=x, y=y, width=w, height=h) return True except Exception as e: logger.debug(f"Failed to capture window state: {e}") return False + + +# ============================================================================== +# Public API for window state management +# ============================================================================== + + +def get_saved_dimensions(window_name: str) -> tuple: + """ + Get saved window dimensions if available. + + Returns: + (width, height) tuple if saved, else (None, None) + """ + state = load_window_state(window_name) + if "width" in state and "height" in state: + return state["width"], state["height"] + return None, None + + +def get_saved_position(window_name: str) -> tuple: + """ + Get saved window position if available. + + Returns: + (x, y) tuple if saved, else (None, None) + """ + state = load_window_state(window_name) + if "x" in state and "y" in state: + return state["x"], state["y"] + return None, None + + +def register_on_exit_capture(window_name: str): + """ + Register an atexit handler to capture and save window state on program exit. + Safe to call multiple times for the same window. + """ + if window_name in _exit_handlers_registered: + return # Already registered + + def _save_on_exit(): + try: + logger.debug(f"Capturing window state for {window_name} on exit...") + capture_window_state(window_name) + except Exception: + pass # Silently fail if we can't capture state + + atexit.register(_save_on_exit) + _exit_handlers_registered.add(window_name) + logger.debug(f"Registered exit handler for window: {window_name}") From 84c02692ee10823e4df639efdf4d073ee558008d Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 11:37:40 -0500 Subject: [PATCH 15/27] file based window state --- marimapper/window_state.py | 44 +++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/marimapper/window_state.py b/marimapper/window_state.py index 86d4b12..9602db7 100644 --- a/marimapper/window_state.py +++ b/marimapper/window_state.py @@ -10,35 +10,45 @@ _exit_handlers_registered = set() # Track which windows have exit handlers -def get_state_file(): - """Get the path to the window state configuration file.""" +def get_config_dir(): + """Get the marimapper config directory.""" config_dir = Path.home() / ".config" / "marimapper" config_dir.mkdir(parents=True, exist_ok=True) - return config_dir / "window_state.json" + return config_dir + + +def get_state_file(window_name="MariMapper - Detector"): + """Get the path to the window state file for a specific window (separate file per window).""" + config_dir = get_config_dir() + # Use window name to create unique filename, sanitize for filesystem + safe_name = window_name.replace(" ", "_").replace("-", "_") + return config_dir / f"window_state.{safe_name}.json" def load_window_state(window_name="MariMapper - Detector"): """Load saved window state for a given window name.""" try: - state_file = get_state_file() - if state_file.exists(): - with open(state_file, "r") as f: - state = json.load(f) - return state.get(window_name, {}) + state_file = get_state_file(window_name) + if not state_file.exists(): + return {} + + with open(state_file, "r") as f: + content = f.read() + if not content.strip(): # Handle empty file + return {} + state = json.loads(content) + return state + except json.JSONDecodeError as e: + logger.debug(f"Corrupted window state file {state_file}, starting fresh: {e}") + return {} except Exception as e: logger.debug(f"Failed to load window state: {e}") return {} def save_window_state(window_name="MariMapper - Detector", x=None, y=None, width=None, height=None): - """Save window state to configuration file.""" + """Save window state to per-window file.""" try: - state_file = get_state_file() - state = {} - if state_file.exists(): - with open(state_file, "r") as f: - state = json.load(f) - window_state = {} if x is not None: window_state["x"] = x @@ -58,9 +68,9 @@ def save_window_state(window_name="MariMapper - Detector", x=None, y=None, width logger.debug(f"Rejecting height {height} (too small, min 300px)") if window_state: # Only update if we have something to save - state[window_name] = window_state + state_file = get_state_file(window_name) with open(state_file, "w") as f: - json.dump(state, f, indent=2) + json.dump(window_state, f, indent=2) logger.debug(f"Saved window state for {window_name}: {window_state}") except Exception as e: logger.debug(f"Failed to save window state: {e}") From 6f5db4288bda3d1c3a2618ee08a471d0aa7cebc8 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 12:37:45 -0500 Subject: [PATCH 16/27] Improve docs --- README.md | 8 +- docs/backends/PixelBlaze.md | 75 +++++++++++++++++-- docs/backends/custom.md | 6 ++ docs/images/now_we_are_straight_TWEAKING.png | Bin 0 -> 501319 bytes docs/images/over_exposing_ourself.png | Bin 0 -> 630139 bytes marimapper/backends/backend_writing_guide.md | 3 + 6 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 docs/images/now_we_are_straight_TWEAKING.png create mode 100644 docs/images/over_exposing_ourself.png diff --git a/README.md b/README.md index 354c88c..f6654b1 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,9 @@ Above example data folder can be found under [docs/highbeam_example/](docs/highb > [!CAUTION] > Exposure control is [not supported on mac](https://github.com/TheMariday/marimapper/issues/51) > -> You can however adjust the exposure manually in third party tools or use the software that comes with your webcam +> You can however adjust the exposure manually in third party tools or use the software that comes +> with your webcam. [Camo](https://reincubate.com/camo/) (including its free tier) with iPhone +> is a viable route, [see more](docs/backends/PixelBlaze.md). ## Step 0: Install @@ -97,6 +99,8 @@ If your LED backend isn't supported, you need to write your own, - 🪨 Make sure that your camera is stable and won't move, try mounting it on a tripod if you can - 💡 Make sure there are no light sources in your cameras view, tape up power leds and notification lights +- 🤖 Experiment with available software and hardware controls like aperture, shutter speed, gamma, etc., the + goal being dimming the background and highlighting LED pixels - ✋ Make sure you can move your camera around without changing the layout of your leds, even a small nudge can throw off the reconstructor! @@ -154,6 +158,8 @@ If you want a lot more reading material, run `marimapper` with `-v` to put it in This will tell you pretty much everything marimapper is doing under the hood. Also good if you're just curious as to why *x* is taking so long! +See also [here](docs/backends/PixelBlaze.md) for some more example walk through of the process. + # Feedback I would really love to hear what you think and if you have any bugs or improvements, please raise them here or drop me a diff --git a/docs/backends/PixelBlaze.md b/docs/backends/PixelBlaze.md index d1d0ff3..1cee16b 100644 --- a/docs/backends/PixelBlaze.md +++ b/docs/backends/PixelBlaze.md @@ -1,19 +1,84 @@ # PixelBlaze Backend Tutorial -To use PixelBlaze with marimapper you first need to upload a pattern file to your controller. +The Pixelblaze backend will both attempt auto-discovering a Pixelblaze on the network, +as well as automatically set and render the necessary patterns for the mapping processes. + +You can also manually supply the IP like with other backends, via the `--server` option +on various commands. + +## Overview: + +Test the Pixelblaze connection, you should see an LED blink: + +```bash +marimapper_check_backend pixelblaze +marimapper_check_backend pixelblaze --help +``` + +Run the mapping process, moving the camera a bit in between each time, *.csv files will be created. +Hopefully eventually a reconstruction window will appear, in addition to the camera / dector window. +Use `--device ` if you want to try different cameras connected +(i.e. built in to laptop, USB web cams, software apps): + +```bash +marimapper pixelblaze +marimapper pixelblaze --help +``` + +For any backend, we can summarize the results with the following command. +Adding `--fill` is often good enough for basic LED mapping if you're struggling +to get completeness: +```bash +marimapper_results +marimapper_results --fill > filled_led_map_3d.csv +``` + +Uploading a completed 3d scan: +```bash +marimapper_upload_mapping_to_pixelblaze --csv_file led_map_3d.csv +``` + +Or with manual gap fill, plus `pb` CLI: +```bash +( echo '[' ; marimapper_results \ + | tail -n+2 | cut -d, -f 5-7 \ + | awk '{print (NR==1 ? "[" : "],[" ) $0 }' ; \ + echo ']]' ) | pb map +``` + +### Exposure Settings Examples + +This tool comes with some mechanisms to adjust camera settings for optimal mapping, +however these don't always work across various hardware and platforms. + +If you're on a Mac and have an iPhone, you can try the free [Camo](http://reincubate.com/camo/). + +At first setup, things are often over exposed, especially in a daylit setting: +![Over exposing ourself](../images/over_exposing_ourself.png) + +One goal is to darken (or increase the contrast) of the background verses lit LEDs. +After experimenting with exposure settings like aperture, shutter speed, gamma, sharpness, etc., +we end up with an image that would make a bad family portrait, but great for a machine detecting +LED pixels: +![We're TWEAKING here](../images/now_we_are_straight_TWEAKING.png) + +### Manual Mapper File Alternative + +You can alternatively manually upload the mapper file. You can do this via the web UI by uploading [this file](https://github.com/TheMariday/marimapper/blob/main/marimapper/backends/pixelblaze/marimapper.epe) as a new pattern. Once this is done, run `marimapper_check_backend pixelblaze` to test it. It should cause LED 0 to blink. -By default, marimapper tools will use the address `4.3.2.1`, but this can be changed by using the `--server` argument. - Once you've checked your PixelBlaze setup is talking nicely with marimapper, you can go ahead and start mapping! Once you're done, you can upload your 3D map to pixelblaze by running `marimapper_upload_mapping_to_pixelblaze` in the same folder as your `led_map_3d.csv`. -Don't forget to add the `--server` argument if you've needed to change it in the previous steps +Don't forget to add the `--server` argument if you've needed to change it in the previous steps. + +### Happy Mappy! -Now you've learnt the PixelBlaze specifics, shoo! Back to the main README.md with you! \ No newline at end of file +Good luck! +Now you've learnt the PixelBlaze specifics, shoo! Back to the main [README.md](../../README.md) with you! \ No newline at end of file diff --git a/docs/backends/custom.md b/docs/backends/custom.md index 919eb62..be9a536 100644 --- a/docs/backends/custom.md +++ b/docs/backends/custom.md @@ -23,6 +23,12 @@ class Backend: # some_led_library.set_led(led_index, (255, 255, 255)) # else: # some_led_library.set_led(led_index, (0, 0, 0)) + + def set_leds(self, buffer: list[list[int]]) -> None: + # This method is meant to color code light up pixels based on detection success + # `buffer` is a list of pixels (by index), as 3-sized list of [red, green, blue], + # values 0 - 255. It is mostly optional to implement + raise AttributeError("Not yet implemented") ``` Fill out the blanks and check it by running `marimapper_check_backend custom my_backend.py` in the same directory diff --git a/docs/images/now_we_are_straight_TWEAKING.png b/docs/images/now_we_are_straight_TWEAKING.png new file mode 100644 index 0000000000000000000000000000000000000000..e699ec040307976ba639002895bb513cd530ad23 GIT binary patch literal 501319 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�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⪻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 S8~+1-&YaLb{#L{C=Kle6LA;Ov literal 0 HcmV?d00001 diff --git a/docs/images/over_exposing_ourself.png b/docs/images/over_exposing_ourself.png new file mode 100644 index 0000000000000000000000000000000000000000..57ae391e201aae25e75ee82931ca74558768c86a GIT binary patch literal 630139 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 z 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

    YcBevY` z;5}on4WPxzxgB_%y?M8EvC13AD(%LNmGa?(56FK}wzqaTjHT`7`m(*b#ml1&Uf#Ev z3jpfa;@W~2_0%rb%#$PC^4<5?;)_Mx&QJfCmk_*oKn~kj(CzRt=D;!H#xQ0Oq@2XMa$)f%pdyEkKy!yfI!;cvgc6X?3zT^b=Bdk3EbEg1+A3RtC^tH`sE85Iq>$tRojM~uvHk4yn24W#9U`SQy zyBsPL+y4MQkWJ@&l=cQ}!&)#b203V?&FRAjXA^+B`9g=i!etmxcldt2}pK$21-xb zk%si~@(Ggq0c{D+lWi2hhuJO4bG#d3UMGFE7_<&)aqN7NiI|y4$82JSqE^U`TcPKg zBn9iukU;`7%`?Ec)H-r6(wivcS7n*?H9G5?^KTU0$S~$FB9y3oFXfCZsk;X+nKoF1 zhBAoIl;L`SlH-1~qxGPU-ZqzCVeMzz#6?69=?fldCD0UwaCH^3#C(oqM)|khqG+R> zSK%@E4|yg3nbUHm79S>#-}XUe?X$-FS=aoobguH4#kt&K@;lN*OnzLJ#bx}?iZ?vf zvXg%FRb z_4P;Gl# z85ss20|^Wy@Ea|Gx;3}X*|oC1efEWg3mAdHFAJtMPyc*lo;tVsqNn;R{8h?yuGL!5 z2fAfAxBa@qbzo5Xbw2gC^KZY!x^dr>@U8%Zzx~_)3F`z8`WmNispN19acnDY2kEg-f3IP)>JCk8QW_FW>`q|9RQp*5W!wowo|h@C1sAXw^K{#(sc95lECzkKAV_Kd;?MTc4MDgg5Tvoa2wDv07HfAS zv6U4-@B{#D_YikQ`)7b!SPjDC5Ehfu)W64kH9kFyESAds_pr93?1SB%vh{*(!CSoa z+T6y{_z>Tt90sz;K}7(T4siQxkFBz=UcD&aes8t>m0JsC?`J7h=^JtT?3paqHb2CGLo2%3Ta1RSYOfdt9u@^dDf|>#N3Bu`b z5a15EMxSH89p#`X{T`la8F(?7FH9VNyf_g!2Nx}Shr6k&N*>=PBpL z1fs6ekiWqabqp#>{4IX|Ssiz|H znUZDuOrc!k4lI2BlrCwtd0k9B?5$9?F;tN`6bv#c6Dlqqz@`0W|PmC`h;mNXV{3mW-*W&Z3;o zW1X|SyqJfSU`05A6^z?u-P+aS`L5C@IfHrxpP`uW1)WCuZTR=gHHT?3*x%~!97FXw z>djr1s2pCZR)pq51;+6fQO)>s9Hzy^>$F@uzb(|Un+h+00d;Z_AD|FrD|>ks1P$L; z!LN#_w`yHdSvQ}-c<-bW^{ihk?&F?SNd8d4Qu*XE+QiKKwq8jar5@&ku4P%z_)ePn zTSX!1MV_W?>m2cUtI0>pqR2}}PED`xqOcf5kvON0XMiDYpVY@7$9R&6FTk=%w2qsdd z926oT&bU$x!)$|33mkUsC?}Mhz4Ke;S^GBr{(#zg0CorIKk)t4*>Z0YSZeoi+5YGc z%ifdE0hyM0MtqBLQp#r!Kf@~Suq<#G&p3dDW9k%(xAet^i~ucAy`r2p7GM{EGhO`7 zopCzt9%K0x0OSSW()tJA!OCfo-7SmwkmH2ktylQqD`jcoygdBL57^GTQw}Nc5T&&v zc*W_&L(BnVqiku0y>Xr^^NSoj!Qb=@)`Gl5cP?!~; znF7RXwW#-J52G&2i}TEdxJNi-OD%m!08`(qqimlR{M6NgU=Xa+MJa>1a1?9F7AK}F zk1;G8FG!=M>X3jen99$7_LSZ+#;M30P%?gAR%zqa#W6ru6nfAd;c6n_EF~t$9ep-uGWjY&YzAAllojRt-xJ?Q{3}e z5OY!tB=6CGsB_LG(1E`gr`%5p2e=pG`iq zth2s4t%yLN7NkBK_3^4KtVI@{e3@Rp^c@#d2)_mEV*avT%wci32=xq$FnNYTeTFnF z25-tiV931wuAy%6b&g89S8Ji9CP&I8grBlAvvhn$HL{EPlg|I%tHEEj9=4f07~Do4 z?Pr`^6JPoE1*0qq@%vAM)y0O#gtyb1%}_2G*1LTVP1pnlXXczIp`@NjvDp zHA!>IB`sqjVE4b)))D2#OuWM<&%w5mPZ(2CYt1`%Ti025` zNvBCiJNuF}Wg{;JnaTmE}0S5okfBPSo)f<2T zT05Z3#ug#^#<8aa@9l>bpUO*Gm-zK33$_vN z;a9AK^^=OlIAB2>+OsfIZgJ|eJ_r}*rm$?Gp6Cr)Ke|X)EpdFvdo0>v=K|U;R8@wx zY;dt}T@5)NUmrVpCqL_Wy&7LqA~YYy*YQ}lAz60F$Az&MCZ|BljCFm(oB3*dlPs>y zqax+vKNK7kQH#s^1v#%SX`5b!As6lSe%3A8k0`C#!df8su)a}&Sj@+7L5?Ul6@Ubg zQ^^sWi#`wv4a{4SV7O6&ysjbQC7)?%-U!yShL9O;Wf}C20J&1%0SLpVTKl5KH(($@ zi2$JhjJeOw-Jb52OTao5*>U=;+axdev!7o8)VV!!oc?S7PG|qH63v_K0OP@WRj{}W z8Hhis#6-K%Zw+qWbqg{>qLH<7mXicA?Q6sU3<_M*mW&S-C^DA);oIf$;SInX_~hR1 z?mpIeJLSDQH_Q9Cm&!zYw;X)-!}7(S{xB4@2jBV*>)D%S^VL>)^u^-<)hDr*9cK)W zO<-9EZ-PYny=nvKv-z)dsB;hNvcukJ**Q7qgx@y40GG?%d-r(}{vKPhumr~M-3FD>`y7A}Ad6$#YAXZ5T@NMl`KF@SVJ^^T-!VMC*lw4Nt&?&zj3wOIEZc}% zlz}TGfQMI`JJII%zxAN3t*-H$zXxYs4prKIiA6F8ZQysYhyT5oF96TzLsNp9VWHybzXDg(2{csD zE9MTBSS#eX(zO9E@jRV()VYQONP6_qW2^&pe=x-FQ!K1^d7+`d$Yl;IX>l5H_jI$Y zE)A9UIEi|A2;>kY+D@$UE11cEiZQEB%;*ddu){XtE(eRiNC2Q(U28RY%pocV+xS<+ zm*P=}d2s$_xqJI=89Bp}@{2z%r(2&f4zL^?V?0uZ^S3W`d|9Fu?ge$O+v}tMBD-iW zOD3KDSJ|4c<@RcTPvu~HyRA4tGXO(RSRTcK&UrgQ4C+J$1j7T!B9FnYpzPus9^}P4 zZX*^jt0DRjc_TP)-~-WlBS)CmUgjJsIFwu08GFjI3H81_Ij=hhx0^ocGf97v@zQ{? zqHnVi<`b=$#u-x+{K;ona>0ANjG={U5coG#fXO;qo&cH8&8S~Z%y$4-w5|Q#dE1&K zf0mi$m^|im#&HFAjPt%hIo010;T*#~=Osf0k!%}-W6ygvkL4L+9*c>uX@`h?^M`pU zA!rAp_=$r1kG|(W;UHILIlaE`a0hG5uV{#lD^v zRsw}sD2Br37G&~cvEc$Vlr0v97l43*geRog6HMW-fdft^J>}4XA*_|OWSrr&&qaKG z-CkXeQ$kz%M8m3ajK!|tU%aK}JAF#QB>Wh{rwu4iDj*Tn{C@l5JZot^GriaGv-zkB zhj*1lr5)*62v@MqwX!ma@ydm35XZ3BNyCM*A=6al$n~>D)kU=pkmUecaWfV4Q~)xa z1@$Rz$i#L_b}dVV23cMzUr{LZ1N{oxuh%1GCrvv_)Q{hSda3Yb{)Wro$+D^f+n8?# zPgNE+hhTxcxLp`cf@E69jo~A2vK(^CYUctl4Djgu0*g5MkQSsKD4}9HGI~~KTSNFz z!}16asBo~t5LRy^^jU$ymf*JR*|WG7urv4>s+mGXBDRTg&;rPD5()UqG8h*qIrb$( zwh>9pM6f+c=_jbzS(n?udy9Zb?UG@RFHu0&qz4(~fFMeyWINRCbMZoT1nV_vcT$?Ws*5=Acd%Jw}lOL9yS5L|zz~r(0 z5pD%!*aVG&ud4t6B><)c{mm{c#Gw=80Aju{@SfIX`YH9)VcR$?-`pY^U=y;WJi#BW z@H~yYjgP#8?t z{PDB$3crFE98ly-u^A2naf|B|mU{=dUeZ9~9E)VP0UyzZ%e;JBLk0^p{@uli(%sr9 zdpldS0hV?a_zIs#PrpsKikft-O;9OIR_{ejC5|*y^?MyVvdLb zLR#c0NG@FgM7NeIJHr^VO!+w`a^An3Tg-3yF~%5k^cSB$%0T*B8j&gbR#Hp(*c$dX zZU#+H_szHj!@^36zU%ywlKd(91>ci9G6PwP;5QSJso+AJ&Ex+X{x$d z+Fxtm^1fSn&$QIEEb|)YjpozquL=y>Rz1qdH3q;dK%C<%w(&FmvVYYUgD~lBC)+`b z<=~6_*`MS{et5ybJnu{0=*P6Z{(T*r(XV8-Y11*{qD}esnV=xzo6!;l*?z>C&;0&2 z*p~uagrC}f_L!^xx8ENCgCU^7$3OxD2@E7KkicJF2~-Pew*`Ab`XGFBB=D{Pga6gv z`5R?n21oTEDX!~XkP48gD7v^7kkax)1@lo+`k<5J; zaxMnBm%x+@TNlLuJ#LMQg&vD{lmZnKfx!R*q3dEWK*EUYpzLDJK^lXHEWjmeNE9eR zB2+lHI-T(HZfon1gG!ELtFijl7~6B)KD;nL#g2m&e2&dvJvfae5P%TMS2)}U+z_^r zf2{;l(PYU@y%9t3l8PV%DeZEh>P&BDc9EmZa$z~Skj{m% z*UI0JN@=5fajhi9v1+?OCg_AvH$ zi&);>0u*CgF8%)1vlr#%^UX5B82QfawetP@oc23>Tps=u3q| zq+AqA4jCB%+`GX4-44QPqZn`EAMoYN=jD)kzIXe*^1!isqaAW!R7fx-FN zX=IJ1ou?baV+-rLAr$jDd<@DuP{=Cg8?b|QP z(W@`Y{`QjqGS6r$mFM>Pcsc0JmFd;H<-PasmGgtA<;5pIEJLSTY=J#56O4xu+R9xC zj$4)Oo_^zKH!2%Sw_vCzNsnR`C@|=jV-I`sr9ix>ATAHs00gdm+;sfKyop>L3sxrP zj_3={vV;(6&iip`By)mue};&lEMyKn=XNdfr0dpQ$5u*-{>A(fTk|0r<1wuK$j=zC zT(^}=w_3|NmaT_%c8bw|VjLjDvrbnN!8_%|ycOI!_K_EH=BePFFQ=4M_J@>Pyx@Sh z+$sx)&T}LSAgz&uJjOiAbI-N;1XiVw<;tE&&6U(OBQ zkCzl&*JqR8bvtm-BAd^j1kbYED2H~6dO)MTaH=Kbm{+v66ZiSl%0C03k?oJ1q*KeS z&o-i73qHvO*qjS;?zBqQFP{PO77~hYp78WXE!inH#v)mfe)fV2$vNi;)aA1j-rzI2 zBwNFP`J~$)Y;%L{Y{;_XXLB8~mvwTC#q&wtS&O&|%C|9Bd4f9%Qx3K4YQbnK%d|cE zL-rMjLsven-32c(vd;BcoNFNSDbnbNBr(|j=8FFzx2rmNKl=br1(MVkZ`M^ltdITD zm!-!v74F39LIiNI%FF_J8&tlsl_9*GI8)F&&B^i);S7Hbqg& zH}o#z(wTWK`iET+#$u1989y)Z=Y}St&Sh*YFcp>g{Fgr5R7`YQ4$UxWGH?EcV#-3( z?T;!*f0r3l5tdr?0q8(hS`Iaqt| zL;89G6jZ50Z=Iqd{!LDDruxvb=+m$@P~`bv}yolvObzRCqurD?fnJymfr zf6zby@LRre>vN-+(GNng4Y5)leL`U7oVu!b0uk`nVq5Gi(9H_pQ>6nKa|Z8}Qo1OS zFFnbcZKDTl5A~3TMNSG`V@vrer@zi)ML32ZwbliPd;sB002q#qs8FLwUZhoxRoCLd zZ(C0bB17$S*|I59>lff3i9?=(M>d~|k{qF|htEvvp`T87pLFTto*>)nwaTmEwX!w( zpiHA!-yAzFTc7_3e|aCXeYaKCzWvwAhu{8QS(uuNgFs&W>|d6r09a#K#7<1I9d&87 z%ude-fYQZ^?v$;#M;r`vPP@fvy;wy(<&@(Nz}5Wn%`!K?gsT7!D&ZiL3;5{p+g+vi z@T>j7+Kng&rhEkgCzdxVvt z$}E^5+j@uCij8IDhaV!x(QRa1nE&=C=+bAotkl;onUJ-;2+e+$MN|)J%ill zIK_DakPgdiB){9A697reR>!t= zk3lPc{LX$V2X{`%8gBEPg*;=VZR>p^*ag-6V%uHEC&V$N7YacU8$Vpz`1PofMO2(&6fPN;t zWK9`6r?B3DPi3JP&7)PfKfp?o^xojtX=kp`!lsz{X)U@ z$u>l0+eHdmnSRgO(D9;668l*V*XxsV9mciWZu#ARzEzWbE#CuR@M{t4fapL10|^Wy zFp$8nQvxatK8RH^2jQC~fp-NM{0IN#-zax(t;E7QEE8C$g|f$YD)+g-6x8tmhyaXO z#KntWM4pR2(!|2<_2qUhHo4IRm6!0_gt9M%P>QOO$Kufivr3nWOek|GICU|oRf0<9 z`MEp*r~s(B=r_)-&jN|&iLE#)>HM`p0Cw@SwY_szt}3^;PMjI zgR}T%0~u-IH%v>7w3u|oYI;F3z&e%XOQj|k`&O&+R~P=~G351C-Ho?i8Pj}1TT2!f z%(2jhKNtBbF|L%6YAl$q=mqKc(0an4qL`L1F0Q4UN=PokjT6Ytw5FF|w`o_xUR$sD zCT;$1+8kP;*z#?=2Vc;LLqEtDwXxxqi`HZ^AHTh0TP8hgV&AFxB3BuO4B@ul=bBP{{o;2=G_}P7)?>Tb>V0>%%QX}Abuj+YoN&8|nVI3ChfV&9@ z4OM-9Vr^TzuT(z;1vcL=FZHQ?yBJHWV&ONsE`K=~7utk|L6oxX<5TE|wI`f;dY|nY z*FP4p!I-fdAHs3LDQgNl+%fM0|C3S)oxERS1(1@U1D{7kMqSAl0WO_%~0_-Nl9B zg4Zi-!J#Q}$Y(R$iK|}Z=Uq1VADoms$k;3#UD>1JIv9KjW&xFtWaa`0`BT!QJ}Kf_ zJgOc~JF#pig&sZ?q`?{cbLEn6c+7U6NkCO!$MARbnr;z~$b6}DgGy-ygX~+i`}g55 ze(|}fq(=jw$`v>$!ogD{Lsi%~@$5v&V%1E9cK44jVET!yR89cT36iy$EMslWznip{jF?If@Erz}~vopL=gM z_=3%v>0h*Tta$NW!Lo@<lHfs^JumM-S7Uy!#PE+$?glw`4L#&*E*sgh~uv*<=Gp@K!w@-lkn6#!~P5%!A zYEQp!YVAv^bB>5sj~ejMFbo#>f9zy<=U(ytrtEpOGj#6CcnQoE9X_+$^0{5?x8V&Q zS!ibmz=@0f55w%gGU0ccCER}--i@`F=pkaIy<<-RU_Axd7Psx2WigI($;kZ~D7x3A z8bQMZDKGR)yCtTdd-wyzrp<;=t<`s@64TS)tiZNn*bL+jhHl9`PO?qc^ntpX!Mr6i7XsdZZB>$=En*sgxCcQzX32x zSCYEn$#DeJ*}_a`ouBk+vO#7{Iw?UcVYyjGm#$uwH-x(b3)*ocnptV&?_I*C)qBblQ1OW7eas8|3Z~k z&?II3kMq~KuLbXAuB7qA55LaDQ(o#KQ_co>77xd=UYvqjQ08&Wi;IsE35YCJEC(jU z$G1y!I&g~(e*MzEqe9OvE2H~tokP=p?>^S{Oql*E6{A_Ag$(bU!jFam3797(|2gp4 zyd1t^LpQS)hGi1Y=lhcV&_bR3Lo%~JTT(WOF8QOq!B}Dc!NPY>-tPrO5v$BDg;19? zOY^-+^mCUx@USo-#e`w#n~(OX;Jy3s$wxp2^7Hye;Cb&JX=2(au4+9pG&$7TXLi)9 z=~&>o(SAl;22gz7T$mI3$J`Jw@k*#X?-gd0uj-KmM#+F9BFcOD!sl(5(aK{+e=?}F zAh^r%w2w)*7NO@c)5O#x+AN^Q@&0^J>uZD%(cyv?zFJS$*Cv5xml z=%t2;tt`IPJjxjmt|r{uZPdBFm5k*8Cu#PI6S*n;@QFMpXA7pg6``N zyn|CQR=R?7-a~+B7aGJCgpR1puSSl35f2stTzJ41BEo_)MkN9qAHod`Of&;05`NR+ zn&7U8*l#ujYoW)ONqZHEA0GE6XK@GCEqA`Z!M1=@K_gKLrSTi@6H(_=i$)$_ojRcx z@?aT<32v!*FD2hPttHJzTHQY7=`ZoB&nx1X8V31>)Sc;g^t^X1VM)ehP_{9018y4lDjd!V`mVK*w*|A8T@NX^|fFDyc(7SRL^r}!y#CY zI9JuSpUFZGeTzw~VE_t4Qg=A%FA@|FC@;no*1rtInKHB39__hh~+L0NKY>(lV=m%zzZ^kCy~sxg9!%6f{0EI_X#kr%orA`qw!?JQ%YF)&)>`({V_*6_&?gIO&p zOn7sn-^g)H&x;J^>)UjYI-!fv*jx~%Mq)?L_gtaBiU#l5@XCb__s{5c=P$W;5p_EF6Ov`~GuG!X(u`k&I6FF8Ed(cTl zO!QyHX?B8HPr;0TOA}G;DsAy2aZDm`K6+%S8G>?@0=P zRoC|BeB8YYv5v4gtpe{j(j}?8%Vwd=a(CPi@XZ9)HNfZR0-Dzt$yHW$OjU?-+mfBS z!6qO?_K>er^b>9Y^AG}c_gF+)JiolQgNfjPlVaQy4TTRpb%=bP#Evd~&(xIJBhd@u zucE;CRi5C~nrrJKBd&hdS8KX1yuO*+N($kMI|}Mr?yc3dLxP2XQN5zK{xN+dF074!zf?LZ? zgPi~f5ArJT-hqnI@OjSHn$-2l1Gl2Mms1g>d@C<1>xJeM;L!;WLCowrsbYk)By@D& zo3UtdOxmo#I^yy_8yws~TX#x{9Fv}a$F5--s0tJw_<$ylFE*=tZ{R31L@sxdeuaJF zjZo3#4gE;>Vq$~D;^36WpfZc}`Xa>(*aJ1 zrcMUg;!cS>X}J&!;(+bRuxvO2nY#NQ7Jy~SIiyZ+ydv*0^H|_P2mkaq4%xqVR_sqF z#UiiI(`5AUWVmovggQg+1tTI2Z)kire6Up{EtUC_4I>Rt;hCoC{qXG+(nKXAi}4eD z=H9btS_6_X)pICsG)7s;&e^9>?ZY?Q zDC74!*PndCp7z8epQCl&xtU(#u?-Clvu)42$VXzHh-2}zjMLkLPb2Esde+y82au(_ z)o}XZT#^JrbBb}FK8ejaVX@RP3oTLIc*C0EnbMHN(IMNl(n6fRq7R#7RJ*m?Gt;WT z(?1=oXD$PkmO8iaBA<7oz(PAqPm{-@<6I>*B?*199KdesppFvZJDopYjfaUcG=hN%To4N`n*8a1!O#~q{Ah`OX97Rn)7 zD!asHZcn}>hR?sG-Qp%85OdanbIuX^MtN!y)8cgmNvFp$kDdD0+@OwU5>?rH0F><% zOX&#N!X1w+3~y0wt2ZcKz=?o$H)zO5G8(U4qvUq65KP@W{&K64u_7d0ObgG-0qWmt>Fpn2V5e&CDgCSy3a#5lV*Kb}zo1OmYW6}4z5CNjXAibcqmv(pC z%kmv>0E#c8DKQ4||0BlC!Qj<*@_14Z<#5|@kbOGefE*i6dgFQoENQqh?vn{{=THDA zM_bTGw)&PCM^U%@NUTY?`L67(F~rU`GU)RMVfDd4Mp3Bz5mLOANT-{2+%`EC9f*u- zBje~iH$2-{n~Upim|n@`qoY&v^0q|rvi9w?>2ockLUk+V+gF-1b((QAJ5&^U@NDP}-yoeCQ8LT!wns`rR ztdlMjyUH12ZM>C`aqHY0!N8qJYfOfG7iIbQ0|_O!#71@^hf%Nx=#2=-llAG{NI`?{ zUQC_vIJt)~rifP$n|eXNrlPyAT-BVjZn?(}p|+tYqa8-n|) zYAn4>!DqCqxytN*>QlT70ArB|?toVUOSQ~#>6_46069NM$K0gpYs@E_d)a<|+&CUh z0seId{241c>tsrB+9p0Ej%y6fssiEhO*VC?IX3%T-kU4{Cop+3OqOU1^eaXa)Jd6Z zl5)y3C8DeIv@ldieL;#OrW=~tFQfRT&8$Tl`(|Yr6_w)wJ`)`GYg26ICEs}!o7kH= z?m!*W5}tKVL>(^_!QfHj8D7wdnK>7nLoomJjrD?A_|0v#^3ZGF6x;g`FETeDIT8yV zdwhC*krT6eRI?cFWnRQJe;`Wnz4{}*Ps5H6k#U3KG7DK2_1L1r9q&x4JHo)XfNqgO zVPmci0Vmc>2-`(o#mmTg<^wJl6QHeT1J|J!rA4cLwLdd(Y+< zqW$5oB4THsUsCzg3LtUQjmoQFIMhTJE5lvt&{Bhu)?D^Tj;p0g$pyvNSGx=T&677H zMzHes;N;_#XASg=8?eNr@>}60d*T&T@bgZNLSF7ntqAK@biGGid1oW5`PNxT7`jeb z6(X{48Dk*9-pePYulmXJ*w3`#;MhyezTrSWxPu=?W@}VK%w}@Dv**cvMpZlx(<+{S z=X~k!xM2csxpj`r$7D8-Jn5yY3*EFG z!S&097*Kg|fh!b$Cigkrdks|PbC?zToTCRv*5;ky=p8f~4YLQE|3LYW-?G%#9nd3V zpJ=&o_PomFWMqT~2sFyDgOB?UndE;GhRDQ@W;m2XNFQt=G9T`5rpCkHW9CU4HkFBU zH|i>Mb$YjXMR$kp1`0-RWgO(bI)<)FWM9cgkIJYa>CWvkuinFz~ohjFNJGb+kR;08V*=<6mi)H^WsbbhL~Ge|Y2 zUj!r76r?u2D40)6w$YnEC>alj#OduUozb`ZJ_rd{)5`iiD2|#+rXhc)pqP#JZF(7! zQ*_Y9J!FcaFV%mas5MQ;Jq?NJYUoWYo~oH34I}3bpFGZ{ufYwguB!IaP;Zs{{R~LP z&tB$9g4zy`?mtH%3ymFa8hJLRp)cx0CwHBJQ9uaie-knSq;EPB2{9DCJ(AUffe67o zl?e@d%6uoy6{(9^ek~%QeD7sBj(-qER*{u#(=3NiKnXhP+Sat4IGO1} zR0aJD1jW6iLxbQ1Y{thWys+>kyMCVBTyL<9dkwmZ%a0;LoFGepq^`G#1{ad!=U;!# zt#ys9BLCSf<)fMkOkTUDs>nZ5zODh_?)p!GR3;C-<^3c z))(fHwmdLl$DKS?sCa7cW?#HhB^3BGT!!w)aF!%_?eWiD&Sti%u0ZRT4|{px4n?$! z)8cYeKso6c$wVhKI%`p=we*e${}HcJqg+dHm3N4w96T{MK%U`cxs5;SW4aJ)bBo9M zwtBrn^gn7Td_psAO(n{Vg_ziV$ZhBcB^4>88synv%KN(Ob;99(wHn2@1t9?h5ie55 zWN?cQ9&?rNODpAGyi;#nJseMaWh zsa3!B#+dj{oSo`;QIAF`VCrqotvC(febBDpypghtgxoC+4X` zThYTlLVJ8e`Xz)_5BZ8z1Ygb;jU&M=7op-Rn@0rCxEwzc3HHAlOw5P5c?$8R0thH{ z$}e!<%El9~5~qdAal^qkRR%k=Zf!_9h7*zB2kAd$m+5BAtkv3G8P+kjNA9sdDhzxs zQ;g4gYqWjHZLxbBNx3XJcp0meMPP8bjwJ4HdSH-0n8Cm)X0XU!^X}*PH9&Bo=$tFI zkUBrcXKUdGJBL1H?*624aGq@(@_=_B5i6I1&(v3G|4|4;%iRG{L+t4-TFadxEi&Im zW_W5HXExgAVY0^^p4OdzO>Zp|g~mh8D1#lJmdprVmlf8x9+_#a*UFM)MP2Cr%uv&`BvEY=`6 zBF>Q>c2x+Ey>kGM+cU!3j%W?&lF4y>UrRg>>z(ET0dd#bV!sn58NxN!Zkw$lyQROd z3~Xo5+4s!6858b2MtpDcck@=YV|`CMaY&uiE~o(SOc0^Ay`O-n3G<<$F6`h+hD5?} zb|}Tx#hh5@WK1hH*RW-Lq+Su$va<=}90U_fkad9H$cdUh+LYOGPf|i+g)JydoQ~64 zwqVnAB~XQu-%qPi1C}zLDV_#*Zio(NJok#fZqEyy>S5$*K&2|C00hLO0$Vb@ha8wm z!+PbAl%F9IeN8!@;gp7OekCD6?Q=}vkz`1j0{upvy znyHB!N&^QMt9n!g5&zex{Z3jX_pP5|exdcbZNw&0A z4cDbFu>YXgUi{?zvlQBYPtxmd`1GS&pe~~ta&Nw{%W*c9bx>8|)xP}jw%}dOG+4#Z ze$?<_EHqB?fka$tTR*UA+LY1XV*{}buHqBM8qAM<92p;^Utq6w(GJk3Pd7EXE5&)5 z8d@5fXfc02{9%0%SlS;utG^RG#aWnS{P?|+ZpMvb`FOF_a^5ndbL@4Agao3ZNxQ`B zqoZ`!)`8*)AG_o->mTshI1x$)oud$7PZAICOIDm)r$kCFQcNg@zQV{|ht4lqqVPlg zU#h}rnnBvapXL!eDE)c9wY%1jm|WVdV?k(yAdj*OYu>7S(A=~f2nSp{UH`-qNTex< zYa5QLsro8Od26d&@ZS|us)`ftq5s(stDw-d{@i>n);DSiQ%3lwT zJ|E_h2H^St{{r#WF~s&T-h8o=4mVdS7!*@kPxt>;aV<`>>xBF$)p^3U7^{KsHmm%+ zXFg^@3zqN_I!eQO!M}384Oo&8@pJb^#c(e_7J8)>*0x$lqv5U=;W#lDnb0$LdNKK9 z)T-5VuYasIE3+W)f@PkLum}hFgVSRsEZSm;n)yeDG^$ylVz9TWvKCc4qNpl4J}EIn z;LZBr1R}P5P(J(!r{Eg_N02GRm1A`hw;1J z@sET8Y~Jhzkc1;$*0rTSYl0&HRlyt*b));I?}~g{3pq1giU5{7^%usUMb(g>vxMj9 zQHa_ALy47|4I#uL6OcjYz;gJfk=Cg@1>mtHX{=k$MDu7+x$YzLN!ip~Cz?$qP_1Qw zy3FiuyQ_6Xa5c``x=!nEBQuuw%y9iqt(4LuEhyU#8hjbO84yAF)snR3L-NK$+B#nE zV)h$wdKzMsoZaVBnY3lwv><=A!0E`V3zgn2^Kns>CT&bf)>kx8r7DNDFf+UqB!uLW zR+j|I`h_6+S_X7KU+**{v+<&*Be9?waHm@}gdJjAE;nJ4bp)pNJzU@Cm`TE6O_;!+2U^{>DPW z$bbgCPyIF`EkEYuw_kD%&sc+%F$i+4JS}e@H}hS3BXs22O+_72Tim8QEbH(~MLiCF z>bD&Pac`|tKKx{A z#6;7ZhFw+&g;{eQog0@h%SDF?s__}#M1OQURL92M#yrj!b%OJXVpQ+OWTdNtP8sU!deIZ{%^Csezs&}N9z zU9-=CoM3fpsu`i(VC=6}v|uThd1cr_jDb%)4#}T~^8NB?h?xiJLt7hh&20>B#LvgX zg>?vltS?NwB&#Eqh})gk_j;VZM3LB5qwZ5GGjJo7o~;fy6X}%J#h=17@jLb=IUfSo zi5|$oW=jLf9KAcPbJ+?4Dh#RfZ8NpQwRR#8Yirx7v((#;6nxkf+*P$${rcahFI=^u;;YA%>mI}59Yf8 zndG`Tpr05V@X)%5qLXI^s@*Ri{QfWvH&QHAGpbf~)WvZCGWJQslP6P-!VRHcHfM3@|(Ie}w zC@FU85R zx`VU^MYc_frK}-26J%~4Czs+#8 zV@rIlgbL;aGndmtr+5MDy~A5<$ZzW`x_Q;dLAN*I&ZKTi2QVW(t)Dcw!Vl4Eso>br28Ml;ahJ7&{4O7_-BrO)3ztPZeY+nO z^iJ&fBLgXe;iN3sokei#;@daG^lXkM7x1194BlzJL;O_xmV5ks?9NjAig?u$?og#6 zvRyiH_+?66grNif4)*Sg8p2LV^#t8+wRcL}qfhd1bR{;Jy?4|nT5v5!V+x_I#|ysc zdkHM?zAYoXu6s|K?6j!QGR-;UKVJ`(($ zI5X6|dl;}MpLMkn^rqfR-#LkRVO=2Z?0JN!LUw0gh9V|~ch%J6^l-+wx)qXb@9^BI z+Fh3A8P$O?4Q}I>Op@@~0-iST4|ZuzORuV}KA~TQWhV1I*NbVt!GwAAKPncD_BZqv z_*}%??6zePjB>WS&I-2q;!bDZR{X;nH$@+RHMg~>C?B<;YLI-(CPw0O2Y)wfJLf&j z4q0=kJG;VjACg`>kXGdF|0W{SKZEU4(?6Q1;Pc+(W_>R7lyI`(-fn4MT*XdzDM@lQ z{#?5{6!`4ZJx&8drYAa`!bj9?`>p4MCAhYoO9d;D7rlrQPGYr-J51^+JuSKNTCjhp zD=NCY4w!ZsLCWx){!jX^s7(}W)=3tz&)}=!!@n;IqWw}QP5MW#Jn^-Ieq{kldzFm$ z#E_{(edVZfFvnGom|_?&0c3!U`-;6&RyM(CQp&sy!p&I{%H~P!u!QD$)G(g`7*3(M z_~XQq6zAPMGn7H@ot@v~=U2kY(=~dr^WP%-f7SL`&1roJjIt^%9u@my+hIHt_B545 zVA;YW;9Oyc_Cn%z1-;w-jf6q+`qwDSOXUlpn9094s^S-mu)uf3#1CFl`maCFLnrn- zS<%9mi`$pAL>U8P*K>Zs)L8T-v)mM!b!6$k*)zLG4^8cr1Eev|StPLmEsPyfVfQZ6qS*oGy85?8!YlX=5+~?Iv zzV74Nz-I)h0IyYrg`@N!+P&(%ah6^I$tSdRpmE8%A8PYv6`+C*em`rilSMeMWVQ(l z>QHUVHS`qQ_EA=?dJ^wvyLoE$Yi3zL7zTMLxGJZ|g@zk|)&cpMtZqMx zjuF@MJA!sks|tfrj{)i)>kUbj#tHYm zoB#C#XAZGtot44Ej@_mb7?vR49t%V@jyZXc)83Fep$RRBE-- z`f?i#{Rzm0=4u^df&OAyp^i%R}=P+)a+BXy1 zN3`3``4hjF40RaRyel+!@wSvn-|*gyrLFKWoszh`)sxhe%RnlaWIw&bp*c&0^5*em zELg2u|M)vU-G8r7&A|Er_6xiMH+jxB-qtDb7x|OLhbk! z-#W4toDOI7!XQ{#-&8e!XHSEWh;f#5lp%4A z-wr3DH1lhciL;R|Bi4!fkk?^ttpxN#TjKXxGRSNAlfJk0YGH=EqO2_v0C9{{967UQtGaO6y5c#d%Pwdak5*sgue0bfV0Sw%YL=vWH6{_OCEP*{DH5IogeE|}QJ;s66Le>iqFgZ{$H*TQ-ul~^UX zMvloD*yLvosJ$nN36}T70s_5j9~~#2k2yr?EQa~-SjO4O5Ifcdk^`^q)zmX@jF}>f zR!om>m+L)(NV%7heZi5po!I)9Cy^~xNDIFLvLJuW8xo1ab=8c|)tol-Tc>^T@ZmWF zljF=NiG}Kkf<1zm(Vtk+xOQFDGp)~3%;++tu{Qf^GuK6he%#00y)*dtrS-Us+vs{U z+KQYkkUC?z)H1iF#G^ab0rsU=Boi`M_=*7GS#QmfhxaY9=-~w&RNnT!lob5apv%j(uHAohH?u){tko2#z{Eg3Emr zj1v)n#c;#SkwkrY2X<8XB1_US3b7+f(`p#8Y26hq%UmkftmeHl1U~dn#4TB}m&A*P zwfNNxkZJ}7RDd89aL9^&u-rS$26@G1(6&id=U(kX3a8`(hsRGPtt>eS6zA*gYrU|g_NxcgPOd2!8M??Ei z*IaAn4ozjo!9Sx_H4lc3SLfYT6;)`Np%`IQ+w0fEY&?%d&}){*$$WMo66iO*DGGE!ZKVlA7&S1L;%Ot8|S&l^_`RRY?2%y$mL3@*d;<^bc_-j>E7+QWql zL*7-08qQt#{xCc2nlF$=%Yg0dD7rTD#gop+cI zOQ7!MS#>~=>W-8vBbBL*i!AmjVC@4UsBa6v0w%QUhlrjpkV2lF26(9i{}GsLTbfA8 z3Z5Etq1^OiK1tR!IE+@-ay-eOsMq05;a)~8C$CXoCke4QJims$Qjq^@@T;I;(jEGb{LWhW)MjS!?`Gr=nZm{e0^E2*-_Z7PUNP2z>1I~;nblQ z(Q;Xgv##-h7T1_X>XdrBUrsnA+R-k>wcpOYN~|R#*+Ry6y+^o3wq2g-pxX_*JQu0X z3pl(lzMC0uX3-m>FQ+mImo*#qbr}yw=-6ueKIg5ziJygk*Q#D{Kk8rcCa#G7{Zn$6 zC(S24b>przL4LBJIV(;|=@&4Ie?H8&5J>pSBWZ)br=FyHHNqaA>||44?D@@Y9^3Xy z(@uUFv9prg2Yi`9he8_<^K-OVWn%UREzTcX$J^rfu>#TPtjgJfLYlrjxT%Pj3(u8N zrNa?a-@L6!^|^iBM&3c!zb$?D9A-bDL*zvL;?Dngrb!1ppFRa7De;j>ALi!@3#bYx zg!U5z4t8A}{crDj`R-lck<4lB4|50&m3{v7{+&Dpo^9bqDIZ^Xppog=gqqR`JOJ=y60~LB&^ETC|@;aK#-TqAmwXyGr}b&=xdJ1aDTlYyC*n zyn!g$tO%HR$!bZ@_{6Hu+2NtP)mr^K#e48OGaIyGKLYHEmnB`!H@Z)%nmD3=MP4~{ zkmcYNJ8X4oXK5)Wfh(lEh=Z3VUmZ_)8)PH(5e<;=L!MMQVCkz{LUA>$3SH;d6g)f1 zO5X$P4o-G5m0S#S->8{MLz4Zx<^<$6&WuCRw%H3RuM%A#xv1gc?fF`SNnFmRPl5{q zv%@6w)6s>{0Wn0eIXKVHR}5m6m?>GP znE|4z1xAP>&q3A)PQkivV6H!UO?sMKr-`3^@R-U=Kq6vSyi~T9${Pz>=2_-zHz^1h z2r5D_!l)7Cnb=UzV;Df`^YDYU{1^ApR_a6!rI^2yUNkeJCfg^m6tVX8D*Aj>jkJTo}AB z#Oo1yaL>dZw2FTit3z4%nWfNe8yYfzYX$pPbe`&dAWsC9<@A$)wjsCnFc*Ob;lv0L z2rpG)$$9g8uxDxFxVoOl-N8;7;5WptPC5?QRW@3cza4F$U+bW~q;{}c4qnZ;$E`~}N{aNgnc zVRyjENntt{`wL=b7`6K7>gN#4+!K~3R8hfxj>}%dlumK%%@t{dsicMGT?6lA3gi(4 zHl+*w(a)IyR(#JLKc%!m{Rys+{<;qNiQY7;VI}TC$bco)QYa~e07`xr`b<)(oCT3- zn}1^H_9f25cAah=Ysyx->}?aT0|1NIFXfomB5#6Y3*lbD9y`@kI?~6slr@hsBvKFn zq0N|1^m8Uwt<^QZ7amw&%i~4Bf&V;e=_r(>H*yuMi@YT&l@T;Ox zG6T26@d?$FamEN~OVo4CaD$$n(gz`a@OcNLV#ZIcG4#trwhmtLV%3a0({I)8HNeA@ zM4Tt)CKaC0(nk^;apMLP!@+OCSfh%j`kO0P6w&+;-o}-kjZDCr)PbZDsW_r-83e z(}V7bSg#?OU;dNA+WvnjZ2x~!*!%i7DuTdwdc(8_&+yb|T+jJE9z07a^jIXhoZtg5 z;&v`?7W>ytGClN2G({Qu^0em`@3hTx2&6Dq61}uM1Dle$wBH*EN`hqjQQuK>8%1{W zJdOH{=iaNMq$`Jt2QtzI2c;)z<2TVPS)(7zdrmWrel)$S@wwcFwdh@$NcbZ@0XbS_ z^pG$PfTdg<%e#&A-Q72X)5Rd0jQDpOOY^{)yt##dEEX6hM9q>Eygt;P;yn2D*htcH zwC8h&@vWb@$WE~TGy2S~stl_qhO#Ijd03#AB8bX2Ox&;g&X1S{Pei$tY_$|v?uGDl z*-4IYLiq!HaMAAz(Y7G@&h}B8A`iN`lM6!9!Om9%hNx;bnGzLEI~}t7QYTHF9%pRI zJE}CPhnw%bKIJtx==fH-tECg>;Z~T#DRR`#=Ogm5DX*kh-Ih{PGKramcVP1?3o}wb zDFa*4$jXc~HFqb_41n9>^B^Kql=(&4hMK_KK)hX7V^F;Jd}+ZzyGVH=xskYT^e>4R5co zabo)_EJ7wIr)&q1u4_d=$6R|}$pdR}Qrip*E?2N$rs8A2x+C)QPZ~=<_SGrl<1y<` zG;Vhf^OGD2dBDOL5)lRSWtEM6^yLEXdfg8lA*=lx=Nt*%OXQy1q$GoXU8R~-J4$Qm zs9!@4a3D(P<0vy# zDs0O5eX#EwE=IHH7N%z=eKP?YTbua`c6`4LalOCpRrRcdS2?_g`E8JW!5co_gxYrn z8HqkyYt)0g4{iYfct`;MOys^{n~fH!TA@r?_KN_}K41e^LI&<_zP6$RU-N1BLp>Yw ztzl}Y3wGy*W>=&E<#&j5Y{7o~BcV>W!VBHtdsAu(4tK-|XSB>EGyUcyH229zLQJrQ z+Yxa@`u;g~$9no}DIYCba z=)5qS`-#em5;0_f)ZWLX7tksm=nk<*+aBgr}{g zXYaYJ(kC508N|x;kN0aEe?bX*-yd&I4V8&DYHgZ!`^6T-=RxW>8)fhm9Y(wv`P(#= z`Gz{zNKB6MLfD#KRC&?v-6EGl&fRnB_bR5%KkhOybI69!9{?;~Y`&e(_OEYEr-9l)qOE+KI8<)uqmT&u&|Kh_)?OQ7>sZCfd zW+P;TXty~N6nFzKMd=rvZ>y+u`m}AKqzjKajh$9A+M?wLMzS|V*ZOo&+wwf>RA&5X z6=z;AReaF9Uz7bSj5)8e^V)!A1w{uc=x#^9f89k_rJisCL zy@~6n^ro~5On!x6t_5D^ffs3>4qocKa+Zo)3OKOvKE$j*7Y?urQ~K~DSMpadFj?ot zy2GXBdU1NMYoDlvZY7X;sB4?oVmE0??acA_evQqxXte52*i4I%MgH*HX%vANc=6p7 zan4Yxq)u6?au(J$zAbzxuJ6_Kw~rXdshD;F0362cGp>%6?QKxUme^yh_>`U34h{l! z8{*{mV~|byru_N#I(^NyA;{F^RDS(~=M4E~u|GYZ70FMPqT51W0@ijRWJioq$-^{| zewxuL!qo=8NasRhP*uko;$r+u4z9%TGQ2ULcrhxwcLgJiHo|Fu(=S}ZYGwq&FIg;n zp~ic0;odczEnPn}BRhvjotO1!q^(TGO0weN+hN(=gTtpjsc=07Bg)x>frED+ zYSOa>X^aaiRwY@^;w43z%sEI&BGUPE5?OP4!9drZIQ&_+wY-NEejkq@2(e9%^2rdx5&N znu`u~wsLS|;T7T$N5;1AabJVf`@E6o_gN~-H9wV<)c$d>%HczV`Qm8g9NOpgqjCh9 z(tiocM8F5Af@^g$`hY#X?C}l9DB^K8cRZ?|!2gwO^VL#gy36&{UEji#)QMYJ*zeSG zd($roUTSTm@3DTvVw^QPZ_~T?c^1gL?A?%y7Iy9|`v5p>p#>_2`JiGr5z8hDApYgJ z(V>1*YaXtv4g<(%Lkg=Dsx38zOGF7>>*7`^_J|gVkN&4z(T0P4_r}w6cC@cs7sNwd66yuuCaL3 z40AX&InMgZVZ+_sv+DA}9A-K|%7XfB8Ajb@%w-5e*sp4dlj^<*F3**3JpUox(OxkJ z)ynADGEI0^XF&*tE$Jgj)DSsO|c<;rYKkePrFi3^Xzp8odZp2Aot zS<+)#bwGsc@}{a9A;f{H@!PJTeIr`?g4;=b?sVJmh*?|sTYn|(#W=6n*75(|D0m}; zZ)5COFMmsXbMkb=-4N*ULR(0+7sT~yd+(lL>87mdiiYQh%{&5p$O�j;t1DW|1+d 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

    1E=>gyOj=B1 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%0DcvbA9)arnDAi@S9;yDKv^6HfF=2UwX<` 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

    mRV!qHrvSD#21~Oli&d5`Pm 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 v9Qn7 None: pass + + def set_leds(self, buffer: list[list[int]]) -> None: + raise AttributeError("Not yet implemented") ``` The only thing you'll need to do extra is add the dependencies to the `pyproject.toml` file From 5f88e6e9560281ce58727db4775fae480cd765b0 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 13:07:07 -0500 Subject: [PATCH 17/27] Undo window size + position attempt nightmare --- marimapper/detector.py | 23 +-- marimapper/visualize_process.py | 25 +-- marimapper/window_state.py | 318 -------------------------------- 3 files changed, 4 insertions(+), 362 deletions(-) delete mode 100644 marimapper/window_state.py diff --git a/marimapper/detector.py b/marimapper/detector.py index 7e3e8b4..73c3529 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -9,12 +9,9 @@ from marimapper.camera import Camera from marimapper.timeout_controller import TimeoutController from marimapper.led import Point2D, LED2D -from marimapper.window_state import apply_window_state, register_on_exit_capture logger = get_logger() -_window_created = False -_state_applied = False def contour_brightness(image: np.ndarray, contour: np.ndarray) -> int: @@ -92,25 +89,7 @@ def draw_led_detections(image: cv2.Mat, led_detection: Optional[Point2D]) -> np. def show_image(image: np.ndarray) -> None: - global _window_created, _state_applied - - window_name = "MariMapper - Detector" - - # First call: create resizable window - if not _window_created: - logger.debug(f"First call to show_image, creating resizable window...") - cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) - _window_created = True - register_on_exit_capture(window_name) - - cv2.imshow(window_name, image) - - # Apply saved state after first imshow (window must exist for resize/move to work) - if not _state_applied: - logger.debug(f"Applying saved window state...") - apply_window_state(window_name) - _state_applied = True - + cv2.imshow("MariMapper - Detector", image) key = cv2.waitKey(1) if key == 27: # esc diff --git a/marimapper/visualize_process.py b/marimapper/visualize_process.py index 7914c1d..3a51576 100644 --- a/marimapper/visualize_process.py +++ b/marimapper/visualize_process.py @@ -3,11 +3,6 @@ from multiprocessing import get_logger, Process, Event from marimapper.queues import Queue3D from marimapper.led import LED3D, View, get_next, get_distance -from marimapper.window_state import ( - get_saved_dimensions, - register_on_exit_capture, - apply_window_state, -) import time logger = get_logger() @@ -74,29 +69,15 @@ def run(self): def initialise_visualiser__(self): logger.debug("Renderer3D process initialising visualiser") - window_name = "MariMapper" - - # Get saved dimensions if available, with sanity checks - saved_w, saved_h = get_saved_dimensions(window_name) - width = saved_w if saved_w and saved_w >= 400 else 640 - height = saved_h if saved_h and saved_h >= 300 else 640 - logger.debug(f"Creating window with dimensions: {width}x{height}") - self._vis = ( open3d.visualization.Visualizer() ) # This needs to be updated to O3DVisualizer self._vis.create_window( - window_name=window_name, - width=width, - height=height, + window_name="MariMapper", + width=640, + height=640, ) - # Apply saved position after window creation - apply_window_state(window_name) - - # Register handler to capture window state on exit - register_on_exit_capture(window_name) - view_ctl = ( self._vis.get_view_control() ) # I'm not sure the camera controls work anymore, bar the z dist diff --git a/marimapper/window_state.py b/marimapper/window_state.py deleted file mode 100644 index 9602db7..0000000 --- a/marimapper/window_state.py +++ /dev/null @@ -1,318 +0,0 @@ -import json -import cv2 -import platform -import subprocess -import atexit -from pathlib import Path -from multiprocessing import get_logger - -logger = get_logger() -_exit_handlers_registered = set() # Track which windows have exit handlers - - -def get_config_dir(): - """Get the marimapper config directory.""" - config_dir = Path.home() / ".config" / "marimapper" - config_dir.mkdir(parents=True, exist_ok=True) - return config_dir - - -def get_state_file(window_name="MariMapper - Detector"): - """Get the path to the window state file for a specific window (separate file per window).""" - config_dir = get_config_dir() - # Use window name to create unique filename, sanitize for filesystem - safe_name = window_name.replace(" ", "_").replace("-", "_") - return config_dir / f"window_state.{safe_name}.json" - - -def load_window_state(window_name="MariMapper - Detector"): - """Load saved window state for a given window name.""" - try: - state_file = get_state_file(window_name) - if not state_file.exists(): - return {} - - with open(state_file, "r") as f: - content = f.read() - if not content.strip(): # Handle empty file - return {} - state = json.loads(content) - return state - except json.JSONDecodeError as e: - logger.debug(f"Corrupted window state file {state_file}, starting fresh: {e}") - return {} - except Exception as e: - logger.debug(f"Failed to load window state: {e}") - return {} - - -def save_window_state(window_name="MariMapper - Detector", x=None, y=None, width=None, height=None): - """Save window state to per-window file.""" - try: - window_state = {} - if x is not None: - window_state["x"] = x - if y is not None: - window_state["y"] = y - if width is not None: - # Sanity check: don't save unreasonably small widths (min 400px) - if width >= 400: - window_state["width"] = width - else: - logger.debug(f"Rejecting width {width} (too small, min 400px)") - if height is not None: - # Sanity check: don't save unreasonably small heights (min 300px) - if height >= 300: - window_state["height"] = height - else: - logger.debug(f"Rejecting height {height} (too small, min 300px)") - - if window_state: # Only update if we have something to save - state_file = get_state_file(window_name) - with open(state_file, "w") as f: - json.dump(window_state, f, indent=2) - logger.debug(f"Saved window state for {window_name}: {window_state}") - except Exception as e: - logger.debug(f"Failed to save window state: {e}") - - -def apply_window_state(window_name="MariMapper - Detector"): - """Apply saved window state (position and size with sanity checks).""" - state = load_window_state(window_name) - - if not state: - logger.debug(f"No saved state found for {window_name}") - return False - - try: - logger.debug(f"Applying window state: {state}") - # Apply size first (only for resizable windows created with cv2.WINDOW_NORMAL) - if "width" in state and "height" in state: - w, h = state["width"], state["height"] - if w >= 400 and h >= 300: # Sanity check - logger.debug(f"Resizing window to {w}x{h}") - cv2.resizeWindow(window_name, w, h) - # Then apply position - if "x" in state and "y" in state: - logger.debug(f"Moving window to x={state['x']}, y={state['y']}") - cv2.moveWindow(window_name, state["x"], state["y"]) - logger.debug(f"Successfully applied window state for {window_name}") - return True - except Exception as e: - logger.debug(f"Failed to apply window state: {e}") - return False - - -def get_window_size_macos_pyobjc(window_name="MariMapper - Detector"): - """Get window size on macOS using PyObjC (fast, native method).""" - try: - import Quartz - from Quartz import CGWindowListCopyWindowInfo, kCGWindowListOptionOnScreenOnly, kCGNullWindowID - - # Get all on-screen windows - windows = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID) - - for window in windows: - # Check if window name contains "MariMapper" - window_name_value = window.get("kCGWindowName", "") - if "MariMapper" in window_name_value: - bounds = window.get("kCGWindowBounds", {}) - logger.debug(f"Found MariMapper window, bounds object type: {type(bounds)}, value: {bounds}") - if bounds: - # Objective-C NSDictionary uses subscript notation - try: - x = int(bounds["X"]) - y = int(bounds["Y"]) - w = int(bounds["Width"]) - h = int(bounds["Height"]) - except (KeyError, TypeError, ValueError) as e: - logger.debug(f"Failed to extract bounds: {e}") - continue - - if w > 0 and h > 0: - logger.debug(f"Captured window size: x={x}, y={y}, w={w}, h={h}") - return x, y, w, h - except ImportError: - pass # PyObjC not available - except Exception as e: - logger.debug(f"Failed with PyObjC method: {e}") - - return None - - -def get_window_size_macos(window_name="MariMapper - Detector"): - """Get window size on macOS using fastest available method.""" - # Try PyObjC first (fastest, native) - result = get_window_size_macos_pyobjc(window_name) - if result: - return result - - # Fall back to osascript (slower but always available) - try: - script = ''' -tell application "System Events" - try - repeat with proc in (processes) - set procName to name of proc - if procName contains "python" then - try - set windowList to every window of proc whose name contains "MariMapper" - if (count of windowList) > 0 then - set firstWindow to item 1 of windowList - set windowPos to position of firstWindow - set windowSize to size of firstWindow - return (item 1 of windowPos) & "," & (item 2 of windowPos) & "," & (item 1 of windowSize) & "," & (item 2 of windowSize) - end if - end try - end if - end repeat - end try -end tell -''' - result = subprocess.run( - ["osascript", "-e", script], - capture_output=True, - text=True, - timeout=5 - ) - if result.returncode == 0 and result.stdout.strip(): - try: - parts = result.stdout.strip().split(",") - if len(parts) >= 4: - return int(parts[0]), int(parts[1]), int(parts[2]), int(parts[3]) - except (ValueError, IndexError): - pass - except subprocess.TimeoutExpired: - logger.debug("macOS window size query timed out, will use fallback") - except Exception as e: - logger.debug(f"Failed osascript method: {e}") - - return None - - -def get_window_size_linux(window_name="MariMapper - Detector"): - """Get window size on Linux using xdotool.""" - try: - # Search for window by name - search_result = subprocess.run( - ["xdotool", "search", "--name", window_name], - capture_output=True, - text=True, - timeout=1 - ) - if search_result.returncode == 0 and search_result.stdout.strip(): - window_id = search_result.stdout.strip().split()[0] - # Get window geometry - geom_result = subprocess.run( - ["xdotool", "getwindowgeometry", window_id], - capture_output=True, - text=True, - timeout=1 - ) - if geom_result.returncode == 0: - # Parse output like: Position: 0,0 (screen: 0) - # Geometry: 1280x720 - lines = geom_result.stdout.strip().split("\n") - x, y = 0, 0 - w, h = 0, 0 - for line in lines: - if "Position:" in line: - coords = line.split("Position:")[1].split("(")[0].strip().split(",") - x, y = int(coords[0]), int(coords[1]) - elif "Geometry:" in line: - size = line.split("Geometry:")[1].strip().split("x") - w, h = int(size[0]), int(size[1]) - if w > 0 and h > 0: - return x, y, w, h - except Exception as e: - logger.debug(f"Failed to get Linux window size: {e}") - return None - - -def get_window_size_platform_specific(window_name="MariMapper - Detector"): - """Try to get actual window size using platform-specific methods.""" - system = platform.system() - - if system == "Darwin": # macOS - return get_window_size_macos(window_name) - elif system == "Linux": - return get_window_size_linux(window_name) - # Windows support could be added here with ctypes if needed - - return None - - -def capture_window_state(window_name="MariMapper - Detector"): - """Attempt to capture and save window state (position and size with sanity checks).""" - try: - # Try platform-specific method to get full window bounds - size_info = get_window_size_platform_specific(window_name) - if size_info: - x, y, w, h = size_info[0], size_info[1], size_info[2], size_info[3] - logger.debug(f"Captured window bounds: x={x}, y={y}, w={w}, h={h}") - # save_window_state will apply sanity checks - save_window_state(window_name, x=x, y=y, width=w, height=h) - return True - - # Fallback to OpenCV's image rect - rect = cv2.getWindowImageRect(window_name) - if rect and len(rect) >= 4: - x, y, w, h = rect[0], rect[1], rect[2], rect[3] - logger.debug(f"Captured window rect (OpenCV): x={x}, y={y}, w={w}, h={h}") - # save_window_state will apply sanity checks - save_window_state(window_name, x=x, y=y, width=w, height=h) - return True - except Exception as e: - logger.debug(f"Failed to capture window state: {e}") - return False - - -# ============================================================================== -# Public API for window state management -# ============================================================================== - - -def get_saved_dimensions(window_name: str) -> tuple: - """ - Get saved window dimensions if available. - - Returns: - (width, height) tuple if saved, else (None, None) - """ - state = load_window_state(window_name) - if "width" in state and "height" in state: - return state["width"], state["height"] - return None, None - - -def get_saved_position(window_name: str) -> tuple: - """ - Get saved window position if available. - - Returns: - (x, y) tuple if saved, else (None, None) - """ - state = load_window_state(window_name) - if "x" in state and "y" in state: - return state["x"], state["y"] - return None, None - - -def register_on_exit_capture(window_name: str): - """ - Register an atexit handler to capture and save window state on program exit. - Safe to call multiple times for the same window. - """ - if window_name in _exit_handlers_registered: - return # Already registered - - def _save_on_exit(): - try: - logger.debug(f"Capturing window state for {window_name} on exit...") - capture_window_state(window_name) - except Exception: - pass # Silently fail if we can't capture state - - atexit.register(_save_on_exit) - _exit_handlers_registered.add(window_name) - logger.debug(f"Registered exit handler for window: {window_name}") From 24d7f1eae842303491174f9ade7996b07822ec24 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 14:03:38 -0500 Subject: [PATCH 18/27] Introduce way to set window positions and sizes --- marimapper/detector.py | 20 +++++++++++++++++- marimapper/utils.py | 36 ++++++++++++++++++++++++++++++++- marimapper/visualize_process.py | 11 +++++++--- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/marimapper/detector.py b/marimapper/detector.py index 73c3529..c2b42f3 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -9,6 +9,7 @@ from marimapper.camera import Camera from marimapper.timeout_controller import TimeoutController from marimapper.led import Point2D, LED2D +from marimapper.utils import position_window logger = get_logger() @@ -89,7 +90,24 @@ def draw_led_detections(image: cv2.Mat, led_detection: Optional[Point2D]) -> np. def show_image(image: np.ndarray) -> None: - cv2.imshow("MariMapper - Detector", image) + window_name = "MariMapper - Detector" + + x, y, _, target_height = position_window(window_name, 320, 0, 960, 540) + + native_h, native_w = image.shape[:2] + aspect_ratio = native_w / native_h + + target_width = int(target_height * aspect_ratio) + + if not getattr(show_image, "setup_done", False): + cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) + cv2.resizeWindow(window_name, target_width, target_height) + cv2.moveWindow(window_name, x, y) + show_image.setup_done = True + + display_image = cv2.resize(image, (target_width, target_height)) + + cv2.imshow(window_name, display_image) key = cv2.waitKey(1) if key == 27: # esc diff --git a/marimapper/utils.py b/marimapper/utils.py index 52c1c01..2f5f495 100644 --- a/marimapper/utils.py +++ b/marimapper/utils.py @@ -1,6 +1,8 @@ import os import sys - +import json +import re +from pathlib import Path def get_user_confirmation(prompt): # pragma: no coverage @@ -49,3 +51,35 @@ def __exit__(self, *_): self.outnull_file.close() self.errnull_file.close() + +CONFIG_DIR = Path.home() / ".config" / "marimapper" / "windows" +_CACHE = {} + +def position_window(name: str, x: int, y: int, w: int, h: int) -> list[int]: + """ + Returns [x, y, width, height]. + Checks memory cache first. + If not in cache, checks disk. + If not on disk, returns defaults immediately. + """ + if name in _CACHE: + return _CACHE[name] + + clean_name = re.sub(r'[^\w\-_\. ]', '_', name) + file_path = CONFIG_DIR / f"{clean_name}.json" + + defaults = {"x": x, "y": y, "width": w, "height": h} + config = defaults.copy() + + if file_path.exists(): + try: + with open(file_path, 'r') as f: + data = json.load(f) + config.update(data) + except Exception as e: + pass + + # Return as list [x, y, w, h] + result = [config["x"], config["y"], config["width"], config["height"]] + _CACHE[name] = result + return result \ No newline at end of file diff --git a/marimapper/visualize_process.py b/marimapper/visualize_process.py index 3a51576..a50c03b 100644 --- a/marimapper/visualize_process.py +++ b/marimapper/visualize_process.py @@ -3,6 +3,7 @@ from multiprocessing import get_logger, Process, Event from marimapper.queues import Queue3D from marimapper.led import LED3D, View, get_next, get_distance +from marimapper.utils import position_window import time logger = get_logger() @@ -68,14 +69,18 @@ def run(self): def initialise_visualiser__(self): logger.debug("Renderer3D process initialising visualiser") + window_name = "MariMapper" + x, y, w, h = position_window(window_name, 0, 0, 640, 640) self._vis = ( open3d.visualization.Visualizer() ) # This needs to be updated to O3DVisualizer self._vis.create_window( - window_name="MariMapper", - width=640, - height=640, + window_name=window_name, + width=w, + height=h, + left=x, + top=y ) view_ctl = ( From 2dfb22f31274c82add05811cc955a96f65d65771 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Thu, 4 Dec 2025 18:24:20 -0500 Subject: [PATCH 19/27] run linting --- .../backends/pixelblaze/pixelblaze_backend.py | 24 +- .../pixelblaze/upload_map_to_pixelblaze.py | 4 +- marimapper/detector.py | 8 +- .../scripts/basic_photogrammetry_solver.py | 581 ++++++++++-------- marimapper/scripts/results_cli.py | 98 +-- marimapper/utils.py | 13 +- marimapper/visualize_process.py | 6 +- 7 files changed, 408 insertions(+), 326 deletions(-) diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index 4309055..7f9b068 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -29,7 +29,7 @@ def check_pixelblaze_reachable(ip, timeout=0.5): result = sock.connect_ex((ip, 81)) sock.close() return result == 0 - except: + except Exception: return False @@ -54,7 +54,7 @@ def pixelblaze_backend_set_args(parser): parser.add_argument( "--server", default="auto", - help='IP address of PixelBlaze (default: "auto" - discovers first PixelBlaze on network)' + help='IP address of PixelBlaze (default: "auto" - discovers first PixelBlaze on network)', ) @@ -81,7 +81,11 @@ def init_pixelblaze(self, pixelblaze_ip: str): devices = discover_pixelblazes(timeout=3.0) if devices: first_device = devices[0] - pixelblaze_ip = first_device.get('address') if isinstance(first_device, dict) else str(first_device) + pixelblaze_ip = ( + first_device.get("address") + if isinstance(first_device, dict) + else str(first_device) + ) logger.info(f"Found PixelBlaze at {pixelblaze_ip}") else: logger.error("No PixelBlazes found. Specify IP with --server") @@ -97,13 +101,13 @@ def init_pixelblaze(self, pixelblaze_ip: str): ) return pixelblaze.Pixelblaze(pixelblaze_ip) - + def switch_to_mapper_pattern(self): try: self.render_pattern(MARIMAPPER_PATTERN) - except Exception as err: + except Exception: self.load_existing_pattern(MARIMAPPER_PATTERN.stem) - + def get_led_count(self): pixel_count = self.pb.getPixelCount() logger.info(f"Pixelblaze reports {pixel_count} pixels") @@ -111,7 +115,7 @@ def get_led_count(self): def set_led(self, led_index: int, on: bool): self.pb.setActiveVariables({"pixel_to_light": led_index, "turn_on": on}) - + def set_leds(self, buffer: list[list[int]]): """Set arbitrary pixel colors. Buffer format: [[r, g, b], ...] where index is position in list""" @@ -152,13 +156,13 @@ def load_existing_pattern(self, pattern_name: str): ) else: raise e - + def render_pattern(self, source_code: PathLike | str): if self._last_rendered_pattern == source_code: return """Sets current PixelBlaze renderer to this pattern source code, compiles and uses caching.""" - with open(Path(source_code), 'r', encoding='utf-8-sig') as f: + with open(Path(source_code), "r", encoding="utf-8-sig") as f: source_code = f.read() # Check cache for compiled bytecode @@ -169,4 +173,4 @@ def render_pattern(self, source_code: PathLike | str): self._pattern_cache[source_code] = bytecode self._last_rendered_pattern = source_code - self.pb.sendPatternToRenderer(bytecode) \ No newline at end of file + self.pb.sendPatternToRenderer(bytecode) diff --git a/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py b/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py index 09d87f3..f429c9d 100644 --- a/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py +++ b/marimapper/backends/pixelblaze/upload_map_to_pixelblaze.py @@ -48,6 +48,8 @@ def upload_map_to_pixelblaze(cli_args): f"Uploading coordinates to pixelblaze {cli_args.server if cli_args.server is not None else ''}" ) - led_backend: pixelblaze_backend.Backend = pixelblaze_backend.pixelblaze_backend_factory(cli_args) + led_backend: pixelblaze_backend.Backend = ( + pixelblaze_backend.pixelblaze_backend_factory(cli_args) + ) led_backend.set_map_coordinates(final_coordinate_list) logger.info("Finished") diff --git a/marimapper/detector.py b/marimapper/detector.py index c2b42f3..bf0a18e 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -91,12 +91,12 @@ def draw_led_detections(image: cv2.Mat, led_detection: Optional[Point2D]) -> np. def show_image(image: np.ndarray) -> None: window_name = "MariMapper - Detector" - + x, y, _, target_height = position_window(window_name, 320, 0, 960, 540) - + native_h, native_w = image.shape[:2] aspect_ratio = native_w / native_h - + target_width = int(target_height * aspect_ratio) if not getattr(show_image, "setup_done", False): @@ -106,7 +106,7 @@ def show_image(image: np.ndarray) -> None: show_image.setup_done = True display_image = cv2.resize(image, (target_width, target_height)) - + cv2.imshow(window_name, display_image) key = cv2.waitKey(1) diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py index c6ad7cf..138c31b 100644 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ b/marimapper/scripts/basic_photogrammetry_solver.py @@ -18,50 +18,53 @@ from dataclasses import dataclass from typing import Optional -log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) + +def log(*args, **kwargs): + click.secho(*args, err=True, **kwargs) # --- DATA STRUCTURES --- + @dataclass class CameraInfo: """Stores calibrated camera data with quality metrics.""" - P: np.ndarray # 3x4 projection matrix - points: dict # {index: (u, v)} + + P: np.ndarray # 3x4 projection matrix + points: dict # {index: (u, v)} filename: str - reprojection_error: float # RMS reprojection error - inlier_count: int # Number of inliers used - center: Optional[np.ndarray] # Camera center in world coords - azimuth: Optional[float] # Degrees - elevation: Optional[float] # Degrees - distance: Optional[float] # Distance to COM + reprojection_error: float # RMS reprojection error + inlier_count: int # Number of inliers used + center: Optional[np.ndarray] # Camera center in world coords + azimuth: Optional[float] # Degrees + elevation: Optional[float] # Degrees + distance: Optional[float] # Distance to COM # --- NORMALIZATION (Critical for DLT stability) --- + def normalize_2d_points(points): """ Hartley normalization for 2D points. Translates centroid to origin, scales so RMS distance from origin is sqrt(2). - + Returns: (normalized_points, 3x3 transformation matrix T) """ points = np.asarray(points) centroid = np.mean(points, axis=0) centered = points - centroid - + rms_dist = np.sqrt(np.mean(np.sum(centered**2, axis=1))) if rms_dist < 1e-10: rms_dist = 1.0 - + scale = np.sqrt(2) / rms_dist - - T = np.array([ - [scale, 0, -scale * centroid[0]], - [0, scale, -scale * centroid[1]], - [0, 0, 1] - ]) - + + T = np.array( + [[scale, 0, -scale * centroid[0]], [0, scale, -scale * centroid[1]], [0, 0, 1]] + ) + normalized = centered * scale return normalized, T @@ -70,87 +73,90 @@ def normalize_3d_points(points): """ Hartley normalization for 3D points. Translates centroid to origin, scales so RMS distance from origin is sqrt(3). - + Returns: (normalized_points, 4x4 transformation matrix U) """ points = np.asarray(points) centroid = np.mean(points, axis=0) centered = points - centroid - + rms_dist = np.sqrt(np.mean(np.sum(centered**2, axis=1))) if rms_dist < 1e-10: rms_dist = 1.0 - + scale = np.sqrt(3) / rms_dist - - U = np.array([ - [scale, 0, 0, -scale * centroid[0]], - [0, scale, 0, -scale * centroid[1]], - [0, 0, scale, -scale * centroid[2]], - [0, 0, 0, 1] - ]) - + + U = np.array( + [ + [scale, 0, 0, -scale * centroid[0]], + [0, scale, 0, -scale * centroid[1]], + [0, 0, scale, -scale * centroid[2]], + [0, 0, 0, 1], + ] + ) + normalized = centered * scale return normalized, U # --- CAMERA CALIBRATION --- + def compute_projection_matrix_normalized(obj_points, img_points): """ Computes 3x4 projection matrix using DLT with Hartley normalization. Much more numerically stable than raw DLT. - + Returns: P matrix in original coordinates, or None if failed """ if len(obj_points) < 6: return None - + obj_points = np.asarray(obj_points) img_points = np.asarray(img_points) - + # Normalize both point sets img_norm, T = normalize_2d_points(img_points) obj_norm, U = normalize_3d_points(obj_points) - + # Build DLT matrix with normalized coordinates A = [] for i in range(len(obj_points)): X, Y, Z = obj_norm[i] u, v = img_norm[i] - A.append([X, Y, Z, 1, 0, 0, 0, 0, -u*X, -u*Y, -u*Z, -u]) - A.append([0, 0, 0, 0, X, Y, Z, 1, -v*X, -v*Y, -v*Z, -v]) - + A.append([X, Y, Z, 1, 0, 0, 0, 0, -u * X, -u * Y, -u * Z, -u]) + A.append([0, 0, 0, 0, X, Y, Z, 1, -v * X, -v * Y, -v * Z, -v]) + A = np.array(A) - + try: _, S, Vh = np.linalg.svd(A) - + # Check conditioning - ratio of largest to smallest singular value # If too large, the solution is unreliable if S[-1] < 1e-10 or S[0] / S[-1] > 1e10: return None - + P_norm = Vh[-1].reshape(3, 4) - + # Denormalize: P = T^(-1) @ P_norm @ U T_inv = np.linalg.inv(T) P = T_inv @ P_norm @ U - + # Normalize so ||P[2,:3]|| = 1 (makes depth computation consistent) scale = np.linalg.norm(P[2, :3]) if scale < 1e-10: return None P = P / scale - + # Ensure positive depth for the centroid of object points centroid_3d = np.mean(obj_points, axis=0) depth = P[2] @ np.append(centroid_3d, 1) if depth < 0: P = -P # Flip sign to get positive depth - + return P - + except np.linalg.LinAlgError: return None @@ -158,169 +164,168 @@ def compute_projection_matrix_normalized(obj_points, img_points): def compute_reprojection_error(P, obj_points, img_points): """ Compute RMS reprojection error for a projection matrix. - + Returns: (rms_error, individual_errors) """ obj_points = np.asarray(obj_points) img_points = np.asarray(img_points) - + errors = [] for obj, img in zip(obj_points, img_points): proj = P @ np.append(obj, 1) if abs(proj[2]) < 1e-10: - errors.append(float('inf')) + errors.append(float("inf")) continue - + proj_2d = proj[:2] / proj[2] error = np.linalg.norm(proj_2d - img) errors.append(error) - + errors = np.array(errors) rms = np.sqrt(np.mean(errors**2)) return rms, errors -def calibrate_camera_ransac(obj_points, img_points, - n_iterations=500, - inlier_threshold=5.0, - min_inliers=8): +def calibrate_camera_ransac( + obj_points, img_points, n_iterations=500, inlier_threshold=5.0, min_inliers=8 +): """ RANSAC-based camera calibration for robustness to outliers. - + Args: obj_points: List of 3D points img_points: List of corresponding 2D points n_iterations: Number of RANSAC iterations inlier_threshold: Max reprojection error (pixels) to be considered inlier min_inliers: Minimum inliers required for valid model - + Returns: (best_P, inlier_mask) or (None, None) """ obj_points = np.asarray(obj_points) img_points = np.asarray(img_points) n_points = len(obj_points) - + if n_points < 6: return None, None - + best_P = None best_inliers = None best_inlier_count = 0 - + # Minimum sample size for DLT sample_size = 6 - + for _ in range(n_iterations): # Random sample indices = np.random.choice(n_points, sample_size, replace=False) - + P = compute_projection_matrix_normalized( - obj_points[indices], - img_points[indices] + obj_points[indices], img_points[indices] ) - + if P is None: continue - + # Evaluate on all points _, errors = compute_reprojection_error(P, obj_points, img_points) inliers = errors < inlier_threshold inlier_count = np.sum(inliers) - + if inlier_count > best_inlier_count: best_inlier_count = inlier_count best_inliers = inliers best_P = P - + if best_inlier_count < min_inliers: return None, None - + # Refine using all inliers refined_P = compute_projection_matrix_normalized( - obj_points[best_inliers], - img_points[best_inliers] + obj_points[best_inliers], img_points[best_inliers] ) - + if refined_P is not None: return refined_P, best_inliers - + return best_P, best_inliers # --- CAMERA POSE EXTRACTION --- + def extract_camera_info(P, com): """ Extract camera position and orientation relative to subject COM. - + Returns: (azimuth_deg, elevation_deg, distance, camera_center) """ try: M = P[:, :3] p4 = P[:, 3] - + # Camera center: C = -M^(-1) * p4 det = np.linalg.det(M) if abs(det) < 1e-10: return None, None, None, None - + M_inv = np.linalg.inv(M) C = -M_inv @ p4 - + # Vector from subject COM to camera cam_rel = C - com distance = np.linalg.norm(cam_rel) - + if distance < 1e-6: return None, None, None, C - + cam_dir = cam_rel / distance - + # Azimuth: angle in XY plane from +Y axis azimuth = np.degrees(np.arctan2(cam_dir[0], cam_dir[1])) - + # Elevation: angle from horizontal (positive = up) elevation = np.degrees(np.arcsin(np.clip(cam_dir[2], -1, 1))) - + return azimuth, elevation, distance, C - + except Exception: return None, None, None, None # --- TRIANGULATION WITH FALLBACKS --- + def triangulate_point_dlt(cameras, detections): """ Triangulates a single 3D point using DLT (SVD-based). - + Returns: 3D point or None """ if len(cameras) < 2: return None - + A = [] for P, (u, v) in zip(cameras, detections): A.append(u * P[2] - P[0]) A.append(v * P[2] - P[1]) - + A = np.array(A) - + try: _, S, Vh = np.linalg.svd(A) - + # Check if solution is well-conditioned if S[-1] < 1e-10: return None - + X_homogeneous = Vh[-1] - + if abs(X_homogeneous[3]) < 1e-10: return None - + X_cartesian = X_homogeneous[:3] / X_homogeneous[3] return X_cartesian - + except np.linalg.LinAlgError: return None @@ -333,7 +338,7 @@ def compute_reprojection_errors(point_3d, cameras, detections): proj = P @ np.append(point_3d, 1) depths.append(proj[2]) if abs(proj[2]) < 1e-10: - errors.append(float('inf')) + errors.append(float("inf")) else: proj_2d = proj[:2] / proj[2] errors.append(np.linalg.norm(proj_2d - np.array([u, v]))) @@ -345,64 +350,64 @@ def compute_ray_angle(point_3d, cam_infos): centers = [c.center for c in cam_infos if c.center is not None] if len(centers) < 2: return 180.0 # Assume good if we can't compute - + rays = [] for c in centers: ray = point_3d - c norm = np.linalg.norm(ray) if norm > 1e-6: rays.append(ray / norm) - + if len(rays) < 2: return 180.0 - + max_angle = 0 for i in range(len(rays)): for j in range(i + 1, len(rays)): cos_angle = np.clip(np.dot(rays[i], rays[j]), -1, 1) angle = np.degrees(np.arccos(cos_angle)) max_angle = max(max_angle, angle) - + return max_angle def backproject_with_depth_estimate(cam_info, detection, reference_depth): """ Back-project a 2D point using estimated depth from nearby known points. - + This is a fallback when triangulation fails - uses single view + depth guess. Less accurate but always produces a result. - + Args: cam_info: CameraInfo with projection matrix P detection: (u, v) pixel coordinates reference_depth: Estimated depth from known nearby points - + Returns: 3D point estimate """ P = cam_info.P u, v = detection - + # P = [M | p4], we need to invert the projection # For a point at depth d along the ray: X = C + d * ray_direction M = P[:, :3] p4 = P[:, 3] - + try: M_inv = np.linalg.inv(M) C = -M_inv @ p4 # Camera center - + # Ray direction: M^(-1) @ [u, v, 1]^T (unnormalized) ray = M_inv @ np.array([u, v, 1]) ray_norm = np.linalg.norm(ray) if ray_norm < 1e-10: return None ray = ray / ray_norm - + # Project along ray to estimated depth point_3d = C + reference_depth * ray return point_3d - + except np.linalg.LinAlgError: return None @@ -410,6 +415,7 @@ def backproject_with_depth_estimate(cam_info, detection, reference_depth): @dataclass class TriangulationResult: """Result of triangulation attempt with metadata.""" + point: Optional[np.ndarray] method: str quality: float # Lower is better, -1 for interpolated @@ -417,58 +423,72 @@ class TriangulationResult: confidence: str # "high", "medium", "low", "fallback" -def triangulate_with_fallbacks(idx, cameras, detections, cam_infos, - known_data, com, - strict_reproj=10.0, - relaxed_reproj=50.0, - strict_ray_angle=2.0, - relaxed_ray_angle=0.5): +def triangulate_with_fallbacks( + idx, + cameras, + detections, + cam_infos, + known_data, + com, + strict_reproj=10.0, + relaxed_reproj=50.0, + strict_ray_angle=2.0, + relaxed_ray_angle=0.5, +): """ Triangulate a point with cascading fallback strategies. - + Cascade order: 1. Strict triangulation (tight reprojection + ray angle thresholds) 2. Relaxed triangulation (looser thresholds) 3. Best-effort triangulation (any result with positive depth) 4. Single-view backprojection with depth estimate 5. Linear interpolation (always succeeds) - + Returns: TriangulationResult (always contains a valid point) """ num_views = len(cameras) - + # === TIER 1: Strict quality triangulation === if num_views >= 2: point_3d = triangulate_point_dlt(cameras, detections) - + if point_3d is not None: errors, depths = compute_reprojection_errors(point_3d, cameras, detections) ray_angle = compute_ray_angle(point_3d, cam_infos) - + all_positive_depth = all(d > 0 for d in depths) max_error = max(errors) mean_error = np.mean(errors) - + # Tier 1: Strict thresholds - if all_positive_depth and max_error < strict_reproj and ray_angle > strict_ray_angle: + if ( + all_positive_depth + and max_error < strict_reproj + and ray_angle > strict_ray_angle + ): return TriangulationResult( point=point_3d, method="Triangulated (strict)", quality=mean_error, num_views=num_views, - confidence="high" + confidence="high", ) - + # === TIER 2: Relaxed thresholds === - if all_positive_depth and max_error < relaxed_reproj and ray_angle > relaxed_ray_angle: + if ( + all_positive_depth + and max_error < relaxed_reproj + and ray_angle > relaxed_ray_angle + ): return TriangulationResult( point=point_3d, method="Triangulated (relaxed)", quality=mean_error, num_views=num_views, - confidence="medium" + confidence="medium", ) - + # === TIER 3: Best-effort (just need positive depth and bounded error) === if all_positive_depth and max_error < 200.0: return TriangulationResult( @@ -476,22 +496,24 @@ def triangulate_with_fallbacks(idx, cameras, detections, cam_infos, method="Triangulated (best-effort)", quality=mean_error, num_views=num_views, - confidence="low" + confidence="low", ) - + # Check if flipping helps (camera behind subject issue) if not all_positive_depth: point_flipped = -point_3d - errors_f, depths_f = compute_reprojection_errors(point_flipped, cameras, detections) + errors_f, depths_f = compute_reprojection_errors( + point_flipped, cameras, detections + ) if all(d > 0 for d in depths_f) and max(errors_f) < relaxed_reproj: return TriangulationResult( point=point_flipped, method="Triangulated (flipped)", quality=np.mean(errors_f), num_views=num_views, - confidence="low" + confidence="low", ) - + # === TIER 4: Single-view backprojection === if num_views >= 1: # Estimate depth from nearby known points @@ -500,10 +522,10 @@ def triangulate_with_fallbacks(idx, cameras, detections, cam_infos, if abs(known_idx - idx) <= 10: # Within 10 indices # Compute depth of known point from first camera P = cam_infos[0].P - proj = P @ np.append(data['pos'], 1) + proj = P @ np.append(data["pos"], 1) if proj[2] > 0: nearby_depths.append(proj[2]) - + if not nearby_depths: # Use distance to COM as fallback depth estimate if cam_infos[0].distance is not None: @@ -512,51 +534,56 @@ def triangulate_with_fallbacks(idx, cameras, detections, cam_infos, reference_depth = np.linalg.norm(com) else: reference_depth = np.median(nearby_depths) - + # Try backprojection from camera with best view for cam, det in zip(cam_infos, detections): point_3d = backproject_with_depth_estimate(cam, det, reference_depth) if point_3d is not None: # Sanity check: point should be reasonably close to known points - distances_to_known = [np.linalg.norm(point_3d - known_data[k]['pos']) - for k in known_data.keys()] - if min(distances_to_known) < reference_depth * 2: # Within 2x expected range + distances_to_known = [ + np.linalg.norm(point_3d - known_data[k]["pos"]) + for k in known_data.keys() + ] + if ( + min(distances_to_known) < reference_depth * 2 + ): # Within 2x expected range return TriangulationResult( point=point_3d, method="Backprojected", quality=-1.0, num_views=1, - confidence="low" + confidence="low", ) - + # === TIER 5: Linear interpolation (always succeeds) === interp_pos, _ = interpolate_linear(idx, known_data) - + return TriangulationResult( point=interp_pos, method="Interpolated", quality=-1.0, num_views=0, - confidence="fallback" + confidence="fallback", ) # --- STANDARD LOADERS --- + def load_3d_map(filename): """Load 3D map from CSV.""" if not os.path.exists(filename): - log(f"Error: {filename} not found.", fg='red') + log(f"Error: {filename} not found.", fg="red") sys.exit(1) - + df = pd.read_csv(filename) data = {} for _, row in df.iterrows(): - idx = int(row['index']) + idx = int(row["index"]) data[idx] = { - 'pos': np.array([float(row['x']), float(row['y']), float(row['z'])]), - 'norm': np.array([float(row['xn']), float(row['yn']), float(row['zn'])]), - 'error': float(row['error']) + "pos": np.array([float(row["x"]), float(row["y"]), float(row["z"])]), + "norm": np.array([float(row["xn"]), float(row["yn"]), float(row["zn"])]), + "error": float(row["error"]), } return data @@ -565,15 +592,15 @@ def load_all_2d_files(): """Load all 2D detection files.""" files = sorted(glob.glob("./led_map_2d_*.csv")) views = [] - + for fname in files: df = pd.read_csv(fname) view_data = {} for _, row in df.iterrows(): - idx = int(row['index']) - view_data[idx] = (float(row['u']), float(row['v'])) - views.append({'filename': fname, 'points': view_data}) - + idx = int(row["index"]) + view_data[idx] = (float(row["u"]), float(row["v"])) + views.append({"filename": fname, "points": view_data}) + return views @@ -581,49 +608,52 @@ def interpolate_linear(idx, known_data): """Fallback: Linear interpolation for normals or failed triangulation.""" keys = sorted(known_data.keys()) if idx in keys: - return known_data[idx]['pos'], known_data[idx]['norm'] - + return known_data[idx]["pos"], known_data[idx]["norm"] + prev_k = next((k for k in reversed(keys) if k < idx), None) next_k = next((k for k in keys if k > idx), None) - - pos = np.array([0., 0., 0.]) - norm = np.array([0., 0., 1.]) - + + pos = np.array([0.0, 0.0, 0.0]) + norm = np.array([0.0, 0.0, 1.0]) + if prev_k is not None and next_k is not None: alpha = (idx - prev_k) / (next_k - prev_k) - p1, n1 = known_data[prev_k]['pos'], known_data[prev_k]['norm'] - p2, n2 = known_data[next_k]['pos'], known_data[next_k]['norm'] + p1, n1 = known_data[prev_k]["pos"], known_data[prev_k]["norm"] + p2, n2 = known_data[next_k]["pos"], known_data[next_k]["norm"] pos = (1 - alpha) * p1 + alpha * p2 norm = (1 - alpha) * n1 + alpha * n2 elif prev_k is not None: - pos, norm = known_data[prev_k]['pos'], known_data[prev_k]['norm'] + pos, norm = known_data[prev_k]["pos"], known_data[prev_k]["norm"] elif next_k is not None: - pos, norm = known_data[next_k]['pos'], known_data[next_k]['norm'] - + pos, norm = known_data[next_k]["pos"], known_data[next_k]["norm"] + norm_len = np.linalg.norm(norm) if norm_len > 1e-9: norm = norm / norm_len - + return pos, norm # --- MAIN EXECUTION --- -def fill_missing_indices(data_dir=".", - ransac_iterations=500, - ransac_threshold=5.0, - min_calibration_points=8, - triangulation_reproj_threshold=10.0, - min_ray_angle=2.0): + +def fill_missing_indices( + data_dir=".", + ransac_iterations=500, + ransac_threshold=5.0, + min_calibration_points=8, + triangulation_reproj_threshold=10.0, + min_ray_angle=2.0, +): """ Fills in missing LED indices using photogrammetric reconstruction. - + Improvements over basic implementation: - Hartley normalization for numerical stability - - RANSAC for outlier rejection during camera calibration + - RANSAC for outlier rejection during camera calibration - Quality-checked triangulation with ray angle validation - Reprojection error reporting - + Args: data_dir: Directory containing led_map_3d.csv and led_map_2d_*.csv ransac_iterations: Number of RANSAC iterations for camera calibration @@ -631,125 +661,133 @@ def fill_missing_indices(data_dir=".", min_calibration_points: Minimum points needed for camera calibration triangulation_reproj_threshold: Max reprojection error for triangulated points min_ray_angle: Minimum angle (degrees) between rays for valid triangulation - + Returns: dict: Final map with all indices, or None if processing failed """ old_cwd = os.getcwd() try: os.chdir(data_dir) - + # 1. Load Data map_3d = load_3d_map("led_map_3d.csv") views = load_all_2d_files() - + if not views: - log("Error: No 2D view files found.", fg='red') + log("Error: No 2D view files found.", fg="red") return None - + # Compute center of mass - positions = np.array([map_3d[idx]['pos'] for idx in sorted(map_3d.keys())]) + positions = np.array([map_3d[idx]["pos"] for idx in sorted(map_3d.keys())]) com = np.mean(positions, axis=0) - - log(f"Loaded {len(map_3d)} known 3D points, COM at [{com[0]:.2f}, {com[1]:.2f}, {com[2]:.2f}]") + + log( + f"Loaded {len(map_3d)} known 3D points, COM at [{com[0]:.2f}, {com[1]:.2f}, {com[2]:.2f}]" + ) log(f"Found {len(views)} 2D view files\n") - + # 2. Calibrate cameras with RANSAC - log(f"Step 1: Camera calibration (RANSAC, {ransac_iterations} iterations, {ransac_threshold}px threshold)") + log( + f"Step 1: Camera calibration (RANSAC, {ransac_iterations} iterations, {ransac_threshold}px threshold)" + ) log("-" * 80) - + calibrated_cameras = [] - + for view in views: - common_indices = set(view['points'].keys()).intersection(set(map_3d.keys())) - + common_indices = set(view["points"].keys()).intersection(set(map_3d.keys())) + if len(common_indices) < min_calibration_points: - log(f" {Path(view['filename']).name}: SKIPPED ({len(common_indices)} pts < {min_calibration_points} required)") + log( + f" {Path(view['filename']).name}: SKIPPED ({len(common_indices)} pts < {min_calibration_points} required)" + ) continue - - obj_pts = np.array([map_3d[idx]['pos'] for idx in common_indices]) - img_pts = np.array([view['points'][idx] for idx in common_indices]) - + + obj_pts = np.array([map_3d[idx]["pos"] for idx in common_indices]) + img_pts = np.array([view["points"][idx] for idx in common_indices]) + P, inlier_mask = calibrate_camera_ransac( - obj_pts, img_pts, + obj_pts, + img_pts, n_iterations=ransac_iterations, inlier_threshold=ransac_threshold, - min_inliers=min_calibration_points + min_inliers=min_calibration_points, ) - + if P is None: - log(f" {Path(view['filename']).name}: FAILED (RANSAC found no good model)") + log( + f" {Path(view['filename']).name}: FAILED (RANSAC found no good model)" + ) continue - + # Compute final reprojection error on inliers inlier_obj = obj_pts[inlier_mask] inlier_img = img_pts[inlier_mask] rms_error, _ = compute_reprojection_error(P, inlier_obj, inlier_img) - + # Extract camera pose azimuth, elevation, distance, center = extract_camera_info(P, com) - + cam_info = CameraInfo( P=P, - points=view['points'], - filename=view['filename'], + points=view["points"], + filename=view["filename"], reprojection_error=rms_error, inlier_count=int(np.sum(inlier_mask)), center=center, azimuth=azimuth, elevation=elevation, - distance=distance + distance=distance, ) calibrated_cameras.append(cam_info) - + # Log result - timestamp = Path(view['filename']).stem.split('_')[-1] + timestamp = Path(view["filename"]).stem.split("_")[-1] pose_str = "" if azimuth is not None: pose_str = f"az={azimuth:+6.1f}° el={elevation:+5.1f}° d={distance:.2f}" - - log(f" {timestamp}: {cam_info.inlier_count}/{len(common_indices)} inliers, " - f"RMS={rms_error:.2f}px, {pose_str}") - + + log( + f" {timestamp}: {cam_info.inlier_count}/{len(common_indices)} inliers, " + f"RMS={rms_error:.2f}px, {pose_str}" + ) + log(f"\nStep 2: Calibrated {len(calibrated_cameras)}/{len(views)} cameras\n") - + if len(calibrated_cameras) < 2: - log("Error: Need at least 2 calibrated cameras for triangulation.", fg='red') + log( + "Error: Need at least 2 calibrated cameras for triangulation.", fg="red" + ) return None - + # 3. Identify missing indices all_2d_indices = set() for v in views: - all_2d_indices.update(v['points'].keys()) - + all_2d_indices.update(v["points"].keys()) + missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) log(f"Step 3: Reconstructing {len(missing_indices)} missing points") log("-" * 80) - + final_map = map_3d.copy() - + # Track outcomes by confidence level - stats = { - 'high': 0, - 'medium': 0, - 'low': 0, - 'fallback': 0 - } + stats = {"high": 0, "medium": 0, "low": 0, "fallback": 0} method_counts = {} reconstruction_table = [] - + for idx in missing_indices: # Gather cameras that see this point participating_cams = [] participating_detections = [] participating_infos = [] - + for cam in calibrated_cameras: if idx in cam.points: participating_cams.append(cam.P) participating_detections.append(cam.points[idx]) participating_infos.append(cam) - + # Use cascading fallback system result = triangulate_with_fallbacks( idx=idx, @@ -761,38 +799,53 @@ def fill_missing_indices(data_dir=".", strict_reproj=triangulation_reproj_threshold, relaxed_reproj=triangulation_reproj_threshold * 5, strict_ray_angle=min_ray_angle, - relaxed_ray_angle=min_ray_angle / 4 + relaxed_ray_angle=min_ray_angle / 4, ) - + # Track statistics stats[result.confidence] += 1 method_counts[result.method] = method_counts.get(result.method, 0) + 1 - + # Get interpolated normal (triangulation doesn't give us surface normals) _, interp_norm = interpolate_linear(idx, final_map) - + # Store result final_map[idx] = { - 'pos': result.point, - 'norm': interp_norm, - 'error': result.quality if result.quality >= 0 else -1.0 + "pos": result.point, + "norm": interp_norm, + "error": result.quality if result.quality >= 0 else -1.0, } - - pos_str = f"[{result.point[0]:.4f}, {result.point[1]:.4f}, {result.point[2]:.4f}]" + + pos_str = ( + f"[{result.point[0]:.4f}, {result.point[1]:.4f}, {result.point[2]:.4f}]" + ) quality_str = f"{result.quality:.2f}" if result.quality >= 0 else "N/A" - reconstruction_table.append([ - idx, result.method, result.num_views, - result.confidence, quality_str, pos_str - ]) - + reconstruction_table.append( + [ + idx, + result.method, + result.num_views, + result.confidence, + quality_str, + pos_str, + ] + ) + # Print reconstruction table if reconstruction_table: df_table = pd.DataFrame( - reconstruction_table, - columns=["Index", "Method", "Views", "Confidence", "Quality", "Position"] + reconstruction_table, + columns=[ + "Index", + "Method", + "Views", + "Confidence", + "Quality", + "Position", + ], ) log(df_table.to_string(index=False) + "\n") - + # Summary log("Reconstruction Summary by Confidence:") log(f" High (strict triangulation): {stats['high']}") @@ -805,53 +858,59 @@ def fill_missing_indices(data_dir=".", for method, count in sorted(method_counts.items(), key=lambda x: -x[1]): log(f" {method}: {count}") log("") - + return final_map - + finally: os.chdir(old_cwd) @click.command() -@click.option('--dir', '-d', default='.', help='Data directory') -@click.option('--ransac-iter', default=500, help='RANSAC iterations') -@click.option('--ransac-thresh', default=5.0, help='RANSAC inlier threshold (pixels)') -@click.option('--min-points', default=8, help='Min calibration points per camera') -@click.option('--reproj-thresh', default=10.0, help='Max reprojection error for triangulation') -@click.option('--min-angle', default=2.0, help='Min ray angle (degrees) for triangulation') +@click.option("--dir", "-d", default=".", help="Data directory") +@click.option("--ransac-iter", default=500, help="RANSAC iterations") +@click.option("--ransac-thresh", default=5.0, help="RANSAC inlier threshold (pixels)") +@click.option("--min-points", default=8, help="Min calibration points per camera") +@click.option( + "--reproj-thresh", default=10.0, help="Max reprojection error for triangulation" +) +@click.option( + "--min-angle", default=2.0, help="Min ray angle (degrees) for triangulation" +) def main(dir, ransac_iter, ransac_thresh, min_points, reproj_thresh, min_angle): """Fill missing LED indices using photogrammetric reconstruction.""" - + final_map = fill_missing_indices( data_dir=dir, ransac_iterations=ransac_iter, ransac_threshold=ransac_thresh, min_calibration_points=min_points, triangulation_reproj_threshold=reproj_thresh, - min_ray_angle=min_angle + min_ray_angle=min_angle, ) - + if final_map is None: sys.exit(1) - + # Output CSV to stdout rows = [] for idx in sorted(final_map.keys()): d = final_map[idx] - rows.append({ - 'index': idx, - 'x': f"{d['pos'][0]:.6f}", - 'y': f"{d['pos'][1]:.6f}", - 'z': f"{d['pos'][2]:.6f}", - 'xn': f"{d['norm'][0]:.6f}", - 'yn': f"{d['norm'][1]:.6f}", - 'zn': f"{d['norm'][2]:.6f}", - 'error': f"{d['error']:.6f}" - }) - + rows.append( + { + "index": idx, + "x": f"{d['pos'][0]:.6f}", + "y": f"{d['pos'][1]:.6f}", + "z": f"{d['pos'][2]:.6f}", + "xn": f"{d['norm'][0]:.6f}", + "yn": f"{d['norm'][1]:.6f}", + "zn": f"{d['norm'][2]:.6f}", + "error": f"{d['error']:.6f}", + } + ) + df = pd.DataFrame(rows) df.to_csv(sys.stdout, index=False) if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 42917cb..b39a3c7 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -5,7 +5,10 @@ import pandas as pd from marimapper.scripts.basic_photogrammetry_solver import fill_missing_indices -log = lambda *args, **kwargs: click.secho(*args, err=True, **kwargs) + +def log(*args, **kwargs): + click.secho(*args, err=True, **kwargs) + def scan_2d_indices(data_dir): """Scan all 2D detection files in directory.""" @@ -18,7 +21,7 @@ def scan_2d_indices(data_dir): for fname in files: df = pd.read_csv(fname) for _, row in df.iterrows(): - idx = int(row['index']) + idx = int(row["index"]) if idx not in detection_log: detection_log[idx] = [] detection_log[idx].append(os.path.basename(fname)) @@ -35,75 +38,86 @@ def normalize_map_for_csv(final_map): row_data = final_map[idx] # Handle filled format (numpy arrays) and CSV format (strings) - if isinstance(row_data, dict) and 'pos' in row_data: - pos = row_data['pos'] - norm = row_data['norm'] - error = row_data['error'] - rows.append({ - 'index': idx, - 'x': f"{float(pos[0]):.6f}", - 'y': f"{float(pos[1]):.6f}", - 'z': f"{float(pos[2]):.6f}", - 'xn': f"{float(norm[0]):.6f}", - 'yn': f"{float(norm[1]):.6f}", - 'zn': f"{float(norm[2]):.6f}", - 'error': f"{float(error):.6f}" - }) + if isinstance(row_data, dict) and "pos" in row_data: + pos = row_data["pos"] + norm = row_data["norm"] + error = row_data["error"] + rows.append( + { + "index": idx, + "x": f"{float(pos[0]):.6f}", + "y": f"{float(pos[1]):.6f}", + "z": f"{float(pos[2]):.6f}", + "xn": f"{float(norm[0]):.6f}", + "yn": f"{float(norm[1]):.6f}", + "zn": f"{float(norm[2]):.6f}", + "error": f"{float(error):.6f}", + } + ) else: # Already in CSV format - rows.append({'index': idx, **row_data}) + rows.append({"index": idx, **row_data}) return pd.DataFrame(rows) @click.command() @click.option( - '--dir', '-d', - default='.', + "--dir", + "-d", + default=".", type=click.Path(exists=True, file_okay=False, dir_okay=True), - help='Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)' + help="Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)", ) @click.option( - '--fill', '-f', + "--fill", + "-f", is_flag=True, - help='Fill missing indices using photogrammetric reconstruction' + help="Fill missing indices using photogrammetric reconstruction", ) @click.option( - '--ransac-iter', '-n', + "--ransac-iter", + "-n", default=500, type=int, show_default=True, - help='RANSAC iterations for camera calibration' + help="RANSAC iterations for camera calibration", ) @click.option( - '--ransac-thresh', '-t', + "--ransac-thresh", + "-t", default=5.0, type=float, show_default=True, - help='RANSAC inlier threshold (pixels)' + help="RANSAC inlier threshold (pixels)", ) @click.option( - '--min-calib-pts', '-p', + "--min-calib-pts", + "-p", default=8, type=int, show_default=True, - help='Min calibration points per camera' + help="Min calibration points per camera", ) @click.option( - '--reproj-thresh', '-r', + "--reproj-thresh", + "-r", default=10.0, type=float, show_default=True, - help='Max reprojection error for strict triangulation (pixels)' + help="Max reprojection error for strict triangulation (pixels)", ) @click.option( - '--min-angle', '-a', + "--min-angle", + "-a", default=2.0, type=float, show_default=True, - help='Min ray angle for strict triangulation (degrees)' + help="Min ray angle for strict triangulation (degrees)", ) -def main(dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, min_angle): +def main( + dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, min_angle +): """ Summarize LED mapping results. @@ -118,7 +132,7 @@ def main(dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, mi # Check if required files exist map_file = os.path.join(dir, "led_map_3d.csv") if not os.path.exists(map_file): - log(f"Error: {map_file} not found", fg='red') + log(f"Error: {map_file} not found", fg="red") sys.exit(1) os.chdir(dir) @@ -128,14 +142,14 @@ def main(dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, mi map_df = pd.read_csv("led_map_3d.csv") map_data = {int(idx): row.to_dict() for idx, row in map_df.iterrows()} except Exception as e: - log(f"Error loading 3D map: {e}", fg='red') + log(f"Error loading 3D map: {e}", fg="red") sys.exit(1) # Scan 2D detections try: data_2d_log, files_2d = scan_2d_indices(".") except Exception as e: - log(f"Error scanning 2D files: {e}", fg='red') + log(f"Error scanning 2D files: {e}", fg="red") sys.exit(1) all_2d_indices = set(data_2d_log.keys()) @@ -153,7 +167,9 @@ def main(dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, mi log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") # Display missing indices table using pandas - missing_table_data = [[idx, len(data_2d_log[idx])] for idx in missing_indices] + missing_table_data = [ + [idx, len(data_2d_log[idx])] for idx in missing_indices + ] df_missing = pd.DataFrame(missing_table_data, columns=["Index", "# Views"]) log(df_missing.to_string(index=False) + "\n") @@ -166,14 +182,16 @@ def main(dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, mi ransac_threshold=ransac_thresh, min_calibration_points=min_calib_pts, triangulation_reproj_threshold=reproj_thresh, - min_ray_angle=min_angle + min_ray_angle=min_angle, ) if final_map is None: - log("Error: Photogrammetric reconstruction failed", fg='red') + log("Error: Photogrammetric reconstruction failed", fg="red") sys.exit(1) else: final_map = map_data - log("(Use --fill to reconstruct missing indices using photogrammetry)\n") + log( + "(Use --fill to reconstruct missing indices using photogrammetry)\n" + ) # Output final 3D map to stdout using pandas if final_map: diff --git a/marimapper/utils.py b/marimapper/utils.py index 2f5f495..f21ce8b 100644 --- a/marimapper/utils.py +++ b/marimapper/utils.py @@ -4,6 +4,7 @@ import re from pathlib import Path + def get_user_confirmation(prompt): # pragma: no coverage try: @@ -52,9 +53,11 @@ def __exit__(self, *_): self.outnull_file.close() self.errnull_file.close() + CONFIG_DIR = Path.home() / ".config" / "marimapper" / "windows" _CACHE = {} + def position_window(name: str, x: int, y: int, w: int, h: int) -> list[int]: """ Returns [x, y, width, height]. @@ -65,21 +68,21 @@ def position_window(name: str, x: int, y: int, w: int, h: int) -> list[int]: if name in _CACHE: return _CACHE[name] - clean_name = re.sub(r'[^\w\-_\. ]', '_', name) + clean_name = re.sub(r"[^\w\-_\. ]", "_", name) file_path = CONFIG_DIR / f"{clean_name}.json" - + defaults = {"x": x, "y": y, "width": w, "height": h} config = defaults.copy() if file_path.exists(): try: - with open(file_path, 'r') as f: + with open(file_path, "r") as f: data = json.load(f) config.update(data) - except Exception as e: + except Exception: pass # Return as list [x, y, w, h] result = [config["x"], config["y"], config["width"], config["height"]] _CACHE[name] = result - return result \ No newline at end of file + return result diff --git a/marimapper/visualize_process.py b/marimapper/visualize_process.py index a50c03b..e04ab8f 100644 --- a/marimapper/visualize_process.py +++ b/marimapper/visualize_process.py @@ -76,11 +76,7 @@ def initialise_visualiser__(self): open3d.visualization.Visualizer() ) # This needs to be updated to O3DVisualizer self._vis.create_window( - window_name=window_name, - width=w, - height=h, - left=x, - top=y + window_name=window_name, width=w, height=h, left=x, top=y ) view_ctl = ( From f063b71e2189ab653363295d25066de1e69eed73 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 6 Dec 2025 11:24:12 -0500 Subject: [PATCH 20/27] rm alternate solver, fix 3.9 errors --- docs/backends/PixelBlaze.md | 9 +- .../backends/pixelblaze/pixelblaze_backend.py | 11 +- .../scripts/basic_photogrammetry_solver.py | 916 ------------------ marimapper/scripts/results_cli.py | 115 +-- 4 files changed, 13 insertions(+), 1038 deletions(-) delete mode 100644 marimapper/scripts/basic_photogrammetry_solver.py diff --git a/docs/backends/PixelBlaze.md b/docs/backends/PixelBlaze.md index 1cee16b..f4465b1 100644 --- a/docs/backends/PixelBlaze.md +++ b/docs/backends/PixelBlaze.md @@ -25,20 +25,19 @@ marimapper pixelblaze marimapper pixelblaze --help ``` -For any backend, we can summarize the results with the following command. -Adding `--fill` is often good enough for basic LED mapping if you're struggling -to get completeness: +For any backend, we can summarize the results with the following command: ```bash marimapper_results -marimapper_results --fill > filled_led_map_3d.csv ``` +If LEDs are logged missing, you can try marimapper args `--interpolation_max_error` and `--interpolation_max_fill`. + Uploading a completed 3d scan: ```bash marimapper_upload_mapping_to_pixelblaze --csv_file led_map_3d.csv ``` -Or with manual gap fill, plus `pb` CLI: +Or with results CLI, plus `pb` CLI: ```bash ( echo '[' ; marimapper_results \ | tail -n+2 | cut -d, -f 5-7 \ diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index 7f9b068..e6eab20 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from multiprocessing import get_logger import time import socket @@ -39,7 +41,7 @@ def discover_pixelblazes(timeout=3.0): enumerator = pixelblaze.PixelblazeEnumerator() time.sleep(timeout) - devices = enumerator.getPixelblazeList() + devices: list[str] = enumerator.getPixelblazeList() enumerator.stop() logger.info(f"Found {len(devices)} PixelBlaze(s)") @@ -80,12 +82,7 @@ def init_pixelblaze(self, pixelblaze_ip: str): # Try beacon scan on network devices = discover_pixelblazes(timeout=3.0) if devices: - first_device = devices[0] - pixelblaze_ip = ( - first_device.get("address") - if isinstance(first_device, dict) - else str(first_device) - ) + pixelblaze_ip = devices[0] logger.info(f"Found PixelBlaze at {pixelblaze_ip}") else: logger.error("No PixelBlazes found. Specify IP with --server") diff --git a/marimapper/scripts/basic_photogrammetry_solver.py b/marimapper/scripts/basic_photogrammetry_solver.py deleted file mode 100644 index 138c31b..0000000 --- a/marimapper/scripts/basic_photogrammetry_solver.py +++ /dev/null @@ -1,916 +0,0 @@ -#!/usr/bin/env python3 -""" -Marimapper results summary and gap fill script - -Lighter weight than COLMAP, tries multiple best effort approaches -with fallback results. -Uses DLT with Hartley normalization for camera calibration, -RANSAC for outlier rejection, and quality-checked triangulation. -""" - -import glob -import sys -import numpy as np -import os -import pandas as pd -import click -from pathlib import Path -from dataclasses import dataclass -from typing import Optional - - -def log(*args, **kwargs): - click.secho(*args, err=True, **kwargs) - - -# --- DATA STRUCTURES --- - - -@dataclass -class CameraInfo: - """Stores calibrated camera data with quality metrics.""" - - P: np.ndarray # 3x4 projection matrix - points: dict # {index: (u, v)} - filename: str - reprojection_error: float # RMS reprojection error - inlier_count: int # Number of inliers used - center: Optional[np.ndarray] # Camera center in world coords - azimuth: Optional[float] # Degrees - elevation: Optional[float] # Degrees - distance: Optional[float] # Distance to COM - - -# --- NORMALIZATION (Critical for DLT stability) --- - - -def normalize_2d_points(points): - """ - Hartley normalization for 2D points. - Translates centroid to origin, scales so RMS distance from origin is sqrt(2). - - Returns: (normalized_points, 3x3 transformation matrix T) - """ - points = np.asarray(points) - centroid = np.mean(points, axis=0) - centered = points - centroid - - rms_dist = np.sqrt(np.mean(np.sum(centered**2, axis=1))) - if rms_dist < 1e-10: - rms_dist = 1.0 - - scale = np.sqrt(2) / rms_dist - - T = np.array( - [[scale, 0, -scale * centroid[0]], [0, scale, -scale * centroid[1]], [0, 0, 1]] - ) - - normalized = centered * scale - return normalized, T - - -def normalize_3d_points(points): - """ - Hartley normalization for 3D points. - Translates centroid to origin, scales so RMS distance from origin is sqrt(3). - - Returns: (normalized_points, 4x4 transformation matrix U) - """ - points = np.asarray(points) - centroid = np.mean(points, axis=0) - centered = points - centroid - - rms_dist = np.sqrt(np.mean(np.sum(centered**2, axis=1))) - if rms_dist < 1e-10: - rms_dist = 1.0 - - scale = np.sqrt(3) / rms_dist - - U = np.array( - [ - [scale, 0, 0, -scale * centroid[0]], - [0, scale, 0, -scale * centroid[1]], - [0, 0, scale, -scale * centroid[2]], - [0, 0, 0, 1], - ] - ) - - normalized = centered * scale - return normalized, U - - -# --- CAMERA CALIBRATION --- - - -def compute_projection_matrix_normalized(obj_points, img_points): - """ - Computes 3x4 projection matrix using DLT with Hartley normalization. - Much more numerically stable than raw DLT. - - Returns: P matrix in original coordinates, or None if failed - """ - if len(obj_points) < 6: - return None - - obj_points = np.asarray(obj_points) - img_points = np.asarray(img_points) - - # Normalize both point sets - img_norm, T = normalize_2d_points(img_points) - obj_norm, U = normalize_3d_points(obj_points) - - # Build DLT matrix with normalized coordinates - A = [] - for i in range(len(obj_points)): - X, Y, Z = obj_norm[i] - u, v = img_norm[i] - A.append([X, Y, Z, 1, 0, 0, 0, 0, -u * X, -u * Y, -u * Z, -u]) - A.append([0, 0, 0, 0, X, Y, Z, 1, -v * X, -v * Y, -v * Z, -v]) - - A = np.array(A) - - try: - _, S, Vh = np.linalg.svd(A) - - # Check conditioning - ratio of largest to smallest singular value - # If too large, the solution is unreliable - if S[-1] < 1e-10 or S[0] / S[-1] > 1e10: - return None - - P_norm = Vh[-1].reshape(3, 4) - - # Denormalize: P = T^(-1) @ P_norm @ U - T_inv = np.linalg.inv(T) - P = T_inv @ P_norm @ U - - # Normalize so ||P[2,:3]|| = 1 (makes depth computation consistent) - scale = np.linalg.norm(P[2, :3]) - if scale < 1e-10: - return None - P = P / scale - - # Ensure positive depth for the centroid of object points - centroid_3d = np.mean(obj_points, axis=0) - depth = P[2] @ np.append(centroid_3d, 1) - if depth < 0: - P = -P # Flip sign to get positive depth - - return P - - except np.linalg.LinAlgError: - return None - - -def compute_reprojection_error(P, obj_points, img_points): - """ - Compute RMS reprojection error for a projection matrix. - - Returns: (rms_error, individual_errors) - """ - obj_points = np.asarray(obj_points) - img_points = np.asarray(img_points) - - errors = [] - for obj, img in zip(obj_points, img_points): - proj = P @ np.append(obj, 1) - if abs(proj[2]) < 1e-10: - errors.append(float("inf")) - continue - - proj_2d = proj[:2] / proj[2] - error = np.linalg.norm(proj_2d - img) - errors.append(error) - - errors = np.array(errors) - rms = np.sqrt(np.mean(errors**2)) - return rms, errors - - -def calibrate_camera_ransac( - obj_points, img_points, n_iterations=500, inlier_threshold=5.0, min_inliers=8 -): - """ - RANSAC-based camera calibration for robustness to outliers. - - Args: - obj_points: List of 3D points - img_points: List of corresponding 2D points - n_iterations: Number of RANSAC iterations - inlier_threshold: Max reprojection error (pixels) to be considered inlier - min_inliers: Minimum inliers required for valid model - - Returns: (best_P, inlier_mask) or (None, None) - """ - obj_points = np.asarray(obj_points) - img_points = np.asarray(img_points) - n_points = len(obj_points) - - if n_points < 6: - return None, None - - best_P = None - best_inliers = None - best_inlier_count = 0 - - # Minimum sample size for DLT - sample_size = 6 - - for _ in range(n_iterations): - # Random sample - indices = np.random.choice(n_points, sample_size, replace=False) - - P = compute_projection_matrix_normalized( - obj_points[indices], img_points[indices] - ) - - if P is None: - continue - - # Evaluate on all points - _, errors = compute_reprojection_error(P, obj_points, img_points) - inliers = errors < inlier_threshold - inlier_count = np.sum(inliers) - - if inlier_count > best_inlier_count: - best_inlier_count = inlier_count - best_inliers = inliers - best_P = P - - if best_inlier_count < min_inliers: - return None, None - - # Refine using all inliers - refined_P = compute_projection_matrix_normalized( - obj_points[best_inliers], img_points[best_inliers] - ) - - if refined_P is not None: - return refined_P, best_inliers - - return best_P, best_inliers - - -# --- CAMERA POSE EXTRACTION --- - - -def extract_camera_info(P, com): - """ - Extract camera position and orientation relative to subject COM. - - Returns: (azimuth_deg, elevation_deg, distance, camera_center) - """ - try: - M = P[:, :3] - p4 = P[:, 3] - - # Camera center: C = -M^(-1) * p4 - det = np.linalg.det(M) - if abs(det) < 1e-10: - return None, None, None, None - - M_inv = np.linalg.inv(M) - C = -M_inv @ p4 - - # Vector from subject COM to camera - cam_rel = C - com - distance = np.linalg.norm(cam_rel) - - if distance < 1e-6: - return None, None, None, C - - cam_dir = cam_rel / distance - - # Azimuth: angle in XY plane from +Y axis - azimuth = np.degrees(np.arctan2(cam_dir[0], cam_dir[1])) - - # Elevation: angle from horizontal (positive = up) - elevation = np.degrees(np.arcsin(np.clip(cam_dir[2], -1, 1))) - - return azimuth, elevation, distance, C - - except Exception: - return None, None, None, None - - -# --- TRIANGULATION WITH FALLBACKS --- - - -def triangulate_point_dlt(cameras, detections): - """ - Triangulates a single 3D point using DLT (SVD-based). - - Returns: 3D point or None - """ - if len(cameras) < 2: - return None - - A = [] - for P, (u, v) in zip(cameras, detections): - A.append(u * P[2] - P[0]) - A.append(v * P[2] - P[1]) - - A = np.array(A) - - try: - _, S, Vh = np.linalg.svd(A) - - # Check if solution is well-conditioned - if S[-1] < 1e-10: - return None - - X_homogeneous = Vh[-1] - - if abs(X_homogeneous[3]) < 1e-10: - return None - - X_cartesian = X_homogeneous[:3] / X_homogeneous[3] - return X_cartesian - - except np.linalg.LinAlgError: - return None - - -def compute_reprojection_errors(point_3d, cameras, detections): - """Compute reprojection errors for a 3D point across all views.""" - errors = [] - depths = [] - for P, (u, v) in zip(cameras, detections): - proj = P @ np.append(point_3d, 1) - depths.append(proj[2]) - if abs(proj[2]) < 1e-10: - errors.append(float("inf")) - else: - proj_2d = proj[:2] / proj[2] - errors.append(np.linalg.norm(proj_2d - np.array([u, v]))) - return errors, depths - - -def compute_ray_angle(point_3d, cam_infos): - """Compute maximum angle between camera rays to a 3D point.""" - centers = [c.center for c in cam_infos if c.center is not None] - if len(centers) < 2: - return 180.0 # Assume good if we can't compute - - rays = [] - for c in centers: - ray = point_3d - c - norm = np.linalg.norm(ray) - if norm > 1e-6: - rays.append(ray / norm) - - if len(rays) < 2: - return 180.0 - - max_angle = 0 - for i in range(len(rays)): - for j in range(i + 1, len(rays)): - cos_angle = np.clip(np.dot(rays[i], rays[j]), -1, 1) - angle = np.degrees(np.arccos(cos_angle)) - max_angle = max(max_angle, angle) - - return max_angle - - -def backproject_with_depth_estimate(cam_info, detection, reference_depth): - """ - Back-project a 2D point using estimated depth from nearby known points. - - This is a fallback when triangulation fails - uses single view + depth guess. - Less accurate but always produces a result. - - Args: - cam_info: CameraInfo with projection matrix P - detection: (u, v) pixel coordinates - reference_depth: Estimated depth from known nearby points - - Returns: 3D point estimate - """ - P = cam_info.P - u, v = detection - - # P = [M | p4], we need to invert the projection - # For a point at depth d along the ray: X = C + d * ray_direction - M = P[:, :3] - p4 = P[:, 3] - - try: - M_inv = np.linalg.inv(M) - C = -M_inv @ p4 # Camera center - - # Ray direction: M^(-1) @ [u, v, 1]^T (unnormalized) - ray = M_inv @ np.array([u, v, 1]) - ray_norm = np.linalg.norm(ray) - if ray_norm < 1e-10: - return None - ray = ray / ray_norm - - # Project along ray to estimated depth - point_3d = C + reference_depth * ray - return point_3d - - except np.linalg.LinAlgError: - return None - - -@dataclass -class TriangulationResult: - """Result of triangulation attempt with metadata.""" - - point: Optional[np.ndarray] - method: str - quality: float # Lower is better, -1 for interpolated - num_views: int - confidence: str # "high", "medium", "low", "fallback" - - -def triangulate_with_fallbacks( - idx, - cameras, - detections, - cam_infos, - known_data, - com, - strict_reproj=10.0, - relaxed_reproj=50.0, - strict_ray_angle=2.0, - relaxed_ray_angle=0.5, -): - """ - Triangulate a point with cascading fallback strategies. - - Cascade order: - 1. Strict triangulation (tight reprojection + ray angle thresholds) - 2. Relaxed triangulation (looser thresholds) - 3. Best-effort triangulation (any result with positive depth) - 4. Single-view backprojection with depth estimate - 5. Linear interpolation (always succeeds) - - Returns: TriangulationResult (always contains a valid point) - """ - num_views = len(cameras) - - # === TIER 1: Strict quality triangulation === - if num_views >= 2: - point_3d = triangulate_point_dlt(cameras, detections) - - if point_3d is not None: - errors, depths = compute_reprojection_errors(point_3d, cameras, detections) - ray_angle = compute_ray_angle(point_3d, cam_infos) - - all_positive_depth = all(d > 0 for d in depths) - max_error = max(errors) - mean_error = np.mean(errors) - - # Tier 1: Strict thresholds - if ( - all_positive_depth - and max_error < strict_reproj - and ray_angle > strict_ray_angle - ): - return TriangulationResult( - point=point_3d, - method="Triangulated (strict)", - quality=mean_error, - num_views=num_views, - confidence="high", - ) - - # === TIER 2: Relaxed thresholds === - if ( - all_positive_depth - and max_error < relaxed_reproj - and ray_angle > relaxed_ray_angle - ): - return TriangulationResult( - point=point_3d, - method="Triangulated (relaxed)", - quality=mean_error, - num_views=num_views, - confidence="medium", - ) - - # === TIER 3: Best-effort (just need positive depth and bounded error) === - if all_positive_depth and max_error < 200.0: - return TriangulationResult( - point=point_3d, - method="Triangulated (best-effort)", - quality=mean_error, - num_views=num_views, - confidence="low", - ) - - # Check if flipping helps (camera behind subject issue) - if not all_positive_depth: - point_flipped = -point_3d - errors_f, depths_f = compute_reprojection_errors( - point_flipped, cameras, detections - ) - if all(d > 0 for d in depths_f) and max(errors_f) < relaxed_reproj: - return TriangulationResult( - point=point_flipped, - method="Triangulated (flipped)", - quality=np.mean(errors_f), - num_views=num_views, - confidence="low", - ) - - # === TIER 4: Single-view backprojection === - if num_views >= 1: - # Estimate depth from nearby known points - nearby_depths = [] - for known_idx, data in known_data.items(): - if abs(known_idx - idx) <= 10: # Within 10 indices - # Compute depth of known point from first camera - P = cam_infos[0].P - proj = P @ np.append(data["pos"], 1) - if proj[2] > 0: - nearby_depths.append(proj[2]) - - if not nearby_depths: - # Use distance to COM as fallback depth estimate - if cam_infos[0].distance is not None: - reference_depth = cam_infos[0].distance - else: - reference_depth = np.linalg.norm(com) - else: - reference_depth = np.median(nearby_depths) - - # Try backprojection from camera with best view - for cam, det in zip(cam_infos, detections): - point_3d = backproject_with_depth_estimate(cam, det, reference_depth) - if point_3d is not None: - # Sanity check: point should be reasonably close to known points - distances_to_known = [ - np.linalg.norm(point_3d - known_data[k]["pos"]) - for k in known_data.keys() - ] - if ( - min(distances_to_known) < reference_depth * 2 - ): # Within 2x expected range - return TriangulationResult( - point=point_3d, - method="Backprojected", - quality=-1.0, - num_views=1, - confidence="low", - ) - - # === TIER 5: Linear interpolation (always succeeds) === - interp_pos, _ = interpolate_linear(idx, known_data) - - return TriangulationResult( - point=interp_pos, - method="Interpolated", - quality=-1.0, - num_views=0, - confidence="fallback", - ) - - -# --- STANDARD LOADERS --- - - -def load_3d_map(filename): - """Load 3D map from CSV.""" - if not os.path.exists(filename): - log(f"Error: {filename} not found.", fg="red") - sys.exit(1) - - df = pd.read_csv(filename) - data = {} - for _, row in df.iterrows(): - idx = int(row["index"]) - data[idx] = { - "pos": np.array([float(row["x"]), float(row["y"]), float(row["z"])]), - "norm": np.array([float(row["xn"]), float(row["yn"]), float(row["zn"])]), - "error": float(row["error"]), - } - return data - - -def load_all_2d_files(): - """Load all 2D detection files.""" - files = sorted(glob.glob("./led_map_2d_*.csv")) - views = [] - - for fname in files: - df = pd.read_csv(fname) - view_data = {} - for _, row in df.iterrows(): - idx = int(row["index"]) - view_data[idx] = (float(row["u"]), float(row["v"])) - views.append({"filename": fname, "points": view_data}) - - return views - - -def interpolate_linear(idx, known_data): - """Fallback: Linear interpolation for normals or failed triangulation.""" - keys = sorted(known_data.keys()) - if idx in keys: - return known_data[idx]["pos"], known_data[idx]["norm"] - - prev_k = next((k for k in reversed(keys) if k < idx), None) - next_k = next((k for k in keys if k > idx), None) - - pos = np.array([0.0, 0.0, 0.0]) - norm = np.array([0.0, 0.0, 1.0]) - - if prev_k is not None and next_k is not None: - alpha = (idx - prev_k) / (next_k - prev_k) - p1, n1 = known_data[prev_k]["pos"], known_data[prev_k]["norm"] - p2, n2 = known_data[next_k]["pos"], known_data[next_k]["norm"] - pos = (1 - alpha) * p1 + alpha * p2 - norm = (1 - alpha) * n1 + alpha * n2 - elif prev_k is not None: - pos, norm = known_data[prev_k]["pos"], known_data[prev_k]["norm"] - elif next_k is not None: - pos, norm = known_data[next_k]["pos"], known_data[next_k]["norm"] - - norm_len = np.linalg.norm(norm) - if norm_len > 1e-9: - norm = norm / norm_len - - return pos, norm - - -# --- MAIN EXECUTION --- - - -def fill_missing_indices( - data_dir=".", - ransac_iterations=500, - ransac_threshold=5.0, - min_calibration_points=8, - triangulation_reproj_threshold=10.0, - min_ray_angle=2.0, -): - """ - Fills in missing LED indices using photogrammetric reconstruction. - - Improvements over basic implementation: - - Hartley normalization for numerical stability - - RANSAC for outlier rejection during camera calibration - - Quality-checked triangulation with ray angle validation - - Reprojection error reporting - - Args: - data_dir: Directory containing led_map_3d.csv and led_map_2d_*.csv - ransac_iterations: Number of RANSAC iterations for camera calibration - ransac_threshold: Reprojection error threshold (pixels) for RANSAC inliers - min_calibration_points: Minimum points needed for camera calibration - triangulation_reproj_threshold: Max reprojection error for triangulated points - min_ray_angle: Minimum angle (degrees) between rays for valid triangulation - - Returns: - dict: Final map with all indices, or None if processing failed - """ - old_cwd = os.getcwd() - try: - os.chdir(data_dir) - - # 1. Load Data - map_3d = load_3d_map("led_map_3d.csv") - views = load_all_2d_files() - - if not views: - log("Error: No 2D view files found.", fg="red") - return None - - # Compute center of mass - positions = np.array([map_3d[idx]["pos"] for idx in sorted(map_3d.keys())]) - com = np.mean(positions, axis=0) - - log( - f"Loaded {len(map_3d)} known 3D points, COM at [{com[0]:.2f}, {com[1]:.2f}, {com[2]:.2f}]" - ) - log(f"Found {len(views)} 2D view files\n") - - # 2. Calibrate cameras with RANSAC - log( - f"Step 1: Camera calibration (RANSAC, {ransac_iterations} iterations, {ransac_threshold}px threshold)" - ) - log("-" * 80) - - calibrated_cameras = [] - - for view in views: - common_indices = set(view["points"].keys()).intersection(set(map_3d.keys())) - - if len(common_indices) < min_calibration_points: - log( - f" {Path(view['filename']).name}: SKIPPED ({len(common_indices)} pts < {min_calibration_points} required)" - ) - continue - - obj_pts = np.array([map_3d[idx]["pos"] for idx in common_indices]) - img_pts = np.array([view["points"][idx] for idx in common_indices]) - - P, inlier_mask = calibrate_camera_ransac( - obj_pts, - img_pts, - n_iterations=ransac_iterations, - inlier_threshold=ransac_threshold, - min_inliers=min_calibration_points, - ) - - if P is None: - log( - f" {Path(view['filename']).name}: FAILED (RANSAC found no good model)" - ) - continue - - # Compute final reprojection error on inliers - inlier_obj = obj_pts[inlier_mask] - inlier_img = img_pts[inlier_mask] - rms_error, _ = compute_reprojection_error(P, inlier_obj, inlier_img) - - # Extract camera pose - azimuth, elevation, distance, center = extract_camera_info(P, com) - - cam_info = CameraInfo( - P=P, - points=view["points"], - filename=view["filename"], - reprojection_error=rms_error, - inlier_count=int(np.sum(inlier_mask)), - center=center, - azimuth=azimuth, - elevation=elevation, - distance=distance, - ) - calibrated_cameras.append(cam_info) - - # Log result - timestamp = Path(view["filename"]).stem.split("_")[-1] - pose_str = "" - if azimuth is not None: - pose_str = f"az={azimuth:+6.1f}° el={elevation:+5.1f}° d={distance:.2f}" - - log( - f" {timestamp}: {cam_info.inlier_count}/{len(common_indices)} inliers, " - f"RMS={rms_error:.2f}px, {pose_str}" - ) - - log(f"\nStep 2: Calibrated {len(calibrated_cameras)}/{len(views)} cameras\n") - - if len(calibrated_cameras) < 2: - log( - "Error: Need at least 2 calibrated cameras for triangulation.", fg="red" - ) - return None - - # 3. Identify missing indices - all_2d_indices = set() - for v in views: - all_2d_indices.update(v["points"].keys()) - - missing_indices = sorted(list(all_2d_indices - set(map_3d.keys()))) - log(f"Step 3: Reconstructing {len(missing_indices)} missing points") - log("-" * 80) - - final_map = map_3d.copy() - - # Track outcomes by confidence level - stats = {"high": 0, "medium": 0, "low": 0, "fallback": 0} - method_counts = {} - reconstruction_table = [] - - for idx in missing_indices: - # Gather cameras that see this point - participating_cams = [] - participating_detections = [] - participating_infos = [] - - for cam in calibrated_cameras: - if idx in cam.points: - participating_cams.append(cam.P) - participating_detections.append(cam.points[idx]) - participating_infos.append(cam) - - # Use cascading fallback system - result = triangulate_with_fallbacks( - idx=idx, - cameras=participating_cams, - detections=participating_detections, - cam_infos=participating_infos, - known_data=final_map, - com=com, - strict_reproj=triangulation_reproj_threshold, - relaxed_reproj=triangulation_reproj_threshold * 5, - strict_ray_angle=min_ray_angle, - relaxed_ray_angle=min_ray_angle / 4, - ) - - # Track statistics - stats[result.confidence] += 1 - method_counts[result.method] = method_counts.get(result.method, 0) + 1 - - # Get interpolated normal (triangulation doesn't give us surface normals) - _, interp_norm = interpolate_linear(idx, final_map) - - # Store result - final_map[idx] = { - "pos": result.point, - "norm": interp_norm, - "error": result.quality if result.quality >= 0 else -1.0, - } - - pos_str = ( - f"[{result.point[0]:.4f}, {result.point[1]:.4f}, {result.point[2]:.4f}]" - ) - quality_str = f"{result.quality:.2f}" if result.quality >= 0 else "N/A" - reconstruction_table.append( - [ - idx, - result.method, - result.num_views, - result.confidence, - quality_str, - pos_str, - ] - ) - - # Print reconstruction table - if reconstruction_table: - df_table = pd.DataFrame( - reconstruction_table, - columns=[ - "Index", - "Method", - "Views", - "Confidence", - "Quality", - "Position", - ], - ) - log(df_table.to_string(index=False) + "\n") - - # Summary - log("Reconstruction Summary by Confidence:") - log(f" High (strict triangulation): {stats['high']}") - log(f" Medium (relaxed triangulation): {stats['medium']}") - log(f" Low (best-effort/backproject): {stats['low']}") - log(f" Fallback (interpolated): {stats['fallback']}") - log(f" Total points in final map: {len(final_map)}") - log("") - log("Methods used:") - for method, count in sorted(method_counts.items(), key=lambda x: -x[1]): - log(f" {method}: {count}") - log("") - - return final_map - - finally: - os.chdir(old_cwd) - - -@click.command() -@click.option("--dir", "-d", default=".", help="Data directory") -@click.option("--ransac-iter", default=500, help="RANSAC iterations") -@click.option("--ransac-thresh", default=5.0, help="RANSAC inlier threshold (pixels)") -@click.option("--min-points", default=8, help="Min calibration points per camera") -@click.option( - "--reproj-thresh", default=10.0, help="Max reprojection error for triangulation" -) -@click.option( - "--min-angle", default=2.0, help="Min ray angle (degrees) for triangulation" -) -def main(dir, ransac_iter, ransac_thresh, min_points, reproj_thresh, min_angle): - """Fill missing LED indices using photogrammetric reconstruction.""" - - final_map = fill_missing_indices( - data_dir=dir, - ransac_iterations=ransac_iter, - ransac_threshold=ransac_thresh, - min_calibration_points=min_points, - triangulation_reproj_threshold=reproj_thresh, - min_ray_angle=min_angle, - ) - - if final_map is None: - sys.exit(1) - - # Output CSV to stdout - rows = [] - for idx in sorted(final_map.keys()): - d = final_map[idx] - rows.append( - { - "index": idx, - "x": f"{d['pos'][0]:.6f}", - "y": f"{d['pos'][1]:.6f}", - "z": f"{d['pos'][2]:.6f}", - "xn": f"{d['norm'][0]:.6f}", - "yn": f"{d['norm'][1]:.6f}", - "zn": f"{d['norm'][2]:.6f}", - "error": f"{d['error']:.6f}", - } - ) - - df = pd.DataFrame(rows) - df.to_csv(sys.stdout, index=False) - - -if __name__ == "__main__": - main() diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index b39a3c7..7db7cdf 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -3,7 +3,6 @@ import os import glob import pandas as pd -from marimapper.scripts.basic_photogrammetry_solver import fill_missing_indices def log(*args, **kwargs): @@ -31,36 +30,6 @@ def scan_2d_indices(data_dir): os.chdir(old_cwd) -def normalize_map_for_csv(final_map): - """Convert final map data to pandas DataFrame for CSV output.""" - rows = [] - for idx in sorted(final_map.keys()): - row_data = final_map[idx] - - # Handle filled format (numpy arrays) and CSV format (strings) - if isinstance(row_data, dict) and "pos" in row_data: - pos = row_data["pos"] - norm = row_data["norm"] - error = row_data["error"] - rows.append( - { - "index": idx, - "x": f"{float(pos[0]):.6f}", - "y": f"{float(pos[1]):.6f}", - "z": f"{float(pos[2]):.6f}", - "xn": f"{float(norm[0]):.6f}", - "yn": f"{float(norm[1]):.6f}", - "zn": f"{float(norm[2]):.6f}", - "error": f"{float(error):.6f}", - } - ) - else: - # Already in CSV format - rows.append({"index": idx, **row_data}) - - return pd.DataFrame(rows) - - @click.command() @click.option( "--dir", @@ -69,61 +38,11 @@ def normalize_map_for_csv(final_map): type=click.Path(exists=True, file_okay=False, dir_okay=True), help="Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)", ) -@click.option( - "--fill", - "-f", - is_flag=True, - help="Fill missing indices using photogrammetric reconstruction", -) -@click.option( - "--ransac-iter", - "-n", - default=500, - type=int, - show_default=True, - help="RANSAC iterations for camera calibration", -) -@click.option( - "--ransac-thresh", - "-t", - default=5.0, - type=float, - show_default=True, - help="RANSAC inlier threshold (pixels)", -) -@click.option( - "--min-calib-pts", - "-p", - default=8, - type=int, - show_default=True, - help="Min calibration points per camera", -) -@click.option( - "--reproj-thresh", - "-r", - default=10.0, - type=float, - show_default=True, - help="Max reprojection error for strict triangulation (pixels)", -) -@click.option( - "--min-angle", - "-a", - default=2.0, - type=float, - show_default=True, - help="Min ray angle for strict triangulation (degrees)", -) -def main( - dir, fill, ransac_iter, ransac_thresh, min_calib_pts, reproj_thresh, min_angle -): +def main(dir): """ Summarize LED mapping results. - Shows mapping status (2D detections vs 3D calibration). When --fill is used, - reconstructs missing 3D positions using photogrammetric methods. Camera - positions and orientations are also estimated and summarized. + Shows mapping status (2D detections vs 3D calibration). Outputs final 3D mapping as CSV to stdout (all logging goes to stderr). """ @@ -140,7 +59,6 @@ def main( # Load existing 3D map try: map_df = pd.read_csv("led_map_3d.csv") - map_data = {int(idx): row.to_dict() for idx, row in map_df.iterrows()} except Exception as e: log(f"Error loading 3D map: {e}", fg="red") sys.exit(1) @@ -153,7 +71,7 @@ def main( sys.exit(1) all_2d_indices = set(data_2d_log.keys()) - existing_3d_indices = set(map_data.keys()) + existing_3d_indices = set(map_df["index"].astype(int)) missing_indices = sorted(list(all_2d_indices - existing_3d_indices)) # Report status @@ -162,9 +80,9 @@ def main( if not missing_indices: log("Status: COMPLETE") - final_map = map_data else: log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") + log(f"Try --interpolation_max_error and --interpolation_max_fill") # Display missing indices table using pandas missing_table_data = [ @@ -173,30 +91,7 @@ def main( df_missing = pd.DataFrame(missing_table_data, columns=["Index", "# Views"]) log(df_missing.to_string(index=False) + "\n") - if fill: - # Run photogrammetric reconstruction - log("Running photogrammetric reconstruction...\n") - final_map = fill_missing_indices( - data_dir=".", - ransac_iterations=ransac_iter, - ransac_threshold=ransac_thresh, - min_calibration_points=min_calib_pts, - triangulation_reproj_threshold=reproj_thresh, - min_ray_angle=min_angle, - ) - if final_map is None: - log("Error: Photogrammetric reconstruction failed", fg="red") - sys.exit(1) - else: - final_map = map_data - log( - "(Use --fill to reconstruct missing indices using photogrammetry)\n" - ) - - # Output final 3D map to stdout using pandas - if final_map: - df_output = normalize_map_for_csv(final_map) - df_output.to_csv(sys.stdout, index=False) + map_df.to_csv(sys.stdout, index=False) finally: os.chdir(old_cwd) From 4f70fdb31a3ee27290c6d28fce922a53f38e5486 Mon Sep 17 00:00:00 2001 From: TheMariday Date: Sat, 6 Dec 2025 16:53:56 +0000 Subject: [PATCH 21/27] Literally one f string out of place, that's all! --- marimapper/scripts/results_cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 7db7cdf..8074bff 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -82,7 +82,7 @@ def main(dir): log("Status: COMPLETE") else: log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") - log(f"Try --interpolation_max_error and --interpolation_max_fill") + log("Try --interpolation_max_error and --interpolation_max_fill") # Display missing indices table using pandas missing_table_data = [ From 558367587b37041fdaed06c5ee50aa346cbf14d4 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Sat, 6 Dec 2025 21:20:38 -0500 Subject: [PATCH 22/27] Address CR feedback --- .gitignore | 3 - CLAUDE.md | 13 - marimapper/scripts/results_cli.py | 2 +- uv.lock | 2636 +++++++++++++++++++++++++++++ 4 files changed, 2637 insertions(+), 17 deletions(-) delete mode 100644 CLAUDE.md create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index 01c964b..61ba7ec 100644 --- a/.gitignore +++ b/.gitignore @@ -162,8 +162,5 @@ cython_debug/ *.ply .idea/ -# uv is referenced, but not primary package management system -uv.lock - # Mac Spotlight .DS_Store \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index d067e76..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,13 +0,0 @@ -# Marimapper Development Context - -## Virtual Environment -- **Location:** `$(pwd)/.venv` -- **Python at time of writing:** 3.12 -- **Package Manager:** Use `uv pip` with `-p /path/to/venv/bin/python` flag - - Example: `uv pip install -p /path/to/venv/bin/python package_name` -- **Deps Already Installed:** `uv pip freeze` -- **Check present transitive deps, ASK FIRST to require installing new ones** - -## Key Dependencies -- numpy, opencv-python, tqdm, open3d -- pycolmap==3.11.1 (do NOT update - breaks on > 3.12) diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 7db7cdf..8074bff 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -82,7 +82,7 @@ def main(dir): log("Status: COMPLETE") else: log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") - log(f"Try --interpolation_max_error and --interpolation_max_fill") + log("Try --interpolation_max_error and --interpolation_max_fill") # Display missing indices table using pandas missing_table_data = [ diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..ac1be47 --- /dev/null +++ b/uv.lock @@ -0,0 +1,2636 @@ +version = 1 +revision = 3 +requires-python = ">=3.9, <3.13" +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] + +[[package]] +name = "addict" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/ef/fd7649da8af11d93979831e8f1f8097e85e82d5bfeabc8c68b39175d8e75/addict-2.4.0.tar.gz", hash = "sha256:b3b2210e0e067a281f5646c8c5db92e99b7231ea8b0eb5f74dbdf9e259d4e494", size = 9186, upload-time = "2020-11-21T16:21:31.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/00/b08f23b7d7e1e14ce01419a467b583edbb93c6cdb8654e54a9cc579cd61f/addict-2.4.0-py3-none-any.whl", hash = "sha256:249bb56bbfd3cdc2a004ea0ff4c2b6ddc84d53bc2194761636eb314d5cfa5dfc", size = 3832, upload-time = "2020-11-21T16:21:29.588Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "black" +version = "25.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "click", version = "8.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "platformdirs", version = "4.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytokens" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8c/ad/33adf4708633d047950ff2dfdea2e215d84ac50ef95aff14a614e4b6e9b2/black-25.11.0.tar.gz", hash = "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08", size = 655669, upload-time = "2025-11-10T01:53:50.558Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/d2/6caccbc96f9311e8ec3378c296d4f4809429c43a6cd2394e3c390e86816d/black-25.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec311e22458eec32a807f029b2646f661e6859c3f61bc6d9ffb67958779f392e", size = 1743501, upload-time = "2025-11-10T01:59:06.202Z" }, + { url = "https://files.pythonhosted.org/packages/69/35/b986d57828b3f3dccbf922e2864223197ba32e74c5004264b1c62bc9f04d/black-25.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1032639c90208c15711334d681de2e24821af0575573db2810b0763bcd62e0f0", size = 1597308, upload-time = "2025-11-10T01:57:58.633Z" }, + { url = "https://files.pythonhosted.org/packages/39/8e/8b58ef4b37073f52b64a7b2dd8c9a96c84f45d6f47d878d0aa557e9a2d35/black-25.11.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c0f7c461df55cf32929b002335883946a4893d759f2df343389c4396f3b6b37", size = 1656194, upload-time = "2025-11-10T01:57:10.909Z" }, + { url = "https://files.pythonhosted.org/packages/8d/30/9c2267a7955ecc545306534ab88923769a979ac20a27cf618d370091e5dd/black-25.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:f9786c24d8e9bd5f20dc7a7f0cdd742644656987f6ea6947629306f937726c03", size = 1347996, upload-time = "2025-11-10T01:57:22.391Z" }, + { url = "https://files.pythonhosted.org/packages/c4/62/d304786b75ab0c530b833a89ce7d997924579fb7484ecd9266394903e394/black-25.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:895571922a35434a9d8ca67ef926da6bc9ad464522a5fe0db99b394ef1c0675a", size = 1727891, upload-time = "2025-11-10T02:01:40.507Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/ffe8a006aa522c9e3f430e7b93568a7b2163f4b3f16e8feb6d8c3552761a/black-25.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cb4f4b65d717062191bdec8e4a442539a8ea065e6af1c4f4d36f0cdb5f71e170", size = 1581875, upload-time = "2025-11-10T01:57:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c8/7c8bda3108d0bb57387ac41b4abb5c08782b26da9f9c4421ef6694dac01a/black-25.11.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d81a44cbc7e4f73a9d6ae449ec2317ad81512d1e7dce7d57f6333fd6259737bc", size = 1642716, upload-time = "2025-11-10T01:56:51.589Z" }, + { url = "https://files.pythonhosted.org/packages/34/b9/f17dea34eecb7cc2609a89627d480fb6caea7b86190708eaa7eb15ed25e7/black-25.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:7eebd4744dfe92ef1ee349dc532defbf012a88b087bb7ddd688ff59a447b080e", size = 1352904, upload-time = "2025-11-10T01:59:26.252Z" }, + { url = "https://files.pythonhosted.org/packages/7f/12/5c35e600b515f35ffd737da7febdb2ab66bb8c24d88560d5e3ef3d28c3fd/black-25.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:80e7486ad3535636657aa180ad32a7d67d7c273a80e12f1b4bfa0823d54e8fac", size = 1772831, upload-time = "2025-11-10T02:03:47Z" }, + { url = "https://files.pythonhosted.org/packages/1a/75/b3896bec5a2bb9ed2f989a970ea40e7062f8936f95425879bbe162746fe5/black-25.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6cced12b747c4c76bc09b4db057c319d8545307266f41aaee665540bc0e04e96", size = 1608520, upload-time = "2025-11-10T01:58:46.895Z" }, + { url = "https://files.pythonhosted.org/packages/f3/b5/2bfc18330eddbcfb5aab8d2d720663cd410f51b2ed01375f5be3751595b0/black-25.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cb2d54a39e0ef021d6c5eef442e10fd71fcb491be6413d083a320ee768329dd", size = 1682719, upload-time = "2025-11-10T01:56:55.24Z" }, + { url = "https://files.pythonhosted.org/packages/96/fb/f7dc2793a22cdf74a72114b5ed77fe3349a2e09ef34565857a2f917abdf2/black-25.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae263af2f496940438e5be1a0c1020e13b09154f3af4df0835ea7f9fe7bfa409", size = 1362684, upload-time = "2025-11-10T01:57:07.639Z" }, + { url = "https://files.pythonhosted.org/packages/d5/9a/5b2c0e3215fe748fcf515c2dd34658973a1210bf610e24de5ba887e4f1c8/black-25.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3bb5ce32daa9ff0605d73b6f19da0b0e6c1f8f2d75594db539fdfed722f2b06", size = 1743063, upload-time = "2025-11-10T02:02:43.175Z" }, + { url = "https://files.pythonhosted.org/packages/a1/20/245164c6efc27333409c62ba54dcbfbe866c6d1957c9a6c0647786e950da/black-25.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9815ccee1e55717fe9a4b924cae1646ef7f54e0f990da39a34fc7b264fcf80a2", size = 1596867, upload-time = "2025-11-10T02:00:17.157Z" }, + { url = "https://files.pythonhosted.org/packages/ca/6f/1a3859a7da205f3d50cf3a8bec6bdc551a91c33ae77a045bb24c1f46ab54/black-25.11.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92285c37b93a1698dcbc34581867b480f1ba3a7b92acf1fe0467b04d7a4da0dc", size = 1655678, upload-time = "2025-11-10T01:57:09.028Z" }, + { url = "https://files.pythonhosted.org/packages/56/1a/6dec1aeb7be90753d4fcc273e69bc18bfd34b353223ed191da33f7519410/black-25.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:43945853a31099c7c0ff8dface53b4de56c41294fa6783c0441a8b1d9bf668bc", size = 1347452, upload-time = "2025-11-10T01:57:01.871Z" }, + { url = "https://files.pythonhosted.org/packages/00/5d/aed32636ed30a6e7f9efd6ad14e2a0b0d687ae7c8c7ec4e4a557174b895c/black-25.11.0-py3-none-any.whl", hash = "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b", size = 204918, upload-time = "2025-11-10T01:53:48.917Z" }, +] + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" }, +] + +[[package]] +name = "certifi" +version = "2025.11.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, +] + +[[package]] +name = "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/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 = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "configargparse" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/6c9ef746dfcc2a32e26f3860bb4a011c008c392b83eabdfb598d1a8bbe5d/configargparse-1.7.1.tar.gz", hash = "sha256:79c2ddae836a1e5914b71d58e4b9adbd9f7779d4e6351a637b7d2d9b6c46d3d9", size = 43958, upload-time = "2025-05-23T14:26:17.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl", hash = "sha256:8b586a31f9d873abd1ca527ffbe58863c99f36d896e2829779803125e83be4b6", size = 25607, upload-time = "2025-05-23T14:26:15.923Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/f6/31a8f28b4a2a4fa0e01085e542f3081ab0588eff8e589d39d775172c9792/contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", size = 13464370, upload-time = "2024-08-27T21:00:03.328Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/e0/be8dcc796cfdd96708933e0e2da99ba4bb8f9b2caa9d560a50f3f09a65f3/contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7", size = 265366, upload-time = "2024-08-27T20:50:09.947Z" }, + { url = "https://files.pythonhosted.org/packages/50/d6/c953b400219443535d412fcbbc42e7a5e823291236bc0bb88936e3cc9317/contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42", size = 249226, upload-time = "2024-08-27T20:50:16.1Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b4/6fffdf213ffccc28483c524b9dad46bb78332851133b36ad354b856ddc7c/contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7", size = 308460, upload-time = "2024-08-27T20:50:22.536Z" }, + { url = "https://files.pythonhosted.org/packages/cf/6c/118fc917b4050f0afe07179a6dcbe4f3f4ec69b94f36c9e128c4af480fb8/contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab", size = 347623, upload-time = "2024-08-27T20:50:28.806Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a4/30ff110a81bfe3abf7b9673284d21ddce8cc1278f6f77393c91199da4c90/contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589", size = 317761, upload-time = "2024-08-27T20:50:35.126Z" }, + { url = "https://files.pythonhosted.org/packages/99/e6/d11966962b1aa515f5586d3907ad019f4b812c04e4546cc19ebf62b5178e/contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41", size = 322015, upload-time = "2024-08-27T20:50:40.318Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e3/182383743751d22b7b59c3c753277b6aee3637049197624f333dac5b4c80/contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d", size = 1262672, upload-time = "2024-08-27T20:50:55.643Z" }, + { url = "https://files.pythonhosted.org/packages/78/53/974400c815b2e605f252c8fb9297e2204347d1755a5374354ee77b1ea259/contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223", size = 1321688, upload-time = "2024-08-27T20:51:11.293Z" }, + { url = "https://files.pythonhosted.org/packages/52/29/99f849faed5593b2926a68a31882af98afbeac39c7fdf7de491d9c85ec6a/contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f", size = 171145, upload-time = "2024-08-27T20:51:15.2Z" }, + { url = "https://files.pythonhosted.org/packages/a9/97/3f89bba79ff6ff2b07a3cbc40aa693c360d5efa90d66e914f0ff03b95ec7/contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b", size = 216019, upload-time = "2024-08-27T20:51:19.365Z" }, + { url = "https://files.pythonhosted.org/packages/b3/1f/9375917786cb39270b0ee6634536c0e22abf225825602688990d8f5c6c19/contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", size = 266356, upload-time = "2024-08-27T20:51:24.146Z" }, + { url = "https://files.pythonhosted.org/packages/05/46/9256dd162ea52790c127cb58cfc3b9e3413a6e3478917d1f811d420772ec/contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", size = 250915, upload-time = "2024-08-27T20:51:28.683Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5d/3056c167fa4486900dfbd7e26a2fdc2338dc58eee36d490a0ed3ddda5ded/contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", size = 310443, upload-time = "2024-08-27T20:51:33.675Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c2/1a612e475492e07f11c8e267ea5ec1ce0d89971be496c195e27afa97e14a/contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", size = 348548, upload-time = "2024-08-27T20:51:39.322Z" }, + { url = "https://files.pythonhosted.org/packages/45/cf/2c2fc6bb5874158277b4faf136847f0689e1b1a1f640a36d76d52e78907c/contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", size = 319118, upload-time = "2024-08-27T20:51:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/03/33/003065374f38894cdf1040cef474ad0546368eea7e3a51d48b8a423961f8/contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", size = 323162, upload-time = "2024-08-27T20:51:49.683Z" }, + { url = "https://files.pythonhosted.org/packages/42/80/e637326e85e4105a802e42959f56cff2cd39a6b5ef68d5d9aee3ea5f0e4c/contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", size = 1265396, upload-time = "2024-08-27T20:52:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3b/8cbd6416ca1bbc0202b50f9c13b2e0b922b64be888f9d9ee88e6cfabfb51/contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", size = 1324297, upload-time = "2024-08-27T20:52:21.843Z" }, + { url = "https://files.pythonhosted.org/packages/4d/2c/021a7afaa52fe891f25535506cc861c30c3c4e5a1c1ce94215e04b293e72/contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c", size = 171808, upload-time = "2024-08-27T20:52:25.163Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/804f02ff30a7fae21f98198828d0857439ec4c91a96e20cf2d6c49372966/contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67", size = 217181, upload-time = "2024-08-27T20:52:29.13Z" }, + { url = "https://files.pythonhosted.org/packages/c9/92/8e0bbfe6b70c0e2d3d81272b58c98ac69ff1a4329f18c73bd64824d8b12e/contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", size = 267838, upload-time = "2024-08-27T20:52:33.911Z" }, + { url = "https://files.pythonhosted.org/packages/e3/04/33351c5d5108460a8ce6d512307690b023f0cfcad5899499f5c83b9d63b1/contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", size = 251549, upload-time = "2024-08-27T20:52:39.179Z" }, + { url = "https://files.pythonhosted.org/packages/51/3d/aa0fe6ae67e3ef9f178389e4caaaa68daf2f9024092aa3c6032e3d174670/contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", size = 303177, upload-time = "2024-08-27T20:52:44.789Z" }, + { url = "https://files.pythonhosted.org/packages/56/c3/c85a7e3e0cab635575d3b657f9535443a6f5d20fac1a1911eaa4bbe1aceb/contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", size = 341735, upload-time = "2024-08-27T20:52:51.05Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8d/20f7a211a7be966a53f474bc90b1a8202e9844b3f1ef85f3ae45a77151ee/contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", size = 314679, upload-time = "2024-08-27T20:52:58.473Z" }, + { url = "https://files.pythonhosted.org/packages/6e/be/524e377567defac0e21a46e2a529652d165fed130a0d8a863219303cee18/contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", size = 320549, upload-time = "2024-08-27T20:53:06.593Z" }, + { url = "https://files.pythonhosted.org/packages/0f/96/fdb2552a172942d888915f3a6663812e9bc3d359d53dafd4289a0fb462f0/contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", size = 1263068, upload-time = "2024-08-27T20:53:23.442Z" }, + { url = "https://files.pythonhosted.org/packages/2a/25/632eab595e3140adfa92f1322bf8915f68c932bac468e89eae9974cf1c00/contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", size = 1322833, upload-time = "2024-08-27T20:53:39.243Z" }, + { url = "https://files.pythonhosted.org/packages/73/e3/69738782e315a1d26d29d71a550dbbe3eb6c653b028b150f70c1a5f4f229/contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb", size = 172681, upload-time = "2024-08-27T20:53:43.05Z" }, + { url = "https://files.pythonhosted.org/packages/0c/89/9830ba00d88e43d15e53d64931e66b8792b46eb25e2050a88fec4a0df3d5/contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b", size = 218283, upload-time = "2024-08-27T20:53:47.232Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e3/b9f72758adb6ef7397327ceb8b9c39c75711affb220e4f53c745ea1d5a9a/contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8", size = 265518, upload-time = "2024-08-27T20:56:01.333Z" }, + { url = "https://files.pythonhosted.org/packages/ec/22/19f5b948367ab5260fb41d842c7a78dae645603881ea6bc39738bcfcabf6/contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c", size = 249350, upload-time = "2024-08-27T20:56:05.432Z" }, + { url = "https://files.pythonhosted.org/packages/26/76/0c7d43263dd00ae21a91a24381b7e813d286a3294d95d179ef3a7b9fb1d7/contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca", size = 309167, upload-time = "2024-08-27T20:56:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/96/3b/cadff6773e89f2a5a492c1a8068e21d3fccaf1a1c1df7d65e7c8e3ef60ba/contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f", size = 348279, upload-time = "2024-08-27T20:56:15.41Z" }, + { url = "https://files.pythonhosted.org/packages/e1/86/158cc43aa549d2081a955ab11c6bdccc7a22caacc2af93186d26f5f48746/contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc", size = 318519, upload-time = "2024-08-27T20:56:21.813Z" }, + { url = "https://files.pythonhosted.org/packages/05/11/57335544a3027e9b96a05948c32e566328e3a2f84b7b99a325b7a06d2b06/contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2", size = 321922, upload-time = "2024-08-27T20:56:26.983Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e3/02114f96543f4a1b694333b92a6dcd4f8eebbefcc3a5f3bbb1316634178f/contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e", size = 1258017, upload-time = "2024-08-27T20:56:42.246Z" }, + { url = "https://files.pythonhosted.org/packages/f3/3b/bfe4c81c6d5881c1c643dde6620be0b42bf8aab155976dd644595cfab95c/contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800", size = 1316773, upload-time = "2024-08-27T20:56:58.58Z" }, + { url = "https://files.pythonhosted.org/packages/f1/17/c52d2970784383cafb0bd918b6fb036d98d96bbf0bc1befb5d1e31a07a70/contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5", size = 171353, upload-time = "2024-08-27T20:57:02.718Z" }, + { url = "https://files.pythonhosted.org/packages/53/23/db9f69676308e094d3c45f20cc52e12d10d64f027541c995d89c11ad5c75/contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843", size = 211817, upload-time = "2024-08-27T20:57:06.328Z" }, + { url = "https://files.pythonhosted.org/packages/d1/09/60e486dc2b64c94ed33e58dcfb6f808192c03dfc5574c016218b9b7680dc/contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c", size = 261886, upload-time = "2024-08-27T20:57:10.863Z" }, + { url = "https://files.pythonhosted.org/packages/19/20/b57f9f7174fcd439a7789fb47d764974ab646fa34d1790551de386457a8e/contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779", size = 311008, upload-time = "2024-08-27T20:57:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/74/fc/5040d42623a1845d4f17a418e590fd7a79ae8cb2bad2b2f83de63c3bdca4/contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4", size = 215690, upload-time = "2024-08-27T20:57:19.321Z" }, + { url = "https://files.pythonhosted.org/packages/2b/24/dc3dcd77ac7460ab7e9d2b01a618cb31406902e50e605a8d6091f0a8f7cc/contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0", size = 261894, upload-time = "2024-08-27T20:57:23.873Z" }, + { url = "https://files.pythonhosted.org/packages/b1/db/531642a01cfec39d1682e46b5457b07cf805e3c3c584ec27e2a6223f8f6c/contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102", size = 311099, upload-time = "2024-08-27T20:57:28.58Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/94bda024d629f254143a134eead69e21c836429a2a6ce82209a00ddcb79a/contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb", size = 215838, upload-time = "2024-08-27T20:57:32.913Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "coverage" +version = "7.10.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704, upload-time = "2025-09-21T20:03:56.815Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6c/3a3f7a46888e69d18abe3ccc6fe4cb16cccb1e6a2f99698931dafca489e6/coverage-7.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc04cc7a3db33664e0c2d10eb8990ff6b3536f6842c9590ae8da4c614b9ed05a", size = 217987, upload-time = "2025-09-21T20:00:57.218Z" }, + { url = "https://files.pythonhosted.org/packages/03/94/952d30f180b1a916c11a56f5c22d3535e943aa22430e9e3322447e520e1c/coverage-7.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e201e015644e207139f7e2351980feb7040e6f4b2c2978892f3e3789d1c125e5", size = 218388, upload-time = "2025-09-21T20:01:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/9e0cf8ded1e114bcd8b2fd42792b57f1c4e9e4ea1824cde2af93a67305be/coverage-7.10.7-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:240af60539987ced2c399809bd34f7c78e8abe0736af91c3d7d0e795df633d17", size = 245148, upload-time = "2025-09-21T20:01:01.768Z" }, + { url = "https://files.pythonhosted.org/packages/19/20/d0384ac06a6f908783d9b6aa6135e41b093971499ec488e47279f5b846e6/coverage-7.10.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8421e088bc051361b01c4b3a50fd39a4b9133079a2229978d9d30511fd05231b", size = 246958, upload-time = "2025-09-21T20:01:03.355Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/5c283cff3d41285f8eab897651585db908a909c572bdc014bcfaf8a8b6ae/coverage-7.10.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6be8ed3039ae7f7ac5ce058c308484787c86e8437e72b30bf5e88b8ea10f3c87", size = 248819, upload-time = "2025-09-21T20:01:04.968Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/02eb98fdc5ff79f423e990d877693e5310ae1eab6cb20ae0b0b9ac45b23b/coverage-7.10.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e28299d9f2e889e6d51b1f043f58d5f997c373cc12e6403b90df95b8b047c13e", size = 245754, upload-time = "2025-09-21T20:01:06.321Z" }, + { url = "https://files.pythonhosted.org/packages/b4/bc/25c83bcf3ad141b32cd7dc45485ef3c01a776ca3aa8ef0a93e77e8b5bc43/coverage-7.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c4e16bd7761c5e454f4efd36f345286d6f7c5fa111623c355691e2755cae3b9e", size = 246860, upload-time = "2025-09-21T20:01:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b7/95574702888b58c0928a6e982038c596f9c34d52c5e5107f1eef729399b5/coverage-7.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b1c81d0e5e160651879755c9c675b974276f135558cf4ba79fee7b8413a515df", size = 244877, upload-time = "2025-09-21T20:01:08.829Z" }, + { url = "https://files.pythonhosted.org/packages/47/b6/40095c185f235e085df0e0b158f6bd68cc6e1d80ba6c7721dc81d97ec318/coverage-7.10.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:606cc265adc9aaedcc84f1f064f0e8736bc45814f15a357e30fca7ecc01504e0", size = 245108, upload-time = "2025-09-21T20:01:10.527Z" }, + { url = "https://files.pythonhosted.org/packages/c8/50/4aea0556da7a4b93ec9168420d170b55e2eb50ae21b25062513d020c6861/coverage-7.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:10b24412692df990dbc34f8fb1b6b13d236ace9dfdd68df5b28c2e39cafbba13", size = 245752, upload-time = "2025-09-21T20:01:11.857Z" }, + { url = "https://files.pythonhosted.org/packages/6a/28/ea1a84a60828177ae3b100cb6723838523369a44ec5742313ed7db3da160/coverage-7.10.7-cp310-cp310-win32.whl", hash = "sha256:b51dcd060f18c19290d9b8a9dd1e0181538df2ce0717f562fff6cf74d9fc0b5b", size = 220497, upload-time = "2025-09-21T20:01:13.459Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1a/a81d46bbeb3c3fd97b9602ebaa411e076219a150489bcc2c025f151bd52d/coverage-7.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:3a622ac801b17198020f09af3eaf45666b344a0d69fc2a6ffe2ea83aeef1d807", size = 221392, upload-time = "2025-09-21T20:01:14.722Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5d/c1a17867b0456f2e9ce2d8d4708a4c3a089947d0bec9c66cdf60c9e7739f/coverage-7.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a609f9c93113be646f44c2a0256d6ea375ad047005d7f57a5c15f614dc1b2f59", size = 218102, upload-time = "2025-09-21T20:01:16.089Z" }, + { url = "https://files.pythonhosted.org/packages/54/f0/514dcf4b4e3698b9a9077f084429681bf3aad2b4a72578f89d7f643eb506/coverage-7.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:65646bb0359386e07639c367a22cf9b5bf6304e8630b565d0626e2bdf329227a", size = 218505, upload-time = "2025-09-21T20:01:17.788Z" }, + { url = "https://files.pythonhosted.org/packages/20/f6/9626b81d17e2a4b25c63ac1b425ff307ecdeef03d67c9a147673ae40dc36/coverage-7.10.7-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5f33166f0dfcce728191f520bd2692914ec70fac2713f6bf3ce59c3deacb4699", size = 248898, upload-time = "2025-09-21T20:01:19.488Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ef/bd8e719c2f7417ba03239052e099b76ea1130ac0cbb183ee1fcaa58aaff3/coverage-7.10.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:35f5e3f9e455bb17831876048355dca0f758b6df22f49258cb5a91da23ef437d", size = 250831, upload-time = "2025-09-21T20:01:20.817Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b6/bf054de41ec948b151ae2b79a55c107f5760979538f5fb80c195f2517718/coverage-7.10.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4da86b6d62a496e908ac2898243920c7992499c1712ff7c2b6d837cc69d9467e", size = 252937, upload-time = "2025-09-21T20:01:22.171Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e5/3860756aa6f9318227443c6ce4ed7bf9e70bb7f1447a0353f45ac5c7974b/coverage-7.10.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6b8b09c1fad947c84bbbc95eca841350fad9cbfa5a2d7ca88ac9f8d836c92e23", size = 249021, upload-time = "2025-09-21T20:01:23.907Z" }, + { url = "https://files.pythonhosted.org/packages/26/0f/bd08bd042854f7fd07b45808927ebcce99a7ed0f2f412d11629883517ac2/coverage-7.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4376538f36b533b46f8971d3a3e63464f2c7905c9800db97361c43a2b14792ab", size = 250626, upload-time = "2025-09-21T20:01:25.721Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a7/4777b14de4abcc2e80c6b1d430f5d51eb18ed1d75fca56cbce5f2db9b36e/coverage-7.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:121da30abb574f6ce6ae09840dae322bef734480ceafe410117627aa54f76d82", size = 248682, upload-time = "2025-09-21T20:01:27.105Z" }, + { url = "https://files.pythonhosted.org/packages/34/72/17d082b00b53cd45679bad682fac058b87f011fd8b9fe31d77f5f8d3a4e4/coverage-7.10.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:88127d40df529336a9836870436fc2751c339fbaed3a836d42c93f3e4bd1d0a2", size = 248402, upload-time = "2025-09-21T20:01:28.629Z" }, + { url = "https://files.pythonhosted.org/packages/81/7a/92367572eb5bdd6a84bfa278cc7e97db192f9f45b28c94a9ca1a921c3577/coverage-7.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ba58bbcd1b72f136080c0bccc2400d66cc6115f3f906c499013d065ac33a4b61", size = 249320, upload-time = "2025-09-21T20:01:30.004Z" }, + { url = "https://files.pythonhosted.org/packages/2f/88/a23cc185f6a805dfc4fdf14a94016835eeb85e22ac3a0e66d5e89acd6462/coverage-7.10.7-cp311-cp311-win32.whl", hash = "sha256:972b9e3a4094b053a4e46832b4bc829fc8a8d347160eb39d03f1690316a99c14", size = 220536, upload-time = "2025-09-21T20:01:32.184Z" }, + { url = "https://files.pythonhosted.org/packages/fe/ef/0b510a399dfca17cec7bc2f05ad8bd78cf55f15c8bc9a73ab20c5c913c2e/coverage-7.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:a7b55a944a7f43892e28ad4bc0561dfd5f0d73e605d1aa5c3c976b52aea121d2", size = 221425, upload-time = "2025-09-21T20:01:33.557Z" }, + { url = "https://files.pythonhosted.org/packages/51/7f/023657f301a276e4ba1850f82749bc136f5a7e8768060c2e5d9744a22951/coverage-7.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:736f227fb490f03c6488f9b6d45855f8e0fd749c007f9303ad30efab0e73c05a", size = 220103, upload-time = "2025-09-21T20:01:34.929Z" }, + { url = "https://files.pythonhosted.org/packages/13/e4/eb12450f71b542a53972d19117ea5a5cea1cab3ac9e31b0b5d498df1bd5a/coverage-7.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bb3b9ddb87ef7725056572368040c32775036472d5a033679d1fa6c8dc08417", size = 218290, upload-time = "2025-09-21T20:01:36.455Z" }, + { url = "https://files.pythonhosted.org/packages/37/66/593f9be12fc19fb36711f19a5371af79a718537204d16ea1d36f16bd78d2/coverage-7.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18afb24843cbc175687225cab1138c95d262337f5473512010e46831aa0c2973", size = 218515, upload-time = "2025-09-21T20:01:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/66/80/4c49f7ae09cafdacc73fbc30949ffe77359635c168f4e9ff33c9ebb07838/coverage-7.10.7-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:399a0b6347bcd3822be369392932884b8216d0944049ae22925631a9b3d4ba4c", size = 250020, upload-time = "2025-09-21T20:01:39.617Z" }, + { url = "https://files.pythonhosted.org/packages/a6/90/a64aaacab3b37a17aaedd83e8000142561a29eb262cede42d94a67f7556b/coverage-7.10.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314f2c326ded3f4b09be11bc282eb2fc861184bc95748ae67b360ac962770be7", size = 252769, upload-time = "2025-09-21T20:01:41.341Z" }, + { url = "https://files.pythonhosted.org/packages/98/2e/2dda59afd6103b342e096f246ebc5f87a3363b5412609946c120f4e7750d/coverage-7.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c41e71c9cfb854789dee6fc51e46743a6d138b1803fab6cb860af43265b42ea6", size = 253901, upload-time = "2025-09-21T20:01:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/dc/8d8119c9051d50f3119bb4a75f29f1e4a6ab9415cd1fa8bf22fcc3fb3b5f/coverage-7.10.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc01f57ca26269c2c706e838f6422e2a8788e41b3e3c65e2f41148212e57cd59", size = 250413, upload-time = "2025-09-21T20:01:44.469Z" }, + { url = "https://files.pythonhosted.org/packages/98/b3/edaff9c5d79ee4d4b6d3fe046f2b1d799850425695b789d491a64225d493/coverage-7.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a6442c59a8ac8b85812ce33bc4d05bde3fb22321fa8294e2a5b487c3505f611b", size = 251820, upload-time = "2025-09-21T20:01:45.915Z" }, + { url = "https://files.pythonhosted.org/packages/11/25/9a0728564bb05863f7e513e5a594fe5ffef091b325437f5430e8cfb0d530/coverage-7.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:78a384e49f46b80fb4c901d52d92abe098e78768ed829c673fbb53c498bef73a", size = 249941, upload-time = "2025-09-21T20:01:47.296Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fd/ca2650443bfbef5b0e74373aac4df67b08180d2f184b482c41499668e258/coverage-7.10.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5e1e9802121405ede4b0133aa4340ad8186a1d2526de5b7c3eca519db7bb89fb", size = 249519, upload-time = "2025-09-21T20:01:48.73Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/f692f125fb4299b6f963b0745124998ebb8e73ecdfce4ceceb06a8c6bec5/coverage-7.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d41213ea25a86f69efd1575073d34ea11aabe075604ddf3d148ecfec9e1e96a1", size = 251375, upload-time = "2025-09-21T20:01:50.529Z" }, + { url = "https://files.pythonhosted.org/packages/5e/75/61b9bbd6c7d24d896bfeec57acba78e0f8deac68e6baf2d4804f7aae1f88/coverage-7.10.7-cp312-cp312-win32.whl", hash = "sha256:77eb4c747061a6af8d0f7bdb31f1e108d172762ef579166ec84542f711d90256", size = 220699, upload-time = "2025-09-21T20:01:51.941Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f3/3bf7905288b45b075918d372498f1cf845b5b579b723c8fd17168018d5f5/coverage-7.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:f51328ffe987aecf6d09f3cd9d979face89a617eacdaea43e7b3080777f647ba", size = 221512, upload-time = "2025-09-21T20:01:53.481Z" }, + { url = "https://files.pythonhosted.org/packages/5c/44/3e32dbe933979d05cf2dac5e697c8599cfe038aaf51223ab901e208d5a62/coverage-7.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:bda5e34f8a75721c96085903c6f2197dc398c20ffd98df33f866a9c8fd95f4bf", size = 220147, upload-time = "2025-09-21T20:01:55.2Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ad/d1c25053764b4c42eb294aae92ab617d2e4f803397f9c7c8295caa77a260/coverage-7.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fff7b9c3f19957020cac546c70025331113d2e61537f6e2441bc7657913de7d3", size = 217978, upload-time = "2025-09-21T20:03:30.362Z" }, + { url = "https://files.pythonhosted.org/packages/52/2f/b9f9daa39b80ece0b9548bbb723381e29bc664822d9a12c2135f8922c22b/coverage-7.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bc91b314cef27742da486d6839b677b3f2793dfe52b51bbbb7cf736d5c29281c", size = 218370, upload-time = "2025-09-21T20:03:32.147Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6e/30d006c3b469e58449650642383dddf1c8fb63d44fdf92994bfd46570695/coverage-7.10.7-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:567f5c155eda8df1d3d439d40a45a6a5f029b429b06648235f1e7e51b522b396", size = 244802, upload-time = "2025-09-21T20:03:33.919Z" }, + { url = "https://files.pythonhosted.org/packages/b0/49/8a070782ce7e6b94ff6a0b6d7c65ba6bc3091d92a92cef4cd4eb0767965c/coverage-7.10.7-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af88deffcc8a4d5974cf2d502251bc3b2db8461f0b66d80a449c33757aa9f40", size = 246625, upload-time = "2025-09-21T20:03:36.09Z" }, + { url = "https://files.pythonhosted.org/packages/6a/92/1c1c5a9e8677ce56d42b97bdaca337b2d4d9ebe703d8c174ede52dbabd5f/coverage-7.10.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7315339eae3b24c2d2fa1ed7d7a38654cba34a13ef19fbcb9425da46d3dc594", size = 248399, upload-time = "2025-09-21T20:03:38.342Z" }, + { url = "https://files.pythonhosted.org/packages/c0/54/b140edee7257e815de7426d5d9846b58505dffc29795fff2dfb7f8a1c5a0/coverage-7.10.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:912e6ebc7a6e4adfdbb1aec371ad04c68854cd3bf3608b3514e7ff9062931d8a", size = 245142, upload-time = "2025-09-21T20:03:40.591Z" }, + { url = "https://files.pythonhosted.org/packages/e4/9e/6d6b8295940b118e8b7083b29226c71f6154f7ff41e9ca431f03de2eac0d/coverage-7.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f49a05acd3dfe1ce9715b657e28d138578bc40126760efb962322c56e9ca344b", size = 246284, upload-time = "2025-09-21T20:03:42.355Z" }, + { url = "https://files.pythonhosted.org/packages/db/e5/5e957ca747d43dbe4d9714358375c7546cb3cb533007b6813fc20fce37ad/coverage-7.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cce2109b6219f22ece99db7644b9622f54a4e915dad65660ec435e89a3ea7cc3", size = 244353, upload-time = "2025-09-21T20:03:44.218Z" }, + { url = "https://files.pythonhosted.org/packages/9a/45/540fc5cc92536a1b783b7ef99450bd55a4b3af234aae35a18a339973ce30/coverage-7.10.7-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:f3c887f96407cea3916294046fc7dab611c2552beadbed4ea901cbc6a40cc7a0", size = 244430, upload-time = "2025-09-21T20:03:46.065Z" }, + { url = "https://files.pythonhosted.org/packages/75/0b/8287b2e5b38c8fe15d7e3398849bb58d382aedc0864ea0fa1820e8630491/coverage-7.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:635adb9a4507c9fd2ed65f39693fa31c9a3ee3a8e6dc64df033e8fdf52a7003f", size = 245311, upload-time = "2025-09-21T20:03:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1d/29724999984740f0c86d03e6420b942439bf5bd7f54d4382cae386a9d1e9/coverage-7.10.7-cp39-cp39-win32.whl", hash = "sha256:5a02d5a850e2979b0a014c412573953995174743a3f7fa4ea5a6e9a3c5617431", size = 220500, upload-time = "2025-09-21T20:03:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/43/11/4b1e6b129943f905ca54c339f343877b55b365ae2558806c1be4f7476ed5/coverage-7.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:c134869d5ffe34547d14e174c866fd8fe2254918cc0a95e99052903bc1543e07", size = 221408, upload-time = "2025-09-21T20:03:51.803Z" }, + { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952, upload-time = "2025-09-21T20:03:53.918Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version < '3.10'" }, +] + +[[package]] +name = "coverage" +version = "7.12.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/89/26/4a96807b193b011588099c3b5c89fbb05294e5b90e71018e065465f34eb6/coverage-7.12.0.tar.gz", hash = "sha256:fc11e0a4e372cb5f282f16ef90d4a585034050ccda536451901abfb19a57f40c", size = 819341, upload-time = "2025-11-18T13:34:20.766Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/4a/0dc3de1c172d35abe512332cfdcc43211b6ebce629e4cc42e6cd25ed8f4d/coverage-7.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:32b75c2ba3f324ee37af3ccee5b30458038c50b349ad9b88cee85096132a575b", size = 217409, upload-time = "2025-11-18T13:31:53.122Z" }, + { url = "https://files.pythonhosted.org/packages/01/c3/086198b98db0109ad4f84241e8e9ea7e5fb2db8c8ffb787162d40c26cc76/coverage-7.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cb2a1b6ab9fe833714a483a915de350abc624a37149649297624c8d57add089c", size = 217927, upload-time = "2025-11-18T13:31:54.458Z" }, + { url = "https://files.pythonhosted.org/packages/5d/5f/34614dbf5ce0420828fc6c6f915126a0fcb01e25d16cf141bf5361e6aea6/coverage-7.12.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5734b5d913c3755e72f70bf6cc37a0518d4f4745cde760c5d8e12005e62f9832", size = 244678, upload-time = "2025-11-18T13:31:55.805Z" }, + { url = "https://files.pythonhosted.org/packages/55/7b/6b26fb32e8e4a6989ac1d40c4e132b14556131493b1d06bc0f2be169c357/coverage-7.12.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b527a08cdf15753279b7afb2339a12073620b761d79b81cbe2cdebdb43d90daa", size = 246507, upload-time = "2025-11-18T13:31:57.05Z" }, + { url = "https://files.pythonhosted.org/packages/06/42/7d70e6603d3260199b90fb48b537ca29ac183d524a65cc31366b2e905fad/coverage-7.12.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9bb44c889fb68004e94cab71f6a021ec83eac9aeabdbb5a5a88821ec46e1da73", size = 248366, upload-time = "2025-11-18T13:31:58.362Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4a/d86b837923878424c72458c5b25e899a3c5ca73e663082a915f5b3c4d749/coverage-7.12.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4b59b501455535e2e5dde5881739897967b272ba25988c89145c12d772810ccb", size = 245366, upload-time = "2025-11-18T13:31:59.572Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c2/2adec557e0aa9721875f06ced19730fdb7fc58e31b02b5aa56f2ebe4944d/coverage-7.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d8842f17095b9868a05837b7b1b73495293091bed870e099521ada176aa3e00e", size = 246408, upload-time = "2025-11-18T13:32:00.784Z" }, + { url = "https://files.pythonhosted.org/packages/5a/4b/8bd1f1148260df11c618e535fdccd1e5aaf646e55b50759006a4f41d8a26/coverage-7.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c5a6f20bf48b8866095c6820641e7ffbe23f2ac84a2efc218d91235e404c7777", size = 244416, upload-time = "2025-11-18T13:32:01.963Z" }, + { url = "https://files.pythonhosted.org/packages/0e/13/3a248dd6a83df90414c54a4e121fd081fb20602ca43955fbe1d60e2312a9/coverage-7.12.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:5f3738279524e988d9da2893f307c2093815c623f8d05a8f79e3eff3a7a9e553", size = 244681, upload-time = "2025-11-18T13:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/76/30/aa833827465a5e8c938935f5d91ba055f70516941078a703740aaf1aa41f/coverage-7.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0d68c1f7eabbc8abe582d11fa393ea483caf4f44b0af86881174769f185c94d", size = 245300, upload-time = "2025-11-18T13:32:04.686Z" }, + { url = "https://files.pythonhosted.org/packages/38/24/f85b3843af1370fb3739fa7571819b71243daa311289b31214fe3e8c9d68/coverage-7.12.0-cp310-cp310-win32.whl", hash = "sha256:7670d860e18b1e3ee5930b17a7d55ae6287ec6e55d9799982aa103a2cc1fa2ef", size = 220008, upload-time = "2025-11-18T13:32:05.806Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a2/c7da5b9566f7164db9eefa133d17761ecb2c2fde9385d754e5b5c80f710d/coverage-7.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:f999813dddeb2a56aab5841e687b68169da0d3f6fc78ccf50952fa2463746022", size = 220943, upload-time = "2025-11-18T13:32:07.166Z" }, + { url = "https://files.pythonhosted.org/packages/5a/0c/0dfe7f0487477d96432e4815537263363fb6dd7289743a796e8e51eabdf2/coverage-7.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa124a3683d2af98bd9d9c2bfa7a5076ca7e5ab09fdb96b81fa7d89376ae928f", size = 217535, upload-time = "2025-11-18T13:32:08.812Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f5/f9a4a053a5bbff023d3bec259faac8f11a1e5a6479c2ccf586f910d8dac7/coverage-7.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d93fbf446c31c0140208dcd07c5d882029832e8ed7891a39d6d44bd65f2316c3", size = 218044, upload-time = "2025-11-18T13:32:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/95/c5/84fc3697c1fa10cd8571919bf9693f693b7373278daaf3b73e328d502bc8/coverage-7.12.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:52ca620260bd8cd6027317bdd8b8ba929be1d741764ee765b42c4d79a408601e", size = 248440, upload-time = "2025-11-18T13:32:12.536Z" }, + { url = "https://files.pythonhosted.org/packages/f4/36/2d93fbf6a04670f3874aed397d5a5371948a076e3249244a9e84fb0e02d6/coverage-7.12.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f3433ffd541380f3a0e423cff0f4926d55b0cc8c1d160fdc3be24a4c03aa65f7", size = 250361, upload-time = "2025-11-18T13:32:13.852Z" }, + { url = "https://files.pythonhosted.org/packages/5d/49/66dc65cc456a6bfc41ea3d0758c4afeaa4068a2b2931bf83be6894cf1058/coverage-7.12.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f7bbb321d4adc9f65e402c677cd1c8e4c2d0105d3ce285b51b4d87f1d5db5245", size = 252472, upload-time = "2025-11-18T13:32:15.068Z" }, + { url = "https://files.pythonhosted.org/packages/35/1f/ebb8a18dffd406db9fcd4b3ae42254aedcaf612470e8712f12041325930f/coverage-7.12.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22a7aade354a72dff3b59c577bfd18d6945c61f97393bc5fb7bd293a4237024b", size = 248592, upload-time = "2025-11-18T13:32:16.328Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/67f213c06e5ea3b3d4980df7dc344d7fea88240b5fe878a5dcbdfe0e2315/coverage-7.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3ff651dcd36d2fea66877cd4a82de478004c59b849945446acb5baf9379a1b64", size = 250167, upload-time = "2025-11-18T13:32:17.687Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/e52aef68154164ea40cc8389c120c314c747fe63a04b013a5782e989b77f/coverage-7.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:31b8b2e38391a56e3cea39d22a23faaa7c3fc911751756ef6d2621d2a9daf742", size = 248238, upload-time = "2025-11-18T13:32:19.2Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a4/4d88750bcf9d6d66f77865e5a05a20e14db44074c25fd22519777cb69025/coverage-7.12.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:297bc2da28440f5ae51c845a47c8175a4db0553a53827886e4fb25c66633000c", size = 247964, upload-time = "2025-11-18T13:32:21.027Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/b74693158899d5b47b0bf6238d2c6722e20ba749f86b74454fac0696bb00/coverage-7.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ff7651cc01a246908eac162a6a86fc0dbab6de1ad165dfb9a1e2ec660b44984", size = 248862, upload-time = "2025-11-18T13:32:22.304Z" }, + { url = "https://files.pythonhosted.org/packages/18/de/6af6730227ce0e8ade307b1cc4a08e7f51b419a78d02083a86c04ccceb29/coverage-7.12.0-cp311-cp311-win32.whl", hash = "sha256:313672140638b6ddb2c6455ddeda41c6a0b208298034544cfca138978c6baed6", size = 220033, upload-time = "2025-11-18T13:32:23.714Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a1/e7f63021a7c4fe20994359fcdeae43cbef4a4d0ca36a5a1639feeea5d9e1/coverage-7.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1783ed5bd0d5938d4435014626568dc7f93e3cb99bc59188cc18857c47aa3c4", size = 220966, upload-time = "2025-11-18T13:32:25.599Z" }, + { url = "https://files.pythonhosted.org/packages/77/e8/deae26453f37c20c3aa0c4433a1e32cdc169bf415cce223a693117aa3ddd/coverage-7.12.0-cp311-cp311-win_arm64.whl", hash = "sha256:4648158fd8dd9381b5847622df1c90ff314efbfc1df4550092ab6013c238a5fc", size = 219637, upload-time = "2025-11-18T13:32:27.265Z" }, + { url = "https://files.pythonhosted.org/packages/02/bf/638c0427c0f0d47638242e2438127f3c8ee3cfc06c7fdeb16778ed47f836/coverage-7.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:29644c928772c78512b48e14156b81255000dcfd4817574ff69def189bcb3647", size = 217704, upload-time = "2025-11-18T13:32:28.906Z" }, + { url = "https://files.pythonhosted.org/packages/08/e1/706fae6692a66c2d6b871a608bbde0da6281903fa0e9f53a39ed441da36a/coverage-7.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8638cbb002eaa5d7c8d04da667813ce1067080b9a91099801a0053086e52b736", size = 218064, upload-time = "2025-11-18T13:32:30.161Z" }, + { url = "https://files.pythonhosted.org/packages/a9/8b/eb0231d0540f8af3ffda39720ff43cb91926489d01524e68f60e961366e4/coverage-7.12.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:083631eeff5eb9992c923e14b810a179798bb598e6a0dd60586819fc23be6e60", size = 249560, upload-time = "2025-11-18T13:32:31.835Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a1/67fb52af642e974d159b5b379e4d4c59d0ebe1288677fbd04bbffe665a82/coverage-7.12.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:99d5415c73ca12d558e07776bd957c4222c687b9f1d26fa0e1b57e3598bdcde8", size = 252318, upload-time = "2025-11-18T13:32:33.178Z" }, + { url = "https://files.pythonhosted.org/packages/41/e5/38228f31b2c7665ebf9bdfdddd7a184d56450755c7e43ac721c11a4b8dab/coverage-7.12.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e949ebf60c717c3df63adb4a1a366c096c8d7fd8472608cd09359e1bd48ef59f", size = 253403, upload-time = "2025-11-18T13:32:34.45Z" }, + { url = "https://files.pythonhosted.org/packages/ec/4b/df78e4c8188f9960684267c5a4897836f3f0f20a20c51606ee778a1d9749/coverage-7.12.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d907ddccbca819afa2cd014bc69983b146cca2735a0b1e6259b2a6c10be1e70", size = 249984, upload-time = "2025-11-18T13:32:35.747Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/bb163933d195a345c6f63eab9e55743413d064c291b6220df754075c2769/coverage-7.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b1518ecbad4e6173f4c6e6c4a46e49555ea5679bf3feda5edb1b935c7c44e8a0", size = 251339, upload-time = "2025-11-18T13:32:37.352Z" }, + { url = "https://files.pythonhosted.org/packages/15/40/c9b29cdb8412c837cdcbc2cfa054547dd83affe6cbbd4ce4fdb92b6ba7d1/coverage-7.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51777647a749abdf6f6fd8c7cffab12de68ab93aab15efc72fbbb83036c2a068", size = 249489, upload-time = "2025-11-18T13:32:39.212Z" }, + { url = "https://files.pythonhosted.org/packages/c8/da/b3131e20ba07a0de4437a50ef3b47840dfabf9293675b0cd5c2c7f66dd61/coverage-7.12.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:42435d46d6461a3b305cdfcad7cdd3248787771f53fe18305548cba474e6523b", size = 249070, upload-time = "2025-11-18T13:32:40.598Z" }, + { url = "https://files.pythonhosted.org/packages/70/81/b653329b5f6302c08d683ceff6785bc60a34be9ae92a5c7b63ee7ee7acec/coverage-7.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5bcead88c8423e1855e64b8057d0544e33e4080b95b240c2a355334bb7ced937", size = 250929, upload-time = "2025-11-18T13:32:42.915Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/250ac3bca9f252a5fb1338b5ad01331ebb7b40223f72bef5b1b2cb03aa64/coverage-7.12.0-cp312-cp312-win32.whl", hash = "sha256:dcbb630ab034e86d2a0f79aefd2be07e583202f41e037602d438c80044957baa", size = 220241, upload-time = "2025-11-18T13:32:44.665Z" }, + { url = "https://files.pythonhosted.org/packages/64/1c/77e79e76d37ce83302f6c21980b45e09f8aa4551965213a10e62d71ce0ab/coverage-7.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:2fd8354ed5d69775ac42986a691fbf68b4084278710cee9d7c3eaa0c28fa982a", size = 221051, upload-time = "2025-11-18T13:32:46.008Z" }, + { url = "https://files.pythonhosted.org/packages/31/f5/641b8a25baae564f9e52cac0e2667b123de961985709a004e287ee7663cc/coverage-7.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:737c3814903be30695b2de20d22bcc5428fdae305c61ba44cdc8b3252984c49c", size = 219692, upload-time = "2025-11-18T13:32:47.372Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a3/43b749004e3c09452e39bb56347a008f0a0668aad37324a99b5c8ca91d9e/coverage-7.12.0-py3-none-any.whl", hash = "sha256:159d50c0b12e060b15ed3d39f87ed43d4f7f7ad40b8a534f4dd331adbb51104a", size = 209503, upload-time = "2025-11-18T13:34:18.892Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version >= '3.10' and python_full_version <= '3.11'" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "dash" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "importlib-metadata" }, + { name = "nest-asyncio" }, + { name = "plotly" }, + { name = "requests" }, + { name = "retrying" }, + { name = "setuptools" }, + { name = "typing-extensions" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/f9/516671861cf190bda37f6afa696d8a6a6ac593f23d8cf198e16faca044f5/dash-3.3.0.tar.gz", hash = "sha256:eaaa7a671540b5e1db8066f4966d0277d21edc2c7acdaec2fd6d198366a8b0df", size = 7579436, upload-time = "2025-11-12T15:51:54.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/cf/a4853e5b2b2bea55ae909095a8720b3ed50d07bdd40cbeafcedb5a6c47da/dash-3.3.0-py3-none-any.whl", hash = "sha256:8f52415977f7490492dd8a3872279160be8ff253ca9f4d49a4e3ba747fa4bd91", size = 7919707, upload-time = "2025-11-12T15:51:47.432Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +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 = "fastjsonschema" +version = "2.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, +] + +[[package]] +name = "flake8" +version = "7.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe" }, + { name = "pycodestyle" }, + { name = "pyflakes" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/af/fbfe3c4b5a657d79e5c47a2827a362f9e1b763336a52f926126aa6dc7123/flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872", size = 48326, upload-time = "2025-06-20T19:31:35.838Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e", size = 57922, upload-time = "2025-06-20T19:31:34.425Z" }, +] + +[[package]] +name = "flake8-bugbear" +version = "24.12.12" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "attrs", marker = "python_full_version < '3.10'" }, + { name = "flake8", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/25/48ba712ff589b0149f21135234f9bb45c14d6689acc6151b5e2ff8ac2ae9/flake8_bugbear-24.12.12.tar.gz", hash = "sha256:46273cef0a6b6ff48ca2d69e472f41420a42a46e24b2a8972e4f0d6733d12a64", size = 82907, upload-time = "2024-12-12T16:49:26.307Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/21/0a875f75fbe4008bd171e2fefa413536258fe6b4cfaaa087986de74588f4/flake8_bugbear-24.12.12-py3-none-any.whl", hash = "sha256:1b6967436f65ca22a42e5373aaa6f2d87966ade9aa38d4baf2a1be550767545e", size = 36664, upload-time = "2024-12-12T16:49:23.584Z" }, +] + +[[package]] +name = "flake8-bugbear" +version = "25.11.29" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "attrs", marker = "python_full_version >= '3.10'" }, + { name = "flake8", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/20/2a996e2fca7810bd1b031901d65fc4292630895afcb946ebd00568bdc669/flake8_bugbear-25.11.29.tar.gz", hash = "sha256:b5d06710f3d26e595541ad303ad4d5cb52578bd4bccbb2c2c0b2c72e243dafc8", size = 84896, upload-time = "2025-11-29T20:51:57.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/42/c18f199780d99a6f6a64c4a36f4ad28a445d9e11968a6025b21d0c8b6802/flake8_bugbear-25.11.29-py3-none-any.whl", hash = "sha256:9bf15e2970e736d2340da4c0a70493db964061c9c38f708cfe1f7b2d87392298", size = 37861, upload-time = "2025-11-29T20:51:56.439Z" }, +] + +[[package]] +name = "flask" +version = "3.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "click", version = "8.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/6d/cfe3c0fcc5e477df242b98bfe186a4c34357b4847e87ecaef04507332dab/flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87", size = 720160, upload-time = "2025-08-19T21:03:21.205Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" }, +] + +[[package]] +name = "fonttools" +version = "4.60.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/42/97a13e47a1e51a5a7142475bbcf5107fe3a68fc34aef331c897d5fb98ad0/fonttools-4.60.1.tar.gz", hash = "sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9", size = 3559823, upload-time = "2025-09-29T21:13:27.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/70/03e9d89a053caff6ae46053890eba8e4a5665a7c5638279ed4492e6d4b8b/fonttools-4.60.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9a52f254ce051e196b8fe2af4634c2d2f02c981756c6464dc192f1b6050b4e28", size = 2810747, upload-time = "2025-09-29T21:10:59.653Z" }, + { url = "https://files.pythonhosted.org/packages/6f/41/449ad5aff9670ab0df0f61ee593906b67a36d7e0b4d0cd7fa41ac0325bf5/fonttools-4.60.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7420a2696a44650120cdd269a5d2e56a477e2bfa9d95e86229059beb1c19e15", size = 2346909, upload-time = "2025-09-29T21:11:02.882Z" }, + { url = "https://files.pythonhosted.org/packages/9a/18/e5970aa96c8fad1cb19a9479cc3b7602c0c98d250fcdc06a5da994309c50/fonttools-4.60.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee0c0b3b35b34f782afc673d503167157094a16f442ace7c6c5e0ca80b08f50c", size = 4864572, upload-time = "2025-09-29T21:11:05.096Z" }, + { url = "https://files.pythonhosted.org/packages/ce/20/9b2b4051b6ec6689480787d506b5003f72648f50972a92d04527a456192c/fonttools-4.60.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:282dafa55f9659e8999110bd8ed422ebe1c8aecd0dc396550b038e6c9a08b8ea", size = 4794635, upload-time = "2025-09-29T21:11:08.651Z" }, + { url = "https://files.pythonhosted.org/packages/10/52/c791f57347c1be98f8345e3dca4ac483eb97666dd7c47f3059aeffab8b59/fonttools-4.60.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4ba4bd646e86de16160f0fb72e31c3b9b7d0721c3e5b26b9fa2fc931dfdb2652", size = 4843878, upload-time = "2025-09-29T21:11:10.893Z" }, + { url = "https://files.pythonhosted.org/packages/69/e9/35c24a8d01644cee8c090a22fad34d5b61d1e0a8ecbc9945ad785ebf2e9e/fonttools-4.60.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0b0835ed15dd5b40d726bb61c846a688f5b4ce2208ec68779bc81860adb5851a", size = 4954555, upload-time = "2025-09-29T21:11:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/f7/86/fb1e994971be4bdfe3a307de6373ef69a9df83fb66e3faa9c8114893d4cc/fonttools-4.60.1-cp310-cp310-win32.whl", hash = "sha256:1525796c3ffe27bb6268ed2a1bb0dcf214d561dfaf04728abf01489eb5339dce", size = 2232019, upload-time = "2025-09-29T21:11:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/40/84/62a19e2bd56f0e9fb347486a5b26376bade4bf6bbba64dda2c103bd08c94/fonttools-4.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:268ecda8ca6cb5c4f044b1fb9b3b376e8cd1b361cef275082429dc4174907038", size = 2276803, upload-time = "2025-09-29T21:11:18.152Z" }, + { url = "https://files.pythonhosted.org/packages/ea/85/639aa9bface1537e0fb0f643690672dde0695a5bbbc90736bc571b0b1941/fonttools-4.60.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7b4c32e232a71f63a5d00259ca3d88345ce2a43295bb049d21061f338124246f", size = 2831872, upload-time = "2025-09-29T21:11:20.329Z" }, + { url = "https://files.pythonhosted.org/packages/6b/47/3c63158459c95093be9618794acb1067b3f4d30dcc5c3e8114b70e67a092/fonttools-4.60.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3630e86c484263eaac71d117085d509cbcf7b18f677906824e4bace598fb70d2", size = 2356990, upload-time = "2025-09-29T21:11:22.754Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/1934b537c86fcf99f9761823f1fc37a98fbd54568e8e613f29a90fed95a9/fonttools-4.60.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5c1015318e4fec75dd4943ad5f6a206d9727adf97410d58b7e32ab644a807914", size = 5042189, upload-time = "2025-09-29T21:11:25.061Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d2/9f4e4c4374dd1daa8367784e1bd910f18ba886db1d6b825b12edf6db3edc/fonttools-4.60.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e6c58beb17380f7c2ea181ea11e7db8c0ceb474c9dd45f48e71e2cb577d146a1", size = 4978683, upload-time = "2025-09-29T21:11:27.693Z" }, + { url = "https://files.pythonhosted.org/packages/cc/c4/0fb2dfd1ecbe9a07954cc13414713ed1eab17b1c0214ef07fc93df234a47/fonttools-4.60.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec3681a0cb34c255d76dd9d865a55f260164adb9fa02628415cdc2d43ee2c05d", size = 5021372, upload-time = "2025-09-29T21:11:30.257Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d5/495fc7ae2fab20223cc87179a8f50f40f9a6f821f271ba8301ae12bb580f/fonttools-4.60.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f4b5c37a5f40e4d733d3bbaaef082149bee5a5ea3156a785ff64d949bd1353fa", size = 5132562, upload-time = "2025-09-29T21:11:32.737Z" }, + { url = "https://files.pythonhosted.org/packages/bc/fa/021dab618526323c744e0206b3f5c8596a2e7ae9aa38db5948a131123e83/fonttools-4.60.1-cp311-cp311-win32.whl", hash = "sha256:398447f3d8c0c786cbf1209711e79080a40761eb44b27cdafffb48f52bcec258", size = 2230288, upload-time = "2025-09-29T21:11:35.015Z" }, + { url = "https://files.pythonhosted.org/packages/bb/78/0e1a6d22b427579ea5c8273e1c07def2f325b977faaf60bb7ddc01456cb1/fonttools-4.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:d066ea419f719ed87bc2c99a4a4bfd77c2e5949cb724588b9dd58f3fd90b92bf", size = 2278184, upload-time = "2025-09-29T21:11:37.434Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f7/a10b101b7a6f8836a5adb47f2791f2075d044a6ca123f35985c42edc82d8/fonttools-4.60.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7b0c6d57ab00dae9529f3faf187f2254ea0aa1e04215cf2f1a8ec277c96661bc", size = 2832953, upload-time = "2025-09-29T21:11:39.616Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fe/7bd094b59c926acf2304d2151354ddbeb74b94812f3dc943c231db09cb41/fonttools-4.60.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:839565cbf14645952d933853e8ade66a463684ed6ed6c9345d0faf1f0e868877", size = 2352706, upload-time = "2025-09-29T21:11:41.826Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ca/4bb48a26ed95a1e7eba175535fe5805887682140ee0a0d10a88e1de84208/fonttools-4.60.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8177ec9676ea6e1793c8a084a90b65a9f778771998eb919d05db6d4b1c0b114c", size = 4923716, upload-time = "2025-09-29T21:11:43.893Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9f/2cb82999f686c1d1ddf06f6ae1a9117a880adbec113611cc9d22b2fdd465/fonttools-4.60.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:996a4d1834524adbb423385d5a629b868ef9d774670856c63c9a0408a3063401", size = 4968175, upload-time = "2025-09-29T21:11:46.439Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/be569699e37d166b78e6218f2cde8c550204f2505038cdd83b42edc469b9/fonttools-4.60.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a46b2f450bc79e06ef3b6394f0c68660529ed51692606ad7f953fc2e448bc903", size = 4911031, upload-time = "2025-09-29T21:11:48.977Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9f/89411cc116effaec5260ad519162f64f9c150e5522a27cbb05eb62d0c05b/fonttools-4.60.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6ec722ee589e89a89f5b7574f5c45604030aa6ae24cb2c751e2707193b466fed", size = 5062966, upload-time = "2025-09-29T21:11:54.344Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/f888221934b5731d46cb9991c7a71f30cb1f97c0ef5fcf37f8da8fce6c8e/fonttools-4.60.1-cp312-cp312-win32.whl", hash = "sha256:b2cf105cee600d2de04ca3cfa1f74f1127f8455b71dbad02b9da6ec266e116d6", size = 2218750, upload-time = "2025-09-29T21:11:56.601Z" }, + { url = "https://files.pythonhosted.org/packages/88/8f/a55b5550cd33cd1028601df41acd057d4be20efa5c958f417b0c0613924d/fonttools-4.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:992775c9fbe2cf794786fa0ffca7f09f564ba3499b8fe9f2f80bd7197db60383", size = 2267026, upload-time = "2025-09-29T21:11:58.852Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7f/1c9a6cc6e7374ab59bbe91cb3b8a65ce0907c59f8f35368bb3bf941bd458/fonttools-4.60.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:122e1a8ada290423c493491d002f622b1992b1ab0b488c68e31c413390dc7eb2", size = 2816178, upload-time = "2025-09-29T21:13:02.915Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ac/acb4dcf1932566c0b57b5261f93a8b97cb3ebae08d07aff1288e7c9d7faa/fonttools-4.60.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a140761c4ff63d0cb9256ac752f230460ee225ccef4ad8f68affc723c88e2036", size = 2349175, upload-time = "2025-09-29T21:13:05.432Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ac/0b2f8d62c857adfe96551d56abbbc3d2eda2e4715a2e91c5eb7815bb38e1/fonttools-4.60.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eae96373e4b7c9e45d099d7a523444e3554360927225c1cdae221a58a45b856", size = 4840452, upload-time = "2025-09-29T21:13:08.679Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e1/b2e2ae805f263507e050f1ebfc2fb3654124161f3bea466a1b2a4485c705/fonttools-4.60.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:596ecaca36367027d525b3b426d8a8208169d09edcf8c7506aceb3a38bfb55c7", size = 4774040, upload-time = "2025-09-29T21:13:11.424Z" }, + { url = "https://files.pythonhosted.org/packages/9d/91/05949ba6f757014f343632b142543576eb100aeb261c036b86e7d1fc50f0/fonttools-4.60.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ee06fc57512144d8b0445194c2da9f190f61ad51e230f14836286470c99f854", size = 4823746, upload-time = "2025-09-29T21:13:14.08Z" }, + { url = "https://files.pythonhosted.org/packages/1b/cf/db9a1bd8d835dc17f09104f83b9d8c078d7bebbaaa9bd41378bf10f025de/fonttools-4.60.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b42d86938e8dda1cd9a1a87a6d82f1818eaf933348429653559a458d027446da", size = 4934001, upload-time = "2025-09-29T21:13:16.435Z" }, + { url = "https://files.pythonhosted.org/packages/87/4a/c58503524f7e6c73eb33b944f27535460e1050a58c99bd5b441242fcca86/fonttools-4.60.1-cp39-cp39-win32.whl", hash = "sha256:8b4eb332f9501cb1cd3d4d099374a1e1306783ff95489a1026bde9eb02ccc34a", size = 1499091, upload-time = "2025-09-29T21:13:19.072Z" }, + { url = "https://files.pythonhosted.org/packages/69/8f/3394936411aec5f26a1fdf8d7fdc1da7c276e0c627cd71b7b266b2431681/fonttools-4.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:7473a8ed9ed09aeaa191301244a5a9dbe46fe0bf54f9d6cd21d83044c3321217", size = 1543835, upload-time = "2025-09-29T21:13:21.606Z" }, + { url = "https://files.pythonhosted.org/packages/c7/93/0dd45cd283c32dea1545151d8c3637b4b8c53cdb3a625aeb2885b184d74d/fonttools-4.60.1-py3-none-any.whl", hash = "sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb", size = 1143175, upload-time = "2025-09-29T21:13:24.134Z" }, +] + +[[package]] +name = "fonttools" +version = "4.61.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/33/f9/0e84d593c0e12244150280a630999835a64f2852276161b62a0f98318de0/fonttools-4.61.0.tar.gz", hash = "sha256:ec520a1f0c7758d7a858a00f090c1745f6cde6a7c5e76fb70ea4044a15f712e7", size = 3561884, upload-time = "2025-11-28T17:05:49.491Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/f3/91bba2721fb173fc68e09d15b6ccf3ad4f83d127fbff579be7e5984888a6/fonttools-4.61.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dc25a4a9c1225653e4431a9413d0381b1c62317b0f543bdcec24e1991f612f33", size = 2850151, upload-time = "2025-11-28T17:04:14.214Z" }, + { url = "https://files.pythonhosted.org/packages/f5/8c/a1691dec01038ac7e7bb3ab83300dcc5087b11d8f48640928c02a873eb92/fonttools-4.61.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b493c32d2555e9944ec1b911ea649ff8f01a649ad9cba6c118d6798e932b3f0", size = 2389769, upload-time = "2025-11-28T17:04:16.443Z" }, + { url = "https://files.pythonhosted.org/packages/2d/dd/5bb369a44319d92ba25612511eb8ed2a6fa75239979e0388907525626902/fonttools-4.61.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ad751319dc532a79bdf628b8439af167181b4210a0cd28a8935ca615d9fdd727", size = 4893189, upload-time = "2025-11-28T17:04:18.398Z" }, + { url = "https://files.pythonhosted.org/packages/5e/02/51373fa8846bd22bb54e5efb30a824b417b058083f775a194a432f21a45f/fonttools-4.61.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2de14557d113faa5fb519f7f29c3abe4d69c17fe6a5a2595cc8cda7338029219", size = 4854415, upload-time = "2025-11-28T17:04:20.421Z" }, + { url = "https://files.pythonhosted.org/packages/8b/64/9cdbbb804577a7e6191448851c57e6a36eb02aa4bf6a9668b528c968e44e/fonttools-4.61.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:59587bbe455dbdf75354a9dbca1697a35a8903e01fab4248d6b98a17032cee52", size = 4870927, upload-time = "2025-11-28T17:04:22.625Z" }, + { url = "https://files.pythonhosted.org/packages/92/68/e40b22919dc96dc30a70b58fec609ab85112de950bdecfadf8dd478c5a88/fonttools-4.61.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:46cb3d9279f758ac0cf671dc3482da877104b65682679f01b246515db03dbb72", size = 4988674, upload-time = "2025-11-28T17:04:24.675Z" }, + { url = "https://files.pythonhosted.org/packages/9b/5c/e857349ce8aedb2451b9448282e86544b2b7f1c8b10ea0fe49b7cb369b72/fonttools-4.61.0-cp310-cp310-win32.whl", hash = "sha256:58b4f1b78dfbfe855bb8a6801b31b8cdcca0e2847ec769ad8e0b0b692832dd3b", size = 1497663, upload-time = "2025-11-28T17:04:26.598Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0c/62961d5fe6f764d6cbc387ef2c001f5f610808c7aded837409836c0b3e7c/fonttools-4.61.0-cp310-cp310-win_amd64.whl", hash = "sha256:68704a8bbe0b61976262b255e90cde593dc0fe3676542d9b4d846bad2a890a76", size = 1546143, upload-time = "2025-11-28T17:04:28.432Z" }, + { url = "https://files.pythonhosted.org/packages/fd/be/5aa89cdddf2863d8afbdc19eb8ec5d8d35d40eeeb8e6cf52c5ff1c2dbd33/fonttools-4.61.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a32a16951cbf113d38f1dd8551b277b6e06e0f6f776fece0f99f746d739e1be3", size = 2847553, upload-time = "2025-11-28T17:04:30.539Z" }, + { url = "https://files.pythonhosted.org/packages/0d/3e/6ff643b07cead1236a534f51291ae2981721cf419135af5b740c002a66dd/fonttools-4.61.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:328a9c227984bebaf69f3ac9062265f8f6acc7ddf2e4e344c63358579af0aa3d", size = 2388298, upload-time = "2025-11-28T17:04:32.161Z" }, + { url = "https://files.pythonhosted.org/packages/c3/15/fca8dfbe7b482e6f240b1aad0ed7c6e2e75e7a28efa3d3a03b570617b5e5/fonttools-4.61.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2f0bafc8a3b3749c69cc610e5aa3da832d39c2a37a68f03d18ec9a02ecaac04a", size = 5054133, upload-time = "2025-11-28T17:04:34.035Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a2/821c61c691b21fd09e07528a9a499cc2b075ac83ddb644aa16c9875a64bc/fonttools-4.61.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b5ca59b7417d149cf24e4c1933c9f44b2957424fc03536f132346d5242e0ebe5", size = 5031410, upload-time = "2025-11-28T17:04:36.141Z" }, + { url = "https://files.pythonhosted.org/packages/e8/f6/8b16339e93d03c732c8a23edefe3061b17a5f9107ddc47a3215ecd054cac/fonttools-4.61.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:df8cbce85cf482eb01f4551edca978c719f099c623277bda8332e5dbe7dba09d", size = 5030005, upload-time = "2025-11-28T17:04:38.314Z" }, + { url = "https://files.pythonhosted.org/packages/ac/eb/d4e150427bdaa147755239c931bbce829a88149ade5bfd8a327afe565567/fonttools-4.61.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7fb5b84f48a6a733ca3d7f41aa9551908ccabe8669ffe79586560abcc00a9cfd", size = 5154026, upload-time = "2025-11-28T17:04:40.34Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5f/3dd00ce0dba6759943c707b1830af8c0bcf6f8f1a9fe46cb82e7ac2aaa74/fonttools-4.61.0-cp311-cp311-win32.whl", hash = "sha256:787ef9dfd1ea9fe49573c272412ae5f479d78e671981819538143bec65863865", size = 2276035, upload-time = "2025-11-28T17:04:42.59Z" }, + { url = "https://files.pythonhosted.org/packages/4e/44/798c472f096ddf12955eddb98f4f7c906e7497695d04ce073ddf7161d134/fonttools-4.61.0-cp311-cp311-win_amd64.whl", hash = "sha256:14fafda386377b6131d9e448af42d0926bad47e038de0e5ba1d58c25d621f028", size = 2327290, upload-time = "2025-11-28T17:04:44.57Z" }, + { url = "https://files.pythonhosted.org/packages/00/5d/19e5939f773c7cb05480fe2e881d63870b63ee2b4bdb9a77d55b1d36c7b9/fonttools-4.61.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e24a1565c4e57111ec7f4915f8981ecbb61adf66a55f378fdc00e206059fcfef", size = 2846930, upload-time = "2025-11-28T17:04:46.639Z" }, + { url = "https://files.pythonhosted.org/packages/25/b2/0658faf66f705293bd7e739a4f038302d188d424926be9c59bdad945664b/fonttools-4.61.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2bfacb5351303cae9f072ccf3fc6ecb437a6f359c0606bae4b1ab6715201d87", size = 2383016, upload-time = "2025-11-28T17:04:48.525Z" }, + { url = "https://files.pythonhosted.org/packages/29/a3/1fa90b95b690f0d7541f48850adc40e9019374d896c1b8148d15012b2458/fonttools-4.61.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0bdcf2e29d65c26299cc3d502f4612365e8b90a939f46cd92d037b6cb7bb544a", size = 4949425, upload-time = "2025-11-28T17:04:50.482Z" }, + { url = "https://files.pythonhosted.org/packages/af/00/acf18c00f6c501bd6e05ee930f926186f8a8e268265407065688820f1c94/fonttools-4.61.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e6cd0d9051b8ddaf7385f99dd82ec2a058e2b46cf1f1961e68e1ff20fcbb61af", size = 4999632, upload-time = "2025-11-28T17:04:52.508Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e0/19a2b86e54109b1d2ee8743c96a1d297238ae03243897bc5345c0365f34d/fonttools-4.61.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e074bc07c31406f45c418e17c1722e83560f181d122c412fa9e815df0ff74810", size = 4939438, upload-time = "2025-11-28T17:04:54.437Z" }, + { url = "https://files.pythonhosted.org/packages/04/35/7b57a5f57d46286360355eff8d6b88c64ab6331107f37a273a71c803798d/fonttools-4.61.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a9b78da5d5faa17e63b2404b77feeae105c1b7e75f26020ab7a27b76e02039f", size = 5088960, upload-time = "2025-11-28T17:04:56.348Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0e/6c5023eb2e0fe5d1ababc7e221e44acd3ff668781489cc1937a6f83d620a/fonttools-4.61.0-cp312-cp312-win32.whl", hash = "sha256:9821ed77bb676736b88fa87a737c97b6af06e8109667e625a4f00158540ce044", size = 2264404, upload-time = "2025-11-28T17:04:58.149Z" }, + { url = "https://files.pythonhosted.org/packages/36/0b/63273128c7c5df19b1e4cd92e0a1e6ea5bb74a400c4905054c96ad60a675/fonttools-4.61.0-cp312-cp312-win_amd64.whl", hash = "sha256:0011d640afa61053bc6590f9a3394bd222de7cfde19346588beabac374e9d8ac", size = 2314427, upload-time = "2025-11-28T17:04:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/0c/14/634f7daea5ffe6a5f7a0322ba8e1a0e23c9257b80aa91458107896d1dfc7/fonttools-4.61.0-py3-none-any.whl", hash = "sha256:276f14c560e6f98d24ef7f5f44438e55ff5a67f78fa85236b218462c9f5d0635", size = 1144485, upload-time = "2025-11-28T17:05:47.573Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +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.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +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 = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload-time = "2025-08-27T12:15:46.575Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload-time = "2025-08-27T12:15:45.188Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing", version = "0.36.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "referencing", version = "0.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "rpds-py", version = "0.27.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing", version = "0.36.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "referencing", version = "0.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pywin32", marker = "python_full_version < '3.10' and platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "platformdirs", version = "4.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "traitlets", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/14/fc943dd65268a96347472b4fbe5dcc2f6f55034516f80576cd0dd3a8930f/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6", size = 122440, upload-time = "2024-09-04T09:03:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/1e/46/e68fed66236b69dd02fcdb506218c05ac0e39745d696d22709498896875d/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17", size = 65758, upload-time = "2024-09-04T09:03:46.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fa/65de49c85838681fc9cb05de2a68067a683717321e01ddafb5b8024286f0/kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9", size = 64311, upload-time = "2024-09-04T09:03:47.973Z" }, + { url = "https://files.pythonhosted.org/packages/42/9c/cc8d90f6ef550f65443bad5872ffa68f3dee36de4974768628bea7c14979/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9", size = 1637109, upload-time = "2024-09-04T09:03:49.281Z" }, + { url = "https://files.pythonhosted.org/packages/55/91/0a57ce324caf2ff5403edab71c508dd8f648094b18cfbb4c8cc0fde4a6ac/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c", size = 1617814, upload-time = "2024-09-04T09:03:51.444Z" }, + { url = "https://files.pythonhosted.org/packages/12/5d/c36140313f2510e20207708adf36ae4919416d697ee0236b0ddfb6fd1050/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599", size = 1400881, upload-time = "2024-09-04T09:03:53.357Z" }, + { url = "https://files.pythonhosted.org/packages/56/d0/786e524f9ed648324a466ca8df86298780ef2b29c25313d9a4f16992d3cf/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05", size = 1512972, upload-time = "2024-09-04T09:03:55.082Z" }, + { url = "https://files.pythonhosted.org/packages/67/5a/77851f2f201e6141d63c10a0708e996a1363efaf9e1609ad0441b343763b/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407", size = 1444787, upload-time = "2024-09-04T09:03:56.588Z" }, + { url = "https://files.pythonhosted.org/packages/06/5f/1f5eaab84355885e224a6fc8d73089e8713dc7e91c121f00b9a1c58a2195/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278", size = 2199212, upload-time = "2024-09-04T09:03:58.557Z" }, + { url = "https://files.pythonhosted.org/packages/b5/28/9152a3bfe976a0ae21d445415defc9d1cd8614b2910b7614b30b27a47270/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5", size = 2346399, upload-time = "2024-09-04T09:04:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/f6/453d1904c52ac3b400f4d5e240ac5fec25263716723e44be65f4d7149d13/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad", size = 2308688, upload-time = "2024-09-04T09:04:02.216Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9a/d4968499441b9ae187e81745e3277a8b4d7c60840a52dc9d535a7909fac3/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895", size = 2445493, upload-time = "2024-09-04T09:04:04.571Z" }, + { url = "https://files.pythonhosted.org/packages/07/c9/032267192e7828520dacb64dfdb1d74f292765f179e467c1cba97687f17d/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3", size = 2262191, upload-time = "2024-09-04T09:04:05.969Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ad/db0aedb638a58b2951da46ddaeecf204be8b4f5454df020d850c7fa8dca8/kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc", size = 46644, upload-time = "2024-09-04T09:04:07.408Z" }, + { url = "https://files.pythonhosted.org/packages/12/ca/d0f7b7ffbb0be1e7c2258b53554efec1fd652921f10d7d85045aff93ab61/kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c", size = 55877, upload-time = "2024-09-04T09:04:08.869Z" }, + { url = "https://files.pythonhosted.org/packages/97/6c/cfcc128672f47a3e3c0d918ecb67830600078b025bfc32d858f2e2d5c6a4/kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a", size = 48347, upload-time = "2024-09-04T09:04:10.106Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442, upload-time = "2024-09-04T09:04:11.432Z" }, + { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762, upload-time = "2024-09-04T09:04:12.468Z" }, + { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319, upload-time = "2024-09-04T09:04:13.635Z" }, + { url = "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", size = 1334260, upload-time = "2024-09-04T09:04:14.878Z" }, + { url = "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", size = 1426589, upload-time = "2024-09-04T09:04:16.514Z" }, + { url = "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", size = 1541080, upload-time = "2024-09-04T09:04:18.322Z" }, + { url = "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", size = 1470049, upload-time = "2024-09-04T09:04:20.266Z" }, + { url = "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", size = 1426376, upload-time = "2024-09-04T09:04:22.419Z" }, + { url = "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", size = 2222231, upload-time = "2024-09-04T09:04:24.526Z" }, + { url = "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", size = 2368634, upload-time = "2024-09-04T09:04:25.899Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", size = 2329024, upload-time = "2024-09-04T09:04:28.523Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", size = 2468484, upload-time = "2024-09-04T09:04:30.547Z" }, + { url = "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", size = 2284078, upload-time = "2024-09-04T09:04:33.218Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d4/71828f32b956612dc36efd7be1788980cb1e66bfb3706e6dec9acad9b4f9/kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d", size = 46645, upload-time = "2024-09-04T09:04:34.371Z" }, + { url = "https://files.pythonhosted.org/packages/a1/65/d43e9a20aabcf2e798ad1aff6c143ae3a42cf506754bcb6a7ed8259c8425/kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b", size = 56022, upload-time = "2024-09-04T09:04:35.786Z" }, + { url = "https://files.pythonhosted.org/packages/35/b3/9f75a2e06f1b4ca00b2b192bc2b739334127d27f1d0625627ff8479302ba/kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376", size = 48536, upload-time = "2024-09-04T09:04:37.525Z" }, + { url = "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", size = 121808, upload-time = "2024-09-04T09:04:38.637Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", size = 65531, upload-time = "2024-09-04T09:04:39.694Z" }, + { url = "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", size = 63894, upload-time = "2024-09-04T09:04:41.6Z" }, + { url = "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", size = 1369296, upload-time = "2024-09-04T09:04:42.886Z" }, + { url = "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", size = 1461450, upload-time = "2024-09-04T09:04:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", size = 1579168, upload-time = "2024-09-04T09:04:47.91Z" }, + { url = "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", size = 1507308, upload-time = "2024-09-04T09:04:49.465Z" }, + { url = "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", size = 1464186, upload-time = "2024-09-04T09:04:50.949Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", size = 2247877, upload-time = "2024-09-04T09:04:52.388Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", size = 2404204, upload-time = "2024-09-04T09:04:54.385Z" }, + { url = "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", size = 2352461, upload-time = "2024-09-04T09:04:56.307Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", size = 2501358, upload-time = "2024-09-04T09:04:57.922Z" }, + { url = "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", size = 2314119, upload-time = "2024-09-04T09:04:59.332Z" }, + { url = "https://files.pythonhosted.org/packages/36/08/3a5bb2c53c89660863a5aa1ee236912269f2af8762af04a2e11df851d7b2/kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b", size = 46367, upload-time = "2024-09-04T09:05:00.804Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/c05f0a6d825c643779fc3c70876bff1ac221f0e31e6f701f0e9578690d70/kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb", size = 55884, upload-time = "2024-09-04T09:05:01.924Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f9/3828d8f21b6de4279f0667fb50a9f5215e6fe57d5ec0d61905914f5b6099/kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a", size = 48528, upload-time = "2024-09-04T09:05:02.983Z" }, + { url = "https://files.pythonhosted.org/packages/11/88/37ea0ea64512997b13d69772db8dcdc3bfca5442cda3a5e4bb943652ee3e/kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd", size = 122449, upload-time = "2024-09-04T09:05:55.311Z" }, + { url = "https://files.pythonhosted.org/packages/4e/45/5a5c46078362cb3882dcacad687c503089263c017ca1241e0483857791eb/kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583", size = 65757, upload-time = "2024-09-04T09:05:56.906Z" }, + { url = "https://files.pythonhosted.org/packages/8a/be/a6ae58978772f685d48dd2e84460937761c53c4bbd84e42b0336473d9775/kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417", size = 64312, upload-time = "2024-09-04T09:05:58.384Z" }, + { url = "https://files.pythonhosted.org/packages/f4/04/18ef6f452d311e1e1eb180c9bf5589187fa1f042db877e6fe443ef10099c/kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904", size = 1626966, upload-time = "2024-09-04T09:05:59.855Z" }, + { url = "https://files.pythonhosted.org/packages/21/b1/40655f6c3fa11ce740e8a964fa8e4c0479c87d6a7944b95af799c7a55dfe/kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a", size = 1607044, upload-time = "2024-09-04T09:06:02.16Z" }, + { url = "https://files.pythonhosted.org/packages/fd/93/af67dbcfb9b3323bbd2c2db1385a7139d8f77630e4a37bb945b57188eb2d/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8", size = 1391879, upload-time = "2024-09-04T09:06:03.908Z" }, + { url = "https://files.pythonhosted.org/packages/40/6f/d60770ef98e77b365d96061d090c0cd9e23418121c55fff188fa4bdf0b54/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2", size = 1504751, upload-time = "2024-09-04T09:06:05.58Z" }, + { url = "https://files.pythonhosted.org/packages/fa/3a/5f38667d313e983c432f3fcd86932177519ed8790c724e07d77d1de0188a/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88", size = 1436990, upload-time = "2024-09-04T09:06:08.126Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/1520301a47326e6a6043b502647e42892be33b3f051e9791cc8bb43f1a32/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde", size = 2191122, upload-time = "2024-09-04T09:06:10.345Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c4/eb52da300c166239a2233f1f9c4a1b767dfab98fae27681bfb7ea4873cb6/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c", size = 2338126, upload-time = "2024-09-04T09:06:12.321Z" }, + { url = "https://files.pythonhosted.org/packages/1a/cb/42b92fd5eadd708dd9107c089e817945500685f3437ce1fd387efebc6d6e/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2", size = 2298313, upload-time = "2024-09-04T09:06:14.562Z" }, + { url = "https://files.pythonhosted.org/packages/4f/eb/be25aa791fe5fc75a8b1e0c965e00f942496bc04635c9aae8035f6b76dcd/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb", size = 2437784, upload-time = "2024-09-04T09:06:16.767Z" }, + { url = "https://files.pythonhosted.org/packages/c5/22/30a66be7f3368d76ff95689e1c2e28d382383952964ab15330a15d8bfd03/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327", size = 2253988, upload-time = "2024-09-04T09:06:18.705Z" }, + { url = "https://files.pythonhosted.org/packages/35/d3/5f2ecb94b5211c8a04f218a76133cc8d6d153b0f9cd0b45fad79907f0689/kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644", size = 46980, upload-time = "2024-09-04T09:06:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/ef/17/cd10d020578764ea91740204edc6b3236ed8106228a46f568d716b11feb2/kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4", size = 55847, upload-time = "2024-09-04T09:06:21.407Z" }, + { url = "https://files.pythonhosted.org/packages/91/84/32232502020bd78d1d12be7afde15811c64a95ed1f606c10456db4e4c3ac/kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f", size = 48494, upload-time = "2024-09-04T09:06:22.648Z" }, + { url = "https://files.pythonhosted.org/packages/ac/59/741b79775d67ab67ced9bb38552da688c0305c16e7ee24bba7a2be253fb7/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643", size = 59491, upload-time = "2024-09-04T09:06:24.188Z" }, + { url = "https://files.pythonhosted.org/packages/58/cc/fb239294c29a5656e99e3527f7369b174dd9cc7c3ef2dea7cb3c54a8737b/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706", size = 57648, upload-time = "2024-09-04T09:06:25.559Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2f009ac1f7aab9f81efb2d837301d255279d618d27b6015780115ac64bdd/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6", size = 84257, upload-time = "2024-09-04T09:06:27.038Z" }, + { url = "https://files.pythonhosted.org/packages/81/e1/c64f50987f85b68b1c52b464bb5bf73e71570c0f7782d626d1eb283ad620/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2", size = 80906, upload-time = "2024-09-04T09:06:28.48Z" }, + { url = "https://files.pythonhosted.org/packages/fd/71/1687c5c0a0be2cee39a5c9c389e546f9c6e215e46b691d00d9f646892083/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4", size = 79951, upload-time = "2024-09-04T09:06:29.966Z" }, + { url = "https://files.pythonhosted.org/packages/ea/8b/d7497df4a1cae9367adf21665dd1f896c2a7aeb8769ad77b662c5e2bcce7/kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a", size = 55715, upload-time = "2024-09-04T09:06:31.489Z" }, + { url = "https://files.pythonhosted.org/packages/d5/df/ce37d9b26f07ab90880923c94d12a6ff4d27447096b4c849bfc4339ccfdf/kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39", size = 58666, upload-time = "2024-09-04T09:06:43.756Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d3/e4b04f43bc629ac8e186b77b2b1a251cdfa5b7610fa189dc0db622672ce6/kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e", size = 57088, upload-time = "2024-09-04T09:06:45.406Z" }, + { url = "https://files.pythonhosted.org/packages/30/1c/752df58e2d339e670a535514d2db4fe8c842ce459776b8080fbe08ebb98e/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608", size = 84321, upload-time = "2024-09-04T09:06:47.557Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f8/fe6484e847bc6e238ec9f9828089fb2c0bb53f2f5f3a79351fde5b565e4f/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674", size = 80776, upload-time = "2024-09-04T09:06:49.235Z" }, + { url = "https://files.pythonhosted.org/packages/9b/57/d7163c0379f250ef763aba85330a19feefb5ce6cb541ade853aaba881524/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225", size = 79984, upload-time = "2024-09-04T09:06:51.336Z" }, + { url = "https://files.pythonhosted.org/packages/8c/95/4a103776c265d13b3d2cd24fb0494d4e04ea435a8ef97e1b2c026d43250b/kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0", size = 55811, upload-time = "2024-09-04T09:06:53.078Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/5d/8ce64e36d4e3aac5ca96996457dcf33e34e6051492399a3f1fec5657f30b/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b", size = 124159, upload-time = "2025-08-10T21:25:35.472Z" }, + { url = "https://files.pythonhosted.org/packages/96/1e/22f63ec454874378175a5f435d6ea1363dd33fb2af832c6643e4ccea0dc8/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f", size = 66578, upload-time = "2025-08-10T21:25:36.73Z" }, + { url = "https://files.pythonhosted.org/packages/41/4c/1925dcfff47a02d465121967b95151c82d11027d5ec5242771e580e731bd/kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf", size = 65312, upload-time = "2025-08-10T21:25:37.658Z" }, + { url = "https://files.pythonhosted.org/packages/d4/42/0f333164e6307a0687d1eb9ad256215aae2f4bd5d28f4653d6cd319a3ba3/kiwisolver-1.4.9-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9", size = 1628458, upload-time = "2025-08-10T21:25:39.067Z" }, + { url = "https://files.pythonhosted.org/packages/86/b6/2dccb977d651943995a90bfe3495c2ab2ba5cd77093d9f2318a20c9a6f59/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415", size = 1225640, upload-time = "2025-08-10T21:25:40.489Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/362ebd3eec46c850ccf2bfe3e30f2fc4c008750011f38a850f088c56a1c6/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b", size = 1244074, upload-time = "2025-08-10T21:25:42.221Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bb/f09a1e66dab8984773d13184a10a29fe67125337649d26bdef547024ed6b/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154", size = 1293036, upload-time = "2025-08-10T21:25:43.801Z" }, + { url = "https://files.pythonhosted.org/packages/ea/01/11ecf892f201cafda0f68fa59212edaea93e96c37884b747c181303fccd1/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48", size = 2175310, upload-time = "2025-08-10T21:25:45.045Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5f/bfe11d5b934f500cc004314819ea92427e6e5462706a498c1d4fc052e08f/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220", size = 2270943, upload-time = "2025-08-10T21:25:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/3d/de/259f786bf71f1e03e73d87e2db1a9a3bcab64d7b4fd780167123161630ad/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586", size = 2440488, upload-time = "2025-08-10T21:25:48.074Z" }, + { url = "https://files.pythonhosted.org/packages/1b/76/c989c278faf037c4d3421ec07a5c452cd3e09545d6dae7f87c15f54e4edf/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634", size = 2246787, upload-time = "2025-08-10T21:25:49.442Z" }, + { url = "https://files.pythonhosted.org/packages/a2/55/c2898d84ca440852e560ca9f2a0d28e6e931ac0849b896d77231929900e7/kiwisolver-1.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611", size = 73730, upload-time = "2025-08-10T21:25:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/e8/09/486d6ac523dd33b80b368247f238125d027964cfacb45c654841e88fb2ae/kiwisolver-1.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536", size = 65036, upload-time = "2025-08-10T21:25:52.063Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/c80b0d5a9d8a1a65f4f815f2afff9798b12c3b9f31f1d304dd233dd920e2/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16", size = 124167, upload-time = "2025-08-10T21:25:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/27fe1a68a39cf62472a300e2879ffc13c0538546c359b86f149cc19f6ac3/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089", size = 66579, upload-time = "2025-08-10T21:25:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/31/a2/a12a503ac1fd4943c50f9822678e8015a790a13b5490354c68afb8489814/kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543", size = 65309, upload-time = "2025-08-10T21:25:55.76Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/e533435c0be77c3f64040d68d7a657771194a63c279f55573188161e81ca/kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61", size = 1435596, upload-time = "2025-08-10T21:25:56.861Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/51b73c7347f9aabdc7215aa79e8b15299097dc2f8e67dee2b095faca9cb0/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1", size = 1246548, upload-time = "2025-08-10T21:25:58.246Z" }, + { url = "https://files.pythonhosted.org/packages/21/aa/72a1c5d1e430294f2d32adb9542719cfb441b5da368d09d268c7757af46c/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872", size = 1263618, upload-time = "2025-08-10T21:25:59.857Z" }, + { url = "https://files.pythonhosted.org/packages/a3/af/db1509a9e79dbf4c260ce0cfa3903ea8945f6240e9e59d1e4deb731b1a40/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26", size = 1317437, upload-time = "2025-08-10T21:26:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f2/3ea5ee5d52abacdd12013a94130436e19969fa183faa1e7c7fbc89e9a42f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028", size = 2195742, upload-time = "2025-08-10T21:26:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/1efdd3013c2d9a2566aa6a337e9923a00590c516add9a1e89a768a3eb2fc/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771", size = 2290810, upload-time = "2025-08-10T21:26:04.009Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e5/cfdc36109ae4e67361f9bc5b41323648cb24a01b9ade18784657e022e65f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a", size = 2461579, upload-time = "2025-08-10T21:26:05.317Z" }, + { url = "https://files.pythonhosted.org/packages/62/86/b589e5e86c7610842213994cdea5add00960076bef4ae290c5fa68589cac/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464", size = 2268071, upload-time = "2025-08-10T21:26:06.686Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/f8df8509fd1eee6c622febe54384a96cfaf4d43bf2ccec7a0cc17e4715c9/kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2", size = 73840, upload-time = "2025-08-10T21:26:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2d/16e0581daafd147bc11ac53f032a2b45eabac897f42a338d0a13c1e5c436/kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7", size = 65159, upload-time = "2025-08-10T21:26:09.048Z" }, + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/a2/63/fde392691690f55b38d5dd7b3710f5353bf7a8e52de93a22968801ab8978/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527", size = 60183, upload-time = "2025-08-10T21:27:37.669Z" }, + { url = "https://files.pythonhosted.org/packages/27/b1/6aad34edfdb7cced27f371866f211332bba215bfd918ad3322a58f480d8b/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771", size = 58675, upload-time = "2025-08-10T21:27:39.031Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1a/23d855a702bb35a76faed5ae2ba3de57d323f48b1f6b17ee2176c4849463/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e", size = 80277, upload-time = "2025-08-10T21:27:40.129Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5b/5239e3c2b8fb5afa1e8508f721bb77325f740ab6994d963e61b2b7abcc1e/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9", size = 77994, upload-time = "2025-08-10T21:27:41.181Z" }, + { url = "https://files.pythonhosted.org/packages/f9/1c/5d4d468fb16f8410e596ed0eac02d2c68752aa7dc92997fe9d60a7147665/kiwisolver-1.4.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb", size = 73744, upload-time = "2025-08-10T21:27:42.254Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0f/36d89194b5a32c054ce93e586d4049b6c2c22887b0eb229c61c68afd3078/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5", size = 60104, upload-time = "2025-08-10T21:27:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/52/ba/4ed75f59e4658fd21fe7dde1fee0ac397c678ec3befba3fe6482d987af87/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa", size = 58592, upload-time = "2025-08-10T21:27:44.314Z" }, + { url = "https://files.pythonhosted.org/packages/33/01/a8ea7c5ea32a9b45ceeaee051a04c8ed4320f5add3c51bfa20879b765b70/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2", size = 80281, upload-time = "2025-08-10T21:27:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/dbd2ecdce306f1d07a1aaf324817ee993aab7aee9db47ceac757deabafbe/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f", size = 78009, upload-time = "2025-08-10T21:27:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, +] + +[[package]] +name = "marimapper" +version = "3.4.1" +source = { editable = "." } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "open3d" }, + { name = "opencv-python" }, + { name = "pixelblaze-client" }, + { name = "pycolmap" }, + { name = "pyserial" }, + { name = "requests" }, + { name = "tqdm" }, +] + +[package.optional-dependencies] +develop = [ + { name = "black" }, + { name = "flake8" }, + { name = "flake8-bugbear", version = "24.12.12", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "flake8-bugbear", version = "25.11.29", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytest-cov" }, +] + +[package.metadata] +requires-dist = [ + { name = "black", marker = "extra == 'develop'" }, + { name = "flake8", marker = "extra == 'develop'" }, + { name = "flake8-bugbear", marker = "extra == 'develop'" }, + { name = "numpy" }, + { name = "open3d" }, + { name = "opencv-python" }, + { name = "pixelblaze-client" }, + { name = "pycolmap", specifier = "==3.11.1" }, + { name = "pyserial" }, + { name = "pytest", marker = "extra == 'develop'" }, + { name = "pytest-cov", marker = "extra == 'develop'" }, + { name = "requests" }, + { name = "tqdm" }, +] +provides-extras = ["develop"] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/56/23/0d8c13a44bde9154821586520840643467aee574d8ce79a17da539ee7fed/markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26", size = 11623, upload-time = "2025-09-27T18:37:29.296Z" }, + { url = "https://files.pythonhosted.org/packages/fd/23/07a2cb9a8045d5f3f0890a8c3bc0859d7a47bfd9a560b563899bec7b72ed/markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc", size = 12049, upload-time = "2025-09-27T18:37:30.234Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e4/6be85eb81503f8e11b61c0b6369b6e077dcf0a74adbd9ebf6b349937b4e9/markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c", size = 21923, upload-time = "2025-09-27T18:37:31.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bc/4dc914ead3fe6ddaef035341fee0fc956949bbd27335b611829292b89ee2/markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42", size = 20543, upload-time = "2025-09-27T18:37:32.168Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/5fe81fbcfba4aef4093d5f856e5c774ec2057946052d18d168219b7bd9f9/markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b", size = 20585, upload-time = "2025-09-27T18:37:33.166Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f6/e0e5a3d3ae9c4020f696cd055f940ef86b64fe88de26f3a0308b9d3d048c/markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758", size = 21387, upload-time = "2025-09-27T18:37:34.185Z" }, + { url = "https://files.pythonhosted.org/packages/c8/25/651753ef4dea08ea790f4fbb65146a9a44a014986996ca40102e237aa49a/markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2", size = 20133, upload-time = "2025-09-27T18:37:35.138Z" }, + { url = "https://files.pythonhosted.org/packages/dc/0a/c3cf2b4fef5f0426e8a6d7fce3cb966a17817c568ce59d76b92a233fdbec/markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d", size = 20588, upload-time = "2025-09-27T18:37:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/cd/1b/a7782984844bd519ad4ffdbebbba2671ec5d0ebbeac34736c15fb86399e8/markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7", size = 14566, upload-time = "2025-09-27T18:37:37.09Z" }, + { url = "https://files.pythonhosted.org/packages/18/1f/8d9c20e1c9440e215a44be5ab64359e207fcb4f675543f1cf9a2a7f648d0/markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e", size = 15053, upload-time = "2025-09-27T18:37:38.054Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d3/fe08482b5cd995033556d45041a4f4e76e7f0521112a9c9991d40d39825f/markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8", size = 13928, upload-time = "2025-09-27T18:37:39.037Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.9.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "contourpy", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "cycler", marker = "python_full_version < '3.10'" }, + { name = "fonttools", version = "4.60.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "importlib-resources", marker = "python_full_version < '3.10'" }, + { name = "kiwisolver", version = "1.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "packaging", marker = "python_full_version < '3.10'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pyparsing", marker = "python_full_version < '3.10'" }, + { name = "python-dateutil", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/17/1747b4154034befd0ed33b52538f5eb7752d05bb51c5e2a31470c3bc7d52/matplotlib-3.9.4.tar.gz", hash = "sha256:1e00e8be7393cbdc6fedfa8a6fba02cf3e83814b285db1c60b906a023ba41bc3", size = 36106529, upload-time = "2024-12-13T05:56:34.184Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/94/27d2e2c30d54b56c7b764acc1874a909e34d1965a427fc7092bb6a588b63/matplotlib-3.9.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c5fdd7abfb706dfa8d307af64a87f1a862879ec3cd8d0ec8637458f0885b9c50", size = 7885089, upload-time = "2024-12-13T05:54:24.224Z" }, + { url = "https://files.pythonhosted.org/packages/c6/25/828273307e40a68eb8e9df832b6b2aaad075864fdc1de4b1b81e40b09e48/matplotlib-3.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d89bc4e85e40a71d1477780366c27fb7c6494d293e1617788986f74e2a03d7ff", size = 7770600, upload-time = "2024-12-13T05:54:27.214Z" }, + { url = "https://files.pythonhosted.org/packages/f2/65/f841a422ec994da5123368d76b126acf4fc02ea7459b6e37c4891b555b83/matplotlib-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddf9f3c26aae695c5daafbf6b94e4c1a30d6cd617ba594bbbded3b33a1fcfa26", size = 8200138, upload-time = "2024-12-13T05:54:29.497Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/272aca07a38804d93b6050813de41ca7ab0e29ba7a9dd098e12037c919a9/matplotlib-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18ebcf248030173b59a868fda1fe42397253f6698995b55e81e1f57431d85e50", size = 8312711, upload-time = "2024-12-13T05:54:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/98/37/f13e23b233c526b7e27ad61be0a771894a079e0f7494a10d8d81557e0e9a/matplotlib-3.9.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974896ec43c672ec23f3f8c648981e8bc880ee163146e0312a9b8def2fac66f5", size = 9090622, upload-time = "2024-12-13T05:54:36.808Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8c/b1f5bd2bd70e60f93b1b54c4d5ba7a992312021d0ddddf572f9a1a6d9348/matplotlib-3.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:4598c394ae9711cec135639374e70871fa36b56afae17bdf032a345be552a88d", size = 7828211, upload-time = "2024-12-13T05:54:40.596Z" }, + { url = "https://files.pythonhosted.org/packages/74/4b/65be7959a8fa118a3929b49a842de5b78bb55475236fcf64f3e308ff74a0/matplotlib-3.9.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4dd29641d9fb8bc4492420c5480398dd40a09afd73aebe4eb9d0071a05fbe0c", size = 7894430, upload-time = "2024-12-13T05:54:44.049Z" }, + { url = "https://files.pythonhosted.org/packages/e9/18/80f70d91896e0a517b4a051c3fd540daa131630fd75e02e250365353b253/matplotlib-3.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30e5b22e8bcfb95442bf7d48b0d7f3bdf4a450cbf68986ea45fca3d11ae9d099", size = 7780045, upload-time = "2024-12-13T05:54:46.414Z" }, + { url = "https://files.pythonhosted.org/packages/a2/73/ccb381026e3238c5c25c3609ba4157b2d1a617ec98d65a8b4ee4e1e74d02/matplotlib-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb0030d1d447fd56dcc23b4c64a26e44e898f0416276cac1ebc25522e0ac249", size = 8209906, upload-time = "2024-12-13T05:54:49.459Z" }, + { url = "https://files.pythonhosted.org/packages/ab/33/1648da77b74741c89f5ea95cbf42a291b4b364f2660b316318811404ed97/matplotlib-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aca90ed222ac3565d2752b83dbb27627480d27662671e4d39da72e97f657a423", size = 8322873, upload-time = "2024-12-13T05:54:53.066Z" }, + { url = "https://files.pythonhosted.org/packages/57/d3/8447ba78bc6593c9044c372d1609f8ea10fb1e071e7a9e0747bea74fc16c/matplotlib-3.9.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a181b2aa2906c608fcae72f977a4a2d76e385578939891b91c2550c39ecf361e", size = 9099566, upload-time = "2024-12-13T05:54:55.522Z" }, + { url = "https://files.pythonhosted.org/packages/23/e1/4f0e237bf349c02ff9d1b6e7109f1a17f745263809b9714a8576dc17752b/matplotlib-3.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:1f6882828231eca17f501c4dcd98a05abb3f03d157fbc0769c6911fe08b6cfd3", size = 7838065, upload-time = "2024-12-13T05:54:58.337Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2b/c918bf6c19d6445d1cefe3d2e42cb740fb997e14ab19d4daeb6a7ab8a157/matplotlib-3.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:dfc48d67e6661378a21c2983200a654b72b5c5cdbd5d2cf6e5e1ece860f0cc70", size = 7891131, upload-time = "2024-12-13T05:55:02.837Z" }, + { url = "https://files.pythonhosted.org/packages/c1/e5/b4e8fc601ca302afeeabf45f30e706a445c7979a180e3a978b78b2b681a4/matplotlib-3.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47aef0fab8332d02d68e786eba8113ffd6f862182ea2999379dec9e237b7e483", size = 7776365, upload-time = "2024-12-13T05:55:05.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/06/b991886c506506476e5d83625c5970c656a491b9f80161458fed94597808/matplotlib-3.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fba1f52c6b7dc764097f52fd9ab627b90db452c9feb653a59945de16752e965f", size = 8200707, upload-time = "2024-12-13T05:55:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e2/556b627498cb27e61026f2d1ba86a78ad1b836fef0996bef5440e8bc9559/matplotlib-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:173ac3748acaac21afcc3fa1633924609ba1b87749006bc25051c52c422a5d00", size = 8313761, upload-time = "2024-12-13T05:55:12.95Z" }, + { url = "https://files.pythonhosted.org/packages/58/ff/165af33ec766ff818306ea88e91f9f60d2a6ed543be1eb122a98acbf3b0d/matplotlib-3.9.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320edea0cadc07007765e33f878b13b3738ffa9745c5f707705692df70ffe0e0", size = 9095284, upload-time = "2024-12-13T05:55:16.199Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8b/3d0c7a002db3b1ed702731c2a9a06d78d035f1f2fb0fb936a8e43cc1e9f4/matplotlib-3.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a4a4cfc82330b27042a7169533da7991e8789d180dd5b3daeaee57d75cd5a03b", size = 7841160, upload-time = "2024-12-13T05:55:19.991Z" }, + { url = "https://files.pythonhosted.org/packages/56/eb/501b465c9fef28f158e414ea3a417913dc2ac748564c7ed41535f23445b4/matplotlib-3.9.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3c3724d89a387ddf78ff88d2a30ca78ac2b4c89cf37f2db4bd453c34799e933c", size = 7885919, upload-time = "2024-12-13T05:55:59.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/36/236fbd868b6c91309a5206bd90c3f881f4f44b2d997cd1d6239ef652f878/matplotlib-3.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d5f0a8430ffe23d7e32cfd86445864ccad141797f7d25b7c41759a5b5d17cfd7", size = 7771486, upload-time = "2024-12-13T05:56:04.264Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/105caf2d54d5ed11d9f4335398f5103001a03515f2126c936a752ccf1461/matplotlib-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bb0141a21aef3b64b633dc4d16cbd5fc538b727e4958be82a0e1c92a234160e", size = 8201838, upload-time = "2024-12-13T05:56:06.792Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a7/bb01188fb4013d34d274caf44a2f8091255b0497438e8b6c0a7c1710c692/matplotlib-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57aa235109e9eed52e2c2949db17da185383fa71083c00c6c143a60e07e0888c", size = 8314492, upload-time = "2024-12-13T05:56:09.964Z" }, + { url = "https://files.pythonhosted.org/packages/33/19/02e1a37f7141fc605b193e927d0a9cdf9dc124a20b9e68793f4ffea19695/matplotlib-3.9.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b18c600061477ccfdd1e6fd050c33d8be82431700f3452b297a56d9ed7037abb", size = 9092500, upload-time = "2024-12-13T05:56:13.55Z" }, + { url = "https://files.pythonhosted.org/packages/57/68/c2feb4667adbf882ffa4b3e0ac9967f848980d9f8b5bebd86644aa67ce6a/matplotlib-3.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:ef5f2d1b67d2d2145ff75e10f8c008bfbf71d45137c4b648c87193e7dd053eac", size = 7822962, upload-time = "2024-12-13T05:56:16.358Z" }, + { url = "https://files.pythonhosted.org/packages/0c/22/2ef6a364cd3f565442b0b055e0599744f1e4314ec7326cdaaa48a4d864d7/matplotlib-3.9.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:44e0ed786d769d85bc787b0606a53f2d8d2d1d3c8a2608237365e9121c1a338c", size = 7877995, upload-time = "2024-12-13T05:56:18.805Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/2737456e566e9f4d94ae76b8aa0d953d9acb847714f9a7ad80184474f5be/matplotlib-3.9.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:09debb9ce941eb23ecdbe7eab972b1c3e0276dcf01688073faff7b0f61d6c6ca", size = 7769300, upload-time = "2024-12-13T05:56:21.315Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1f/e709c6ec7b5321e6568769baa288c7178e60a93a9da9e682b39450da0e29/matplotlib-3.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc53cf157a657bfd03afab14774d54ba73aa84d42cfe2480c91bd94873952db", size = 8313423, upload-time = "2024-12-13T05:56:26.719Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b6/5a1f868782cd13f053a679984e222007ecff654a9bfbac6b27a65f4eeb05/matplotlib-3.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ad45da51be7ad02387801fd154ef74d942f49fe3fcd26a64c94842ba7ec0d865", size = 7854624, upload-time = "2024-12-13T05:56:29.359Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "cycler", marker = "python_full_version >= '3.10'" }, + { name = "fonttools", version = "4.61.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "kiwisolver", version = "1.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pyparsing", marker = "python_full_version >= '3.10'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/e2/d2d5295be2f44c678ebaf3544ba32d20c1f9ef08c49fe47f496180e1db15/matplotlib-3.10.7.tar.gz", hash = "sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7", size = 34804865, upload-time = "2025-10-09T00:28:00.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/87/3932d5778ab4c025db22710b61f49ccaed3956c5cf46ffb2ffa7492b06d9/matplotlib-3.10.7-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7ac81eee3b7c266dd92cee1cd658407b16c57eed08c7421fa354ed68234de380", size = 8247141, upload-time = "2025-10-09T00:26:06.023Z" }, + { url = "https://files.pythonhosted.org/packages/45/a8/bfed45339160102bce21a44e38a358a1134a5f84c26166de03fb4a53208f/matplotlib-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:667ecd5d8d37813a845053d8f5bf110b534c3c9f30e69ebd25d4701385935a6d", size = 8107995, upload-time = "2025-10-09T00:26:08.669Z" }, + { url = "https://files.pythonhosted.org/packages/e2/3c/5692a2d9a5ba848fda3f48d2b607037df96460b941a59ef236404b39776b/matplotlib-3.10.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc1c51b846aca49a5a8b44fbba6a92d583a35c64590ad9e1e950dc88940a4297", size = 8680503, upload-time = "2025-10-09T00:26:10.607Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/86ace53c48b05d0e6e9c127b2ace097434901f3e7b93f050791c8243201a/matplotlib-3.10.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a11c2e9e72e7de09b7b72e62f3df23317c888299c875e2b778abf1eda8c0a42", size = 9514982, upload-time = "2025-10-09T00:26:12.594Z" }, + { url = "https://files.pythonhosted.org/packages/a6/81/ead71e2824da8f72640a64166d10e62300df4ae4db01a0bac56c5b39fa51/matplotlib-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f19410b486fdd139885ace124e57f938c1e6a3210ea13dd29cab58f5d4bc12c7", size = 9566429, upload-time = "2025-10-09T00:26:14.758Z" }, + { url = "https://files.pythonhosted.org/packages/65/7d/954b3067120456f472cce8fdcacaf4a5fcd522478db0c37bb243c7cb59dd/matplotlib-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:b498e9e4022f93de2d5a37615200ca01297ceebbb56fe4c833f46862a490f9e3", size = 8108174, upload-time = "2025-10-09T00:26:17.015Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bc/0fb489005669127ec13f51be0c6adc074d7cf191075dab1da9fe3b7a3cfc/matplotlib-3.10.7-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:53b492410a6cd66c7a471de6c924f6ede976e963c0f3097a3b7abfadddc67d0a", size = 8257507, upload-time = "2025-10-09T00:26:19.073Z" }, + { url = "https://files.pythonhosted.org/packages/e2/6a/d42588ad895279ff6708924645b5d2ed54a7fb2dc045c8a804e955aeace1/matplotlib-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9749313deb729f08207718d29c86246beb2ea3fdba753595b55901dee5d2fd6", size = 8119565, upload-time = "2025-10-09T00:26:21.023Z" }, + { url = "https://files.pythonhosted.org/packages/10/b7/4aa196155b4d846bd749cf82aa5a4c300cf55a8b5e0dfa5b722a63c0f8a0/matplotlib-3.10.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2222c7ba2cbde7fe63032769f6eb7e83ab3227f47d997a8453377709b7fe3a5a", size = 8692668, upload-time = "2025-10-09T00:26:22.967Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e7/664d2b97016f46683a02d854d730cfcf54ff92c1dafa424beebef50f831d/matplotlib-3.10.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e91f61a064c92c307c5a9dc8c05dc9f8a68f0a3be199d9a002a0622e13f874a1", size = 9521051, upload-time = "2025-10-09T00:26:25.041Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a3/37aef1404efa615f49b5758a5e0261c16dd88f389bc1861e722620e4a754/matplotlib-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f1851eab59ca082c95df5a500106bad73672645625e04538b3ad0f69471ffcc", size = 9576878, upload-time = "2025-10-09T00:26:27.478Z" }, + { url = "https://files.pythonhosted.org/packages/33/cd/b145f9797126f3f809d177ca378de57c45413c5099c5990de2658760594a/matplotlib-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:6516ce375109c60ceec579e699524e9d504cd7578506f01150f7a6bc174a775e", size = 8115142, upload-time = "2025-10-09T00:26:29.774Z" }, + { url = "https://files.pythonhosted.org/packages/2e/39/63bca9d2b78455ed497fcf51a9c71df200a11048f48249038f06447fa947/matplotlib-3.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:b172db79759f5f9bc13ef1c3ef8b9ee7b37b0247f987fbbbdaa15e4f87fd46a9", size = 7992439, upload-time = "2025-10-09T00:26:40.32Z" }, + { url = "https://files.pythonhosted.org/packages/be/b3/09eb0f7796932826ec20c25b517d568627754f6c6462fca19e12c02f2e12/matplotlib-3.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a0edb7209e21840e8361e91ea84ea676658aa93edd5f8762793dec77a4a6748", size = 8272389, upload-time = "2025-10-09T00:26:42.474Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/1ae80ddafb8652fd8046cb5c8460ecc8d4afccb89e2c6d6bec61e04e1eaf/matplotlib-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c380371d3c23e0eadf8ebff114445b9f970aff2010198d498d4ab4c3b41eea4f", size = 8128247, upload-time = "2025-10-09T00:26:44.77Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/95ae2e242d4a5c98bd6e90e36e128d71cf1c7e39b0874feaed3ef782e789/matplotlib-3.10.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d5f256d49fea31f40f166a5e3131235a5d2f4b7f44520b1cf0baf1ce568ccff0", size = 8696996, upload-time = "2025-10-09T00:26:46.792Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3d/5b559efc800bd05cb2033aa85f7e13af51958136a48327f7c261801ff90a/matplotlib-3.10.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11ae579ac83cdf3fb72573bb89f70e0534de05266728740d478f0f818983c695", size = 9530153, upload-time = "2025-10-09T00:26:49.07Z" }, + { url = "https://files.pythonhosted.org/packages/88/57/eab4a719fd110312d3c220595d63a3c85ec2a39723f0f4e7fa7e6e3f74ba/matplotlib-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c14b6acd16cddc3569a2d515cfdd81c7a68ac5639b76548cfc1a9e48b20eb65", size = 9593093, upload-time = "2025-10-09T00:26:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/31/3c/80816f027b3a4a28cd2a0a6ef7f89a2db22310e945cd886ec25bfb399221/matplotlib-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:0d8c32b7ea6fb80b1aeff5a2ceb3fb9778e2759e899d9beff75584714afcc5ee", size = 8122771, upload-time = "2025-10-09T00:26:53.296Z" }, + { url = "https://files.pythonhosted.org/packages/de/77/ef1fc78bfe99999b2675435cc52120887191c566b25017d78beaabef7f2d/matplotlib-3.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:5f3f6d315dcc176ba7ca6e74c7768fb7e4cf566c49cb143f6bc257b62e634ed8", size = 7992812, upload-time = "2025-10-09T00:26:54.882Z" }, + { url = "https://files.pythonhosted.org/packages/1e/6c/a9bcf03e9afb2a873e0a5855f79bce476d1023f26f8212969f2b7504756c/matplotlib-3.10.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5c09cf8f2793f81368f49f118b6f9f937456362bee282eac575cca7f84cda537", size = 8241204, upload-time = "2025-10-09T00:27:48.806Z" }, + { url = "https://files.pythonhosted.org/packages/5b/fd/0e6f5aa762ed689d9fa8750b08f1932628ffa7ed30e76423c399d19407d2/matplotlib-3.10.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:de66744b2bb88d5cd27e80dfc2ec9f0517d0a46d204ff98fe9e5f2864eb67657", size = 8104607, upload-time = "2025-10-09T00:27:50.876Z" }, + { url = "https://files.pythonhosted.org/packages/b9/a9/21c9439d698fac5f0de8fc68b2405b738ed1f00e1279c76f2d9aa5521ead/matplotlib-3.10.7-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:53cc80662dd197ece414dd5b66e07370201515a3eaf52e7c518c68c16814773b", size = 8682257, upload-time = "2025-10-09T00:27:52.597Z" }, + { url = "https://files.pythonhosted.org/packages/58/8f/76d5dc21ac64a49e5498d7f0472c0781dae442dd266a67458baec38288ec/matplotlib-3.10.7-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:15112bcbaef211bd663fa935ec33313b948e214454d949b723998a43357b17b0", size = 8252283, upload-time = "2025-10-09T00:27:54.739Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/9c5d4c2317feb31d819e38c9f947c942f42ebd4eb935fc6fd3518a11eaa7/matplotlib-3.10.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d2a959c640cdeecdd2ec3136e8ea0441da59bcaf58d67e9c590740addba2cb68", size = 8116733, upload-time = "2025-10-09T00:27:56.406Z" }, + { url = "https://files.pythonhosted.org/packages/9a/cc/3fe688ff1355010937713164caacf9ed443675ac48a997bab6ed23b3f7c0/matplotlib-3.10.7-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3886e47f64611046bc1db523a09dd0a0a6bed6081e6f90e13806dd1d1d1b5e91", size = 8693919, upload-time = "2025-10-09T00:27:58.41Z" }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "mini-racer" +version = "0.12.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/2d/e051f58e17117b1b8b11a7d17622c1528fa9002c553943c6b677c1b412da/mini_racer-0.12.4.tar.gz", hash = "sha256:84c67553ce9f3736d4c617d8a3f882949d37a46cfb47fe11dab33dd6704e62a4", size = 447529, upload-time = "2024-06-20T14:44:39.992Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/fe/1452b6c74cae9e8cd7b6a16d8b1ef08bba4dd0ed373a95f3b401c2e712ea/mini_racer-0.12.4-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:bce8a3cee946575a352f5e65335903bc148da42c036d0c738ac67e931600e455", size = 15701219, upload-time = "2024-06-20T14:44:21.96Z" }, + { url = "https://files.pythonhosted.org/packages/99/ae/c22478eff26e6136341e6b40d34f8d285f910ca4d2e2a0ca4703ef87be79/mini_racer-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:56c832e6ac2db6a304d1e8e80030615297aafbc6940f64f3479af4ba16abccd5", size = 14566436, upload-time = "2024-06-20T14:44:24.496Z" }, + { url = "https://files.pythonhosted.org/packages/44/89/f062aa116b14fcace91f0af86a37605f0ba7c07a01c8101b5ea104d489b1/mini_racer-0.12.4-py3-none-manylinux_2_31_aarch64.whl", hash = "sha256:b82c4bd2976e280ed0a72c9c2de01b13f18ccfbe6f4892cbc22aae04410fac3c", size = 14931664, upload-time = "2024-06-20T14:44:27.385Z" }, + { url = "https://files.pythonhosted.org/packages/9c/a1/09122c88a0dd0a2141b0ea068d70f5d31acd0015d6f3157b8efd3ff7e026/mini_racer-0.12.4-py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:69a1c44d02a9069b881684cef15a2d747fe0743df29eadc881fda7002aae5fd2", size = 14955238, upload-time = "2024-06-20T14:44:30.217Z" }, + { url = "https://files.pythonhosted.org/packages/6c/3b/826e41f92631560e5c6ca2aa4ef9005bdccf9290c1e7ddebe05e0a3b8c7c/mini_racer-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:499dbc267dfe60e954bc1b6c3787f7b10fc41fe1975853c9a6ddb55eb83dc4d9", size = 15211136, upload-time = "2024-06-20T14:44:33.509Z" }, + { url = "https://files.pythonhosted.org/packages/e5/37/15b30316630d1f63b025f058dc92efa75931a37315c34ca07f80be2cc405/mini_racer-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:231f949f5787d18351939f1fe59e5a6fe134bccb5ecf8f836b9beab69d91c8d9", size = 15128684, upload-time = "2024-06-20T14:44:35.644Z" }, + { url = "https://files.pythonhosted.org/packages/5c/0e/a9943f90b4a8a6d3849b81a00a00d2db128d876365385af382a0e2caf191/mini_racer-0.12.4-py3-none-win_amd64.whl", hash = "sha256:9446e3bd6a4eb9fbedf1861326f7476080995a31c9b69308acef17e5b7ecaa1b", size = 13674040, upload-time = "2024-06-20T14:44:37.851Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "narwhals" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/89/ea/f82ef99ced4d03c33bb314c9b84a08a0a86c448aaa11ffd6256b99538aa5/narwhals-2.13.0.tar.gz", hash = "sha256:ee94c97f4cf7cfeebbeca8d274784df8b3d7fd3f955ce418af998d405576fdd9", size = 594555, upload-time = "2025-12-01T13:54:05.329Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/0d/1861d1599571974b15b025e12b142d8e6b42ad66c8a07a89cb0fc21f1e03/narwhals-2.13.0-py3-none-any.whl", hash = "sha256:9b795523c179ca78204e3be53726da374168f906e38de2ff174c2363baaaf481", size = 426407, upload-time = "2025-12-01T13:54:03.861Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core", version = "5.8.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "jupyter-core", version = "5.9.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "numpy" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015, upload-time = "2024-08-26T20:19:40.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/91/3495b3237510f79f5d81f2508f9f13fea78ebfdf07538fc7444badda173d/numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece", size = 21165245, upload-time = "2024-08-26T20:04:14.625Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/26178c7d437a87082d11019292dce6d3fe6f0e9026b7b2309cbf3e489b1d/numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04", size = 13738540, upload-time = "2024-08-26T20:04:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/ec/31/cc46e13bf07644efc7a4bf68df2df5fb2a1a88d0cd0da9ddc84dc0033e51/numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66", size = 5300623, upload-time = "2024-08-26T20:04:46.491Z" }, + { url = "https://files.pythonhosted.org/packages/6e/16/7bfcebf27bb4f9d7ec67332ffebee4d1bf085c84246552d52dbb548600e7/numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b", size = 6901774, upload-time = "2024-08-26T20:04:58.173Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a3/561c531c0e8bf082c5bef509d00d56f82e0ea7e1e3e3a7fc8fa78742a6e5/numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd", size = 13907081, upload-time = "2024-08-26T20:05:19.098Z" }, + { url = "https://files.pythonhosted.org/packages/fa/66/f7177ab331876200ac7563a580140643d1179c8b4b6a6b0fc9838de2a9b8/numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318", size = 19523451, upload-time = "2024-08-26T20:05:47.479Z" }, + { url = "https://files.pythonhosted.org/packages/25/7f/0b209498009ad6453e4efc2c65bcdf0ae08a182b2b7877d7ab38a92dc542/numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8", size = 19927572, upload-time = "2024-08-26T20:06:17.137Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/2619393b1e1b565cd2d4c4403bdd979621e2c4dea1f8532754b2598ed63b/numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326", size = 14400722, upload-time = "2024-08-26T20:06:39.16Z" }, + { url = "https://files.pythonhosted.org/packages/22/ad/77e921b9f256d5da36424ffb711ae79ca3f451ff8489eeca544d0701d74a/numpy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97", size = 6472170, upload-time = "2024-08-26T20:06:50.361Z" }, + { url = "https://files.pythonhosted.org/packages/10/05/3442317535028bc29cf0c0dd4c191a4481e8376e9f0db6bcf29703cadae6/numpy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131", size = 15905558, upload-time = "2024-08-26T20:07:13.881Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cf/034500fb83041aa0286e0fb16e7c76e5c8b67c0711bb6e9e9737a717d5fe/numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448", size = 21169137, upload-time = "2024-08-26T20:07:45.345Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d9/32de45561811a4b87fbdee23b5797394e3d1504b4a7cf40c10199848893e/numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195", size = 13703552, upload-time = "2024-08-26T20:08:06.666Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ca/2f384720020c7b244d22508cb7ab23d95f179fcfff33c31a6eeba8d6c512/numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57", size = 5298957, upload-time = "2024-08-26T20:08:15.83Z" }, + { url = "https://files.pythonhosted.org/packages/0e/78/a3e4f9fb6aa4e6fdca0c5428e8ba039408514388cf62d89651aade838269/numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a", size = 6905573, upload-time = "2024-08-26T20:08:27.185Z" }, + { url = "https://files.pythonhosted.org/packages/a0/72/cfc3a1beb2caf4efc9d0b38a15fe34025230da27e1c08cc2eb9bfb1c7231/numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669", size = 13914330, upload-time = "2024-08-26T20:08:48.058Z" }, + { url = "https://files.pythonhosted.org/packages/ba/a8/c17acf65a931ce551fee11b72e8de63bf7e8a6f0e21add4c937c83563538/numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951", size = 19534895, upload-time = "2024-08-26T20:09:16.536Z" }, + { url = "https://files.pythonhosted.org/packages/ba/86/8767f3d54f6ae0165749f84648da9dcc8cd78ab65d415494962c86fac80f/numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9", size = 19937253, upload-time = "2024-08-26T20:09:46.263Z" }, + { url = "https://files.pythonhosted.org/packages/df/87/f76450e6e1c14e5bb1eae6836478b1028e096fd02e85c1c37674606ab752/numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15", size = 14414074, upload-time = "2024-08-26T20:10:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0f0f328e1e59f73754f06e1adfb909de43726d4f24c6a3f8805f34f2b0fa/numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4", size = 6470640, upload-time = "2024-08-26T20:10:19.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/57/3a3f14d3a759dcf9bf6e9eda905794726b758819df4663f217d658a58695/numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc", size = 15910230, upload-time = "2024-08-26T20:10:43.413Z" }, + { url = "https://files.pythonhosted.org/packages/45/40/2e117be60ec50d98fa08c2f8c48e09b3edea93cfcabd5a9ff6925d54b1c2/numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b", size = 20895803, upload-time = "2024-08-26T20:11:13.916Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/1b8b8dee833f53cef3e0a3f69b2374467789e0bb7399689582314df02651/numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e", size = 13471835, upload-time = "2024-08-26T20:11:34.779Z" }, + { url = "https://files.pythonhosted.org/packages/7f/19/e2793bde475f1edaea6945be141aef6c8b4c669b90c90a300a8954d08f0a/numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c", size = 5038499, upload-time = "2024-08-26T20:11:43.902Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ff/ddf6dac2ff0dd50a7327bcdba45cb0264d0e96bb44d33324853f781a8f3c/numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c", size = 6633497, upload-time = "2024-08-26T20:11:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/72/21/67f36eac8e2d2cd652a2e69595a54128297cdcb1ff3931cfc87838874bd4/numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692", size = 13621158, upload-time = "2024-08-26T20:12:14.95Z" }, + { url = "https://files.pythonhosted.org/packages/39/68/e9f1126d757653496dbc096cb429014347a36b228f5a991dae2c6b6cfd40/numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a", size = 19236173, upload-time = "2024-08-26T20:12:44.049Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e9/1f5333281e4ebf483ba1c888b1d61ba7e78d7e910fdd8e6499667041cc35/numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c", size = 19634174, upload-time = "2024-08-26T20:13:13.634Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/a469674070c8d8408384e3012e064299f7a2de540738a8e414dcfd639996/numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded", size = 14099701, upload-time = "2024-08-26T20:13:34.851Z" }, + { url = "https://files.pythonhosted.org/packages/d0/3d/08ea9f239d0e0e939b6ca52ad403c84a2bce1bde301a8eb4888c1c1543f1/numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5", size = 6174313, upload-time = "2024-08-26T20:13:45.653Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b5/4ac39baebf1fdb2e72585c8352c56d063b6126be9fc95bd2bb5ef5770c20/numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a", size = 15606179, upload-time = "2024-08-26T20:14:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/43/c1/41c8f6df3162b0c6ffd4437d729115704bd43363de0090c7f913cfbc2d89/numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c", size = 21169942, upload-time = "2024-08-26T20:14:40.108Z" }, + { url = "https://files.pythonhosted.org/packages/39/bc/fd298f308dcd232b56a4031fd6ddf11c43f9917fbc937e53762f7b5a3bb1/numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd", size = 13711512, upload-time = "2024-08-26T20:15:00.985Z" }, + { url = "https://files.pythonhosted.org/packages/96/ff/06d1aa3eeb1c614eda245c1ba4fb88c483bee6520d361641331872ac4b82/numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b", size = 5306976, upload-time = "2024-08-26T20:15:10.876Z" }, + { url = "https://files.pythonhosted.org/packages/2d/98/121996dcfb10a6087a05e54453e28e58694a7db62c5a5a29cee14c6e047b/numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729", size = 6906494, upload-time = "2024-08-26T20:15:22.055Z" }, + { url = "https://files.pythonhosted.org/packages/15/31/9dffc70da6b9bbf7968f6551967fc21156207366272c2a40b4ed6008dc9b/numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1", size = 13912596, upload-time = "2024-08-26T20:15:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/b9/14/78635daab4b07c0930c919d451b8bf8c164774e6a3413aed04a6d95758ce/numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd", size = 19526099, upload-time = "2024-08-26T20:16:11.048Z" }, + { url = "https://files.pythonhosted.org/packages/26/4c/0eeca4614003077f68bfe7aac8b7496f04221865b3a5e7cb230c9d055afd/numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d", size = 19932823, upload-time = "2024-08-26T20:16:40.171Z" }, + { url = "https://files.pythonhosted.org/packages/f1/46/ea25b98b13dccaebddf1a803f8c748680d972e00507cd9bc6dcdb5aa2ac1/numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d", size = 14404424, upload-time = "2024-08-26T20:17:02.604Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a6/177dd88d95ecf07e722d21008b1b40e681a929eb9e329684d449c36586b2/numpy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa", size = 6476809, upload-time = "2024-08-26T20:17:13.553Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/7fc9f4e7ae5b507c1a3a21f0f15ed03e794c1242ea8a242ac158beb56034/numpy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73", size = 15911314, upload-time = "2024-08-26T20:17:36.72Z" }, + { url = "https://files.pythonhosted.org/packages/8f/3b/df5a870ac6a3be3a86856ce195ef42eec7ae50d2a202be1f5a4b3b340e14/numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8", size = 21025288, upload-time = "2024-08-26T20:18:07.732Z" }, + { url = "https://files.pythonhosted.org/packages/2c/97/51af92f18d6f6f2d9ad8b482a99fb74e142d71372da5d834b3a2747a446e/numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4", size = 6762793, upload-time = "2024-08-26T20:18:19.125Z" }, + { url = "https://files.pythonhosted.org/packages/12/46/de1fbd0c1b5ccaa7f9a005b66761533e2f6a3e560096682683a223631fe9/numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c", size = 19334885, upload-time = "2024-08-26T20:18:47.237Z" }, + { url = "https://files.pythonhosted.org/packages/cc/dc/d330a6faefd92b446ec0f0dfea4c3207bb1fef3c4771d19cf4543efd2c78/numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385", size = 15828784, upload-time = "2024-08-26T20:19:11.19Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/77/84dd1d2e34d7e2792a236ba180b5e8fcc1e3e414e761ce0253f63d7f572e/numpy-2.3.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10", size = 17034641, upload-time = "2025-11-16T22:49:19.336Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ea/25e26fa5837106cde46ae7d0b667e20f69cbbc0efd64cba8221411ab26ae/numpy-2.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218", size = 12528324, upload-time = "2025-11-16T22:49:22.582Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1a/e85f0eea4cf03d6a0228f5c0256b53f2df4bc794706e7df019fc622e47f1/numpy-2.3.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d", size = 5356872, upload-time = "2025-11-16T22:49:25.408Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bb/35ef04afd567f4c989c2060cde39211e4ac5357155c1833bcd1166055c61/numpy-2.3.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5", size = 6893148, upload-time = "2025-11-16T22:49:27.549Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2b/05bbeb06e2dff5eab512dfc678b1cc5ee94d8ac5956a0885c64b6b26252b/numpy-2.3.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7", size = 14557282, upload-time = "2025-11-16T22:49:30.964Z" }, + { url = "https://files.pythonhosted.org/packages/65/fb/2b23769462b34398d9326081fad5655198fcf18966fcb1f1e49db44fbf31/numpy-2.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4", size = 16897903, upload-time = "2025-11-16T22:49:34.191Z" }, + { url = "https://files.pythonhosted.org/packages/ac/14/085f4cf05fc3f1e8aa95e85404e984ffca9b2275a5dc2b1aae18a67538b8/numpy-2.3.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e", size = 16341672, upload-time = "2025-11-16T22:49:37.2Z" }, + { url = "https://files.pythonhosted.org/packages/6f/3b/1f73994904142b2aa290449b3bb99772477b5fd94d787093e4f24f5af763/numpy-2.3.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748", size = 18838896, upload-time = "2025-11-16T22:49:39.727Z" }, + { url = "https://files.pythonhosted.org/packages/cd/b9/cf6649b2124f288309ffc353070792caf42ad69047dcc60da85ee85fea58/numpy-2.3.5-cp311-cp311-win32.whl", hash = "sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c", size = 6563608, upload-time = "2025-11-16T22:49:42.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/44/9fe81ae1dcc29c531843852e2874080dc441338574ccc4306b39e2ff6e59/numpy-2.3.5-cp311-cp311-win_amd64.whl", hash = "sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c", size = 13078442, upload-time = "2025-11-16T22:49:43.99Z" }, + { url = "https://files.pythonhosted.org/packages/6d/a7/f99a41553d2da82a20a2f22e93c94f928e4490bb447c9ff3c4ff230581d3/numpy-2.3.5-cp311-cp311-win_arm64.whl", hash = "sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa", size = 10458555, upload-time = "2025-11-16T22:49:47.092Z" }, + { url = "https://files.pythonhosted.org/packages/44/37/e669fe6cbb2b96c62f6bbedc6a81c0f3b7362f6a59230b23caa673a85721/numpy-2.3.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", size = 16733873, upload-time = "2025-11-16T22:49:49.84Z" }, + { url = "https://files.pythonhosted.org/packages/c5/65/df0db6c097892c9380851ab9e44b52d4f7ba576b833996e0080181c0c439/numpy-2.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", size = 12259838, upload-time = "2025-11-16T22:49:52.863Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e1/1ee06e70eb2136797abe847d386e7c0e830b67ad1d43f364dd04fa50d338/numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", size = 5088378, upload-time = "2025-11-16T22:49:55.055Z" }, + { url = "https://files.pythonhosted.org/packages/6d/9c/1ca85fb86708724275103b81ec4cf1ac1d08f465368acfc8da7ab545bdae/numpy-2.3.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", size = 6628559, upload-time = "2025-11-16T22:49:57.371Z" }, + { url = "https://files.pythonhosted.org/packages/74/78/fcd41e5a0ce4f3f7b003da85825acddae6d7ecb60cf25194741b036ca7d6/numpy-2.3.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", size = 14250702, upload-time = "2025-11-16T22:49:59.632Z" }, + { url = "https://files.pythonhosted.org/packages/b6/23/2a1b231b8ff672b4c450dac27164a8b2ca7d9b7144f9c02d2396518352eb/numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", size = 16606086, upload-time = "2025-11-16T22:50:02.127Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c5/5ad26fbfbe2012e190cc7d5003e4d874b88bb18861d0829edc140a713021/numpy-2.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", size = 16025985, upload-time = "2025-11-16T22:50:04.536Z" }, + { url = "https://files.pythonhosted.org/packages/d2/fa/dd48e225c46c819288148d9d060b047fd2a6fb1eb37eae25112ee4cb4453/numpy-2.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", size = 18542976, upload-time = "2025-11-16T22:50:07.557Z" }, + { url = "https://files.pythonhosted.org/packages/05/79/ccbd23a75862d95af03d28b5c6901a1b7da4803181513d52f3b86ed9446e/numpy-2.3.5-cp312-cp312-win32.whl", hash = "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", size = 6285274, upload-time = "2025-11-16T22:50:10.746Z" }, + { url = "https://files.pythonhosted.org/packages/2d/57/8aeaf160312f7f489dea47ab61e430b5cb051f59a98ae68b7133ce8fa06a/numpy-2.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", size = 12782922, upload-time = "2025-11-16T22:50:12.811Z" }, + { url = "https://files.pythonhosted.org/packages/78/a6/aae5cc2ca78c45e64b9ef22f089141d661516856cf7c8a54ba434576900d/numpy-2.3.5-cp312-cp312-win_arm64.whl", hash = "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", size = 10194667, upload-time = "2025-11-16T22:50:16.16Z" }, + { url = "https://files.pythonhosted.org/packages/c6/65/f9dea8e109371ade9c782b4e4756a82edf9d3366bca495d84d79859a0b79/numpy-2.3.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310", size = 16910689, upload-time = "2025-11-16T22:52:23.247Z" }, + { url = "https://files.pythonhosted.org/packages/00/4f/edb00032a8fb92ec0a679d3830368355da91a69cab6f3e9c21b64d0bb986/numpy-2.3.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c", size = 12457053, upload-time = "2025-11-16T22:52:26.367Z" }, + { url = "https://files.pythonhosted.org/packages/16/a4/e8a53b5abd500a63836a29ebe145fc1ab1f2eefe1cfe59276020373ae0aa/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18", size = 5285635, upload-time = "2025-11-16T22:52:29.266Z" }, + { url = "https://files.pythonhosted.org/packages/a3/2f/37eeb9014d9c8b3e9c55bc599c68263ca44fdbc12a93e45a21d1d56df737/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff", size = 6801770, upload-time = "2025-11-16T22:52:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e4/68d2f474df2cb671b2b6c2986a02e520671295647dad82484cde80ca427b/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb", size = 14391768, upload-time = "2025-11-16T22:52:33.593Z" }, + { url = "https://files.pythonhosted.org/packages/b8/50/94ccd8a2b141cb50651fddd4f6a48874acb3c91c8f0842b08a6afc4b0b21/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", size = 16729263, upload-time = "2025-11-16T22:52:36.369Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ee/346fa473e666fe14c52fcdd19ec2424157290a032d4c41f98127bfb31ac7/numpy-2.3.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425", size = 12967213, upload-time = "2025-11-16T22:52:39.38Z" }, +] + +[[package]] +name = "open3d" +version = "0.19.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "addict" }, + { name = "configargparse" }, + { name = "dash" }, + { name = "flask" }, + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "nbformat" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pillow", version = "12.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pyquaternion" }, + { name = "pyyaml" }, + { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "tqdm" }, + { name = "werkzeug" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/4b/91e8a4100adf0ccd2f7ad21dd24c2e3d8f12925396528d0462cfb1735e5a/open3d-0.19.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:f7128ded206e07987cc29d0917195fb64033dea31e0d60dead3629b33d3c175f", size = 103086005, upload-time = "2025-01-08T07:25:56.755Z" }, + { url = "https://files.pythonhosted.org/packages/c7/45/13bc9414ee9db611cba90b9efa69f66f246560e8ade575f1ee5b7f7b5d31/open3d-0.19.0-cp310-cp310-manylinux_2_31_x86_64.whl", hash = "sha256:5b60234fa6a56a20caf1560cad4e914133c8c198d74d7b839631c90e8592762e", size = 447678387, upload-time = "2025-01-08T07:21:55.27Z" }, + { url = "https://files.pythonhosted.org/packages/bc/1c/0219416429f88ebc94fcb269fb186b153affe5b91dffe8f9062330d7776d/open3d-0.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:18bb8b86e5fa9e582ed11b9651ff6e4a782e6778c9b8bfc344fc866dc8b5f49c", size = 69150378, upload-time = "2025-01-08T07:27:10.462Z" }, + { url = "https://files.pythonhosted.org/packages/a7/37/8d1746fcb58c37a9bd868fdca9a36c25b3c277bd764b7146419d11d2a58d/open3d-0.19.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:117702467bfb1602e9ae0ee5e2c7bcf573ebcd227b36a26f9f08425b52c89929", size = 103098641, upload-time = "2025-01-08T07:26:12.371Z" }, + { url = "https://files.pythonhosted.org/packages/bc/50/339bae21d0078cc3d3735e8eaf493a353a17dcc95d76bcefaa8edcf723d3/open3d-0.19.0-cp311-cp311-manylinux_2_31_x86_64.whl", hash = "sha256:678017392f6cc64a19d83afeb5329ffe8196893de2432f4c258eaaa819421bb5", size = 447683616, upload-time = "2025-01-08T07:22:48.098Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3c/358f1cc5b034dc6a785408b7aa7643e503229d890bcbc830cda9fce778b1/open3d-0.19.0-cp311-cp311-win_amd64.whl", hash = "sha256:02091c309708f09da1167d2ea475e05d19f5e81dff025145f3afd9373cbba61f", size = 69151111, upload-time = "2025-01-08T07:27:22.662Z" }, + { url = "https://files.pythonhosted.org/packages/37/c5/286c605e087e72ad83eab130451ce13b768caa4374d926dc735edc20da5a/open3d-0.19.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:9e4a8d29443ba4c83010d199d56c96bf553dd970d3351692ab271759cbe2d7ac", size = 103202754, upload-time = "2025-01-08T07:26:27.169Z" }, + { url = "https://files.pythonhosted.org/packages/2b/95/3723e5ade77c234a1650db11cbe59fe25c4f5af6c224f8ea22ff088bb36a/open3d-0.19.0-cp312-cp312-manylinux_2_31_x86_64.whl", hash = "sha256:01e4590dc2209040292ebe509542fbf2bf869ea60bcd9be7a3fe77b65bad3192", size = 447665185, upload-time = "2025-01-08T07:23:39.769Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c4/35a6e0a35aa72420e75dc28d54b24beaff79bcad150423e47c67d2ad8773/open3d-0.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:665839837e1d3a62524804c31031462c3b548a2b6ed55214e6deb91522844f97", size = 69169961, upload-time = "2025-01-08T07:27:35.392Z" }, + { url = "https://files.pythonhosted.org/packages/df/c8/a138dce488ee99311f0f628ce44417f7b6a1f410e29b9c21ca29e7101ad5/open3d-0.19.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:c675d43a1aaffe1905698a5b63e47ffec4946870c7b1e3e79ec1b76e19842614", size = 75217005, upload-time = "2025-01-08T07:26:56.344Z" }, + { url = "https://files.pythonhosted.org/packages/32/b4/283b5041937e2516915c78b58482f63b79e00ee12daebaa1f0906cf873f2/open3d-0.19.0-cp39-cp39-manylinux_2_31_x86_64.whl", hash = "sha256:4187b5997650e5f7a5faebea28d1bb24a8a103c54e3f37e6a657b0b2cdd9c560", size = 447680634, upload-time = "2025-01-08T07:25:27.171Z" }, + { url = "https://files.pythonhosted.org/packages/5a/2d/8cd3cae15540a7d47170f202b79bd13ff556aef24020b8b2272b1f3e6514/open3d-0.19.0-cp39-cp39-win_amd64.whl", hash = "sha256:c7fe2fce6aa45e91dddb1430a0d29a460f1421870aee30472faed651df70375e", size = 69497339, upload-time = "2025-01-08T07:28:02.583Z" }, +] + +[[package]] +name = "opencv-python" +version = "4.11.0.86" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, + { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, + { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/56/b4/52eeb530a99e2a4c55ffcd352772b599ed4473a0f892d127f4147cf0f88e/pandas-2.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2", size = 11567720, upload-time = "2025-09-29T23:33:06.209Z" }, + { url = "https://files.pythonhosted.org/packages/48/4a/2d8b67632a021bced649ba940455ed441ca854e57d6e7658a6024587b083/pandas-2.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8", size = 10810302, upload-time = "2025-09-29T23:33:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/13/e6/d2465010ee0569a245c975dc6967b801887068bc893e908239b1f4b6c1ac/pandas-2.3.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff", size = 12154874, upload-time = "2025-09-29T23:33:49.939Z" }, + { url = "https://files.pythonhosted.org/packages/1f/18/aae8c0aa69a386a3255940e9317f793808ea79d0a525a97a903366bb2569/pandas-2.3.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29", size = 12790141, upload-time = "2025-09-29T23:34:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/f7/26/617f98de789de00c2a444fbe6301bb19e66556ac78cff933d2c98f62f2b4/pandas-2.3.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73", size = 13208697, upload-time = "2025-09-29T23:34:21.835Z" }, + { url = "https://files.pythonhosted.org/packages/b9/fb/25709afa4552042bd0e15717c75e9b4a2294c3dc4f7e6ea50f03c5136600/pandas-2.3.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9", size = 13879233, upload-time = "2025-09-29T23:34:35.079Z" }, + { url = "https://files.pythonhosted.org/packages/98/af/7be05277859a7bc399da8ba68b88c96b27b48740b6cf49688899c6eb4176/pandas-2.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa", size = 11359119, upload-time = "2025-09-29T23:34:46.339Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +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/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.0.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/08/26e68b6b5da219c2a2cb7b563af008b53bb8e6b6fcb3fa40715fcdb2523a/pillow-12.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:3adfb466bbc544b926d50fe8f4a4e6abd8c6bffd28a26177594e6e9b2b76572b", size = 5289809, upload-time = "2025-10-15T18:21:27.791Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/4e58fb097fb74c7b4758a680aacd558810a417d1edaa7000142976ef9d2f/pillow-12.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ac11e8ea4f611c3c0147424eae514028b5e9077dd99ab91e1bd7bc33ff145e1", size = 4650606, upload-time = "2025-10-15T18:21:29.823Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e0/1fa492aa9f77b3bc6d471c468e62bfea1823056bf7e5e4f1914d7ab2565e/pillow-12.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d49e2314c373f4c2b39446fb1a45ed333c850e09d0c59ac79b72eb3b95397363", size = 6221023, upload-time = "2025-10-15T18:21:31.415Z" }, + { url = "https://files.pythonhosted.org/packages/c1/09/4de7cd03e33734ccd0c876f0251401f1314e819cbfd89a0fcb6e77927cc6/pillow-12.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c7b2a63fd6d5246349f3d3f37b14430d73ee7e8173154461785e43036ffa96ca", size = 8024937, upload-time = "2025-10-15T18:21:33.453Z" }, + { url = "https://files.pythonhosted.org/packages/2e/69/0688e7c1390666592876d9d474f5e135abb4acb39dcb583c4dc5490f1aff/pillow-12.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d64317d2587c70324b79861babb9c09f71fbb780bad212018874b2c013d8600e", size = 6334139, upload-time = "2025-10-15T18:21:35.395Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1c/880921e98f525b9b44ce747ad1ea8f73fd7e992bafe3ca5e5644bf433dea/pillow-12.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d77153e14b709fd8b8af6f66a3afbb9ed6e9fc5ccf0b6b7e1ced7b036a228782", size = 7026074, upload-time = "2025-10-15T18:21:37.219Z" }, + { url = "https://files.pythonhosted.org/packages/28/03/96f718331b19b355610ef4ebdbbde3557c726513030665071fd025745671/pillow-12.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:32ed80ea8a90ee3e6fa08c21e2e091bba6eda8eccc83dbc34c95169507a91f10", size = 6448852, upload-time = "2025-10-15T18:21:39.168Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a0/6a193b3f0cc9437b122978d2c5cbce59510ccf9a5b48825096ed7472da2f/pillow-12.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c828a1ae702fc712978bda0320ba1b9893d99be0badf2647f693cc01cf0f04fa", size = 7117058, upload-time = "2025-10-15T18:21:40.997Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c4/043192375eaa4463254e8e61f0e2ec9a846b983929a8d0a7122e0a6d6fff/pillow-12.0.0-cp310-cp310-win32.whl", hash = "sha256:bd87e140e45399c818fac4247880b9ce719e4783d767e030a883a970be632275", size = 6295431, upload-time = "2025-10-15T18:21:42.518Z" }, + { url = "https://files.pythonhosted.org/packages/92/c6/c2f2fc7e56301c21827e689bb8b0b465f1b52878b57471a070678c0c33cd/pillow-12.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:455247ac8a4cfb7b9bc45b7e432d10421aea9fc2e74d285ba4072688a74c2e9d", size = 7000412, upload-time = "2025-10-15T18:21:44.404Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d2/5f675067ba82da7a1c238a73b32e3fd78d67f9d9f80fbadd33a40b9c0481/pillow-12.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6ace95230bfb7cd79ef66caa064bbe2f2a1e63d93471c3a2e1f1348d9f22d6b7", size = 2435903, upload-time = "2025-10-15T18:21:46.29Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/a2f6773b64edb921a756eb0729068acad9fc5208a53f4a349396e9436721/pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc", size = 5289798, upload-time = "2025-10-15T18:21:47.763Z" }, + { url = "https://files.pythonhosted.org/packages/2e/05/069b1f8a2e4b5a37493da6c5868531c3f77b85e716ad7a590ef87d58730d/pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257", size = 4650589, upload-time = "2025-10-15T18:21:49.515Z" }, + { url = "https://files.pythonhosted.org/packages/61/e3/2c820d6e9a36432503ead175ae294f96861b07600a7156154a086ba7111a/pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642", size = 6230472, upload-time = "2025-10-15T18:21:51.052Z" }, + { url = "https://files.pythonhosted.org/packages/4f/89/63427f51c64209c5e23d4d52071c8d0f21024d3a8a487737caaf614a5795/pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3", size = 8033887, upload-time = "2025-10-15T18:21:52.604Z" }, + { url = "https://files.pythonhosted.org/packages/f6/1b/c9711318d4901093c15840f268ad649459cd81984c9ec9887756cca049a5/pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c", size = 6343964, upload-time = "2025-10-15T18:21:54.619Z" }, + { url = "https://files.pythonhosted.org/packages/41/1e/db9470f2d030b4995083044cd8738cdd1bf773106819f6d8ba12597d5352/pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227", size = 7034756, upload-time = "2025-10-15T18:21:56.151Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b0/6177a8bdd5ee4ed87cba2de5a3cc1db55ffbbec6176784ce5bb75aa96798/pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b", size = 6458075, upload-time = "2025-10-15T18:21:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/bc/5e/61537aa6fa977922c6a03253a0e727e6e4a72381a80d63ad8eec350684f2/pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e", size = 7125955, upload-time = "2025-10-15T18:21:59.372Z" }, + { url = "https://files.pythonhosted.org/packages/1f/3d/d5033539344ee3cbd9a4d69e12e63ca3a44a739eb2d4c8da350a3d38edd7/pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739", size = 6298440, upload-time = "2025-10-15T18:22:00.982Z" }, + { url = "https://files.pythonhosted.org/packages/4d/42/aaca386de5cc8bd8a0254516957c1f265e3521c91515b16e286c662854c4/pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e", size = 6999256, upload-time = "2025-10-15T18:22:02.617Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/9197c9c2d5708b785f631a6dfbfa8eb3fb9672837cb92ae9af812c13b4ed/pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d", size = 2436025, upload-time = "2025-10-15T18:22:04.598Z" }, + { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, + { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b3/582327e6c9f86d037b63beebe981425d6811104cb443e8193824ef1a2f27/pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8", size = 5215068, upload-time = "2025-10-15T18:23:59.594Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d6/67748211d119f3b6540baf90f92fae73ae51d5217b171b0e8b5f7e5d558f/pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a", size = 4614994, upload-time = "2025-10-15T18:24:01.669Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e1/f8281e5d844c41872b273b9f2c34a4bf64ca08905668c8ae730eedc7c9fa/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197", size = 5246639, upload-time = "2025-10-15T18:24:03.403Z" }, + { url = "https://files.pythonhosted.org/packages/94/5a/0d8ab8ffe8a102ff5df60d0de5af309015163bf710c7bb3e8311dd3b3ad0/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c", size = 6986839, upload-time = "2025-10-15T18:24:05.344Z" }, + { url = "https://files.pythonhosted.org/packages/20/2e/3434380e8110b76cd9eb00a363c484b050f949b4bbe84ba770bb8508a02c/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e", size = 5313505, upload-time = "2025-10-15T18:24:07.137Z" }, + { url = "https://files.pythonhosted.org/packages/57/ca/5a9d38900d9d74785141d6580950fe705de68af735ff6e727cb911b64740/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76", size = 5963654, upload-time = "2025-10-15T18:24:09.579Z" }, + { url = "https://files.pythonhosted.org/packages/95/7e/f896623c3c635a90537ac093c6a618ebe1a90d87206e42309cb5d98a1b9e/pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5", size = 6997850, upload-time = "2025-10-15T18:24:11.495Z" }, +] + +[[package]] +name = "pixelblaze-client" +version = "1.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mini-racer" }, + { name = "pytz" }, + { name = "requests" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/29/32c31e20435b49abe67826fb68fd128aab31fbe38e41cb76c0a286ad7aa0/pixelblaze_client-1.1.6.tar.gz", hash = "sha256:15e1fd051b93c1ff3bec75bd51a30ad6205188ae46eb3cc0b50be23d25ac5cbe", size = 48955, upload-time = "2025-09-02T23:08:39.686Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/32/cac8783ce609d0940c6e333b63a2a7322589c8fa65fefe0f742064a60758/pixelblaze_client-1.1.6-py3-none-any.whl", hash = "sha256:b7da4e5d620570ae25d1f4acd4e6ebeda236799aa53c4050712587e0158e5e84", size = 39464, upload-time = "2025-09-02T23:08:38.84Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.4.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, +] + +[[package]] +name = "plotly" +version = "6.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "narwhals" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/05/1199e2a03ce6637960bc1e951ca0f928209a48cfceb57355806a88f214cf/plotly-6.5.0.tar.gz", hash = "sha256:d5d38224883fd38c1409bef7d6a8dc32b74348d39313f3c52ca998b8e447f5c8", size = 7013624, upload-time = "2025-11-17T18:39:24.523Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/c3/3031c931098de393393e1f93a38dc9ed6805d86bb801acc3cf2d5bd1e6b7/plotly-6.5.0-py3-none-any.whl", hash = "sha256:5ac851e100367735250206788a2b1325412aa4a4917a4fe3e6f0bc5aa6f3d90a", size = 9893174, upload-time = "2025-11-17T18:39:20.351Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +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 = "pycodestyle" +version = "2.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472, upload-time = "2025-06-20T18:49:48.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, +] + +[[package]] +name = "pycolmap" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/13/f97318a98c68ee18d07c1769caa6049a67a1ec42ebb55fc36d0853a61100/pycolmap-3.11.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:52810e9d63c3f2d5e0e0ebac97b453c14ca06f42072ede26fe9bc5207e5f32ea", size = 9678372, upload-time = "2024-12-06T16:50:48.005Z" }, + { url = "https://files.pythonhosted.org/packages/de/91/5349422143dcf6d640c7ec46c2fbbeb8b72237f01ba8a76ced8a719df806/pycolmap-3.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:92d12806ed7252e2c8f9584d2751e3afacbd21be5150d8f24c52b067c67695ab", size = 8485798, upload-time = "2024-12-06T16:50:50.122Z" }, + { url = "https://files.pythonhosted.org/packages/4e/eb/1a1ce6fe807d2ad93d459f4f118e46508cc937c618fa6a7806c30a2b9769/pycolmap-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:413b95d933b8ed10ece2011cbd80fe32704464b5ba38cfbc978dec68757dfaec", size = 12531173, upload-time = "2024-12-06T16:50:52.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/74/573638ce614555a8ea24b8f791e37c03259411419308d562f7ef05903d40/pycolmap-3.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:b3bb1831287246b0825a17f9ee19e90d18fbfe096eada7b89bdee3a1d8c5e040", size = 13789835, upload-time = "2024-12-06T16:50:54.181Z" }, + { url = "https://files.pythonhosted.org/packages/f7/42/7ddb49da876c1d873ea6a27a01d1518877aae7cab9926d40e4e1f5a11e1f/pycolmap-3.11.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1949ca7eaa0a74ff76d3758d10496a0147d98bb89c6c7aad2514f1c70d88b852", size = 9679205, upload-time = "2024-12-06T16:50:56.959Z" }, + { url = "https://files.pythonhosted.org/packages/af/0a/af45bd2c04fe80b29251c2f5a73c432487d310e3cf7906071041baf1e05f/pycolmap-3.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c8f9679a78fa68e3b718f5efc87d520012330c32b1c0c1321766addda7903e5", size = 8487240, upload-time = "2024-12-06T16:50:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/e5/0b/8787d4a47127fdd0486f121042fab51591137d1217c05c68ca9431224b5d/pycolmap-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:9bb98585e540a403df718b26ffdf475eba74891d16bf59ba94eef0f3acb827a5", size = 12523657, upload-time = "2024-12-06T16:51:01.399Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d2/0fdb358e1fa251b14d39564a40fdb4c57c5c97496fed45d270a56d5dd2cd/pycolmap-3.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:f41e1c057b5acfd4363aac0c85960fd880b612c93b96569bdc188b743e31ec0d", size = 13793487, upload-time = "2024-12-06T16:51:04.168Z" }, + { url = "https://files.pythonhosted.org/packages/e7/30/c5c3476a859bd1c22669a6440d1ef8f10f3f16966d265c36878f0141140a/pycolmap-3.11.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:994dc06fb94d733897cf696df25f1217f3491f34b3c26354ceee5a5e60f7a22b", size = 9728747, upload-time = "2024-12-06T16:51:06.101Z" }, + { url = "https://files.pythonhosted.org/packages/bc/76/e21bad4b7dc2ef464b5145328d7a67d2371c95ea46678ee48043e05a92d2/pycolmap-3.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d3541c671b7e61f5e381ed6a08de522f4f26ada957cecff1f8e7f964f03d3d7", size = 8510505, upload-time = "2024-12-06T16:51:08.303Z" }, + { url = "https://files.pythonhosted.org/packages/fc/45/783e293e974cfc56816dd87946c7d5ea410c8fdf7e6d04ef4be947e2a2c8/pycolmap-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:14f04f48d13358e9418d71b3a806f1aa39ab0b2a35904907f74142e4964b098b", size = 12534415, upload-time = "2024-12-06T16:51:10.425Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d4/fe80e9a4d299870af4f3de81857fac74ae5dc8d7773d658d82ecc17e529e/pycolmap-3.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:e023af9e4fb54c5e2dec23ff7410eedfa79d53f5f8eeac31f435cf560a9e4c94", size = 13804497, upload-time = "2024-12-06T16:51:12.784Z" }, + { url = "https://files.pythonhosted.org/packages/ec/a0/8661d59d121f74d05f27ed7ac0d7fea31ed0b8f6cd698df1e92197dba0b0/pycolmap-3.11.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:0564490d3511ccadd3dc0e7e640f1109fda1e59b883041ce744a08f1393abb52", size = 9678580, upload-time = "2024-12-06T16:51:25.085Z" }, + { url = "https://files.pythonhosted.org/packages/04/c4/58066dc5f0b485566ddad36b70c585c3d5aac12ef0268fa02639626b1592/pycolmap-3.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c7e107117837ccd0a4b6a22adc5a26849afed26b0d2ddde354e402614e5cad51", size = 8485864, upload-time = "2024-12-06T16:51:27.71Z" }, + { url = "https://files.pythonhosted.org/packages/c1/6c/f444b3db3a68046c0027852d2d98bd0822aff898504903507c7e9fd4f629/pycolmap-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2c6d3671f84eebd005ae5b77d39a8fad5bf49d85caea49ef81f87325316437d1", size = 12532221, upload-time = "2024-12-06T16:51:29.661Z" }, + { url = "https://files.pythonhosted.org/packages/34/17/aa5093bc6078d063f9594dba3c55e2e9701e4b7d3e71cad2955c967c94a0/pycolmap-3.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:26dcd876aceca8dffa8877c4beefda68b1ce37369621b27c5ae6fed8409cb41d", size = 13927382, upload-time = "2024-12-06T16:51:31.962Z" }, +] + +[[package]] +name = "pyflakes" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58", size = 64669, upload-time = "2025-06-20T18:45:27.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" }, +] + +[[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 = "pyparsing" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, +] + +[[package]] +name = "pyquaternion" +version = "0.9.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/3d092aa20efaedacb89c3221a92c6491be5b28f618a2c36b52b53e7446c2/pyquaternion-0.9.9.tar.gz", hash = "sha256:b1f61af219cb2fe966b5fb79a192124f2e63a3f7a777ac3cadf2957b1a81bea8", size = 15530, upload-time = "2020-10-05T01:31:30.327Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/b3/d8482e8cacc8ea15a356efea13d22ce1c5914a9ee36622ba250523240bf2/pyquaternion-0.9.9-py3-none-any.whl", hash = "sha256:e65f6e3f7b1fdf1a9e23f82434334a1ae84f14223eee835190cd2e841f8172ec", size = 14361, upload-time = "2020-10-05T01:31:37.575Z" }, +] + +[[package]] +name = "pyserial" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125, upload-time = "2020-11-23T03:59:15.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585, upload-time = "2020-11-23T03:59:13.41Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +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.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "packaging", marker = "python_full_version < '3.10'" }, + { name = "pluggy", 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/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.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +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", 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 = "pytest-cov" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", version = "7.10.7", source = { registry = "https://pypi.org/simple" }, extra = ["toml"], marker = "python_full_version < '3.10'" }, + { name = "coverage", version = "7.12.0", source = { registry = "https://pypi.org/simple" }, extra = ["toml"], marker = "python_full_version >= '3.10'" }, + { name = "pluggy" }, + { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, +] + +[[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 = "pytokens" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hash = "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", size = 17644, upload-time = "2025-11-05T13:36:35.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl", hash = "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3", size = 12195, upload-time = "2025-11-05T13:36:33.183Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" }, + { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/59/42/b86689aac0cdaee7ae1c58d464b0ff04ca909c19bb6502d4973cdd9f9544/pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b", size = 8760837, upload-time = "2025-07-14T20:12:59.59Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8a/1403d0353f8c5a2f0829d2b1c4becbf9da2f0a4d040886404fc4a5431e4d/pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91", size = 9590187, upload-time = "2025-07-14T20:13:01.419Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/e0e8d802f124772cec9c75430b01a212f86f9de7546bda715e54140d5aeb/pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d", size = 8778162, upload-time = "2025-07-14T20:13:03.544Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/9f/62/67fc8e68a75f738c9200422bf65693fb79a4cd0dc5b23310e5202e978090/pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da", size = 184450, upload-time = "2025-09-25T21:33:00.618Z" }, + { url = "https://files.pythonhosted.org/packages/ae/92/861f152ce87c452b11b9d0977952259aa7df792d71c1053365cc7b09cc08/pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917", size = 174319, upload-time = "2025-09-25T21:33:02.086Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cd/f0cfc8c74f8a030017a2b9c771b7f47e5dd702c3e28e5b2071374bda2948/pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9", size = 737631, upload-time = "2025-09-25T21:33:03.25Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b2/18f2bd28cd2055a79a46c9b0895c0b3d987ce40ee471cecf58a1a0199805/pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5", size = 836795, upload-time = "2025-09-25T21:33:05.014Z" }, + { url = "https://files.pythonhosted.org/packages/73/b9/793686b2d54b531203c160ef12bec60228a0109c79bae6c1277961026770/pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a", size = 750767, upload-time = "2025-09-25T21:33:06.398Z" }, + { url = "https://files.pythonhosted.org/packages/a9/86/a137b39a611def2ed78b0e66ce2fe13ee701a07c07aebe55c340ed2a050e/pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926", size = 727982, upload-time = "2025-09-25T21:33:08.708Z" }, + { url = "https://files.pythonhosted.org/packages/dd/62/71c27c94f457cf4418ef8ccc71735324c549f7e3ea9d34aba50874563561/pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7", size = 755677, upload-time = "2025-09-25T21:33:09.876Z" }, + { url = "https://files.pythonhosted.org/packages/29/3d/6f5e0d58bd924fb0d06c3a6bad00effbdae2de5adb5cda5648006ffbd8d3/pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0", size = 142592, upload-time = "2025-09-25T21:33:10.983Z" }, + { url = "https://files.pythonhosted.org/packages/f0/0c/25113e0b5e103d7f1490c0e947e303fe4a696c10b501dea7a9f49d4e876c/pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007", size = 158777, upload-time = "2025-09-25T21:33:15.55Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "attrs", marker = "python_full_version < '3.10'" }, + { name = "rpds-py", version = "0.27.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "attrs", marker = "python_full_version >= '3.10'" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "retrying" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/5a/b17e1e257d3e6f2e7758930e1256832c9ddd576f8631781e6a072914befa/retrying-1.4.2.tar.gz", hash = "sha256:d102e75d53d8d30b88562d45361d6c6c934da06fab31bd81c0420acb97a8ba39", size = 11411, upload-time = "2025-08-03T03:35:25.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/f3/6cd296376653270ac1b423bb30bd70942d9916b6978c6f40472d6ac038e7/retrying-1.4.2-py3-none-any.whl", hash = "sha256:bbc004aeb542a74f3569aeddf42a2516efefcdaff90df0eb38fbfbf19f179f59", size = 10859, upload-time = "2025-08-03T03:35:23.829Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479, upload-time = "2025-08-27T12:16:36.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/ed/3aef893e2dd30e77e35d20d4ddb45ca459db59cead748cad9796ad479411/rpds_py-0.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:68afeec26d42ab3b47e541b272166a0b4400313946871cba3ed3a4fc0cab1cef", size = 371606, upload-time = "2025-08-27T12:12:25.189Z" }, + { url = "https://files.pythonhosted.org/packages/6d/82/9818b443e5d3eb4c83c3994561387f116aae9833b35c484474769c4a8faf/rpds_py-0.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74e5b2f7bb6fa38b1b10546d27acbacf2a022a8b5543efb06cfebc72a59c85be", size = 353452, upload-time = "2025-08-27T12:12:27.433Z" }, + { url = "https://files.pythonhosted.org/packages/99/c7/d2a110ffaaa397fc6793a83c7bd3545d9ab22658b7cdff05a24a4535cc45/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9024de74731df54546fab0bfbcdb49fae19159ecaecfc8f37c18d2c7e2c0bd61", size = 381519, upload-time = "2025-08-27T12:12:28.719Z" }, + { url = "https://files.pythonhosted.org/packages/5a/bc/e89581d1f9d1be7d0247eaef602566869fdc0d084008ba139e27e775366c/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31d3ebadefcd73b73928ed0b2fd696f7fefda8629229f81929ac9c1854d0cffb", size = 394424, upload-time = "2025-08-27T12:12:30.207Z" }, + { url = "https://files.pythonhosted.org/packages/ac/2e/36a6861f797530e74bb6ed53495f8741f1ef95939eed01d761e73d559067/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2e7f8f169d775dd9092a1743768d771f1d1300453ddfe6325ae3ab5332b4657", size = 523467, upload-time = "2025-08-27T12:12:31.808Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/c1bc2be32564fa499f988f0a5c6505c2f4746ef96e58e4d7de5cf923d77e/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d905d16f77eb6ab2e324e09bfa277b4c8e5e6b8a78a3e7ff8f3cdf773b4c013", size = 402660, upload-time = "2025-08-27T12:12:33.444Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ec/ef8bf895f0628dd0a59e54d81caed6891663cb9c54a0f4bb7da918cb88cf/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50c946f048209e6362e22576baea09193809f87687a95a8db24e5fbdb307b93a", size = 384062, upload-time = "2025-08-27T12:12:34.857Z" }, + { url = "https://files.pythonhosted.org/packages/69/f7/f47ff154be8d9a5e691c083a920bba89cef88d5247c241c10b9898f595a1/rpds_py-0.27.1-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:3deab27804d65cd8289eb814c2c0e807c4b9d9916c9225e363cb0cf875eb67c1", size = 401289, upload-time = "2025-08-27T12:12:36.085Z" }, + { url = "https://files.pythonhosted.org/packages/3b/d9/ca410363efd0615814ae579f6829cafb39225cd63e5ea5ed1404cb345293/rpds_py-0.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b61097f7488de4be8244c89915da8ed212832ccf1e7c7753a25a394bf9b1f10", size = 417718, upload-time = "2025-08-27T12:12:37.401Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a0/8cb5c2ff38340f221cc067cc093d1270e10658ba4e8d263df923daa18e86/rpds_py-0.27.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a3f29aba6e2d7d90528d3c792555a93497fe6538aa65eb675b44505be747808", size = 558333, upload-time = "2025-08-27T12:12:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8c/1b0de79177c5d5103843774ce12b84caa7164dfc6cd66378768d37db11bf/rpds_py-0.27.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd6cd0485b7d347304067153a6dc1d73f7d4fd995a396ef32a24d24b8ac63ac8", size = 589127, upload-time = "2025-08-27T12:12:41.48Z" }, + { url = "https://files.pythonhosted.org/packages/c8/5e/26abb098d5e01266b0f3a2488d299d19ccc26849735d9d2b95c39397e945/rpds_py-0.27.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f4461bf931108c9fa226ffb0e257c1b18dc2d44cd72b125bec50ee0ab1248a9", size = 554899, upload-time = "2025-08-27T12:12:42.925Z" }, + { url = "https://files.pythonhosted.org/packages/de/41/905cc90ced13550db017f8f20c6d8e8470066c5738ba480d7ba63e3d136b/rpds_py-0.27.1-cp310-cp310-win32.whl", hash = "sha256:ee5422d7fb21f6a00c1901bf6559c49fee13a5159d0288320737bbf6585bd3e4", size = 217450, upload-time = "2025-08-27T12:12:44.813Z" }, + { url = "https://files.pythonhosted.org/packages/75/3d/6bef47b0e253616ccdf67c283e25f2d16e18ccddd38f92af81d5a3420206/rpds_py-0.27.1-cp310-cp310-win_amd64.whl", hash = "sha256:3e039aabf6d5f83c745d5f9a0a381d031e9ed871967c0a5c38d201aca41f3ba1", size = 228447, upload-time = "2025-08-27T12:12:46.204Z" }, + { url = "https://files.pythonhosted.org/packages/b5/c1/7907329fbef97cbd49db6f7303893bd1dd5a4a3eae415839ffdfb0762cae/rpds_py-0.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:be898f271f851f68b318872ce6ebebbc62f303b654e43bf72683dbdc25b7c881", size = 371063, upload-time = "2025-08-27T12:12:47.856Z" }, + { url = "https://files.pythonhosted.org/packages/11/94/2aab4bc86228bcf7c48760990273653a4900de89c7537ffe1b0d6097ed39/rpds_py-0.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62ac3d4e3e07b58ee0ddecd71d6ce3b1637de2d373501412df395a0ec5f9beb5", size = 353210, upload-time = "2025-08-27T12:12:49.187Z" }, + { url = "https://files.pythonhosted.org/packages/3a/57/f5eb3ecf434342f4f1a46009530e93fd201a0b5b83379034ebdb1d7c1a58/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4708c5c0ceb2d034f9991623631d3d23cb16e65c83736ea020cdbe28d57c0a0e", size = 381636, upload-time = "2025-08-27T12:12:50.492Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f4/ef95c5945e2ceb5119571b184dd5a1cc4b8541bbdf67461998cfeac9cb1e/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:abfa1171a9952d2e0002aba2ad3780820b00cc3d9c98c6630f2e93271501f66c", size = 394341, upload-time = "2025-08-27T12:12:52.024Z" }, + { url = "https://files.pythonhosted.org/packages/5a/7e/4bd610754bf492d398b61725eb9598ddd5eb86b07d7d9483dbcd810e20bc/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b507d19f817ebaca79574b16eb2ae412e5c0835542c93fe9983f1e432aca195", size = 523428, upload-time = "2025-08-27T12:12:53.779Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e5/059b9f65a8c9149361a8b75094864ab83b94718344db511fd6117936ed2a/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168b025f8fd8d8d10957405f3fdcef3dc20f5982d398f90851f4abc58c566c52", size = 402923, upload-time = "2025-08-27T12:12:55.15Z" }, + { url = "https://files.pythonhosted.org/packages/f5/48/64cabb7daced2968dd08e8a1b7988bf358d7bd5bcd5dc89a652f4668543c/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c6210ef77caa58e16e8c17d35c63fe3f5b60fd9ba9d424470c3400bcf9ed", size = 384094, upload-time = "2025-08-27T12:12:57.194Z" }, + { url = "https://files.pythonhosted.org/packages/ae/e1/dc9094d6ff566bff87add8a510c89b9e158ad2ecd97ee26e677da29a9e1b/rpds_py-0.27.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:d252f2d8ca0195faa707f8eb9368955760880b2b42a8ee16d382bf5dd807f89a", size = 401093, upload-time = "2025-08-27T12:12:58.985Z" }, + { url = "https://files.pythonhosted.org/packages/37/8e/ac8577e3ecdd5593e283d46907d7011618994e1d7ab992711ae0f78b9937/rpds_py-0.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e5e54da1e74b91dbc7996b56640f79b195d5925c2b78efaa8c5d53e1d88edde", size = 417969, upload-time = "2025-08-27T12:13:00.367Z" }, + { url = "https://files.pythonhosted.org/packages/66/6d/87507430a8f74a93556fe55c6485ba9c259949a853ce407b1e23fea5ba31/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ffce0481cc6e95e5b3f0a47ee17ffbd234399e6d532f394c8dce320c3b089c21", size = 558302, upload-time = "2025-08-27T12:13:01.737Z" }, + { url = "https://files.pythonhosted.org/packages/3a/bb/1db4781ce1dda3eecc735e3152659a27b90a02ca62bfeea17aee45cc0fbc/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a205fdfe55c90c2cd8e540ca9ceba65cbe6629b443bc05db1f590a3db8189ff9", size = 589259, upload-time = "2025-08-27T12:13:03.127Z" }, + { url = "https://files.pythonhosted.org/packages/7b/0e/ae1c8943d11a814d01b482e1f8da903f88047a962dff9bbdadf3bd6e6fd1/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:689fb5200a749db0415b092972e8eba85847c23885c8543a8b0f5c009b1a5948", size = 554983, upload-time = "2025-08-27T12:13:04.516Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/0b2a55415931db4f112bdab072443ff76131b5ac4f4dc98d10d2d357eb03/rpds_py-0.27.1-cp311-cp311-win32.whl", hash = "sha256:3182af66048c00a075010bc7f4860f33913528a4b6fc09094a6e7598e462fe39", size = 217154, upload-time = "2025-08-27T12:13:06.278Z" }, + { url = "https://files.pythonhosted.org/packages/24/75/3b7ffe0d50dc86a6a964af0d1cc3a4a2cdf437cb7b099a4747bbb96d1819/rpds_py-0.27.1-cp311-cp311-win_amd64.whl", hash = "sha256:b4938466c6b257b2f5c4ff98acd8128ec36b5059e5c8f8372d79316b1c36bb15", size = 228627, upload-time = "2025-08-27T12:13:07.625Z" }, + { url = "https://files.pythonhosted.org/packages/8d/3f/4fd04c32abc02c710f09a72a30c9a55ea3cc154ef8099078fd50a0596f8e/rpds_py-0.27.1-cp311-cp311-win_arm64.whl", hash = "sha256:2f57af9b4d0793e53266ee4325535a31ba48e2f875da81a9177c9926dfa60746", size = 220998, upload-time = "2025-08-27T12:13:08.972Z" }, + { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887, upload-time = "2025-08-27T12:13:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795, upload-time = "2025-08-27T12:13:11.65Z" }, + { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121, upload-time = "2025-08-27T12:13:13.008Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976, upload-time = "2025-08-27T12:13:14.368Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953, upload-time = "2025-08-27T12:13:15.774Z" }, + { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915, upload-time = "2025-08-27T12:13:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883, upload-time = "2025-08-27T12:13:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699, upload-time = "2025-08-27T12:13:20.089Z" }, + { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713, upload-time = "2025-08-27T12:13:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324, upload-time = "2025-08-27T12:13:22.789Z" }, + { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646, upload-time = "2025-08-27T12:13:24.122Z" }, + { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137, upload-time = "2025-08-27T12:13:25.557Z" }, + { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343, upload-time = "2025-08-27T12:13:26.967Z" }, + { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497, upload-time = "2025-08-27T12:13:28.326Z" }, + { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790, upload-time = "2025-08-27T12:13:29.71Z" }, + { url = "https://files.pythonhosted.org/packages/7f/6c/252e83e1ce7583c81f26d1d884b2074d40a13977e1b6c9c50bbf9a7f1f5a/rpds_py-0.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c918c65ec2e42c2a78d19f18c553d77319119bf43aa9e2edf7fb78d624355527", size = 372140, upload-time = "2025-08-27T12:15:05.441Z" }, + { url = "https://files.pythonhosted.org/packages/9d/71/949c195d927c5aeb0d0629d329a20de43a64c423a6aa53836290609ef7ec/rpds_py-0.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1fea2b1a922c47c51fd07d656324531adc787e415c8b116530a1d29c0516c62d", size = 354086, upload-time = "2025-08-27T12:15:07.404Z" }, + { url = "https://files.pythonhosted.org/packages/9f/02/e43e332ad8ce4f6c4342d151a471a7f2900ed1d76901da62eb3762663a71/rpds_py-0.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbf94c58e8e0cd6b6f38d8de67acae41b3a515c26169366ab58bdca4a6883bb8", size = 382117, upload-time = "2025-08-27T12:15:09.275Z" }, + { url = "https://files.pythonhosted.org/packages/d0/05/b0fdeb5b577197ad72812bbdfb72f9a08fa1e64539cc3940b1b781cd3596/rpds_py-0.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2a8fed130ce946d5c585eddc7c8eeef0051f58ac80a8ee43bd17835c144c2cc", size = 394520, upload-time = "2025-08-27T12:15:10.727Z" }, + { url = "https://files.pythonhosted.org/packages/67/1f/4cfef98b2349a7585181e99294fa2a13f0af06902048a5d70f431a66d0b9/rpds_py-0.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:037a2361db72ee98d829bc2c5b7cc55598ae0a5e0ec1823a56ea99374cfd73c1", size = 522657, upload-time = "2025-08-27T12:15:12.613Z" }, + { url = "https://files.pythonhosted.org/packages/44/55/ccf37ddc4c6dce7437b335088b5ca18da864b334890e2fe9aa6ddc3f79a9/rpds_py-0.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5281ed1cc1d49882f9997981c88df1a22e140ab41df19071222f7e5fc4e72125", size = 402967, upload-time = "2025-08-27T12:15:14.113Z" }, + { url = "https://files.pythonhosted.org/packages/74/e5/5903f92e41e293b07707d5bf00ef39a0eb2af7190aff4beaf581a6591510/rpds_py-0.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd50659a069c15eef8aa3d64bbef0d69fd27bb4a50c9ab4f17f83a16cbf8905", size = 384372, upload-time = "2025-08-27T12:15:15.842Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e3/fbb409e18aeefc01e49f5922ac63d2d914328430e295c12183ce56ebf76b/rpds_py-0.27.1-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:c4b676c4ae3921649a15d28ed10025548e9b561ded473aa413af749503c6737e", size = 401264, upload-time = "2025-08-27T12:15:17.388Z" }, + { url = "https://files.pythonhosted.org/packages/55/79/529ad07794e05cb0f38e2f965fc5bb20853d523976719400acecc447ec9d/rpds_py-0.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:079bc583a26db831a985c5257797b2b5d3affb0386e7ff886256762f82113b5e", size = 418691, upload-time = "2025-08-27T12:15:19.144Z" }, + { url = "https://files.pythonhosted.org/packages/33/39/6554a7fd6d9906fda2521c6d52f5d723dca123529fb719a5b5e074c15e01/rpds_py-0.27.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4e44099bd522cba71a2c6b97f68e19f40e7d85399de899d66cdb67b32d7cb786", size = 558989, upload-time = "2025-08-27T12:15:21.087Z" }, + { url = "https://files.pythonhosted.org/packages/19/b2/76fa15173b6f9f445e5ef15120871b945fb8dd9044b6b8c7abe87e938416/rpds_py-0.27.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e202e6d4188e53c6661af813b46c37ca2c45e497fc558bacc1a7630ec2695aec", size = 589835, upload-time = "2025-08-27T12:15:22.696Z" }, + { url = "https://files.pythonhosted.org/packages/ee/9e/5560a4b39bab780405bed8a88ee85b30178061d189558a86003548dea045/rpds_py-0.27.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f41f814b8eaa48768d1bb551591f6ba45f87ac76899453e8ccd41dba1289b04b", size = 555227, upload-time = "2025-08-27T12:15:24.278Z" }, + { url = "https://files.pythonhosted.org/packages/52/d7/cd9c36215111aa65724c132bf709c6f35175973e90b32115dedc4ced09cb/rpds_py-0.27.1-cp39-cp39-win32.whl", hash = "sha256:9e71f5a087ead99563c11fdaceee83ee982fd39cf67601f4fd66cb386336ee52", size = 217899, upload-time = "2025-08-27T12:15:25.926Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e0/d75ab7b4dd8ba777f6b365adbdfc7614bbfe7c5f05703031dfa4b61c3d6c/rpds_py-0.27.1-cp39-cp39-win_amd64.whl", hash = "sha256:71108900c9c3c8590697244b9519017a400d9ba26a36c48381b3f64743a44aab", size = 228725, upload-time = "2025-08-27T12:15:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/d5/63/b7cc415c345625d5e62f694ea356c58fb964861409008118f1245f8c3347/rpds_py-0.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7ba22cb9693df986033b91ae1d7a979bc399237d45fccf875b76f62bb9e52ddf", size = 371360, upload-time = "2025-08-27T12:15:29.218Z" }, + { url = "https://files.pythonhosted.org/packages/e5/8c/12e1b24b560cf378b8ffbdb9dc73abd529e1adcfcf82727dfd29c4a7b88d/rpds_py-0.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b640501be9288c77738b5492b3fd3abc4ba95c50c2e41273c8a1459f08298d3", size = 353933, upload-time = "2025-08-27T12:15:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/9b/85/1bb2210c1f7a1b99e91fea486b9f0f894aa5da3a5ec7097cbad7dec6d40f/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb08b65b93e0c6dd70aac7f7890a9c0938d5ec71d5cb32d45cf844fb8ae47636", size = 382962, upload-time = "2025-08-27T12:15:32.348Z" }, + { url = "https://files.pythonhosted.org/packages/cc/c9/a839b9f219cf80ed65f27a7f5ddbb2809c1b85c966020ae2dff490e0b18e/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7ff07d696a7a38152ebdb8212ca9e5baab56656749f3d6004b34ab726b550b8", size = 394412, upload-time = "2025-08-27T12:15:33.839Z" }, + { url = "https://files.pythonhosted.org/packages/02/2d/b1d7f928b0b1f4fc2e0133e8051d199b01d7384875adc63b6ddadf3de7e5/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb7c72262deae25366e3b6c0c0ba46007967aea15d1eea746e44ddba8ec58dcc", size = 523972, upload-time = "2025-08-27T12:15:35.377Z" }, + { url = "https://files.pythonhosted.org/packages/a9/af/2cbf56edd2d07716df1aec8a726b3159deb47cb5c27e1e42b71d705a7c2f/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b002cab05d6339716b03a4a3a2ce26737f6231d7b523f339fa061d53368c9d8", size = 403273, upload-time = "2025-08-27T12:15:37.051Z" }, + { url = "https://files.pythonhosted.org/packages/c0/93/425e32200158d44ff01da5d9612c3b6711fe69f606f06e3895511f17473b/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23f6b69d1c26c4704fec01311963a41d7de3ee0570a84ebde4d544e5a1859ffc", size = 385278, upload-time = "2025-08-27T12:15:38.571Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1a/1a04a915ecd0551bfa9e77b7672d1937b4b72a0fc204a17deef76001cfb2/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:530064db9146b247351f2a0250b8f00b289accea4596a033e94be2389977de71", size = 402084, upload-time = "2025-08-27T12:15:40.529Z" }, + { url = "https://files.pythonhosted.org/packages/51/f7/66585c0fe5714368b62951d2513b684e5215beaceab2c6629549ddb15036/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b90b0496570bd6b0321724a330d8b545827c4df2034b6ddfc5f5275f55da2ad", size = 419041, upload-time = "2025-08-27T12:15:42.191Z" }, + { url = "https://files.pythonhosted.org/packages/8e/7e/83a508f6b8e219bba2d4af077c35ba0e0cdd35a751a3be6a7cba5a55ad71/rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879b0e14a2da6a1102a3fc8af580fc1ead37e6d6692a781bd8c83da37429b5ab", size = 560084, upload-time = "2025-08-27T12:15:43.839Z" }, + { url = "https://files.pythonhosted.org/packages/66/66/bb945683b958a1b19eb0fe715594630d0f36396ebdef4d9b89c2fa09aa56/rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:0d807710df3b5faa66c731afa162ea29717ab3be17bdc15f90f2d9f183da4059", size = 590115, upload-time = "2025-08-27T12:15:46.647Z" }, + { url = "https://files.pythonhosted.org/packages/12/00/ccfaafaf7db7e7adace915e5c2f2c2410e16402561801e9c7f96683002d3/rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3adc388fc3afb6540aec081fa59e6e0d3908722771aa1e37ffe22b220a436f0b", size = 556561, upload-time = "2025-08-27T12:15:48.219Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b7/92b6ed9aad103bfe1c45df98453dfae40969eef2cb6c6239c58d7e96f1b3/rpds_py-0.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c796c0c1cc68cb08b0284db4229f5af76168172670c74908fdbd4b7d7f515819", size = 229125, upload-time = "2025-08-27T12:15:49.956Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ed/e1fba02de17f4f76318b834425257c8ea297e415e12c68b4361f63e8ae92/rpds_py-0.27.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdfe4bb2f9fe7458b7453ad3c33e726d6d1c7c0a72960bcc23800d77384e42df", size = 371402, upload-time = "2025-08-27T12:15:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/af/7c/e16b959b316048b55585a697e94add55a4ae0d984434d279ea83442e460d/rpds_py-0.27.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8fabb8fd848a5f75a2324e4a84501ee3a5e3c78d8603f83475441866e60b94a3", size = 354084, upload-time = "2025-08-27T12:15:53.219Z" }, + { url = "https://files.pythonhosted.org/packages/de/c1/ade645f55de76799fdd08682d51ae6724cb46f318573f18be49b1e040428/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda8719d598f2f7f3e0f885cba8646644b55a187762bec091fa14a2b819746a9", size = 383090, upload-time = "2025-08-27T12:15:55.158Z" }, + { url = "https://files.pythonhosted.org/packages/1f/27/89070ca9b856e52960da1472efcb6c20ba27cfe902f4f23ed095b9cfc61d/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c64d07e95606ec402a0a1c511fe003873fa6af630bda59bac77fac8b4318ebc", size = 394519, upload-time = "2025-08-27T12:15:57.238Z" }, + { url = "https://files.pythonhosted.org/packages/b3/28/be120586874ef906aa5aeeae95ae8df4184bc757e5b6bd1c729ccff45ed5/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93a2ed40de81bcff59aabebb626562d48332f3d028ca2036f1d23cbb52750be4", size = 523817, upload-time = "2025-08-27T12:15:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/70cc197bc11cfcde02a86f36ac1eed15c56667c2ebddbdb76a47e90306da/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:387ce8c44ae94e0ec50532d9cb0edce17311024c9794eb196b90e1058aadeb66", size = 403240, upload-time = "2025-08-27T12:16:00.923Z" }, + { url = "https://files.pythonhosted.org/packages/cf/35/46936cca449f7f518f2f4996e0e8344db4b57e2081e752441154089d2a5f/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf94f812c95b5e60ebaf8bfb1898a7d7cb9c1af5744d4a67fa47796e0465d4e", size = 385194, upload-time = "2025-08-27T12:16:02.802Z" }, + { url = "https://files.pythonhosted.org/packages/e1/62/29c0d3e5125c3270b51415af7cbff1ec587379c84f55a5761cc9efa8cd06/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:4848ca84d6ded9b58e474dfdbad4b8bfb450344c0551ddc8d958bf4b36aa837c", size = 402086, upload-time = "2025-08-27T12:16:04.806Z" }, + { url = "https://files.pythonhosted.org/packages/8f/66/03e1087679227785474466fdd04157fb793b3b76e3fcf01cbf4c693c1949/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bde09cbcf2248b73c7c323be49b280180ff39fadcfe04e7b6f54a678d02a7cf", size = 419272, upload-time = "2025-08-27T12:16:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/6a/24/e3e72d265121e00b063aef3e3501e5b2473cf1b23511d56e529531acf01e/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:94c44ee01fd21c9058f124d2d4f0c9dc7634bec93cd4b38eefc385dabe71acbf", size = 560003, upload-time = "2025-08-27T12:16:08.06Z" }, + { url = "https://files.pythonhosted.org/packages/26/ca/f5a344c534214cc2d41118c0699fffbdc2c1bc7046f2a2b9609765ab9c92/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:df8b74962e35c9249425d90144e721eed198e6555a0e22a563d29fe4486b51f6", size = 590482, upload-time = "2025-08-27T12:16:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/ce/08/4349bdd5c64d9d193c360aa9db89adeee6f6682ab8825dca0a3f535f434f/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dc23e6820e3b40847e2f4a7726462ba0cf53089512abe9ee16318c366494c17a", size = 556523, upload-time = "2025-08-27T12:16:12.188Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ea/5463cd5048a7a2fcdae308b6e96432802132c141bfb9420260142632a0f1/rpds_py-0.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:aa8933159edc50be265ed22b401125c9eebff3171f570258854dbce3ecd55475", size = 371778, upload-time = "2025-08-27T12:16:13.851Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/f38c099db07f5114029c1467649d308543906933eebbc226d4527a5f4693/rpds_py-0.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a50431bf02583e21bf273c71b89d710e7a710ad5e39c725b14e685610555926f", size = 354394, upload-time = "2025-08-27T12:16:15.609Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/b76f97704d9dd8ddbd76fed4c4048153a847c5d6003afe20a6b5c3339065/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78af06ddc7fe5cc0e967085a9115accee665fb912c22a3f54bad70cc65b05fe6", size = 382348, upload-time = "2025-08-27T12:16:17.251Z" }, + { url = "https://files.pythonhosted.org/packages/8a/3f/ef23d3c1be1b837b648a3016d5bbe7cfe711422ad110b4081c0a90ef5a53/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70d0738ef8fee13c003b100c2fbd667ec4f133468109b3472d249231108283a3", size = 394159, upload-time = "2025-08-27T12:16:19.251Z" }, + { url = "https://files.pythonhosted.org/packages/74/8a/9e62693af1a34fd28b1a190d463d12407bd7cf561748cb4745845d9548d3/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2f6fd8a1cea5bbe599b6e78a6e5ee08db434fc8ffea51ff201c8765679698b3", size = 522775, upload-time = "2025-08-27T12:16:20.929Z" }, + { url = "https://files.pythonhosted.org/packages/36/0d/8d5bb122bf7a60976b54c5c99a739a3819f49f02d69df3ea2ca2aff47d5c/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8177002868d1426305bb5de1e138161c2ec9eb2d939be38291d7c431c4712df8", size = 402633, upload-time = "2025-08-27T12:16:22.548Z" }, + { url = "https://files.pythonhosted.org/packages/0f/0e/237948c1f425e23e0cf5a566d702652a6e55c6f8fbd332a1792eb7043daf/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:008b839781d6c9bf3b6a8984d1d8e56f0ec46dc56df61fd669c49b58ae800400", size = 384867, upload-time = "2025-08-27T12:16:24.29Z" }, + { url = "https://files.pythonhosted.org/packages/d6/0a/da0813efcd998d260cbe876d97f55b0f469ada8ba9cbc47490a132554540/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:a55b9132bb1ade6c734ddd2759c8dc132aa63687d259e725221f106b83a0e485", size = 401791, upload-time = "2025-08-27T12:16:25.954Z" }, + { url = "https://files.pythonhosted.org/packages/51/78/c6c9e8a8aaca416a6f0d1b6b4a6ee35b88fe2c5401d02235d0a056eceed2/rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a46fdec0083a26415f11d5f236b79fa1291c32aaa4a17684d82f7017a1f818b1", size = 419525, upload-time = "2025-08-27T12:16:27.659Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/5af37e1d71487cf6d56dd1420dc7e0c2732c1b6ff612aa7a88374061c0a8/rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8a63b640a7845f2bdd232eb0d0a4a2dd939bcdd6c57e6bb134526487f3160ec5", size = 559255, upload-time = "2025-08-27T12:16:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/40/7f/8b7b136069ef7ac3960eda25d832639bdb163018a34c960ed042dd1707c8/rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7e32721e5d4922deaaf963469d795d5bde6093207c52fec719bd22e5d1bedbc4", size = 590384, upload-time = "2025-08-27T12:16:31.005Z" }, + { url = "https://files.pythonhosted.org/packages/d8/06/c316d3f6ff03f43ccb0eba7de61376f8ec4ea850067dddfafe98274ae13c/rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2c426b99a068601b5f4623573df7a7c3d72e87533a2dd2253353a03e7502566c", size = 555959, upload-time = "2025-08-27T12:16:32.73Z" }, + { url = "https://files.pythonhosted.org/packages/60/94/384cf54c430b9dac742bbd2ec26c23feb78ded0d43d6d78563a281aec017/rpds_py-0.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4fc9b7fe29478824361ead6e14e4f5aed570d477e06088826537e202d25fe859", size = 228784, upload-time = "2025-08-27T12:16:34.428Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "joblib", marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "threadpoolctl", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/a5/4ae3b3a0755f7b35a280ac90b28817d1f380318973cff14075ab41ef50d9/scikit_learn-1.6.1.tar.gz", hash = "sha256:b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e", size = 7068312, upload-time = "2025-01-10T08:07:55.348Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/3a/f4597eb41049110b21ebcbb0bcb43e4035017545daa5eedcfeb45c08b9c5/scikit_learn-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d056391530ccd1e501056160e3c9673b4da4805eb67eb2bdf4e983e1f9c9204e", size = 12067702, upload-time = "2025-01-10T08:05:56.515Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/0423e5e1fd1c6ec5be2352ba05a537a473c1677f8188b9306097d684b327/scikit_learn-1.6.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0c8d036eb937dbb568c6242fa598d551d88fb4399c0344d95c001980ec1c7d36", size = 11112765, upload-time = "2025-01-10T08:06:00.272Z" }, + { url = "https://files.pythonhosted.org/packages/70/95/d5cb2297a835b0f5fc9a77042b0a2d029866379091ab8b3f52cc62277808/scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8634c4bd21a2a813e0a7e3900464e6d593162a29dd35d25bdf0103b3fce60ed5", size = 12643991, upload-time = "2025-01-10T08:06:04.813Z" }, + { url = "https://files.pythonhosted.org/packages/b7/91/ab3c697188f224d658969f678be86b0968ccc52774c8ab4a86a07be13c25/scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:775da975a471c4f6f467725dff0ced5c7ac7bda5e9316b260225b48475279a1b", size = 13497182, upload-time = "2025-01-10T08:06:08.42Z" }, + { url = "https://files.pythonhosted.org/packages/17/04/d5d556b6c88886c092cc989433b2bab62488e0f0dafe616a1d5c9cb0efb1/scikit_learn-1.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:8a600c31592bd7dab31e1c61b9bbd6dea1b3433e67d264d17ce1017dbdce8002", size = 11125517, upload-time = "2025-01-10T08:06:12.783Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/e291c29670795406a824567d1dfc91db7b699799a002fdaa452bceea8f6e/scikit_learn-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72abc587c75234935e97d09aa4913a82f7b03ee0b74111dcc2881cba3c5a7b33", size = 12102620, upload-time = "2025-01-10T08:06:16.675Z" }, + { url = "https://files.pythonhosted.org/packages/25/92/ee1d7a00bb6b8c55755d4984fd82608603a3cc59959245068ce32e7fb808/scikit_learn-1.6.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b3b00cdc8f1317b5f33191df1386c0befd16625f49d979fe77a8d44cae82410d", size = 11116234, upload-time = "2025-01-10T08:06:21.83Z" }, + { url = "https://files.pythonhosted.org/packages/30/cd/ed4399485ef364bb25f388ab438e3724e60dc218c547a407b6e90ccccaef/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc4765af3386811c3ca21638f63b9cf5ecf66261cc4815c1db3f1e7dc7b79db2", size = 12592155, upload-time = "2025-01-10T08:06:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/a8/f3/62fc9a5a659bb58a03cdd7e258956a5824bdc9b4bb3c5d932f55880be569/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25fc636bdaf1cc2f4a124a116312d837148b5e10872147bdaf4887926b8c03d8", size = 13497069, upload-time = "2025-01-10T08:06:32.515Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/c5b78606743a1f28eae8f11973de6613a5ee87366796583fb74c67d54939/scikit_learn-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:fa909b1a36e000a03c382aade0bd2063fd5680ff8b8e501660c0f59f021a6415", size = 11139809, upload-time = "2025-01-10T08:06:35.514Z" }, + { url = "https://files.pythonhosted.org/packages/0a/18/c797c9b8c10380d05616db3bfb48e2a3358c767affd0857d56c2eb501caa/scikit_learn-1.6.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:926f207c804104677af4857b2c609940b743d04c4c35ce0ddc8ff4f053cddc1b", size = 12104516, upload-time = "2025-01-10T08:06:40.009Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b7/2e35f8e289ab70108f8cbb2e7a2208f0575dc704749721286519dcf35f6f/scikit_learn-1.6.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c2cae262064e6a9b77eee1c8e768fc46aa0b8338c6a8297b9b6759720ec0ff2", size = 11167837, upload-time = "2025-01-10T08:06:43.305Z" }, + { url = "https://files.pythonhosted.org/packages/a4/f6/ff7beaeb644bcad72bcfd5a03ff36d32ee4e53a8b29a639f11bcb65d06cd/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1061b7c028a8663fb9a1a1baf9317b64a257fcb036dae5c8752b2abef31d136f", size = 12253728, upload-time = "2025-01-10T08:06:47.618Z" }, + { url = "https://files.pythonhosted.org/packages/29/7a/8bce8968883e9465de20be15542f4c7e221952441727c4dad24d534c6d99/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e69fab4ebfc9c9b580a7a80111b43d214ab06250f8a7ef590a4edf72464dd86", size = 13147700, upload-time = "2025-01-10T08:06:50.888Z" }, + { url = "https://files.pythonhosted.org/packages/62/27/585859e72e117fe861c2079bcba35591a84f801e21bc1ab85bce6ce60305/scikit_learn-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:70b1d7e85b1c96383f872a519b3375f92f14731e279a7b4c6cfd650cf5dffc52", size = 11110613, upload-time = "2025-01-10T08:06:54.115Z" }, + { url = "https://files.pythonhosted.org/packages/d2/37/b305b759cc65829fe1b8853ff3e308b12cdd9d8884aa27840835560f2b42/scikit_learn-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6849dd3234e87f55dce1db34c89a810b489ead832aaf4d4550b7ea85628be6c1", size = 12101868, upload-time = "2025-01-10T08:07:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/83/74/f64379a4ed5879d9db744fe37cfe1978c07c66684d2439c3060d19a536d8/scikit_learn-1.6.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e7be3fa5d2eb9be7d77c3734ff1d599151bb523674be9b834e8da6abe132f44e", size = 11144062, upload-time = "2025-01-10T08:07:37.67Z" }, + { url = "https://files.pythonhosted.org/packages/fd/dc/d5457e03dc9c971ce2b0d750e33148dd060fefb8b7dc71acd6054e4bb51b/scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44a17798172df1d3c1065e8fcf9019183f06c87609b49a124ebdf57ae6cb0107", size = 12693173, upload-time = "2025-01-10T08:07:42.713Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/b1d2188967c3204c78fa79c9263668cf1b98060e8e58d1a730fe5b2317bb/scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b7a3b86e411e4bce21186e1c180d792f3d99223dcfa3b4f597ecc92fa1a422", size = 13518605, upload-time = "2025-01-10T08:07:46.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d8/8d603bdd26601f4b07e2363032b8565ab82eb857f93d86d0f7956fcf4523/scikit_learn-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7a73d457070e3318e32bdb3aa79a8d990474f19035464dfd8bede2883ab5dc3b", size = 11155078, upload-time = "2025-01-10T08:07:51.376Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "joblib", marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "threadpoolctl", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, + { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, +] + +[[package]] +name = "scipy" +version = "1.13.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/00/48c2f661e2816ccf2ecd77982f6605b2950afe60f60a52b4cbbc2504aa8f/scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c", size = 57210720, upload-time = "2024-05-23T03:29:26.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/59/41b2529908c002ade869623b87eecff3e11e3ce62e996d0bdcb536984187/scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca", size = 39328076, upload-time = "2024-05-23T03:19:01.687Z" }, + { url = "https://files.pythonhosted.org/packages/d5/33/f1307601f492f764062ce7dd471a14750f3360e33cd0f8c614dae208492c/scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f", size = 30306232, upload-time = "2024-05-23T03:19:09.089Z" }, + { url = "https://files.pythonhosted.org/packages/c0/66/9cd4f501dd5ea03e4a4572ecd874936d0da296bd04d1c45ae1a4a75d9c3a/scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989", size = 33743202, upload-time = "2024-05-23T03:19:15.138Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ba/7255e5dc82a65adbe83771c72f384d99c43063648456796436c9a5585ec3/scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f", size = 38577335, upload-time = "2024-05-23T03:19:21.984Z" }, + { url = "https://files.pythonhosted.org/packages/49/a5/bb9ded8326e9f0cdfdc412eeda1054b914dfea952bda2097d174f8832cc0/scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94", size = 38820728, upload-time = "2024-05-23T03:19:28.225Z" }, + { url = "https://files.pythonhosted.org/packages/12/30/df7a8fcc08f9b4a83f5f27cfaaa7d43f9a2d2ad0b6562cced433e5b04e31/scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54", size = 46210588, upload-time = "2024-05-23T03:19:35.661Z" }, + { url = "https://files.pythonhosted.org/packages/b4/15/4a4bb1b15bbd2cd2786c4f46e76b871b28799b67891f23f455323a0cdcfb/scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9", size = 39333805, upload-time = "2024-05-23T03:19:43.081Z" }, + { url = "https://files.pythonhosted.org/packages/ba/92/42476de1af309c27710004f5cdebc27bec62c204db42e05b23a302cb0c9a/scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326", size = 30317687, upload-time = "2024-05-23T03:19:48.799Z" }, + { url = "https://files.pythonhosted.org/packages/80/ba/8be64fe225360a4beb6840f3cbee494c107c0887f33350d0a47d55400b01/scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299", size = 33694638, upload-time = "2024-05-23T03:19:55.104Z" }, + { url = "https://files.pythonhosted.org/packages/36/07/035d22ff9795129c5a847c64cb43c1fa9188826b59344fee28a3ab02e283/scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa", size = 38569931, upload-time = "2024-05-23T03:20:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/d9/10/f9b43de37e5ed91facc0cfff31d45ed0104f359e4f9a68416cbf4e790241/scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59", size = 38838145, upload-time = "2024-05-23T03:20:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/4a/48/4513a1a5623a23e95f94abd675ed91cfb19989c58e9f6f7d03990f6caf3d/scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b", size = 46196227, upload-time = "2024-05-23T03:20:16.433Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7b/fb6b46fbee30fc7051913068758414f2721003a89dd9a707ad49174e3843/scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1", size = 39357301, upload-time = "2024-05-23T03:20:23.538Z" }, + { url = "https://files.pythonhosted.org/packages/dc/5a/2043a3bde1443d94014aaa41e0b50c39d046dda8360abd3b2a1d3f79907d/scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d", size = 30363348, upload-time = "2024-05-23T03:20:29.885Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cb/26e4a47364bbfdb3b7fb3363be6d8a1c543bcd70a7753ab397350f5f189a/scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627", size = 33406062, upload-time = "2024-05-23T03:20:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/88/ab/6ecdc526d509d33814835447bbbeedbebdec7cca46ef495a61b00a35b4bf/scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884", size = 38218311, upload-time = "2024-05-23T03:20:42.086Z" }, + { url = "https://files.pythonhosted.org/packages/0b/00/9f54554f0f8318100a71515122d8f4f503b1a2c4b4cfab3b4b68c0eb08fa/scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16", size = 38442493, upload-time = "2024-05-23T03:20:48.292Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/963384e90733e08eac978cd103c34df181d1fec424de383cdc443f418dd4/scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949", size = 45910955, upload-time = "2024-05-23T03:20:55.091Z" }, + { url = "https://files.pythonhosted.org/packages/7f/29/c2ea58c9731b9ecb30b6738113a95d147e83922986b34c685b8f6eefde21/scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5", size = 39352927, upload-time = "2024-05-23T03:21:01.95Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c0/e71b94b20ccf9effb38d7147c0064c08c622309fd487b1b677771a97d18c/scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24", size = 30324538, upload-time = "2024-05-23T03:21:07.634Z" }, + { url = "https://files.pythonhosted.org/packages/6d/0f/aaa55b06d474817cea311e7b10aab2ea1fd5d43bc6a2861ccc9caec9f418/scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004", size = 33732190, upload-time = "2024-05-23T03:21:14.41Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/d0ad1a96f80962ba65e2ce1de6a1e59edecd1f0a7b55990ed208848012e0/scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d", size = 38612244, upload-time = "2024-05-23T03:21:21.827Z" }, + { url = "https://files.pythonhosted.org/packages/8d/02/1165905f14962174e6569076bcc3315809ae1291ed14de6448cc151eedfd/scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c", size = 38845637, upload-time = "2024-05-23T03:21:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/3e/77/dab54fe647a08ee4253963bcd8f9cf17509c8ca64d6335141422fe2e2114/scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2", size = 46227440, upload-time = "2024-05-23T03:21:35.888Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/ca/d8ace4f98322d01abcd52d381134344bf7b431eba7ed8b42bdea5a3c2ac9/scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb", size = 30597883, upload-time = "2025-10-28T17:38:54.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/5f/6f37d7439de1455ce9c5a556b8d1db0979f03a796c030bafdf08d35b7bf9/scipy-1.16.3-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:40be6cf99e68b6c4321e9f8782e7d5ff8265af28ef2cd56e9c9b2638fa08ad97", size = 36630881, upload-time = "2025-10-28T17:31:47.104Z" }, + { url = "https://files.pythonhosted.org/packages/7c/89/d70e9f628749b7e4db2aa4cd89735502ff3f08f7b9b27d2e799485987cd9/scipy-1.16.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:8be1ca9170fcb6223cc7c27f4305d680ded114a1567c0bd2bfcbf947d1b17511", size = 28941012, upload-time = "2025-10-28T17:31:53.411Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a8/0e7a9a6872a923505dbdf6bb93451edcac120363131c19013044a1e7cb0c/scipy-1.16.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bea0a62734d20d67608660f69dcda23e7f90fb4ca20974ab80b6ed40df87a005", size = 20931935, upload-time = "2025-10-28T17:31:57.361Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c7/020fb72bd79ad798e4dbe53938543ecb96b3a9ac3fe274b7189e23e27353/scipy-1.16.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:2a207a6ce9c24f1951241f4693ede2d393f59c07abc159b2cb2be980820e01fb", size = 23534466, upload-time = "2025-10-28T17:32:01.875Z" }, + { url = "https://files.pythonhosted.org/packages/be/a0/668c4609ce6dbf2f948e167836ccaf897f95fb63fa231c87da7558a374cd/scipy-1.16.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:532fb5ad6a87e9e9cd9c959b106b73145a03f04c7d57ea3e6f6bb60b86ab0876", size = 33593618, upload-time = "2025-10-28T17:32:06.902Z" }, + { url = "https://files.pythonhosted.org/packages/ca/6e/8942461cf2636cdae083e3eb72622a7fbbfa5cf559c7d13ab250a5dbdc01/scipy-1.16.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0151a0749efeaaab78711c78422d413c583b8cdd2011a3c1d6c794938ee9fdb2", size = 35899798, upload-time = "2025-10-28T17:32:12.665Z" }, + { url = "https://files.pythonhosted.org/packages/79/e8/d0f33590364cdbd67f28ce79368b373889faa4ee959588beddf6daef9abe/scipy-1.16.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b7180967113560cca57418a7bc719e30366b47959dd845a93206fbed693c867e", size = 36226154, upload-time = "2025-10-28T17:32:17.961Z" }, + { url = "https://files.pythonhosted.org/packages/39/c1/1903de608c0c924a1749c590064e65810f8046e437aba6be365abc4f7557/scipy-1.16.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:deb3841c925eeddb6afc1e4e4a45e418d19ec7b87c5df177695224078e8ec733", size = 38878540, upload-time = "2025-10-28T17:32:23.907Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d0/22ec7036ba0b0a35bccb7f25ab407382ed34af0b111475eb301c16f8a2e5/scipy-1.16.3-cp311-cp311-win_amd64.whl", hash = "sha256:53c3844d527213631e886621df5695d35e4f6a75f620dca412bcd292f6b87d78", size = 38722107, upload-time = "2025-10-28T17:32:29.921Z" }, + { url = "https://files.pythonhosted.org/packages/7b/60/8a00e5a524bb3bf8898db1650d350f50e6cffb9d7a491c561dc9826c7515/scipy-1.16.3-cp311-cp311-win_arm64.whl", hash = "sha256:9452781bd879b14b6f055b26643703551320aa8d79ae064a71df55c00286a184", size = 25506272, upload-time = "2025-10-28T17:32:34.577Z" }, + { url = "https://files.pythonhosted.org/packages/40/41/5bf55c3f386b1643812f3a5674edf74b26184378ef0f3e7c7a09a7e2ca7f/scipy-1.16.3-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6", size = 36659043, upload-time = "2025-10-28T17:32:40.285Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0f/65582071948cfc45d43e9870bf7ca5f0e0684e165d7c9ef4e50d783073eb/scipy-1.16.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07", size = 28898986, upload-time = "2025-10-28T17:32:45.325Z" }, + { url = "https://files.pythonhosted.org/packages/96/5e/36bf3f0ac298187d1ceadde9051177d6a4fe4d507e8f59067dc9dd39e650/scipy-1.16.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9", size = 20889814, upload-time = "2025-10-28T17:32:49.277Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/178d9d0c35394d5d5211bbff7ac4f2986c5488b59506fef9e1de13ea28d3/scipy-1.16.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686", size = 23565795, upload-time = "2025-10-28T17:32:53.337Z" }, + { url = "https://files.pythonhosted.org/packages/fa/46/d1146ff536d034d02f83c8afc3c4bab2eddb634624d6529a8512f3afc9da/scipy-1.16.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203", size = 33349476, upload-time = "2025-10-28T17:32:58.353Z" }, + { url = "https://files.pythonhosted.org/packages/79/2e/415119c9ab3e62249e18c2b082c07aff907a273741b3f8160414b0e9193c/scipy-1.16.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1", size = 35676692, upload-time = "2025-10-28T17:33:03.88Z" }, + { url = "https://files.pythonhosted.org/packages/27/82/df26e44da78bf8d2aeaf7566082260cfa15955a5a6e96e6a29935b64132f/scipy-1.16.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe", size = 36019345, upload-time = "2025-10-28T17:33:09.773Z" }, + { url = "https://files.pythonhosted.org/packages/82/31/006cbb4b648ba379a95c87262c2855cd0d09453e500937f78b30f02fa1cd/scipy-1.16.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70", size = 38678975, upload-time = "2025-10-28T17:33:15.809Z" }, + { url = "https://files.pythonhosted.org/packages/c2/7f/acbd28c97e990b421af7d6d6cd416358c9c293fc958b8529e0bd5d2a2a19/scipy-1.16.3-cp312-cp312-win_amd64.whl", hash = "sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc", size = 38555926, upload-time = "2025-10-28T17:33:21.388Z" }, + { url = "https://files.pythonhosted.org/packages/ce/69/c5c7807fd007dad4f48e0a5f2153038dc96e8725d3345b9ee31b2b7bed46/scipy-1.16.3-cp312-cp312-win_arm64.whl", hash = "sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2", size = 25463014, upload-time = "2025-10-28T17:33:25.975Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "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 = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tomli" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, + { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, + { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, + { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, + { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "urllib3" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/43/554c2569b62f49350597348fc3ac70f786e3c32e7f19d266e19817812dd3/urllib3-2.6.0.tar.gz", hash = "sha256:cb9bcef5a4b345d5da5d145dc3e30834f58e8018828cbc724d30b4cb7d4d49f1", size = 432585, upload-time = "2025-12-05T15:08:47.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/1a/9ffe814d317c5224166b23e7c47f606d6e473712a2fad0f704ea9b99f246/urllib3-2.6.0-py3-none-any.whl", hash = "sha256:c90f7a39f716c572c4e3e58509581ebd83f9b59cced005b7db7ad2d22b0db99f", size = 131083, upload-time = "2025-12-05T15:08:45.983Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/ea/b0f8eeb287f8df9066e56e831c7824ac6bab645dd6c7a8f4b2d767944f9b/werkzeug-3.1.4.tar.gz", hash = "sha256:cd3cd98b1b92dc3b7b3995038826c68097dcb16f9baa63abe35f20eafeb9fe5e", size = 864687, upload-time = "2025-11-29T02:15:22.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/f9/9e082990c2585c744734f85bec79b5dae5df9c974ffee58fe421652c8e91/werkzeug-3.1.4-py3-none-any.whl", hash = "sha256:2ad50fb9ed09cc3af22c54698351027ace879a0b60a3b5edf5730b2f7d876905", size = 224960, upload-time = "2025-11-29T02:15:21.13Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] From 2f94cef50ea6b197a220d0d5726f0c31be1a8db7 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 9 Dec 2025 11:28:34 -0500 Subject: [PATCH 23/27] set brightness on pixelblaze, fix summary bug --- marimapper/backends/pixelblaze/pixelblaze_backend.py | 11 ++++++++--- marimapper/scripts/results_cli.py | 9 +++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index e6eab20..ef6f136 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -116,10 +116,9 @@ def set_led(self, led_index: int, on: bool): def set_leds(self, buffer: list[list[int]]): """Set arbitrary pixel colors. Buffer format: [[r, g, b], ...] where index is position in list""" - # If setting all black or empty... + # If setting all black or empty, treat as "reset"... if not buffer or all(rgb == [0, 0, 0] for rgb in buffer): - self.switch_to_mapper_pattern() - return + self.reset() try: self.render_pattern(RGB_PATTERN) @@ -134,6 +133,12 @@ def set_leds(self, buffer: list[list[int]]): except Exception as e: logger.error(f"Failed to set RGB pixels on PixelBlaze: {e}") + + def reset(self): + self.pb.setBrightnessSlider(1.0) + self.switch_to_mapper_pattern() + + def set_map_coordinates(self, pixelmap: list): result = self.pb.setMapCoordinates(pixelmap) if result is False: diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 8074bff..3a5bfc9 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -72,10 +72,15 @@ def main(dir): all_2d_indices = set(data_2d_log.keys()) existing_3d_indices = set(map_df["index"].astype(int)) - missing_indices = sorted(list(all_2d_indices - existing_3d_indices)) + + # Infer expected total from max index found in either 2D or 3D data + max_index = max(max(all_2d_indices), max(existing_3d_indices)) + expected_indices = set(range(max_index + 1)) + missing_indices = sorted(list(expected_indices - existing_3d_indices)) # Report status log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") + log(f"Expected Total: {len(expected_indices)} (indices 0-{max_index})") log(f"3D Indices Mapped: {len(existing_3d_indices)}\n") if not missing_indices: @@ -86,7 +91,7 @@ def main(dir): # Display missing indices table using pandas missing_table_data = [ - [idx, len(data_2d_log[idx])] for idx in missing_indices + [idx, len(data_2d_log.get(idx, []))] for idx in missing_indices ] df_missing = pd.DataFrame(missing_table_data, columns=["Index", "# Views"]) log(df_missing.to_string(index=False) + "\n") From 87d82395cd4ebb455512416ebaeaf3dff1fbd9de Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 9 Dec 2025 11:56:28 -0500 Subject: [PATCH 24/27] remove click and pandas use --- marimapper/scripts/results_cli.py | 183 +++++++++++++++--------------- 1 file changed, 91 insertions(+), 92 deletions(-) diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 3a5bfc9..389da5e 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -1,106 +1,105 @@ -import click +import argparse import sys import os import glob -import pandas as pd - - -def log(*args, **kwargs): - click.secho(*args, err=True, **kwargs) +import csv +def log(msg, **kwargs): + sys.stderr.write(str(msg) + "\n") def scan_2d_indices(data_dir): """Scan all 2D detection files in directory.""" - old_cwd = os.getcwd() - try: - os.chdir(data_dir) - files = glob.glob("./led_map_2d_*.csv") - detection_log = {} - - for fname in files: - df = pd.read_csv(fname) - for _, row in df.iterrows(): + search_pattern = os.path.join(data_dir, "led_map_2d_*.csv") + files = glob.glob(search_pattern) + detection_log = {} + + for fname in files: + with open(fname, mode='r', newline='', encoding='utf-8') as f: + reader = csv.DictReader(f) + for row in reader: idx = int(row["index"]) if idx not in detection_log: detection_log[idx] = [] detection_log[idx].append(os.path.basename(fname)) - return detection_log, files - finally: - os.chdir(old_cwd) - - -@click.command() -@click.option( - "--dir", - "-d", - default=".", - type=click.Path(exists=True, file_okay=False, dir_okay=True), - help="Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)", -) -def main(dir): - """ - Summarize LED mapping results. - - Shows mapping status (2D detections vs 3D calibration). - - Outputs final 3D mapping as CSV to stdout (all logging goes to stderr). - """ - old_cwd = os.getcwd() - try: - # Check if required files exist - map_file = os.path.join(dir, "led_map_3d.csv") - if not os.path.exists(map_file): - log(f"Error: {map_file} not found", fg="red") - sys.exit(1) - - os.chdir(dir) - - # Load existing 3D map - try: - map_df = pd.read_csv("led_map_3d.csv") - except Exception as e: - log(f"Error loading 3D map: {e}", fg="red") - sys.exit(1) - - # Scan 2D detections - try: - data_2d_log, files_2d = scan_2d_indices(".") - except Exception as e: - log(f"Error scanning 2D files: {e}", fg="red") - sys.exit(1) - - all_2d_indices = set(data_2d_log.keys()) - existing_3d_indices = set(map_df["index"].astype(int)) - - # Infer expected total from max index found in either 2D or 3D data - max_index = max(max(all_2d_indices), max(existing_3d_indices)) - expected_indices = set(range(max_index + 1)) - missing_indices = sorted(list(expected_indices - existing_3d_indices)) - - # Report status - log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") - log(f"Expected Total: {len(expected_indices)} (indices 0-{max_index})") - log(f"3D Indices Mapped: {len(existing_3d_indices)}\n") - - if not missing_indices: - log("Status: COMPLETE") - else: - log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") - log("Try --interpolation_max_error and --interpolation_max_fill") - - # Display missing indices table using pandas - missing_table_data = [ - [idx, len(data_2d_log.get(idx, []))] for idx in missing_indices - ] - df_missing = pd.DataFrame(missing_table_data, columns=["Index", "# Views"]) - log(df_missing.to_string(index=False) + "\n") - - map_df.to_csv(sys.stdout, index=False) - - finally: - os.chdir(old_cwd) - + return detection_log, files + +def main(): + parser = argparse.ArgumentParser( + description="Summarize LED mapping results.\n\nShows mapping status (2D detections vs 3D calibration).\nOutputs final 3D mapping as CSV to stdout (all logging goes to stderr).", + formatter_class=argparse.RawDescriptionHelpFormatter + ) + + parser.add_argument( + "--dir", + "-d", + default=".", + help="Directory containing led_map_3d.csv and led_map_2d_*.csv files (default: current directory)", + ) + + args = parser.parse_args() + + # Validate directory + if not os.path.isdir(args.dir): + log(f"Error: Directory '{args.dir}' does not exist.") + sys.exit(1) + + # Check if required files exist + map_file_path = os.path.join(args.dir, "led_map_3d.csv") + if not os.path.exists(map_file_path): + log(f"Error: {map_file_path} not found") + sys.exit(1) + + # Load existing 3D map + existing_3d_indices = set() + map_rows = [] + map_fieldnames = [] + + with open(map_file_path, mode='r', newline='', encoding='utf-8') as f: + reader = csv.DictReader(f) + map_fieldnames = reader.fieldnames + for row in reader: + map_rows.append(row) + existing_3d_indices.add(int(row["index"])) + + # Scan 2D detections + data_2d_log, files_2d = scan_2d_indices(args.dir) + all_2d_indices = set(data_2d_log.keys()) + + # Infer expected total from max index found in either 2D or 3D data + if not all_2d_indices and not existing_3d_indices: + max_index = -1 + else: + max_val_2d = max(all_2d_indices) if all_2d_indices else -1 + max_val_3d = max(existing_3d_indices) if existing_3d_indices else -1 + max_index = max(max_val_2d, max_val_3d) + + expected_indices = set(range(max_index + 1)) + missing_indices = sorted(list(expected_indices - existing_3d_indices)) + + # Report status + log(f"2D Indices Found: {len(all_2d_indices)} across {len(files_2d)} scans") + log(f"Expected Total: {len(expected_indices)} (indices 0-{max_index})") + log(f"Total 3D Indices Mapped: {len(existing_3d_indices)}\n") + + if not missing_indices: + log("Status: COMPLETE") + else: + log(f"Status: INCOMPLETE ({len(missing_indices)} missing)") + log("(Try --interpolation_max_error and --interpolation_max_fill)\n") + + # Display missing indices table + idx_width, view_width = len("Index"), len("# Views") + rows = [(idx, len(data_2d_log.get(idx, []))) for idx in missing_indices] + log(f"{'Index':<{idx_width}} {'# Views':>{view_width}}") + for idx, count in rows: + log(f"{idx:<{idx_width}} {count:>{view_width}}") + log("") + + # Output final 3D mapping as CSV to stdout + writer = csv.DictWriter(sys.stdout, fieldnames=map_fieldnames) + writer.writeheader() + writer.writerows(map_rows) if __name__ == "__main__": - main() + main() \ No newline at end of file From 6af87a7aa5055bf76a2983dc601e2e3d7c277382 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 9 Dec 2025 13:27:22 -0500 Subject: [PATCH 25/27] remove my dumbness and rushing for window nightmares, vastly simplified --- docs/backends/PixelBlaze.md | 2 +- marimapper/detector.py | 47 +++++++++++++++++++++++---------- marimapper/utils.py | 41 +++++++--------------------- marimapper/visualize_process.py | 4 +-- 4 files changed, 46 insertions(+), 48 deletions(-) diff --git a/docs/backends/PixelBlaze.md b/docs/backends/PixelBlaze.md index f4465b1..270cf74 100644 --- a/docs/backends/PixelBlaze.md +++ b/docs/backends/PixelBlaze.md @@ -40,7 +40,7 @@ marimapper_upload_mapping_to_pixelblaze --csv_file led_map_3d.csv Or with results CLI, plus `pb` CLI: ```bash ( echo '[' ; marimapper_results \ - | tail -n+2 | cut -d, -f 5-7 \ + | tail -n+2 | cut -d, -f 2-4 \ | awk '{print (NR==1 ? "[" : "],[" ) $0 }' ; \ echo ']]' ) | pb map ``` diff --git a/marimapper/detector.py b/marimapper/detector.py index bf0a18e..98274ae 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -3,18 +3,28 @@ import cv2 import time from typing import Optional +from dataclasses import dataclass import numpy as np from multiprocessing import get_logger from marimapper.camera import Camera from marimapper.timeout_controller import TimeoutController from marimapper.led import Point2D, LED2D -from marimapper.utils import position_window +from marimapper.utils import window_config logger = get_logger() +@dataclass +class _Window: + name: str = "MariMapper - Detector" + camera_native_aspect_ratio: float = -1 + initial_height: int = -1 + +_win = _Window() + + def contour_brightness(image: np.ndarray, contour: np.ndarray) -> int: """Calculate the sum of all pixels within a contour.""" mask = np.zeros(image.shape, dtype=np.uint8) @@ -89,25 +99,34 @@ def draw_led_detections(image: cv2.Mat, led_detection: Optional[Point2D]) -> np. return render_image -def show_image(image: np.ndarray) -> None: - window_name = "MariMapper - Detector" +# If this is our first render and cv2.imshow(), make sure the window is created +def _init_win_if_needed(image: np.ndarray) -> None: + if _win.initial_height <= 0: + cam_h, cam_w = image.shape[:2] + cam_aspect_ratio = cam_w / cam_h - x, y, _, target_height = position_window(window_name, 320, 0, 960, 540) + x, y, _, target_win_height = window_config(_win.name, 320, 0, 960, 540) + target_win_width = int(target_win_height * cam_aspect_ratio) + cv2.namedWindow(_win.name, cv2.WINDOW_NORMAL) + cv2.resizeWindow(_win.name, target_win_width, target_win_height) + cv2.moveWindow(_win.name, x, y) + + _win.initial_height = target_win_height + _win.camera_native_aspect_ratio = cam_aspect_ratio - native_h, native_w = image.shape[:2] - aspect_ratio = native_w / native_h - target_width = int(target_height * aspect_ratio) - if not getattr(show_image, "setup_done", False): - cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) - cv2.resizeWindow(window_name, target_width, target_height) - cv2.moveWindow(window_name, x, y) - show_image.setup_done = True +def show_image(image: np.ndarray) -> None: + _init_win_if_needed(image) - display_image = cv2.resize(image, (target_width, target_height)) + # Resizing actually seems to perform better than not (more responsive too) + # We only need to resize the display image (not window), and can use the initial height, + # user movements are still respected + image_height = _win.initial_height + image_width = int(image_height * _win.camera_native_aspect_ratio) + display_image = cv2.resize(image, (image_width, image_height)) - cv2.imshow(window_name, display_image) + cv2.imshow(_win.name, display_image) key = cv2.waitKey(1) if key == 27: # esc diff --git a/marimapper/utils.py b/marimapper/utils.py index f21ce8b..18c9b40 100644 --- a/marimapper/utils.py +++ b/marimapper/utils.py @@ -54,35 +54,14 @@ def __exit__(self, *_): self.errnull_file.close() -CONFIG_DIR = Path.home() / ".config" / "marimapper" / "windows" -_CACHE = {} - - -def position_window(name: str, x: int, y: int, w: int, h: int) -> list[int]: - """ - Returns [x, y, width, height]. - Checks memory cache first. - If not in cache, checks disk. - If not on disk, returns defaults immediately. - """ - if name in _CACHE: - return _CACHE[name] - - clean_name = re.sub(r"[^\w\-_\. ]", "_", name) - file_path = CONFIG_DIR / f"{clean_name}.json" - - defaults = {"x": x, "y": y, "width": w, "height": h} - config = defaults.copy() - - if file_path.exists(): - try: - with open(file_path, "r") as f: +# Look for stored window position and size settings, otherwise return supplied defaults +def window_config(name: str, x: int, y: int, w: int, h: int) -> list[int]: + try: + with open(Path.home() / ".config" / "marimapper.json", "r") as f: data = json.load(f) - config.update(data) - except Exception: - pass - - # Return as list [x, y, w, h] - result = [config["x"], config["y"], config["width"], config["height"]] - _CACHE[name] = result - return result + window_cfg = data["window"] and data["window"][name] + if window_cfg: + return [window_cfg["x"], window_cfg["y"], window_cfg["width"], window_cfg["height"]] + except Exception: + pass + return [x, y, w, h] diff --git a/marimapper/visualize_process.py b/marimapper/visualize_process.py index e04ab8f..bcef410 100644 --- a/marimapper/visualize_process.py +++ b/marimapper/visualize_process.py @@ -3,7 +3,7 @@ from multiprocessing import get_logger, Process, Event from marimapper.queues import Queue3D from marimapper.led import LED3D, View, get_next, get_distance -from marimapper.utils import position_window +from marimapper.utils import window_config import time logger = get_logger() @@ -70,7 +70,7 @@ def run(self): def initialise_visualiser__(self): logger.debug("Renderer3D process initialising visualiser") window_name = "MariMapper" - x, y, w, h = position_window(window_name, 0, 0, 640, 640) + x, y, w, h = window_config(window_name, 0, 0, 640, 640) self._vis = ( open3d.visualization.Visualizer() From 0f32de6e4d99919c60145a1a4d0f21ee2a12f0b6 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 9 Dec 2025 13:45:13 -0500 Subject: [PATCH 26/27] run lint --- .../backends/pixelblaze/pixelblaze_backend.py | 2 -- marimapper/detector.py | 4 ++-- marimapper/scripts/results_cli.py | 14 +++++++++----- marimapper/utils.py | 8 ++++---- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/marimapper/backends/pixelblaze/pixelblaze_backend.py b/marimapper/backends/pixelblaze/pixelblaze_backend.py index ef6f136..bb5f6f2 100644 --- a/marimapper/backends/pixelblaze/pixelblaze_backend.py +++ b/marimapper/backends/pixelblaze/pixelblaze_backend.py @@ -133,12 +133,10 @@ def set_leds(self, buffer: list[list[int]]): except Exception as e: logger.error(f"Failed to set RGB pixels on PixelBlaze: {e}") - def reset(self): self.pb.setBrightnessSlider(1.0) self.switch_to_mapper_pattern() - def set_map_coordinates(self, pixelmap: list): result = self.pb.setMapCoordinates(pixelmap) if result is False: diff --git a/marimapper/detector.py b/marimapper/detector.py index 98274ae..ceb1e4c 100644 --- a/marimapper/detector.py +++ b/marimapper/detector.py @@ -22,6 +22,7 @@ class _Window: camera_native_aspect_ratio: float = -1 initial_height: int = -1 + _win = _Window() @@ -110,12 +111,11 @@ def _init_win_if_needed(image: np.ndarray) -> None: cv2.namedWindow(_win.name, cv2.WINDOW_NORMAL) cv2.resizeWindow(_win.name, target_win_width, target_win_height) cv2.moveWindow(_win.name, x, y) - + _win.initial_height = target_win_height _win.camera_native_aspect_ratio = cam_aspect_ratio - def show_image(image: np.ndarray) -> None: _init_win_if_needed(image) diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index 389da5e..ebf5997 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -4,9 +4,11 @@ import glob import csv + def log(msg, **kwargs): sys.stderr.write(str(msg) + "\n") + def scan_2d_indices(data_dir): """Scan all 2D detection files in directory.""" search_pattern = os.path.join(data_dir, "led_map_2d_*.csv") @@ -14,7 +16,7 @@ def scan_2d_indices(data_dir): detection_log = {} for fname in files: - with open(fname, mode='r', newline='', encoding='utf-8') as f: + with open(fname, mode="r", newline="", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: idx = int(row["index"]) @@ -24,12 +26,13 @@ def scan_2d_indices(data_dir): return detection_log, files + def main(): parser = argparse.ArgumentParser( description="Summarize LED mapping results.\n\nShows mapping status (2D detections vs 3D calibration).\nOutputs final 3D mapping as CSV to stdout (all logging goes to stderr).", - formatter_class=argparse.RawDescriptionHelpFormatter + formatter_class=argparse.RawDescriptionHelpFormatter, ) - + parser.add_argument( "--dir", "-d", @@ -55,7 +58,7 @@ def main(): map_rows = [] map_fieldnames = [] - with open(map_file_path, mode='r', newline='', encoding='utf-8') as f: + with open(map_file_path, mode="r", newline="", encoding="utf-8") as f: reader = csv.DictReader(f) map_fieldnames = reader.fieldnames for row in reader: @@ -101,5 +104,6 @@ def main(): writer.writeheader() writer.writerows(map_rows) + if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/marimapper/utils.py b/marimapper/utils.py index 18c9b40..de9188f 100644 --- a/marimapper/utils.py +++ b/marimapper/utils.py @@ -58,10 +58,10 @@ def __exit__(self, *_): def window_config(name: str, x: int, y: int, w: int, h: int) -> list[int]: try: with open(Path.home() / ".config" / "marimapper.json", "r") as f: - data = json.load(f) - window_cfg = data["window"] and data["window"][name] - if window_cfg: - return [window_cfg["x"], window_cfg["y"], window_cfg["width"], window_cfg["height"]] + data = json.load(f) + cfg = data["window"] and data["window"][name] + if cfg: + return [cfg["x"], cfg["y"], cfg["width"], cfg["height"]] except Exception: pass return [x, y, w, h] From 2373e5ae9c198bd6f9f623a4014b00254cb39fa6 Mon Sep 17 00:00:00 2001 From: Johnny Marnell Date: Tue, 9 Dec 2025 15:29:33 -0500 Subject: [PATCH 27/27] reeeeeeally need clear, simple, deterministic lint check / command here :( --- marimapper/scripts/results_cli.py | 4 +++- marimapper/utils.py | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/marimapper/scripts/results_cli.py b/marimapper/scripts/results_cli.py index ebf5997..40672ce 100644 --- a/marimapper/scripts/results_cli.py +++ b/marimapper/scripts/results_cli.py @@ -29,7 +29,9 @@ def scan_2d_indices(data_dir): def main(): parser = argparse.ArgumentParser( - description="Summarize LED mapping results.\n\nShows mapping status (2D detections vs 3D calibration).\nOutputs final 3D mapping as CSV to stdout (all logging goes to stderr).", + description="Summarize LED mapping results.\n\n" + "Shows mapping status (2D detections vs 3D calibration).\n" + "Outputs final 3D mapping as CSV to stdout (all logging goes to stderr).", formatter_class=argparse.RawDescriptionHelpFormatter, ) diff --git a/marimapper/utils.py b/marimapper/utils.py index de9188f..96d92fb 100644 --- a/marimapper/utils.py +++ b/marimapper/utils.py @@ -1,7 +1,6 @@ import os import sys import json -import re from pathlib import Path

    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