From 8162af63b6f95cedd7cc122a60a36476b290bf39 Mon Sep 17 00:00:00 2001 From: Jacob Hinkle Date: Thu, 25 Jun 2026 19:08:30 -0400 Subject: [PATCH] Initial commit: fitness agent project - opencode agent (fitness-trainer) for personal training conversations - fitness-workout skill with programming methodology guidelines - workout.py script (1RM, volume, cycle helpers) - logs/ directory for workout and check-in markdown files - inputs/ with user profile (equipment, goals, medical, Juggernaut history) - google-sheets-automation skill for optional Sheets integration - AGENTS.md with setup documentation --- .agents/skills/fitness-workout/SKILL.md | 134 ++++ .../skills/fitness-workout/scripts/workout.py | 119 ++++ .../skills/google-sheets-automation/SKILL.md | 124 ++++ .../google-sheets-automation/scripts/auth.py | 141 ++++ .../scripts/sheets.py | 268 ++++++++ .gitignore | 24 + .gitmodules | 3 + .opencode/agents/fitness-trainer.md | 76 +++ AGENTS.md | 54 ++ design.md | 6 + inputs/Juggernaut training.xlsx | Bin 0 -> 231538 bytes inputs/equipment.md | 23 + inputs/goals.md | 5 + inputs/medical.md | 14 + logs/checkins/.gitkeep | 0 logs/progress/.gitkeep | 0 logs/workouts/.gitkeep | 0 pyproject.toml | 15 + third_party/opencode-awesome-skills | 1 + uv.lock | 642 ++++++++++++++++++ 20 files changed, 1649 insertions(+) create mode 100644 .agents/skills/fitness-workout/SKILL.md create mode 100644 .agents/skills/fitness-workout/scripts/workout.py create mode 100644 .agents/skills/google-sheets-automation/SKILL.md create mode 100644 .agents/skills/google-sheets-automation/scripts/auth.py create mode 100644 .agents/skills/google-sheets-automation/scripts/sheets.py create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .opencode/agents/fitness-trainer.md create mode 100644 AGENTS.md create mode 100644 design.md create mode 100644 inputs/Juggernaut training.xlsx create mode 100644 inputs/equipment.md create mode 100644 inputs/goals.md create mode 100644 inputs/medical.md create mode 100644 logs/checkins/.gitkeep create mode 100644 logs/progress/.gitkeep create mode 100644 logs/workouts/.gitkeep create mode 100644 pyproject.toml create mode 160000 third_party/opencode-awesome-skills create mode 100644 uv.lock diff --git a/.agents/skills/fitness-workout/SKILL.md b/.agents/skills/fitness-workout/SKILL.md new file mode 100644 index 0000000..4118659 --- /dev/null +++ b/.agents/skills/fitness-workout/SKILL.md @@ -0,0 +1,134 @@ +# Fitness Workout Programming Skill + +Provides programming methodology and guidelines for the fitness trainer agent. +Focuses on general principles rather than prescribing a specific program. + +## Volume Landmarks + +Use these as rough guidelines per muscle group per week. Adjust based on the +client's recovery, experience level, and goal: + +| Zone | Sets/week | Purpose | +|------------------------|-----------|---------------------------------| +| Maintenance | 4-6 | Deload, injury management | +| Minimum Effective Vol | 8-10 | Hypertrophy (just enough to grow) | +| Maximum Adaptive Vol | 12-18 | Optimal growth/strength range | +| Maximum Recoverable Vol| 20+ | Advanced only, short-term | + +## Intensity Zones (% of training max / e1RM) + +| Zone | %TM | RPE | Reps in Reserve | Purpose | +|----------|--------|------|-----------------|------------------------| +| Recovery | <50% | <5 | 5+ | Warmup, technique, rehab | +| Endurance| 50-60% | 5-6 | 4-5 | Muscle endurance | +| Hypertrophy | 60-75% | 6-8 | 2-4 | Muscle growth | +| Strength | 75-85% | 7-9 | 1-2 | Neural adaptation | +| Peak | 85%+ | 9-10 | 0-1 | Top-end strength, peaking | + +Training max (TM) is typically 90-95% of actual 1RM. This gives room to +progress without overshooting. + +## Progression Methods + +### Linear Progression +- Add weight each session (e.g., +5lb upper / +10lb lower) +- Works for novices and early intermediates +- Stall after 2-3 missed attempts → reset or switch method + +### Double Progression +- Stay at same weight until you hit the top of the rep range for all sets +- Then add weight and drop to the bottom of the rep range +- Example: 3x8-12 @ 135lb. Add weight when you can do 3x12 + +### Wave Loading (Juggernaut-style) +- Cycle through rep schemes over weeks +- Example: 10s → 8s → 5s → 3s waves, adding weight each wave +- Each wave is 4-5 weeks with increasing intensity, decreasing volume + +### RPE-Based +- Prescribe RPE targets rather than fixed weights +- Auto-regulates based on daily readiness +- Example: 3x5 @ RPE 8 — use whatever weight feels like you have 2 reps in reserve + +## Deload Guidelines + +Deload when: +- 2+ weeks of stalled progress on main lifts +- Cumulative fatigue is high (poor sleep, low motivation, constant soreness) +- Coming back from illness/injury +- After a peaking block + +Deload: reduce volume by 40-60%, keep intensity moderate. Lasts 1 week. + +## Injury Modifications (Distal Radius Fracture) + +The client broke their left wrist on 2026-05-16. Key considerations: +- Wrist loading: be careful with heavy pressing (barbell bench, OHP). + Dumbbells allow natural wrist rotation — prefer them when possible +- Grip-intensive pulling: rows, deadlifts, farmer's carries may aggravate if + grip is fatigued. Use straps if needed +- Avoid: wrist extensions/flexions under load, narrow grip bench, heavy + front rack position +- Monitor: pain during or after session. Any sharp wrist pain → substitute + or reduce load +- Rehab: as wrist recovers, gradually reintroduce full range. The client was + "recovering fast" as of their medical intake + +## Exercise Selection + +Given the client's equipment (see `inputs/equipment.md`), build balanced +sessions: + +- **Push**: bench press (barbell/dumbbell), OHP (barbell/dumbbell), incline + press, landmine press, dips (if available through rack) +- **Pull**: pull-ups, barbell rows, dumbbell rows, pulldowns, face pulls, + farmer's carries, deadlifts, RDLs +- **Legs**: squats (barbell front/back), leg press (via rack?), RDLs, reverse + hypers (via bench?), KB swings, lunges +- **Core**: ab roller, hanging leg raises, planks, tib bar work + +Use the available outdoor terrain (steep hill, half-mile trail) for: +- Loaded carries (walk up the hill with farmer's handles) +- Sled work (if they have a sled) +- Conditioning finishers (hill sprints, ruck) + +## Sample Session Structures + +### Full Body (3x/week) +- Squat variation +- Horizontal push +- Horizontal pull +- Vertical push or pull +- Single-leg or core +- Conditioning finisher + +### Upper/Lower (4x/week) +- **Upper A**: horizontal push, vertical pull, horizontal pull, vertical push +- **Lower A**: squat focus, hinge, single-leg, core +- **Upper B**: vertical push, horizontal pull, vertical pull, horizontal push +- **Lower B**: hinge focus, squat, single-leg, core + +### Push/Pull/Legs (6x/week) +- **Push**: chest, shoulders, triceps +- **Pull**: back, biceps, rear delts +- **Legs**: quads, hamstrings, glutes, calves + +## Interpreting Historical Data + +The client's `inputs/Juggernaut training.xlsx` contains their previous +Juggernaut training cycles. When they want to restart Juggernaut: +- Look for the last cycle's top set weights +- Adjust for current estimated 1RM (accounting for detraining after 1.5 years off) +- Start a new wave at ~80-85% of previous training max, or run a "bridge" + cycle to rebuild work capacity first + +## General Coaching Notes + +- Start conservatively and add volume/intensity based on feedback +- Prefer submaximal training (~80%) for most of the year; peak sparingly +- Change one variable at a time (volume OR intensity, never both) +- A bad workout is not a crisis — just deload or reset and keep going +- Weight loss is driven primarily by diet; training preserves muscle during a + cut +- Blood pressure and gout benefit from consistent cardio, hydration, and weight + management diff --git a/.agents/skills/fitness-workout/scripts/workout.py b/.agents/skills/fitness-workout/scripts/workout.py new file mode 100644 index 0000000..7744034 --- /dev/null +++ b/.agents/skills/fitness-workout/scripts/workout.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +"""Helper utilities for the fitness trainer agent. + +Usage: + workout.py e1rm # Estimate 1RM (Epley) + workout.py volume # Total tonnage + workout.py training-max [pct] # Training max (default 90%) + workout.py cycle # Suggest weights for a wave + +Examples: + workout.py e1rm 185 5 + workout.py volume 3 5 185 + workout.py training-max 210 + workout.py cycle 200 5x5 +""" + +import sys +import math + + +def e1rm(weight: float, reps: int) -> float: + """Estimate 1RM using the Epley formula.""" + if reps == 0: + return weight + if reps == 1: + return weight + return weight * (1 + reps / 30) + + +def volume(sets: int, reps: int, weight: float) -> float: + """Calculate total tonnage.""" + return sets * reps * weight + + +def training_max(e1rm_val: float, pct: float = 0.90) -> float: + """Calculate training max as a percentage of e1RM.""" + return e1rm_val * pct + + +def round_to_nearest(weight: float, increment: float = 5.0) -> float: + """Round weight to the nearest plate increment.""" + return round(weight / increment) * increment + + +def suggest_cycle_weights(tm: float, sets: int, reps: int, steps: int = 4): + """Suggest wave weights from ~80% to ~95% of training max. + + Args: + tm: Training max + sets: Sets per exercise + reps: Reps per set (target) + steps: Number of weeks in the wave + """ + print(f"Training max: {tm}lb") + print(f"Scheme: {sets}x{reps}") + print() + for week in range(steps): + pct = 0.80 + week * 0.05 + week_weight = round_to_nearest(tm * pct) + print(f" Week {week + 1}: {int(pct * 100)}% = {int(week_weight)}lb") + + +def main(): + if len(sys.argv) < 2: + print(__doc__) + sys.exit(1) + + cmd = sys.argv[1] + + if cmd == "e1rm": + if len(sys.argv) < 4: + print("Usage: workout.py e1rm ") + sys.exit(1) + w = float(sys.argv[2]) + r = int(sys.argv[3]) + est = round_to_nearest(e1rm(w, r)) + print(f"e1RM: {int(est)}lb") + + elif cmd == "volume": + if len(sys.argv) < 5: + print("Usage: workout.py volume ") + sys.exit(1) + s = int(sys.argv[2]) + r = int(sys.argv[3]) + w = float(sys.argv[4]) + print(f"Volume: {int(volume(s, r, w))}lb") + + elif cmd == "training-max": + if len(sys.argv) < 3: + print("Usage: workout.py training-max [pct]") + sys.exit(1) + e = float(sys.argv[2]) + p = float(sys.argv[3]) if len(sys.argv) > 3 else 0.90 + tm = round_to_nearest(training_max(e, p)) + print(f"Training max: {int(tm)}lb") + + elif cmd == "cycle": + if len(sys.argv) < 4: + print("Usage: workout.py cycle ") + sys.exit(1) + tm = float(sys.argv[2]) + scheme = sys.argv[3] + try: + parts = scheme.lower().split("x") + sets = int(parts[0]) + reps = int(parts[1]) + except (IndexError, ValueError): + print(f"Invalid scheme '{scheme}'. Use format like 3x5 or 5x5.") + sys.exit(1) + suggest_cycle_weights(tm, sets, reps) + + else: + print(f"Unknown command: {cmd}") + print(__doc__) + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/.agents/skills/google-sheets-automation/SKILL.md b/.agents/skills/google-sheets-automation/SKILL.md new file mode 100644 index 0000000..6ec9049 --- /dev/null +++ b/.agents/skills/google-sheets-automation/SKILL.md @@ -0,0 +1,124 @@ +--- +name: google-sheets-automation +description: "Lightweight Google Sheets integration with standalone OAuth authentication. No MCP server required. Full read/write access." +risk: safe +--- + +# Google Sheets + +Lightweight Google Sheets integration with standalone OAuth authentication. No MCP server required. Full read/write access. + +## Prerequisites + +```bash +uv sync +source .venv/bin/activate +``` + +## First-Time Setup + +Authenticate with Google (opens browser): +```bash +python .agents/skills/google-sheets-automation/scripts/auth.py login +``` + +Check authentication status: +```bash +python .agents/skills/google-sheets-automation/scripts/auth.py status +``` + +Logout when needed: +```bash +python .agents/skills/google-sheets-automation/scripts/auth.py logout +``` + +## Read Commands + +```bash +# Get spreadsheet content as plain text (default) +python .agents/skills/google-sheets-automation/scripts/sheets.py get-text SPREADSHEET_ID + +# Get spreadsheet content as CSV +python .agents/skills/google-sheets-automation/scripts/sheets.py get-text SPREADSHEET_ID --format csv + +# Get spreadsheet content as JSON +python .agents/skills/google-sheets-automation/scripts/sheets.py get-text SPREADSHEET_ID --format json + +# Get values from a specific range (A1 notation) +python .agents/skills/google-sheets-automation/scripts/sheets.py get-range SPREADSHEET_ID "Sheet1!A1:D10" + +# Find spreadsheets by search query +python .agents/skills/google-sheets-automation/scripts/sheets.py find "budget 2024" + +# Get spreadsheet metadata +python .agents/skills/google-sheets-automation/scripts/sheets.py get-metadata SPREADSHEET_ID +``` + +## Write Commands + +```bash +# Update a range of cells with values (JSON 2D array) +python .agents/skills/google-sheets-automation/scripts/sheets.py update-range SPREADSHEET_ID "Sheet1!A1:B2" '[["Hello","World"],["Foo","Bar"]]' + +# Update with RAW input (no formula parsing) +python .agents/skills/google-sheets-automation/scripts/sheets.py update-range SPREADSHEET_ID "Sheet1!A1:B1" '[["=SUM(A1:A5)","text"]]' --raw + +# Append rows after the last data row +python .agents/skills/google-sheets-automation/scripts/sheets.py append-rows SPREADSHEET_ID "Sheet1!A:Z" '[["New Row Col A","New Row Col B"]]' + +# Clear values from a range (keeps formatting) +python .agents/skills/google-sheets-automation/scripts/sheets.py clear-range SPREADSHEET_ID "Sheet1!A1:B10" + +# Batch update (advanced - for formatting, merging, etc.) +python .agents/skills/google-sheets-automation/scripts/sheets.py batch-update SPREADSHEET_ID '[{"updateCells":{"range":{"sheetId":0},"fields":"userEnteredValue"}}]' +``` + +## Spreadsheet ID + +You can use either: +- The spreadsheet ID: `1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms` +- The full URL: `https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit` + +The script automatically extracts the ID from URLs. + +## Output Formats + +### Text (default) +``` +Name | Revenue | Units +Product A | 10000 | 50 +``` + +### CSV +``` +Name,Revenue,Units +Product A,10000,50 +``` + +### JSON +```json +{ + "Q1": [ + ["Name", "Revenue", "Units"], + ["Product A", "10000", "50"] + ] +} +``` + +## A1 Notation Examples + +- `Sheet1!A1:B10` - Range A1 to B10 on Sheet1 +- `Sheet1!A:A` - All of column A +- `Sheet1!1:1` - All of row 1 +- `A1:C5` - Range on the first sheet + +## Token Management + +Tokens stored securely using the system keyring: +- **macOS**: Keychain +- **Windows**: Windows Credential Locker +- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.) + +Service name: `google-sheets-skill-oauth` + +Tokens automatically refresh when expired. diff --git a/.agents/skills/google-sheets-automation/scripts/auth.py b/.agents/skills/google-sheets-automation/scripts/auth.py new file mode 100644 index 0000000..6a3b37a --- /dev/null +++ b/.agents/skills/google-sheets-automation/scripts/auth.py @@ -0,0 +1,141 @@ +import argparse +import json +import os +import sys +from pathlib import Path + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from google.auth.transport.requests import Request +from google.oauth2.credentials import Credentials +from google_auth_oauthlib.flow import InstalledAppFlow + +SCOPES = ["https://www.googleapis.com/auth/spreadsheets"] +SERVICE_NAME = "google-sheets-skill-oauth" + +try: + import keyring + HAS_KEYRING = True +except ImportError: + HAS_KEYRING = False + + +def get_token_dir(): + path = os.environ.get("GOOGLE_SHEETS_TOKEN_DIR") + if path: + return Path(path) + default = Path.home() / ".config" / "google-sheets-skill" + default.mkdir(parents=True, exist_ok=True) + return default + + +def _load_creds(): + token_file = get_token_dir() / "token.json" + if token_file.exists(): + return Credentials.from_authorized_user_file(str(token_file), SCOPES) + if HAS_KEYRING: + stored = keyring.get_password(SERVICE_NAME, "token") + if stored: + return Credentials.from_authorized_user_info(json.loads(stored), SCOPES) + return None + + +def _save_creds(creds): + get_token_dir().mkdir(parents=True, exist_ok=True) + token_file = get_token_dir() / "token.json" + token_file.write_text(creds.to_json()) + token_file.chmod(0o600) + if HAS_KEYRING: + keyring.set_password(SERVICE_NAME, "token", creds.to_json()) + + +def _find_creds_file(): + env_path = os.environ.get("GOOGLE_SHEETS_CREDS") + if env_path: + return Path(env_path) + alongside = Path(__file__).parent / "credentials.json" + if alongside.exists(): + return alongside + return Path.home() / ".config" / "google-sheets-skill" / "credentials.json" + + +def cmd_login(): + creds_file = _find_creds_file() + if not creds_file.exists(): + print( + f"credentials.json not found at {creds_file}\n" + "Download it from Google Cloud Console:\n" + "1. Go to https://console.cloud.google.com/\n" + "2. Create a project → Enable Sheets API\n" + "3. Create OAuth 2.0 Client ID → Desktop App\n" + "4. Download as credentials.json\n" + "5. Save to: " + str(creds_file) + "\n\n" + "Or set GOOGLE_SHEETS_CREDS env var to its location." + ) + sys.exit(1) + + flow = InstalledAppFlow.from_client_secrets_file(str(creds_file), SCOPES) + creds = flow.run_local_server(port=0) + _save_creds(creds) + print(f"Authenticated successfully. Token saved to {get_token_dir() / 'token.json'}") + + +def cmd_status(): + creds = _load_creds() + if not creds: + print("Not authenticated. Run: python .agents/skills/google-sheets-automation/scripts/auth.py login") + sys.exit(1) + if not creds.valid: + if creds.expired and creds.refresh_token: + creds.refresh(Request()) + _save_creds(creds) + print("Token was expired; refreshed successfully.") + else: + print("Token is invalid. Re-authenticate: python .agents/skills/google-sheets-automation/scripts/auth.py login") + sys.exit(1) + print(f"Authenticated as: {creds.token[:20]}...") + print(f"Expires at: {creds.expiry}") + + +def cmd_logout(): + token_file = get_token_dir() / "token.json" + if token_file.exists(): + token_file.unlink() + if HAS_KEYRING: + try: + keyring.delete_password(SERVICE_NAME, "token") + except keyring.errors.PasswordDeleteError: + pass + print("Logged out. Token deleted.") + + +def get_credentials(): + creds = _load_creds() + if not creds: + print("Not authenticated. Run: python .agents/skills/google-sheets-automation/scripts/auth.py login", file=sys.stderr) + sys.exit(1) + if not creds.valid: + if creds.expired and creds.refresh_token: + creds.refresh(Request()) + _save_creds(creds) + else: + print("Token is invalid. Re-authenticate: python .agents/skills/google-sheets-automation/scripts/auth.py login", file=sys.stderr) + sys.exit(1) + return creds + + +def main(): + parser = argparse.ArgumentParser(description="Google Sheets Auth") + parser.add_argument("command", choices=["login", "status", "logout"]) + args = parser.parse_args() + + if args.command == "login": + cmd_login() + elif args.command == "status": + cmd_status() + elif args.command == "logout": + cmd_logout() + + +if __name__ == "__main__": + main() diff --git a/.agents/skills/google-sheets-automation/scripts/sheets.py b/.agents/skills/google-sheets-automation/scripts/sheets.py new file mode 100644 index 0000000..ffc40e3 --- /dev/null +++ b/.agents/skills/google-sheets-automation/scripts/sheets.py @@ -0,0 +1,268 @@ +import argparse +import csv +import io +import json +import os +import re +import sys + +from googleapiclient.discovery import build +from googleapiclient.errors import HttpError + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from auth import get_credentials + + +def _get_sheets_service(): + creds = get_credentials() + return build("sheets", "v4", credentials=creds) + + +def _extract_spreadsheet_id(value): + match = re.search(r"/spreadsheets/d/([a-zA-Z0-9_-]+)", value) + if match: + return match.group(1) + return value + + +def cmd_get_text(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + meta = service.spreadsheets().get(spreadsheetId=sid).execute() + title = meta.get("properties", {}).get("title", "Untitled") + + output = io.StringIO() + for sheet in meta.get("sheets", []): + props = sheet.get("properties", {}) + sheet_name = props.get("title", "Sheet1") + output.write(f"\n=== {sheet_name} ===\n") + + result = service.spreadsheets().values().get( + spreadsheetId=sid, range=sheet_name + ).execute() + rows = result.get("values", []) + + if not rows: + output.write("(empty)\n") + continue + + if args.format == "csv": + writer = csv.writer(output) + for row in rows: + writer.writerow(row) + output.write("\n") + elif args.format == "json": + headers = rows[0] if rows else [] + data = [dict(zip(headers, row)) for row in rows[1:]] if args.format == "json" else rows + output.write(json.dumps({title: data if args.format == "json" else rows}, indent=2)) + output.write("\n") + else: + output.write(f"Sheet: {sheet_name}\n") + for row in rows: + output.write(" | ".join(row) + "\n") + output.write("\n") + + print(output.getvalue().strip()) + + +def cmd_get_range(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + result = service.spreadsheets().values().get( + spreadsheetId=sid, range=args.range + ).execute() + rows = result.get("values", []) + + if not rows: + print("(empty)") + return + + for row in rows: + print(" | ".join(row)) + + +def cmd_find(args): + service = _get_sheets_service() + result = service.spreadsheets().get( + spreadsheetId="me", fields="files(id,name,mimeType)" + ).execute() + + drive_service = build("drive", "v3", credentials=get_credentials()) + query = f"name contains '{args.query}' and mimeType = 'application/vnd.google-apps.spreadsheet'" + results = drive_service.files().list( + q=query, + pageSize=args.limit, + fields="files(id, name, modifiedTime)" + ).execute() + files = results.get("files", []) + + if not files: + print(f"No spreadsheets found matching '{args.query}'") + return + + for f in files: + print(f"{f['name']:60s} {f['id']:50s} {f.get('modifiedTime', '')}") + + +def cmd_get_metadata(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + meta = service.spreadsheets().get(spreadsheetId=sid).execute() + props = meta.get("properties", {}) + print(f"Title: {props.get('title')}") + print(f"Locale: {props.get('locale')}") + print(f"Timezone: {props.get('timeZone')}") + print(f"URL: https://docs.google.com/spreadsheets/d/{sid}/edit") + print() + for sheet in meta.get("sheets", []): + sp = sheet.get("properties", {}) + print(f" Sheet: {sp.get('title')} (id={sp.get('sheetId')})") + grid = sp.get("gridProperties", {}) + print(f" Rows: {grid.get('rowCount')}, Cols: {grid.get('columnCount')}") + + +def cmd_update_range(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + try: + values = json.loads(args.values) + except json.JSONDecodeError as e: + print(f"Invalid JSON: {e}") + sys.exit(1) + + body = { + "range": args.range, + "values": values, + "majorDimension": "ROWS", + } + value_input = "RAW" if args.raw else "USER_ENTERED" + + result = service.spreadsheets().values().update( + spreadsheetId=sid, + range=args.range, + valueInputOption=value_input, + body=body, + ).execute() + print(f"Updated {result.get('updatedCells')} cells.") + + +def cmd_append_rows(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + try: + values = json.loads(args.values) + except json.JSONDecodeError as e: + print(f"Invalid JSON: {e}") + sys.exit(1) + + body = { + "range": args.range, + "values": values, + "majorDimension": "ROWS", + } + + result = service.spreadsheets().values().append( + spreadsheetId=sid, + range=args.range, + valueInputOption="USER_ENTERED", + insertDataOption="INSERT_ROWS", + body=body, + ).execute() + print(f"Appended to {result.get('updates', {}).get('updatedRange')}") + + +def cmd_clear_range(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + result = service.spreadsheets().values().clear( + spreadsheetId=sid, range=args.range, body={} + ).execute() + print(f"Cleared range: {result.get('clearedRange')}") + + +def cmd_batch_update(args): + service = _get_sheets_service() + sid = _extract_spreadsheet_id(args.spreadsheet_id) + + try: + requests = json.loads(args.requests_json) + except json.JSONDecodeError as e: + print(f"Invalid JSON: {e}") + sys.exit(1) + + body = {"requests": requests if isinstance(requests, list) else [requests]} + + result = service.spreadsheets().batchUpdate( + spreadsheetId=sid, body=body + ).execute() + print(f"Batch update completed. Replies: {len(result.get('replies', []))}") + + +def main(): + parser = argparse.ArgumentParser(description="Google Sheets Operations") + sub = parser.add_subparsers(dest="command") + + p = sub.add_parser("get-text", help="Get spreadsheet content as text/csv/json") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + p.add_argument("--format", choices=["text", "csv", "json"], default="text") + + p = sub.add_parser("get-range", help="Get values from a specific range") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + p.add_argument("range", help="Range in A1 notation (e.g. Sheet1!A1:D10)") + + p = sub.add_parser("find", help="Find spreadsheets by name") + p.add_argument("query", help="Search query") + p.add_argument("--limit", type=int, default=10) + + p = sub.add_parser("get-metadata", help="Get spreadsheet metadata") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + + p = sub.add_parser("update-range", help="Update a range of cells") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + p.add_argument("range", help="Range in A1 notation") + p.add_argument("values", help="JSON 2D array of values") + p.add_argument("--raw", action="store_true", help="Use RAW input (no formula parsing)") + + p = sub.add_parser("append-rows", help="Append rows to a sheet") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + p.add_argument("range", help="Range in A1 notation (e.g. Sheet1!A:Z)") + p.add_argument("values", help="JSON 2D array of rows") + + p = sub.add_parser("clear-range", help="Clear values from a range") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + p.add_argument("range", help="Range in A1 notation") + + p = sub.add_parser("batch-update", help="Advanced batch update") + p.add_argument("spreadsheet_id", help="Spreadsheet ID or URL") + p.add_argument("requests_json", help="JSON array of batch update requests") + + args = parser.parse_args() + + if args.command == "get-text": + cmd_get_text(args) + elif args.command == "get-range": + cmd_get_range(args) + elif args.command == "find": + cmd_find(args) + elif args.command == "get-metadata": + cmd_get_metadata(args) + elif args.command == "update-range": + cmd_update_range(args) + elif args.command == "append-rows": + cmd_append_rows(args) + elif args.command == "clear-range": + cmd_clear_range(args) + elif args.command == "batch-update": + cmd_batch_update(args) + else: + parser.print_help() + + +if __name__ == "__main__": + main() diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5cc894f --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +dist/ +build/ + +# Virtual environment +.venv/ + +# Google Sheets OAuth credentials +**/credentials.json +**/token.json +gdrive_audit.log + +# OS +.DS_Store +Thumbs.db + +# IDE +.vscode/ +.idea/ +*.swp +*.swo diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7364a6d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "third_party/opencode-awesome-skills"] + path = third_party/opencode-awesome-skills + url = https://github.com/EdEngineering/opencode-awesome-skills.git diff --git a/.opencode/agents/fitness-trainer.md b/.opencode/agents/fitness-trainer.md new file mode 100644 index 0000000..53aaa56 --- /dev/null +++ b/.opencode/agents/fitness-trainer.md @@ -0,0 +1,76 @@ +--- +description: > + Your personal fitness trainer. Plans workouts, tracks progress, adapts to how + you're feeling, and logs everything to markdown. Use this agent for daily + check-ins, workout reviews, and programming discussions. +mode: primary +color: "#4ade80" +--- + +You are an experienced, adaptable personal trainer. Your client (the user) has +provided their equipment, goals, and medical history in `inputs/`. Their +historical lifting data is in `inputs/Juggernaut training.xlsx`. + +Your job is to guide them through their fitness journey. Be encouraging but +honest. You are their single point of contact for training chat. + +## Guidelines + +- Always consider their medical history (especially the distal radius fracture) + and available equipment when programming +- Reference their goals (weight control, blood pressure, strength, endurance) + when giving advice or adjusting plans +- If they're interested in a specific program methodology (Juggernaut, + Stronglifts 5x5, etc.), use their training history to pick up where they left + off or start a new cycle +- If they want something new, design intelligently using the programming + principles in the `fitness-workout` skill +- Logs are written to `logs/workouts/` and `logs/checkins/`. Use + `grep`/`read`/`glob` to search past logs when they ask questions like "when + was the last time I did farmer's carry?" + +## Check-in Workflow + +When they want to check in, follow this structure: + +1. **Status check** — Ask how they're feeling: soreness, energy, injuries, + sleep, weight, motivation +2. **Review** — Check the last planned workout log. Did they complete it? How + did each exercise feel? Update the log with results if needed +3. **Adjust** — Based on feedback + programming guidelines + history, adjust + the next session (weight, volume, exercise selection, or rest day) +4. **Plan** — Write a new workout plan to `logs/workouts/-.md` + with exercises, sets, reps, weights, and any notes. Present it to them +5. **Log** — Write a brief check-in entry to `logs/checkins/-checkin.md` + summarizing the conversation and any decisions made + +## Log format + +Workout plan log: +```markdown +# Workout: +**Date:** +**Program:** +**Status:** Plan + +## Exercises +- : x @ +- ... + +## Notes + +``` + +After completion, update the **Status** to "Complete" and add results inline: +```markdown +- Bench Press: 3x5 @ 185lb — completed (RPE 8) +``` + +Check-in log: +```markdown +# Check-in: +**Feeling:** +**Review:** +**Adjustments:** +**Next session:** +``` diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..87beeb3 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,54 @@ +# Agent Setup Log + +## Google Sheets Automation Skill + +Installed the `google-sheets-automation` skill from [opencode-awesome-skills](https://github.com/EdEngineering/opencode-awesome-skills.git). + +### Files created + +- `.agents/skills/google-sheets-automation/SKILL.md` — skill instructions for the agent +- `.agents/skills/google-sheets-automation/scripts/auth.py` — OAuth2 login/logout/status +- `.agents/skills/google-sheets-automation/scripts/sheets.py` — read/write/find/metadata operations +- `pyproject.toml` — project config + deps for `uv sync` +- `third_party/opencode-awesome-skills/` — git submodule of upstream skill repo + +### Setup commands + +```bash +uv sync # install deps +source .venv/bin/activate # activate venv +``` + +### First-time auth + +```bash +python .agents/skills/google-sheets-automation/scripts/auth.py login +``` + +You'll need a `credentials.json` from Google Cloud Console (Sheets API enabled, OAuth 2.0 Desktop App). + +### Usage + +All commands go through `scripts/sheets.py`: +- `get-text`, `get-range`, `find`, `get-metadata` (read) +- `update-range`, `append-rows`, `clear-range`, `batch-update` (write) + +See the SKILL.md for full docs. + +### Submodule + +```bash +git submodule update --init --recursive # clone third_party deps +``` + +--- + +## Fitness Trainer Agent + +- **Agent config**: `.opencode/agents/fitness-trainer.md` — a primary agent that acts as your personal trainer +- **Workout programming skill**: `.agents/skills/fitness-workout/` — methodology guidelines and helpers +- **Workout/check-in logs**: `logs/workouts/` and `logs/checkins/` — markdown files written by the agent + +### Historical data + +`inputs/Juggernaut training.xlsx` was downloaded from Google Sheets (previous Juggernaut training cycles from before 2025). Google Sheets auth can be set up later if needed — see the Google Sheets Automation Skill above. diff --git a/design.md b/design.md new file mode 100644 index 0000000..91acce3 --- /dev/null +++ b/design.md @@ -0,0 +1,6 @@ +# Goal +Design an agent-based personal trainer. This will help adaptively guide me by planning weekly workouts, tracking my injuries and lifting status, and helping with diet as needed. I want to focus on providing daily workouts. + +The system should include utilities and possibly skills that will enable the agent-based trainer to review progress and adjust my workouts based on that in order to satisfy my goals and preferences. Information about my setup and goals will be available initially in markdown files in the inputs/ directory. + +I'd like to be able to converse about my fitness level, workout experience, how I'm feeling etc and have the agent provide feedback and adjust the plan accordingly. I'd also like it to log what was done for future reference. I want to have a check-in step where I can check in and it will ask whether I did my workouts, what my experience was etc (like a review) and then give me my daily or weekly workout schedule. diff --git a/inputs/Juggernaut training.xlsx b/inputs/Juggernaut training.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9d49a71853bd67fe5fc6e4bc30024371edce0a8b GIT binary patch literal 231538 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 R4CV}h{0t1-mCOtb3;_5%A|e0) literal 0 HcmV?d00001 diff --git a/inputs/equipment.md b/inputs/equipment.md new file mode 100644 index 0000000..db00b89 --- /dev/null +++ b/inputs/equipment.md @@ -0,0 +1,23 @@ +Home gym equipment: + +- Squat rack with pullup bar +- Incline bench for bench/incline bench +- Olympic bar bells: 45 lb men’s and 35 lb women’s +- Olympic curl bar +- Adjustable dumbbells +- Landmine +- Pulldown: basic, cannot do heavy because I don’t have a way to hold myself down +- Tib bar +- Slant board +- Gravity inversion boots so i can hang upside down from pullup bar +- 30 lb slam ball +- Forearm roller +- Concept2 bikeerg exercise bike +- Concept2 rowerg +- Farmer’s carry handles +- Olympic plates, including bumper plates +- Ab roller +- Freak athlete nordic hyper pro bench + +I live on a steep hill and I have a steep trail behind my house with a half mile trail to the top of a ridge that includes a couple hundred feet elevation change + diff --git a/inputs/goals.md b/inputs/goals.md new file mode 100644 index 0000000..8341ca6 --- /dev/null +++ b/inputs/goals.md @@ -0,0 +1,5 @@ +Exercise goals: +- Control my weight for overall health/longevity +- Specifically control blood pressure and gout +- Build strength (I enjoy lifting heavy) +- Increase endurance to support long backpacking/mountaineering trips diff --git a/inputs/medical.md b/inputs/medical.md new file mode 100644 index 0000000..9a58b0e --- /dev/null +++ b/inputs/medical.md @@ -0,0 +1,14 @@ +Medical history: +- White Male +- Born 11/22/1982 +- 6 feet tall +- History of gout +- History of elevated blood pressure +- Have lifted heavy previously, in high school and after +- Had what I thought were knee issues in past few years which I went to PT for but I suspect it was caused by tightness in glutes and hamstrings. Seems to be better these days +- I also had a case of golfer's elbow that I think was due to overcompensating with forearms when doing deadlift and chinups +- Broke my left wrist (distal radius fracture) on 05/16/2026 and am having fast recovery following surgery +- Always struggled with weight. Used LoseIt! App twice to lose weight +- Went from 245 lb to 186 over the course of about 6 months of loseit in 2022. Since then have gained some of it back and am now hovering around 210-215 + + diff --git a/logs/checkins/.gitkeep b/logs/checkins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/logs/progress/.gitkeep b/logs/progress/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/logs/workouts/.gitkeep b/logs/workouts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..4c919a5 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,15 @@ +[project] +name = "fitness-agent" +version = "0.1.0" +description = "AI fitness agent with Google Sheets automation" +requires-python = ">=3.10" +dependencies = [ + "google-api-python-client>=2.0", + "google-auth>=2.0", + "google-auth-oauthlib>=1.0", + "google-auth-httplib2>=0.1", + "keyring>=24.0", +] + +[dependency-groups] +dev = [] diff --git a/third_party/opencode-awesome-skills b/third_party/opencode-awesome-skills new file mode 160000 index 0000000..13c8a69 --- /dev/null +++ b/third_party/opencode-awesome-skills @@ -0,0 +1 @@ +Subproject commit 13c8a69fb89d5296a9ee5f0ea7e422b08d9c9fe0 diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..2972693 --- /dev/null +++ b/uv.lock @@ -0,0 +1,642 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version < '3.13'", +] + +[[package]] +name = "backports-tarfile" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", size = 86406, upload-time = "2024-05-28T17:01:54.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181, upload-time = "2024-05-28T17:01:53.112Z" }, +] + +[[package]] +name = "certifi" +version = "2026.6.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = 134594, upload-time = "2026-06-17T10:31:07.894Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", size = 209329, upload-time = "2026-04-02T09:25:42.354Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", size = 231230, upload-time = "2026-04-02T09:25:44.281Z" }, + { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", size = 225890, upload-time = "2026-04-02T09:25:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", size = 216930, upload-time = "2026-04-02T09:25:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", size = 202109, upload-time = "2026-04-02T09:25:48.031Z" }, + { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", size = 214684, upload-time = "2026-04-02T09:25:49.245Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", size = 212785, upload-time = "2026-04-02T09:25:50.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", size = 203055, upload-time = "2026-04-02T09:25:51.802Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", size = 232502, upload-time = "2026-04-02T09:25:53.388Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", size = 214295, upload-time = "2026-04-02T09:25:54.765Z" }, + { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", size = 227145, upload-time = "2026-04-02T09:25:55.904Z" }, + { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", size = 218884, upload-time = "2026-04-02T09:25:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", size = 148343, upload-time = "2026-04-02T09:25:58.199Z" }, + { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", size = 159174, upload-time = "2026-04-02T09:25:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", size = 147805, upload-time = "2026-04-02T09:26:00.756Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" }, + { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" }, + { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" }, + { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" }, + { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "cryptography" +version = "49.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" }, + { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" }, + { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" }, + { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" }, + { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, +] + +[[package]] +name = "fitness-agent" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "google-api-python-client" }, + { name = "google-auth" }, + { name = "google-auth-httplib2" }, + { name = "google-auth-oauthlib" }, + { name = "keyring" }, +] + +[package.metadata] +requires-dist = [ + { name = "google-api-python-client", specifier = ">=2.0" }, + { name = "google-auth", specifier = ">=2.0" }, + { name = "google-auth-httplib2", specifier = ">=0.1" }, + { name = "google-auth-oauthlib", specifier = ">=1.0" }, + { name = "keyring", specifier = ">=24.0" }, +] + +[package.metadata.requires-dev] +dev = [] + +[[package]] +name = "google-api-core" +version = "2.31.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/22/155cadf1d49272a9cf48f3168c0f3874fa13397297e611a5ea00cd093880/google_api_core-2.31.0.tar.gz", hash = "sha256:2be84ee0f584c48e6bde1b36766e23348b361fb7e55e56135fc76ce1c397f9c2", size = 176492, upload-time = "2026-06-03T14:52:17.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/40/9bdbb60b03a332bd45acb8703da08bbc27d991d35286b62e42acc86d243a/google_api_core-2.31.0-py3-none-any.whl", hash = "sha256:ef79fb3784c71cbac89cbd03301ba0c8fb8ad2aa95d7f9204dd9628f7adf59ab", size = 173102, upload-time = "2026-06-03T14:51:26.729Z" }, +] + +[[package]] +name = "google-api-python-client" +version = "2.198.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, + { name = "google-auth-httplib2" }, + { name = "httplib2" }, + { name = "uritemplate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6b/53/0cd38e3a29d72ce45e27feba2ce1cd8049d69af9c48cb14fb164f1be9133/google_api_python_client-2.198.0.tar.gz", hash = "sha256:dfe3e16fb241af6e9c460a33f65085b3450e05cea09364f6b5d8997fb7e43e2a", size = 15060142, upload-time = "2026-06-25T14:32:42.953Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/92/0fc9e7a09eb240c31b879bd8d2e43f81ed1f86c4798b79ead4a083921ab3/google_api_python_client-2.198.0-py3-none-any.whl", hash = "sha256:fabac935474e817da5e662ff61bf7139439d6f92b32d332a7318a2d45931e03e", size = 15644203, upload-time = "2026-06-25T14:32:39.963Z" }, +] + +[[package]] +name = "google-auth" +version = "2.55.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyasn1-modules" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/1c/70b23fc52b2bb3c70b379f3bd05c4a60ab3a873e30c6bd21c57e0154848a/google_auth-2.55.0.tar.gz", hash = "sha256:fcd3a130f575fa36403d38774af1c64a4fbfbca09215f0589d2372b5119697cb", size = 349379, upload-time = "2026-06-15T22:33:16.466Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/71/c0321dc6d63d99946da45f7c06299b934e4f7f7da5c4f14d101bcb39adf1/google_auth-2.55.0-py3-none-any.whl", hash = "sha256:a17cef9dedf98c4ebae2fb0c48c8f75952c877cbc2efe09f329ef16c2783d88a", size = 252400, upload-time = "2026-06-15T22:33:14.992Z" }, +] + +[[package]] +name = "google-auth-httplib2" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "httplib2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/b3/f192c8bc7e41e0ebdbd95afcae4783417a34b6a6af62d22daf22c3fd38fc/google_auth_httplib2-0.4.0.tar.gz", hash = "sha256:d5b030a204b7a4b4d553ba9ca701b62481ee2b74419325580be70f7d85ffed35", size = 11161, upload-time = "2026-05-07T08:03:46.878Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/be/954c35a62b9e31de66b0a43c225c9b6bb9e0f98d6b1dc110a2308e3644f5/google_auth_httplib2-0.4.0-py3-none-any.whl", hash = "sha256:8e55cfafa3358cba85f6cad4a886138e88e158d71e7e5c9ee5936a5c1507fb91", size = 9529, upload-time = "2026-05-07T08:02:12.375Z" }, +] + +[[package]] +name = "google-auth-oauthlib" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/18/90c7fac516e63cf2058166fce0c88c353647c677b51cc036c09c49bb5cbb/google_auth_oauthlib-1.4.0.tar.gz", hash = "sha256:18b5e28880eb8eba9065c436becdc0ee8e4b59117a73a510679c82f70cd363d2", size = 21675, upload-time = "2026-05-07T08:03:47.816Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/d3/d7dff0d58a9e9244b48044bfb6a898bfcc8ecc42e0031d1bebc695344725/google_auth_oauthlib-1.4.0-py3-none-any.whl", hash = "sha256:251314f213a9ee46a5ae73988e84fd7cca8bb68e7ecf4bfd45940f9e7f51d070", size = 19261, upload-time = "2026-05-07T08:02:13.798Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.75.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b5/c8/f439cffde755cffa462bfbb156278fa6f9d09119719af9814b858fd4f81f/googleapis_common_protos-1.75.0.tar.gz", hash = "sha256:53a062ff3c32552fbd62c11fe23768b78e4ddf0494d5e5fd97d3f4689c75fbbd", size = 151035, upload-time = "2026-05-07T08:04:49.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/c8/e2645aa8ed02fd4c7a2f59d68783b65b1f3cbdfe39a6308e156509d1fee8/googleapis_common_protos-1.75.0-py3-none-any.whl", hash = "sha256:961ed60399c457ceb0ee8f285a84c870aabc9c6a832b9d37bb281b5bebde43ed", size = 300631, upload-time = "2026-05-07T08:03:30.345Z" }, +] + +[[package]] +name = "httplib2" +version = "0.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c1/1f/e86365613582c027dda5ddb64e1010e57a3d53e99ab8a72093fa13d565ec/httplib2-0.31.2.tar.gz", hash = "sha256:385e0869d7397484f4eab426197a4c020b606edd43372492337c0b4010ae5d24", size = 250800, upload-time = "2026-01-23T11:04:44.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/90/fd509079dfcab01102c0fdd87f3a9506894bc70afcf9e9785ef6b2b3aff6/httplib2-0.31.2-py3-none-any.whl", hash = "sha256:dbf0c2fa3862acf3c55c078ea9c0bc4481d7dc5117cae71be9514912cf9f8349", size = 91099, upload-time = "2026-01-23T11:04:42.78Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size = 56405, upload-time = "2026-03-20T06:42:56.999Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl", hash = "sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7", size = 27789, upload-time = "2026-03-20T06:42:55.665Z" }, +] + +[[package]] +name = "jaraco-classes" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780, upload-time = "2024-03-31T07:27:36.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777, upload-time = "2024-03-31T07:27:34.792Z" }, +] + +[[package]] +name = "jaraco-context" +version = "6.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-tarfile", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/50/4763cd07e722bb6285316d390a164bc7e479db9d90daa769f22578f698b4/jaraco_context-6.1.2.tar.gz", hash = "sha256:f1a6c9d391e661cc5b8d39861ff077a7dc24dc23833ccee564b234b81c82dfe3", size = 16801, upload-time = "2026-03-20T22:13:33.922Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl", hash = "sha256:bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535", size = 7871, upload-time = "2026-03-20T22:13:32.808Z" }, +] + +[[package]] +name = "jaraco-functools" +version = "4.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/cf/ea4ef2920830dea3f5ab2ea4da6fb67724e6dca80ee2553788c3607243d0/jaraco_functools-4.5.0.tar.gz", hash = "sha256:3bb5665ea4a020cf78a7040e89154c77edadb3ca74f366479669c5999aa70b03", size = 20272, upload-time = "2026-05-15T21:34:10.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl", hash = "sha256:79ce39246eddbde4b3a03b77ea5f0f7878dc669b166a66cf3fa8e266aa3fa2f4", size = 10594, upload-time = "2026-05-15T21:34:08.595Z" }, +] + +[[package]] +name = "jeepney" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/6f/357efd7602486741aa73ffc0617fb310a29b588ed0fd69c2399acbb85b0c/jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732", size = 106758, upload-time = "2025-02-27T18:51:01.684Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload-time = "2025-02-27T18:51:00.104Z" }, +] + +[[package]] +name = "keyring" +version = "25.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.12'" }, + { name = "jaraco-classes" }, + { name = "jaraco-context" }, + { name = "jaraco-functools" }, + { name = "jeepney", marker = "sys_platform == 'linux'" }, + { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, + { name = "secretstorage", marker = "sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/4b/674af6ef2f97d56f0ab5153bf0bfa28ccb6c3ed4d1babf4305449668807b/keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b", size = 63516, upload-time = "2025-11-16T16:26:09.482Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f", size = 39160, upload-time = "2025-11-16T16:26:08.402Z" }, +] + +[[package]] +name = "more-itertools" +version = "11.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/1d/f4da6f02cdffe04d6362210b807146a26044c88d839208aec273bb0d9184/more_itertools-11.1.0.tar.gz", hash = "sha256:48e8f4d9e7e5878571ecf6f2b4e57634f93cd474cc8cfbd2376f2d11b396e30d", size = 145772, upload-time = "2026-05-22T14:14:29.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl", hash = "sha256:4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192", size = 72226, upload-time = "2026-05-22T14:14:28.824Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "proto-plus" +version = "1.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/56/e647b0c675392d2da368da7b6f158f7368b18542fd6f7d7400a2f39de000/proto_plus-1.28.0.tar.gz", hash = "sha256:38e5696342835b08fc116f30a25665b29531cda9d5d5643e9b81fc312385abd9", size = 57221, upload-time = "2026-05-07T08:04:50.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/20/b122d4626976acb81132036d2ad1bb35a1a8775fceb837ec30964622516a/proto_plus-1.28.0-py3-none-any.whl", hash = "sha256:a630604310899e73c59ec302e5765c058d412b2f090b9c79c8822589f14955b8", size = 50410, upload-time = "2026-05-07T08:03:31.962Z" }, +] + +[[package]] +name = "protobuf" +version = "7.35.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/01/9ef0afd7999eb9badb3a768b4aedd78c86d4c65cfaf1958ab276199e76b4/protobuf-7.35.1.tar.gz", hash = "sha256:ce115a26fe0c39a2c29973d914d327e516a6455464489fe3cd1e51a1b354f81a", size = 458717, upload-time = "2026-06-11T21:55:40.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/03/8aeeb7458d22546bf64b5250ca1daeb5ff757d900e8e4a7476c6f0db843e/protobuf-7.35.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:24f857477359a85c0c235261b8ba905fd51b2562f4a64ca1df5473f29850cbf6", size = 433226, upload-time = "2026-06-11T21:55:31.719Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/dfb89eb0e652a1ff073c39a59fb5e3a83cfe9b57a2c83fa6d78270101767/protobuf-7.35.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799", size = 328847, upload-time = "2026-06-11T21:55:34.035Z" }, + { url = "https://files.pythonhosted.org/packages/0f/58/dc12f2cd484951524af6e3382c785869b9b3fb5e52ee95ae23add53ee8f9/protobuf-7.35.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:b73f9489a4b8b1c9cb1f8ed951c736392592edb24b9d6819f36d2e10b171d5b4", size = 344030, upload-time = "2026-06-11T21:55:34.941Z" }, + { url = "https://files.pythonhosted.org/packages/e4/be/5b3cfe508bfab6761414ff944e3366eb13be4fd71efcd69450f89ba39f43/protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:74758715c53d7158fb76caf4f0cfdacc5329a4b1bb994f865d6cf302d413a1c4", size = 327130, upload-time = "2026-06-11T21:55:35.921Z" }, + { url = "https://files.pythonhosted.org/packages/d8/bc/6d6c7ba8709c85f8f2c390b2b118d6fb08a783676a572271851bf45a7d22/protobuf-7.35.1-cp310-abi3-win32.whl", hash = "sha256:353652e4efd0bca5b5fc2656abf8307ef351f0cf938c9eba09f0e09c20a25c30", size = 428945, upload-time = "2026-06-11T21:55:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/8d0cb6f20a1ef7b18f1c8986ad5783f22f84cce39c6ce9a6e645ea55192e/protobuf-7.35.1-cp310-abi3-win_amd64.whl", hash = "sha256:230a75ddfc2de4806e56696ce9640c1cdfdb6543b7cfce98d42a4c0a0e7bdb87", size = 439996, upload-time = "2026-06-11T21:55:38.123Z" }, + { url = "https://files.pythonhosted.org/packages/19/c7/5f7c636ec43e0c545e28d1f1db71990108306f7bdcb89f069ba97e428e7f/protobuf-7.35.1-py3-none-any.whl", hash = "sha256:4bc97768d8fe4ad6743c8a19403e314511ed9f6d13205b687e52421c023ac1b9", size = 171659, upload-time = "2026-06-11T21:55:39.155Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/5f/6583902b6f79b399c9c40674ac384fd9cd77805f9e6205075f828ef11fb2/pyasn1-0.6.3.tar.gz", hash = "sha256:697a8ecd6d98891189184ca1fa05d1bb00e2f84b5977c481452050549c8a72cf", size = 148685, upload-time = "2026-03-17T01:06:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl", hash = "sha256:a80184d120f0864a52a073acc6fc642847d0be408e7c7252f31390c0f4eadcde", size = 83997, upload-time = "2026-03-17T01:06:52.036Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650, upload-time = "2024-03-22T20:32:29.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" }, +] + +[[package]] +name = "secretstorage" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "jeepney" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137", size = 15554, upload-time = "2025-11-23T19:02:51.545Z" }, +] + +[[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 = "uritemplate" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/60/f174043244c5306c9988380d2cb10009f91563fc4b31293d27e17201af56/uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e", size = 33267, upload-time = "2025-06-02T15:12:06.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/99/3ae339466c9183ea5b8ae87b34c0b897eda475d2aec2307cae60e5cd4f29/uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686", size = 11488, upload-time = "2025-06-02T15:12:03.405Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "zipp" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602", size = 26214, upload-time = "2026-05-18T20:08:57.967Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f", size = 10238, upload-time = "2026-05-18T20:08:57.045Z" }, +]