From 13f83ec51bc01ebe70d1c530993b6ecfcfda3db6 Mon Sep 17 00:00:00 2001 From: Lucca Bertoncini Date: Mon, 16 Feb 2026 01:16:12 -0800 Subject: [PATCH 1/2] Add UCI time management with iterative deepening The engine previously searched to a fixed depth (default 3) regardless of available time, wasting most of the allocated thinking time in timed games. With 60s per move, the engine would finish in <1s. Add search_move_timed() to AlphaBeta that uses iterative deepening under a time constraint: searches depth 1, 2, 3, ... until time runs out, keeping the best move from the last completed depth. Time is checked every 512 nodes to minimize overshoot. Update the UCI handler to parse go parameters (wtime, btime, winc, binc, movetime, movestogo, depth) and calculate appropriate time allocation per move with 1-second safety margins for Python overhead. --- moonfish/engines/alpha_beta.py | 74 ++++++++++++++++++++++++++++++++ moonfish/mode/uci.py | 78 ++++++++++++++++++++++++++++++++-- 2 files changed, 148 insertions(+), 4 deletions(-) diff --git a/moonfish/engines/alpha_beta.py b/moonfish/engines/alpha_beta.py index bc97538..fbf385f 100644 --- a/moonfish/engines/alpha_beta.py +++ b/moonfish/engines/alpha_beta.py @@ -1,3 +1,4 @@ +import time from multiprocessing.managers import DictProxy import chess.syzygy @@ -15,6 +16,9 @@ NEG_INF = float("-inf") NULL_MOVE = Move.null() +# Maximum depth for iterative deepening time-based search +MAX_DEPTH = 100 + class AlphaBeta: """ @@ -24,6 +28,8 @@ class AlphaBeta: def __init__(self, config: Config): self.config = config self.nodes: int = 0 + self._stop_time: float = 0.0 # Deadline for time-managed search + self._time_abort: bool = False # Set True when time runs out # Open Syzygy tablebase once at initialization (not on every eval) self.tablebase = None @@ -98,6 +104,15 @@ def quiescence_search( self.nodes += 1 + # Check time limit periodically (every 512 nodes) + if self._stop_time and (self.nodes & 511) == 0: + if time.perf_counter() >= self._stop_time: + self._time_abort = True + + # If time is up, return stand-pat immediately + if self._time_abort: + return self.eval_board(board) + if board.is_checkmate(): return -self.config.checkmate_score @@ -210,6 +225,15 @@ def negamax( self.nodes += 1 + # Check time limit periodically (every 512 nodes) + if self._stop_time and (self.nodes & 511) == 0: + if time.perf_counter() >= self._stop_time: + self._time_abort = True + + # If time is up, return immediately with a rough score + if self._time_abort: + return 0, None + # check if board was already evaluated if cache_key in cache: return cache[cache_key] @@ -311,6 +335,8 @@ def negamax( def search_move(self, board: Board) -> Move: self.nodes = 0 + self._time_abort = False + self._stop_time = 0.0 # create shared cache cache: CACHE_KEY = {} @@ -319,3 +345,51 @@ def search_move(self, board: Board) -> Move: )[1] assert best_move is not None, "Best move from root should not be None" return best_move + + def search_move_timed(self, board: Board, time_limit_s: float) -> Move: + """ + Search using iterative deepening with a time limit. + + Searches from depth 1 upward. If a depth completes within the time + limit, its result is saved. If time runs out mid-search, the result + from the last completed depth is used. + + Arguments: + - board: chess board state + - time_limit_s: maximum time in seconds for the entire search + + Returns: + - best_move: the best move found within the time limit + """ + self.nodes = 0 + self._time_abort = False + self._stop_time = time.perf_counter() + time_limit_s + cache: CACHE_KEY = {} + + best_move = None + + for depth in range(1, MAX_DEPTH + 1): + score, move = self.negamax( + board, depth, self.config.null_move, cache, + ) + + if self._time_abort: + # Time ran out during this depth — discard partial result + break + + if move is not None: + best_move = move + + # If time remaining is less than what we'd need for the next depth + # (rough heuristic: next depth takes ~4x longer), stop early + elapsed = time.perf_counter() - (self._stop_time - time_limit_s) + remaining = self._stop_time - time.perf_counter() + if remaining < elapsed * 3: + break + + self._stop_time = 0.0 + self._time_abort = False + + if best_move is None: + best_move = self.random_move(board) + return best_move diff --git a/moonfish/mode/uci.py b/moonfish/mode/uci.py index d147b9d..cf304ec 100644 --- a/moonfish/mode/uci.py +++ b/moonfish/mode/uci.py @@ -1,12 +1,68 @@ import sys -from chess import Board, STARTING_FEN +from chess import WHITE, Board, STARTING_FEN from moonfish.config import Config from moonfish.helper import find_best_move, get_engine # UCI based on Sunfish Engine: https://github.com/thomasahle/sunfish/blob/master/uci.py +def _parse_go_params(params: list[str]) -> dict[str, int]: + """Parse 'go' command parameters into a dict.""" + result: dict[str, int] = {} + i = 0 + while i < len(params): + key = params[i] + if key in ("wtime", "btime", "winc", "binc", "movetime", "movestogo", "depth"): + if i + 1 < len(params): + try: + result[key] = int(params[i + 1]) + except ValueError: + pass + i += 2 + continue + elif key == "infinite": + result["infinite"] = 1 + i += 1 + return result + + +def _calculate_time_limit( + go_params: dict[str, int], side_to_move_is_white: bool +) -> float | None: + """ + Calculate time limit in seconds from UCI go parameters. + Returns None if the engine should use fixed depth. + """ + # Fixed time per move (movetime) + if "movetime" in go_params: + # Use movetime minus a 1-second safety margin for Python/GC overhead + movetime_ms = go_params["movetime"] + return max((movetime_ms - 1000) / 1000.0, movetime_ms / 1000.0 * 0.5) + + # Clock-based time management + time_key = "wtime" if side_to_move_is_white else "btime" + inc_key = "winc" if side_to_move_is_white else "binc" + + if time_key in go_params: + remaining_ms = go_params[time_key] + increment_ms = go_params.get(inc_key, 0) + moves_to_go = go_params.get("movestogo", 30) + + # Allocate time: remaining / moves_to_go + most of the increment + time_for_move_ms = remaining_ms / moves_to_go + increment_ms * 0.8 + + # Don't use more than 25% of remaining time on one move + time_for_move_ms = min(time_for_move_ms, remaining_ms * 0.25) + + # Safety margin for Python/GC overhead + time_for_move_ms = max(time_for_move_ms - 500, 10) + + return time_for_move_ms / 1000.0 + + return None + + def main(config: Config): """ Start the command line user interface (UCI based). @@ -66,8 +122,22 @@ def main(config: Config): board.push_uci(move) elif uci_command.startswith("go"): - best_move = find_best_move( - board=board, - engine=engine, + go_params = _parse_go_params(uci_parameters[1:]) + + # If depth is specified in go command, use it + if "depth" in go_params: + config.negamax_depth = go_params["depth"] + + # Calculate time limit from go parameters + time_limit = _calculate_time_limit( + go_params, board.turn == WHITE ) + + if time_limit is not None and hasattr(engine, "search_move_timed"): + best_move = engine.search_move_timed(board, time_limit) + else: + best_move = find_best_move( + board=board, + engine=engine, + ) print(f"bestmove {best_move}") From 879e4667512ab47eeeef97e4ac1aed033e440768 Mon Sep 17 00:00:00 2001 From: Lucca Bertoncini Date: Mon, 16 Feb 2026 23:17:27 -0800 Subject: [PATCH 2/2] Add NNUE neural network evaluation with incremental accumulator updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement a dual-perspective NNUE (Efficiently Updatable Neural Network) evaluator following the Stockfish architecture pattern. The network uses 768 sparse binary features, shared feature transformer weights, SCReLU activation, and incremental accumulator updates during search for efficient inference using only numpy. Architecture: 768 → Linear(768,128) → SCReLU → concat(stm,nstm) → Linear(256,1) Parameters: ~99K | Model size: 386 KB | Inference: ~8μs per position Key components: - moonfish/evaluation/nn.py: NNUEEvaluator with dual-perspective accumulators and incremental updates for all move types (quiet, capture, castling, en passant, promotion) - moonfish/engines/nn_engine.py: NNEngine with accumulator save/restore on the search stack, supporting both fixed-depth and timed iterative deepening - moonfish/evaluation/base.py: Evaluator protocol for pluggable evaluation - moonfish/evaluation/classical.py: ClassicalEvaluator wrapping PeSTO tables - scripts/generate_training_data.py: Stockfish-labeled position generator - scripts/train_nnue.py: PyTorch training with sigmoid-scaled MSE + WDL loss - moonfish/models/nnue_v1.npz: Pre-trained weights (96K positions, depth 8) Integration: - New --algorithm nn flag and --nn-model-path CLI option - Bundled model auto-discovered from package directory - numpy added as core dependency; torch as optional [nn] extra - Full UCI compatibility including go movetime/depth/wtime+btime --- moonfish/config.py | 1 + moonfish/engines/nn_engine.py | 281 ++++++++++ moonfish/evaluation/__init__.py | 5 + moonfish/evaluation/base.py | 49 ++ moonfish/evaluation/classical.py | 25 + moonfish/evaluation/nn.py | 182 ++++++ moonfish/helper.py | 29 + moonfish/main.py | 8 + moonfish/models/nnue_v1.npz | Bin 0 -> 395722 bytes pyproject.toml | 10 +- scripts/generate_training_data.py | 332 +++++++++++ scripts/train_nnue.py | 349 ++++++++++++ uv.lock | 898 ++++++++++++++++++++++++++---- 13 files changed, 2045 insertions(+), 124 deletions(-) create mode 100644 moonfish/engines/nn_engine.py create mode 100644 moonfish/evaluation/__init__.py create mode 100644 moonfish/evaluation/base.py create mode 100644 moonfish/evaluation/classical.py create mode 100644 moonfish/evaluation/nn.py create mode 100644 moonfish/models/nnue_v1.npz create mode 100644 scripts/generate_training_data.py create mode 100644 scripts/train_nnue.py diff --git a/moonfish/config.py b/moonfish/config.py index 5e2b227..eb8304c 100644 --- a/moonfish/config.py +++ b/moonfish/config.py @@ -22,3 +22,4 @@ class Config: syzygy_pieces: int checkmate_score: int = CHECKMATE_SCORE checkmate_threshold: int = CHECKMATE_THRESHOLD + nn_model_path: str | None = None diff --git a/moonfish/engines/nn_engine.py b/moonfish/engines/nn_engine.py new file mode 100644 index 0000000..69eff48 --- /dev/null +++ b/moonfish/engines/nn_engine.py @@ -0,0 +1,281 @@ +""" +NNUE chess engine with accumulator state management. + +Uses alpha-beta search with an NNUE evaluator. Maintains accumulator state +during search by saving/restoring before push/pop, enabling incremental +updates instead of full recomputation at every node. +""" + +from multiprocessing.managers import DictProxy + +import chess +from chess import Board, Move + +from moonfish.config import Config +from moonfish.engines.alpha_beta import AlphaBeta, CACHE_KEY, INF, NEG_INF, NULL_MOVE +from moonfish.evaluation.classical import ClassicalEvaluator +from moonfish.evaluation.nn import NNUEEvaluator +from moonfish.move_ordering import organize_moves, organize_moves_quiescence +from moonfish.psqt import count_pieces + + +class NNEngine(AlphaBeta): + """ + Chess engine using NNUE evaluation with incremental accumulator updates. + + Overrides the search methods from AlphaBeta to save/restore NNUE + accumulator state around board.push/pop, enabling efficient incremental + updates during the search tree traversal. + """ + + def __init__( + self, + config: Config, + evaluator: NNUEEvaluator | ClassicalEvaluator | None = None, + ): + super().__init__(config) + self.evaluator = evaluator or ClassicalEvaluator() + self._use_nnue = isinstance(self.evaluator, NNUEEvaluator) + + def eval_board(self, board: Board) -> float: + """Evaluate board using the NNUE evaluator (or classical fallback).""" + if self.tablebase is not None: + pieces = sum(count_pieces(board)) + if pieces <= self.config.syzygy_pieces: + try: + dtz = self.tablebase.probe_dtz(board) + return dtz + except (chess.syzygy.MissingTableError, KeyError): + pass + + return self.evaluator.evaluate(board) + + def _push_move(self, board: Board, move: Move) -> tuple | None: + """Save accumulator state, apply incremental update, push move.""" + saved = None + if self._use_nnue: + nnue = self.evaluator + saved = nnue.save_accumulators() + if move != NULL_MOVE: + nnue.update_move(board, move) + board.push(move) + return saved + + def _pop_move(self, board: Board, saved: tuple | None) -> None: + """Pop move and restore accumulator state.""" + board.pop() + if saved is not None and self._use_nnue: + self.evaluator.restore_accumulators(saved) + + def quiescence_search( + self, + board: Board, + depth: int, + alpha: float, + beta: float, + ) -> float: + """Quiescence search with accumulator save/restore.""" + import time + + in_check = board.is_check() + self.nodes += 1 + + if self._stop_time and (self.nodes & 511) == 0: + if time.perf_counter() >= self._stop_time: + self._time_abort = True + if self._time_abort: + return self.eval_board(board) + + if board.is_checkmate(): + return -self.config.checkmate_score + if board.is_stalemate(): + return 0 + if board.is_fifty_moves() or board.is_insufficient_material(): + return 0 + + stand_pat = self.eval_board(board) + + if in_check: + if depth <= 0: + return stand_pat + best_score = NEG_INF + moves = list(board.legal_moves) + else: + if depth <= 0: + return stand_pat + if stand_pat >= beta: + return beta + best_score = stand_pat + alpha = max(alpha, stand_pat) + moves = organize_moves_quiescence(board) + + for move in moves: + saved = self._push_move(board, move) + + if board.is_repetition(2): + score = 0.0 + else: + score = -self.quiescence_search(board, depth - 1, -beta, -alpha) + + self._pop_move(board, saved) + + if score > best_score: + best_score = score + if score >= beta: + return beta + alpha = max(alpha, score) + + return best_score + + def negamax( + self, + board: Board, + depth: int, + null_move: bool, + cache: DictProxy | CACHE_KEY, + alpha: float = NEG_INF, + beta: float = INF, + ) -> tuple[float | int, Move | None]: + """Negamax search with accumulator save/restore.""" + import time + + cache_key = (board._transposition_key(), depth, null_move, alpha, beta) + self.nodes += 1 + + if self._stop_time and (self.nodes & 511) == 0: + if time.perf_counter() >= self._stop_time: + self._time_abort = True + if self._time_abort: + return 0, None + + if cache_key in cache: + return cache[cache_key] + + if board.is_checkmate(): + cache[cache_key] = (-self.config.checkmate_score, None) + return (-self.config.checkmate_score, None) + if board.is_stalemate(): + cache[cache_key] = (0, None) + return (0, None) + + if depth <= 0: + board_score = self.quiescence_search( + board, self.config.quiescence_search_depth, alpha, beta + ) + cache[cache_key] = (board_score, None) + return board_score, None + + # Null move pruning + if ( + self.config.null_move + and depth >= (self.config.null_move_r + 1) + and not board.is_check() + ): + board_score = self.eval_board(board) + if board_score >= beta: + saved = self._push_move(board, NULL_MOVE) + board_score = -self.negamax( + board, + depth - 1 - self.config.null_move_r, + False, + cache, + -beta, + -beta + 1, + )[0] + self._pop_move(board, saved) + if board_score >= beta: + cache[cache_key] = (beta, None) + return beta, None + + best_move = None + best_score = NEG_INF + moves = organize_moves(board) + + for move in moves: + saved = self._push_move(board, move) + + board_score = -self.negamax( + board, depth - 1, null_move, cache, -beta, -alpha + )[0] + if board_score > self.config.checkmate_threshold: + board_score -= 1 + if board_score < -self.config.checkmate_threshold: + board_score += 1 + + self._pop_move(board, saved) + + if board_score >= beta: + cache[cache_key] = (board_score, move) + return board_score, move + + if board_score > best_score: + best_score = board_score + best_move = move + + alpha = max(alpha, board_score) + if alpha >= beta: + break + + if not best_move: + best_move = self.random_move(board) + + cache[cache_key] = (best_score, best_move) + return best_score, best_move + + def search_move(self, board: Board) -> Move: + """Search for the best move, initializing NNUE accumulators first.""" + self.nodes = 0 + self._time_abort = False + self._stop_time = 0.0 + + if self._use_nnue: + self.evaluator.reset(board) + elif hasattr(self.evaluator, "reset"): + self.evaluator.reset() + + cache: CACHE_KEY = {} + best_move = self.negamax( + board, self.config.negamax_depth, self.config.null_move, cache + )[1] + assert best_move is not None, "Best move from root should not be None" + return best_move + + def search_move_timed(self, board: Board, time_limit_s: float) -> Move: + """Search with iterative deepening + time limit, maintaining accumulators.""" + import time + + self.nodes = 0 + self._time_abort = False + self._stop_time = time.perf_counter() + time_limit_s + + if self._use_nnue: + self.evaluator.reset(board) + elif hasattr(self.evaluator, "reset"): + self.evaluator.reset() + + cache: CACHE_KEY = {} + best_move = None + MAX_DEPTH = 100 + + for depth in range(1, MAX_DEPTH + 1): + score, move = self.negamax( + board, depth, self.config.null_move, cache + ) + + if self._time_abort: + break + + if move is not None: + best_move = move + + elapsed = time.perf_counter() - (self._stop_time - time_limit_s) + remaining = self._stop_time - time.perf_counter() + if remaining < elapsed * 3: + break + + self._stop_time = 0.0 + self._time_abort = False + + if best_move is None: + best_move = self.random_move(board) + return best_move diff --git a/moonfish/evaluation/__init__.py b/moonfish/evaluation/__init__.py new file mode 100644 index 0000000..29e54b4 --- /dev/null +++ b/moonfish/evaluation/__init__.py @@ -0,0 +1,5 @@ +from moonfish.evaluation.base import Evaluator +from moonfish.evaluation.classical import ClassicalEvaluator +from moonfish.evaluation.nn import NNUEEvaluator + +__all__ = ["Evaluator", "ClassicalEvaluator", "NNUEEvaluator"] diff --git a/moonfish/evaluation/base.py b/moonfish/evaluation/base.py new file mode 100644 index 0000000..f7804fd --- /dev/null +++ b/moonfish/evaluation/base.py @@ -0,0 +1,49 @@ +""" +Base evaluator protocol. + +Any evaluation function (classical, NNUE, transformer, LLM) should implement +this protocol to be usable with the alpha-beta search engine. +""" + +from typing import Protocol, runtime_checkable + +from chess import Board + + +@runtime_checkable +class Evaluator(Protocol): + """ + Protocol for board evaluation functions. + + Implementations can range from simple piece-square tables to neural networks + or even LLM-based evaluators. The engine will call `evaluate()` at leaf nodes + of the search tree and in quiescence search. + + The returned score should be from the perspective of the side to move: + - Positive = good for the side to move + - Negative = bad for the side to move + - 0 = roughly equal + + Scores are in centipawns (100 = 1 pawn advantage). + """ + + def evaluate(self, board: Board) -> float: + """ + Evaluate the given board position. + + Args: + board: The chess position to evaluate. + + Returns: + Score in centipawns from the side-to-move's perspective. + """ + ... + + def reset(self) -> None: + """ + Reset any internal state (e.g., caches, accumulators). + + Called at the start of each new search. Implementations that + don't maintain state can make this a no-op. + """ + ... diff --git a/moonfish/evaluation/classical.py b/moonfish/evaluation/classical.py new file mode 100644 index 0000000..4120b0a --- /dev/null +++ b/moonfish/evaluation/classical.py @@ -0,0 +1,25 @@ +""" +Classical evaluator wrapping the existing PeSTO evaluation. + +This is the default evaluator used by the engine. It provides a baseline +for comparing against neural network evaluators. +""" + +from chess import Board + +from moonfish.psqt import BOARD_EVALUATION_CACHE, board_evaluation + + +class ClassicalEvaluator: + """ + Classical evaluation based on PeSTO piece-square tables with + tapered midgame/endgame scoring. + """ + + def evaluate(self, board: Board) -> float: + """Evaluate using PeSTO piece-square tables.""" + return board_evaluation(board) + + def reset(self) -> None: + """Clear the evaluation cache between searches.""" + BOARD_EVALUATION_CACHE.clear() diff --git a/moonfish/evaluation/nn.py b/moonfish/evaluation/nn.py new file mode 100644 index 0000000..9b3e888 --- /dev/null +++ b/moonfish/evaluation/nn.py @@ -0,0 +1,182 @@ +""" +NNUE evaluator with incremental accumulator updates. + +Implements a dual-perspective efficiently updatable neural network (NNUE) +following the architecture pioneered by Stockfish. The network uses: + +- 768 sparse binary input features (6 piece types x 2 colors x 64 squares) +- Dual-perspective feature transformer with shared weights +- SCReLU activation (squared clipped ReLU) +- Single output neuron + +Accumulators are updated incrementally during search: each move only +changes 2-4 input features, so we add/subtract weight columns rather +than recomputing the full matrix multiply. +""" + +import numpy as np +from chess import Board + +import chess + +# Feature encoding: 768 binary features +# Index = piece_type_index * 128 + color * 64 + square +# piece_type_index: PAWN=0, KNIGHT=1, BISHOP=2, ROOK=3, QUEEN=4, KING=5 +# color: WHITE=0, BLACK=1 +# square: 0..63 (a1=0, h8=63) +NUM_FEATURES = 768 +HIDDEN_SIZE = 128 + + +def feature_index(piece_type: int, color: bool, square: int) -> int: + """Compute the feature index for a piece on a square (white perspective).""" + return (piece_type - 1) * 128 + int(color) * 64 + square + + +def feature_index_flipped(piece_type: int, color: bool, square: int) -> int: + """Compute the feature index from black's perspective (flip colors and squares).""" + flipped_color = not color + flipped_square = square ^ 56 # Vertical flip: rank 0 <-> rank 7 + return (piece_type - 1) * 128 + int(flipped_color) * 64 + flipped_square + + +class NNUEEvaluator: + """ + NNUE evaluator with dual-perspective accumulators and incremental updates. + + Architecture: + Input (768 sparse binary) -> Linear(768, 128) shared weights + Two accumulators: white perspective + black perspective + SCReLU on each -> concat(128+128=256) -> Linear(256, 1) -> output + + The accumulator state can be saved and restored during search to avoid + full recomputation after board.pop(). + """ + + def __init__(self, weights_path: str): + data = np.load(weights_path) + self.w1 = data["w1"].astype(np.float32) # (768, 128) + self.b1 = data["b1"].astype(np.float32) # (128,) + self.w2 = data["w2"].astype(np.float32) # (256,) or (256, 1) + self.b2 = data["b2"].astype(np.float32) # (1,) or scalar + + # Flatten w2 to 1D for dot product + self.w2 = self.w2.ravel() + self.b2 = float(self.b2.ravel()[0]) + + # Accumulators: will be set by reset() + self.white_acc = np.copy(self.b1) + self.black_acc = np.copy(self.b1) + + def reset(self, board: Board | None = None) -> None: + """Full recompute of accumulators from board position.""" + self.white_acc = np.copy(self.b1) + self.black_acc = np.copy(self.b1) + if board is not None: + for sq, piece in board.piece_map().items(): + w_idx = feature_index(piece.piece_type, piece.color, sq) + b_idx = feature_index_flipped(piece.piece_type, piece.color, sq) + self.white_acc += self.w1[w_idx] + self.black_acc += self.w1[b_idx] + + def save_accumulators(self) -> tuple[np.ndarray, np.ndarray]: + """Save current accumulator state (for search stack).""" + return np.copy(self.white_acc), np.copy(self.black_acc) + + def restore_accumulators( + self, saved: tuple[np.ndarray, np.ndarray] + ) -> None: + """Restore accumulator state from saved copy.""" + self.white_acc = saved[0] + self.black_acc = saved[1] + + def _add_piece(self, piece_type: int, color: bool, square: int) -> None: + """Add a piece to accumulators.""" + w_idx = feature_index(piece_type, color, square) + b_idx = feature_index_flipped(piece_type, color, square) + self.white_acc += self.w1[w_idx] + self.black_acc += self.w1[b_idx] + + def _remove_piece(self, piece_type: int, color: bool, square: int) -> None: + """Remove a piece from accumulators.""" + w_idx = feature_index(piece_type, color, square) + b_idx = feature_index_flipped(piece_type, color, square) + self.white_acc -= self.w1[w_idx] + self.black_acc -= self.w1[b_idx] + + def update_move(self, board: Board, move: chess.Move) -> None: + """ + Incrementally update accumulators for a move. + + Must be called BEFORE board.push(move). The board state is used + to determine captures, castling, en passant, and promotions. + + Typically 2 feature changes (quiet move), 4 for captures/castling/promotion. + """ + from_sq = move.from_square + to_sq = move.to_square + piece = board.piece_at(from_sq) + if piece is None: + return + + moving_type = piece.piece_type + moving_color = piece.color + + # Handle capture (remove captured piece) + if board.is_en_passant(move): + # En passant: captured pawn is on a different square + if moving_color == chess.WHITE: + capture_sq = to_sq - 8 + else: + capture_sq = to_sq + 8 + self._remove_piece(chess.PAWN, not moving_color, capture_sq) + elif board.is_capture(move): + captured = board.piece_at(to_sq) + if captured is not None: + self._remove_piece(captured.piece_type, captured.color, to_sq) + + # Remove piece from origin square + self._remove_piece(moving_type, moving_color, from_sq) + + # Handle promotion + if move.promotion is not None: + # Add promoted piece to destination + self._add_piece(move.promotion, moving_color, to_sq) + else: + # Add piece to destination + self._add_piece(moving_type, moving_color, to_sq) + + # Handle castling: also move the rook + if board.is_castling(move): + if to_sq > from_sq: + # Kingside + rook_from = chess.square(7, chess.square_rank(from_sq)) + rook_to = chess.square(5, chess.square_rank(from_sq)) + else: + # Queenside + rook_from = chess.square(0, chess.square_rank(from_sq)) + rook_to = chess.square(3, chess.square_rank(from_sq)) + self._remove_piece(chess.ROOK, moving_color, rook_from) + self._add_piece(chess.ROOK, moving_color, rook_to) + + def evaluate(self, board: Board) -> float: + """ + Forward pass with SCReLU activation. + + Returns score from the side-to-move's perspective. + """ + if board.turn == chess.WHITE: + stm = self.white_acc + nstm = self.black_acc + else: + stm = self.black_acc + nstm = self.white_acc + + # SCReLU: clamp(x, 0, 1)^2 + stm_out = np.clip(stm, 0.0, 1.0) + stm_out = stm_out * stm_out + nstm_out = np.clip(nstm, 0.0, 1.0) + nstm_out = nstm_out * nstm_out + + hidden = np.concatenate([stm_out, nstm_out]) + return float(np.dot(hidden, self.w2) + self.b2) diff --git a/moonfish/helper.py b/moonfish/helper.py index d7fd04d..2b42126 100644 --- a/moonfish/helper.py +++ b/moonfish/helper.py @@ -10,6 +10,7 @@ from moonfish.engines.l1p_alpha_beta import Layer1ParallelAlphaBeta from moonfish.engines.l2p_alpha_beta import Layer2ParallelAlphaBeta from moonfish.engines.lazy_smp import LazySMP +from moonfish.engines.nn_engine import NNEngine from moonfish.engines.random import RandomEngine @@ -21,6 +22,7 @@ class Algorithm(Enum): parallel_alpha_beta_layer_2 = "parallel_alpha_beta_layer_2" lazy_smp = "lazy_smp" random = "random" + nn = "nn" def get_engine(config: Config): @@ -45,9 +47,36 @@ def get_engine(config: Config): return LazySMP(config) elif algorithm is Algorithm.random: return RandomEngine(config) + elif algorithm is Algorithm.nn: + return _create_nn_engine(config) raise Exception("algorithm not supported") +def _default_nn_model_path() -> str | None: + """Resolve the default NNUE model path (bundled with the package).""" + model = Path(__file__).resolve().parent / "models" / "nnue_v1.npz" + if model.is_file(): + return str(model) + return None + + +def _create_nn_engine(config: Config) -> NNEngine: + """ + Create an NN engine with the configured evaluator. + + If nn_model_path is set, loads the model from that path. + Otherwise, looks for the bundled default model. + Falls back to classical evaluation if no model is found. + """ + model_path = config.nn_model_path or _default_nn_model_path() + evaluator = None + if model_path: + from moonfish.evaluation.nn import NNUEEvaluator + + evaluator = NNUEEvaluator(model_path) + return NNEngine(config, evaluator=evaluator) + + def _opening_book_path() -> str: """ Resolve the opening book path, allowing overrides for CI or custom installs. diff --git a/moonfish/main.py b/moonfish/main.py index a2a36cf..ed5291e 100644 --- a/moonfish/main.py +++ b/moonfish/main.py @@ -62,6 +62,12 @@ def run(config: Config): help="Remaining pieces to use syzygy endgame tablebases.", default=5, ) +@click.option( + "--nn-model-path", + type=str, + help="Path to NNUE model weights (.npz) for the nn algorithm.", + default=None, +) def main( mode: str, algorithm: str, @@ -71,6 +77,7 @@ def main( quiescence_search_depth: int, syzygy_path: str | None, syzygy_pieces: int, + nn_model_path: str | None, ): """ Starts the engine according to the options provided. @@ -84,6 +91,7 @@ def main( quiescence_search_depth=quiescence_search_depth, syzygy_path=syzygy_path, syzygy_pieces=syzygy_pieces, + nn_model_path=nn_model_path, ) run(config) diff --git a/moonfish/models/nnue_v1.npz b/moonfish/models/nnue_v1.npz new file mode 100644 index 0000000000000000000000000000000000000000..86d88506e05ee5d6bf6501042bb2e07fcccf70f3 GIT binary patch literal 395722 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

c}p+ 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 Og44qG>t=2.0.0", +] rl = [ "fastapi>=0.100.0", "uvicorn[standard]>=0.23.0", @@ -39,18 +43,20 @@ rl = [ ] [tool.setuptools] -packages = ["moonfish", "moonfish.rl", "moonfish.rl.server", "moonfish.rl.examples"] +packages = ["moonfish", "moonfish.engines", "moonfish.evaluation", "moonfish.rl", "moonfish.rl.server", "moonfish.rl.examples"] [tool.setuptools_scm] version_scheme = "post-release" local_scheme = "no-local-version" [tool.setuptools.package-data] -"moonfish" = ["py.typed"] +"moonfish" = ["py.typed", "models/*.npz"] [[tool.mypy.overrides]] module = [ "parameterized.*", + "torch", + "torch.*", "httpx", "httpx.*", "fastapi", diff --git a/scripts/generate_training_data.py b/scripts/generate_training_data.py new file mode 100644 index 0000000..0f1b614 --- /dev/null +++ b/scripts/generate_training_data.py @@ -0,0 +1,332 @@ +#!/usr/bin/env python3 +""" +Generate NNUE training data using Stockfish evaluations. + +Produces labeled chess positions for training the NNUE evaluation network. +Each position is labeled with Stockfish's evaluation at the specified depth +and its WDL (Win/Draw/Loss) probabilities. + +Requires: python-chess, numpy, and Stockfish binary in PATH or via --stockfish. + +Usage: + uv run python scripts/generate_training_data.py \ + --num-positions 1000000 \ + --depth 8 \ + --output data/training_data.npz \ + --workers 4 +""" + +import argparse +import multiprocessing +import os +import random +import sys +import time +from pathlib import Path + +import chess +import chess.engine +import numpy as np + + +# 48 bench positions from Stockfish (same as moonfish bench) +SEED_POSITIONS = [ + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", + "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 10", + "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 11", + "4rrk1/pp1n3p/3q2pQ/2p1pb2/2PP4/2P3N1/P2B2PP/4RRK1 b - - 7 19", + "r1bq1r1k/1pp1n1pp/1p1p4/4p2Q/4Pp2/1BNP4/PPP2PPP/3R1RK1 w - - 2 14", + "r3r1k1/2p2ppp/p1p1bn2/8/1q2P3/2NPQN2/PPP3PP/R4RK1 b - - 2 15", + "r1bbk1nr/pp3p1p/2n5/1N4p1/2Np1B2/8/PPP2PPP/2KR1B1R w kq - 0 13", + "r1bq1rk1/ppp1nppp/4n3/3p3Q/3P4/1BP1B3/PP1N2PP/R4RK1 w - - 1 16", + "4r1k1/r1q2ppp/ppp2n2/4P3/5Rb1/1N1BQ3/PPP3PP/R5K1 w - - 1 17", + "2rqkb1r/ppp2p2/2npb1p1/1N1Nn2p/2P1PP2/8/PP2B1PP/R1BQK2R b KQ - 0 11", + "r1bq1r1k/b1p1npp1/p2p3p/1p6/3PP3/1B2NN2/PP3PPP/R2Q1RK1 w - - 1 16", + "3r1rk1/p5pp/bpp1pp2/8/q1PP1P2/b3P3/P2NQRPP/1R2B1K1 b - - 6 22", + "r1q2rk1/2p1bppp/2Pp4/p6b/Q1PNp3/4B3/PP1R1PPP/2K4R w - - 2 18", + "4k2r/1pb2ppp/1p2p3/1R1p4/3P4/2r1PN2/P4PPP/1R4K1 b - - 3 22", + "3q2k1/pb3p1p/4pbp1/2r5/PpN2N2/1P2P2P/5PP1/Q2R2K1 b - - 4 26", + "6k1/6p1/6Pp/ppp5/3pn2P/1P3K2/1PP2P2/3N4 b - - 0 1", + "3b4/5kp1/1p1p1p1p/pP1PpP1P/P1P1P3/3KN3/8/8 w - - 0 1", + "8/6pk/1p6/8/PP3p1p/5P2/4KP1q/3Q4 w - - 0 1", + "7k/3p2pp/4q3/8/4Q3/5Kp1/P6b/8 w - - 0 1", + "8/2p5/8/2kPKp1p/2p4P/2P5/3P4/8 w - - 0 1", + "8/1p3pp1/7p/5P1P/2k3P1/8/2K2P2/8 w - - 0 1", + "8/pp2r1k1/2p1p3/3pP2p/1P1P1P1P/P5KR/8/8 w - - 0 1", + "8/3p4/p1bk3p/Pp6/1Kp1PpPp/2P2P1P/2P5/5B2 b - - 0 1", + "5k2/7R/4P2p/5K2/p1r2P1p/8/8/8 b - - 0 1", + "6k1/6p1/P6p/r1N5/5p2/7P/1b3PP1/4R1K1 w - - 0 1", + "1r3k2/4q3/2Pp3b/3Bp3/2Q2p2/1p1P2P1/1P2KP2/3N4 w - - 0 1", + "6k1/4pp1p/3p2p1/P1pPb3/R7/1r2P1PP/3B1P2/6K1 w - - 0 1", + "8/3p3B/5p2/5P2/p7/PP5b/k7/6K1 w - - 0 1", + "5rk1/q6p/2p3bR/1pPp1rP1/1P1Pp3/P3B1Q1/1K3P2/R7 w - - 93 90", + "4rrk1/1p1nq3/p7/2p1P1pp/3P2bp/3Q1Bn1/PPPB4/1K2R1NR w - - 40 21", + "r3k2r/3nnpbp/q2pp1p1/p7/Pp1PPPP1/4BNN1/1P5P/R2Q1RK1 w kq - 0 16", + "3Qb1k1/1r2ppb1/pN1n2q1/Pp1Pp1Pr/4P2p/4BP2/4B1R1/1R5K b - - 11 40", + "4k3/3q1r2/1N2r1b1/3ppN2/2nPP3/1B1R2n1/2R1Q3/3K4 w - - 5 1", + "8/8/8/8/5kp1/P7/8/1K1N4 w - - 0 1", + "8/8/8/5N2/8/p7/8/2NK3k w - - 0 1", + "8/3k4/8/8/8/4B3/4KB2/2B5 w - - 0 1", + "8/8/1P6/5pr1/8/4R3/7k/2K5 w - - 0 1", + "8/2p4P/8/kr6/6R1/8/8/1K6 w - - 0 1", + "8/8/3P3k/8/1p6/8/1P6/1K3n2 b - - 0 1", + "8/R7/2q5/8/6k1/8/1P5p/K6R w - - 0 124", + "6k1/3b3r/1p1p4/p1n2p2/1PPNpP1q/P3Q1p1/1R1RB1P1/5K2 b - - 0 1", + "r2r1n2/pp2bk2/2p1p2p/3q4/3PN1QP/2P3R1/P4PP1/5RK1 w - - 0 1", +] + + +def feature_index(piece_type: int, color: bool, square: int) -> int: + """Compute NNUE feature index for a piece (white perspective).""" + return (piece_type - 1) * 128 + int(color) * 64 + square + + +def encode_position(board: chess.Board) -> list[int]: + """Return active feature indices for a position (white perspective).""" + features = [] + for sq, piece in board.piece_map().items(): + features.append(feature_index(piece.piece_type, piece.color, sq)) + return sorted(features) + + +def generate_positions_from_seed( + seed_fen: str, + stockfish_path: str, + num_games: int, + depth: int, + max_positions_per_seed: int, +) -> list[tuple[list[int], int, float]]: + """ + Generate positions from a seed by playing random/Stockfish games. + + Returns list of (feature_indices, score_cp, wdl_win_prob) tuples. + """ + results = [] + seen_fens = set() + + try: + engine = chess.engine.SimpleEngine.popen_uci(stockfish_path) + except Exception as e: + print(f"Error opening Stockfish: {e}", file=sys.stderr) + return results + + try: + for game_idx in range(num_games): + if len(results) >= max_positions_per_seed: + break + + board = chess.Board(seed_fen) + + # Play random opening moves (5-10 moves) + num_random = random.randint(5, 10) + for _ in range(num_random): + legal = list(board.legal_moves) + if not legal: + break + board.push(random.choice(legal)) + + # Play a game mixing Stockfish moves with occasional random moves + ply = 0 + next_random_ply = random.randint(8, 12) + + while not board.is_game_over() and ply < 300: + ply += 1 + + # Should we add this position to training data? + fen_key = board.board_fen() + " " + ("w" if board.turn else "b") + if ( + ply >= 1 + and not board.is_check() + and fen_key not in seen_fens + ): + try: + info = engine.analyse( + board, + chess.engine.Limit(depth=depth), + ) + score = info["score"].white() + + # Skip mate scores + if score.is_mate(): + pass + else: + cp = score.score() + if cp is not None and abs(cp) <= 10000: + # Get WDL if available + wdl = info.get("wdl") + if wdl is not None: + # WDL is (wins, draws, losses) per mille from side to move + w, d, l = wdl + # Convert to win probability from white's perspective + if board.turn == chess.WHITE: + win_prob = w / 1000.0 + else: + win_prob = l / 1000.0 + else: + # Estimate from score using sigmoid + win_prob = 1.0 / (1.0 + 10.0 ** (-cp / 400.0)) + + features = encode_position(board) + results.append((features, cp, win_prob)) + seen_fens.add(fen_key) + + if len(results) >= max_positions_per_seed: + break + except Exception: + pass + + # Make next move + legal = list(board.legal_moves) + if not legal: + break + + if ply >= next_random_ply: + # Inject a random move for diversity + board.push(random.choice(legal)) + next_random_ply = ply + random.randint(8, 12) + else: + # Use Stockfish at low depth for speed + try: + result = engine.play( + board, + chess.engine.Limit(depth=random.randint(1, 4)), + ) + board.push(result.move) + except Exception: + board.push(random.choice(legal)) + finally: + engine.quit() + + return results + + +def worker_fn(args): + """Worker function for multiprocessing.""" + seed_fens, stockfish_path, games_per_seed, depth, positions_per_seed = args + all_results = [] + for fen in seed_fens: + results = generate_positions_from_seed( + fen, stockfish_path, games_per_seed, depth, positions_per_seed, + ) + all_results.extend(results) + return all_results + + +def main(): + parser = argparse.ArgumentParser( + description="Generate NNUE training data using Stockfish" + ) + parser.add_argument( + "--num-positions", type=int, default=1_000_000, + help="Target number of positions to generate", + ) + parser.add_argument( + "--depth", type=int, default=8, + help="Stockfish analysis depth for labeling", + ) + parser.add_argument( + "--output", type=str, default="data/training_data.npz", + help="Output .npz file path", + ) + parser.add_argument( + "--stockfish", type=str, default="stockfish", + help="Path to Stockfish binary", + ) + parser.add_argument( + "--workers", type=int, default=max(1, os.cpu_count() // 2), + help="Number of worker processes", + ) + args = parser.parse_args() + + # Verify Stockfish is available + try: + engine = chess.engine.SimpleEngine.popen_uci(args.stockfish) + engine.quit() + except Exception as e: + print(f"Error: Cannot find Stockfish at '{args.stockfish}': {e}") + print("Install Stockfish or provide path with --stockfish") + sys.exit(1) + + print(f"Generating {args.num_positions} positions at depth {args.depth}") + print(f"Using {args.workers} workers") + print(f"Output: {args.output}") + + seed_fens = SEED_POSITIONS + positions_per_seed = (args.num_positions // len(seed_fens)) + 1 + games_per_seed = max(10, positions_per_seed // 30) + + # Split seeds across workers + chunks = [[] for _ in range(args.workers)] + for i, fen in enumerate(seed_fens): + chunks[i % args.workers].append(fen) + + worker_args = [ + (chunk, args.stockfish, games_per_seed, args.depth, positions_per_seed) + for chunk in chunks + if chunk + ] + + start_time = time.time() + + if args.workers == 1: + all_results = worker_fn(worker_args[0]) + else: + with multiprocessing.Pool(args.workers) as pool: + results_list = pool.map(worker_fn, worker_args) + all_results = [] + for r in results_list: + all_results.extend(r) + + elapsed = time.time() - start_time + print(f"Generated {len(all_results)} positions in {elapsed:.1f}s") + + if not all_results: + print("No positions generated!") + sys.exit(1) + + # Deduplicate by keeping first occurrence + seen = set() + unique_results = [] + for features, score, wdl in all_results: + key = tuple(features) + if key not in seen: + seen.add(key) + unique_results.append((features, score, wdl)) + + print(f"After dedup: {len(unique_results)} unique positions") + + # Convert to numpy arrays + # Store as variable-length feature lists using a padded array + max_features = max(len(f) for f, _, _ in unique_results) + n = len(unique_results) + + # Feature indices (padded with -1) + feature_indices = np.full((n, max_features), -1, dtype=np.int16) + feature_counts = np.zeros(n, dtype=np.int8) + scores = np.zeros(n, dtype=np.int16) + wdl_probs = np.zeros(n, dtype=np.float32) + + for i, (features, score, wdl) in enumerate(unique_results): + feature_indices[i, :len(features)] = features + feature_counts[i] = len(features) + scores[i] = score + wdl_probs[i] = wdl + + # Save + output_path = Path(args.output) + output_path.parent.mkdir(parents=True, exist_ok=True) + np.savez_compressed( + str(output_path), + feature_indices=feature_indices, + feature_counts=feature_counts, + scores=scores, + wdl_probs=wdl_probs, + ) + + file_size = output_path.stat().st_size / (1024 * 1024) + print(f"Saved to {args.output} ({file_size:.1f} MB)") + print(f"Positions: {n}, Score range: [{scores.min()}, {scores.max()}]") + + +if __name__ == "__main__": + main() diff --git a/scripts/train_nnue.py b/scripts/train_nnue.py new file mode 100644 index 0000000..ad5c61c --- /dev/null +++ b/scripts/train_nnue.py @@ -0,0 +1,349 @@ +#!/usr/bin/env python3 +""" +Train an NNUE evaluation network from Stockfish-labeled positions. + +Architecture (dual-perspective, following Stockfish pattern): + Input: 768 sparse binary features (per perspective) + Feature transformer: Linear(768, 128) with shared weights + Combine: concat(SCReLU(stm_acc), SCReLU(nstm_acc)) -> 256 + Output: Linear(256, 1) + Parameters: ~100K + +Loss: Sigmoid-scaled MSE + WDL cross-entropy + +Usage: + uv run --extra nn python scripts/train_nnue.py \ + --data data/training_data.npz \ + --output moonfish/models/nnue_v1.npz \ + --epochs 20 +""" + +import argparse +import math +import sys +from pathlib import Path + +import numpy as np + +try: + import torch + import torch.nn as nn + import torch.optim as optim + from torch.utils.data import DataLoader, Dataset, random_split +except ImportError: + print("PyTorch is required for training. Install with: uv pip install torch") + sys.exit(1) + + +NUM_FEATURES = 768 +HIDDEN_SIZE = 128 +SCORE_SCALE = 400.0 # Stockfish standard sigmoid scaling + + +class SCReLU(nn.Module): + """Squared Clipped ReLU: screlu(x) = clamp(x, 0, 1)^2""" + + def forward(self, x: torch.Tensor) -> torch.Tensor: + return torch.clamp(x, 0.0, 1.0) ** 2 + + +class NNUEModel(nn.Module): + """ + Dual-perspective NNUE model. + + The feature transformer is shared between both perspectives. + During training, we construct both perspectives from the input features. + """ + + def __init__(self): + super().__init__() + self.ft = nn.Linear(NUM_FEATURES, HIDDEN_SIZE) + self.screlu = SCReLU() + self.output = nn.Linear(HIDDEN_SIZE * 2, 1) + + def forward( + self, + white_features: torch.Tensor, + black_features: torch.Tensor, + stm_is_white: torch.Tensor, + ) -> torch.Tensor: + """ + Forward pass. + + Args: + white_features: (batch, 768) binary features from white's perspective + black_features: (batch, 768) binary features from black's perspective + stm_is_white: (batch,) bool tensor, True if side to move is white + """ + white_acc = self.ft(white_features) + black_acc = self.ft(black_features) + + white_out = self.screlu(white_acc) + black_out = self.screlu(black_acc) + + # Assemble dual perspective: [stm, nstm] + stm_mask = stm_is_white.unsqueeze(1).float() + stm = white_out * stm_mask + black_out * (1 - stm_mask) + nstm = black_out * stm_mask + white_out * (1 - stm_mask) + + hidden = torch.cat([stm, nstm], dim=1) + return self.output(hidden).squeeze(1) + + +def feature_index(piece_type: int, color: int, square: int) -> int: + """White-perspective feature index.""" + return (piece_type - 1) * 128 + color * 64 + square + + +def feature_index_flipped(piece_type: int, color: int, square: int) -> int: + """Black-perspective feature index (flip colors and squares).""" + flipped_color = 1 - color + flipped_square = square ^ 56 + return (piece_type - 1) * 128 + flipped_color * 64 + flipped_square + + +class NNUEDataset(Dataset): + """Dataset for NNUE training from generated .npz data.""" + + def __init__(self, data_path: str): + data = np.load(data_path) + self.feature_indices = data["feature_indices"] # (N, max_features) + self.feature_counts = data["feature_counts"] # (N,) + self.scores = data["scores"].astype(np.float32) # (N,) + self.wdl_probs = data["wdl_probs"].astype(np.float32) # (N,) + + def __len__(self) -> int: + return len(self.scores) + + def __getitem__(self, idx: int): + # Build white-perspective and black-perspective feature vectors + white_features = np.zeros(NUM_FEATURES, dtype=np.float32) + black_features = np.zeros(NUM_FEATURES, dtype=np.float32) + + count = self.feature_counts[idx] + indices = self.feature_indices[idx, :count] + + for w_idx in indices: + if w_idx < 0: + continue + white_features[w_idx] = 1.0 + + # Decode the feature index to get piece info + pt_idx = w_idx // 128 # 0-5 (piece type - 1) + remainder = w_idx % 128 + color = remainder // 64 # 0=white, 1=black + square = remainder % 64 + + # Compute black-perspective index + b_idx = feature_index_flipped(pt_idx + 1, color, square) + black_features[b_idx] = 1.0 + + score = self.scores[idx] + wdl = self.wdl_probs[idx] + + # Determine side to move from score perspective + # The scores in training data are from white's perspective + # For now, we treat all as white-to-move and the model learns + # the perspective via the dual accumulator + stm_is_white = True + + return ( + torch.from_numpy(white_features), + torch.from_numpy(black_features), + torch.tensor(stm_is_white, dtype=torch.bool), + torch.tensor(score, dtype=torch.float32), + torch.tensor(wdl, dtype=torch.float32), + ) + + +def sigmoid_scale(x: torch.Tensor) -> torch.Tensor: + """Apply sigmoid scaling with Stockfish standard factor.""" + return torch.sigmoid(x / SCORE_SCALE) + + +def compute_loss( + predicted: torch.Tensor, + target_score: torch.Tensor, + target_wdl: torch.Tensor, + wdl_lambda: float = 0.5, +) -> torch.Tensor: + """ + Sigmoid-scaled MSE + WDL cross-entropy loss. + + pred_sigmoid = sigmoid(predicted / 400) + target_sigmoid = sigmoid(target_score / 400) + loss = (1 - lambda) * MSE(pred_sigmoid, target_sigmoid) + + lambda * BCE(pred_sigmoid, target_wdl) + """ + pred_sig = sigmoid_scale(predicted) + target_sig = sigmoid_scale(target_score) + + # Sigmoid-scaled MSE + mse_loss = torch.mean((pred_sig - target_sig) ** 2) + + # WDL binary cross-entropy (clamped to avoid log(0)) + eps = 1e-7 + pred_clamped = torch.clamp(pred_sig, eps, 1 - eps) + wdl_loss = -torch.mean( + target_wdl * torch.log(pred_clamped) + + (1 - target_wdl) * torch.log(1 - pred_clamped) + ) + + return (1 - wdl_lambda) * mse_loss + wdl_lambda * wdl_loss + + +def train(args): + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + + # Load dataset + print(f"Loading data from {args.data}...") + dataset = NNUEDataset(args.data) + print(f"Total positions: {len(dataset)}") + + # Train/val split + val_size = int(len(dataset) * 0.1) + train_size = len(dataset) - val_size + train_dataset, val_dataset = random_split(dataset, [train_size, val_size]) + print(f"Train: {train_size}, Val: {val_size}") + + train_loader = DataLoader( + train_dataset, + batch_size=args.batch_size, + shuffle=True, + num_workers=min(4, args.workers), + pin_memory=True, + ) + val_loader = DataLoader( + val_dataset, + batch_size=args.batch_size, + shuffle=False, + num_workers=min(4, args.workers), + pin_memory=True, + ) + + # Model + model = NNUEModel().to(device) + total_params = sum(p.numel() for p in model.parameters()) + print(f"Model parameters: {total_params:,}") + + optimizer = optim.Adam(model.parameters(), lr=args.lr) + + # LR schedule: reduce by 3x every 3 epochs + scheduler = optim.lr_scheduler.StepLR( + optimizer, step_size=3, gamma=1.0 / 3.0 + ) + + best_val_loss = float("inf") + + for epoch in range(1, args.epochs + 1): + # Training + model.train() + train_loss = 0.0 + n_batches = 0 + + for batch in train_loader: + white_feat, black_feat, stm, score, wdl = [ + b.to(device) for b in batch + ] + + optimizer.zero_grad() + predicted = model(white_feat, black_feat, stm) + loss = compute_loss(predicted, score, wdl, args.wdl_lambda) + loss.backward() + optimizer.step() + + train_loss += loss.item() + n_batches += 1 + + train_loss /= max(n_batches, 1) + + # Validation + model.eval() + val_loss = 0.0 + n_val_batches = 0 + + with torch.no_grad(): + for batch in val_loader: + white_feat, black_feat, stm, score, wdl = [ + b.to(device) for b in batch + ] + predicted = model(white_feat, black_feat, stm) + loss = compute_loss(predicted, score, wdl, args.wdl_lambda) + val_loss += loss.item() + n_val_batches += 1 + + val_loss /= max(n_val_batches, 1) + + lr = optimizer.param_groups[0]["lr"] + print( + f"Epoch {epoch:3d}/{args.epochs} | " + f"train_loss={train_loss:.6f} | " + f"val_loss={val_loss:.6f} | " + f"lr={lr:.6f}" + ) + + scheduler.step() + + if val_loss < best_val_loss: + best_val_loss = val_loss + # Save best model weights in numpy format + save_weights(model, args.output) + print(f" -> Best model saved to {args.output}") + + print(f"\nTraining complete. Best val_loss: {best_val_loss:.6f}") + + +def save_weights(model: NNUEModel, output_path: str): + """Export model weights to numpy .npz format for inference.""" + output = Path(output_path) + output.parent.mkdir(parents=True, exist_ok=True) + + state = model.state_dict() + + # Feature transformer: w1 = (768, 128), b1 = (128,) + w1 = state["ft.weight"].cpu().numpy().T # PyTorch stores (out, in), we want (in, out) + b1 = state["ft.bias"].cpu().numpy() + + # Output layer: w2 = (256, 1), b2 = (1,) + w2 = state["output.weight"].cpu().numpy().T # (256, 1) + b2 = state["output.bias"].cpu().numpy() + + np.savez( + str(output), + w1=w1.astype(np.float32), + b1=b1.astype(np.float32), + w2=w2.astype(np.float32), + b2=b2.astype(np.float32), + ) + + file_size = output.stat().st_size / 1024 + print(f" Weights saved: w1={w1.shape}, b1={b1.shape}, w2={w2.shape}, b2={b2.shape}") + print(f" File size: {file_size:.1f} KB") + + +def main(): + parser = argparse.ArgumentParser(description="Train NNUE evaluation network") + parser.add_argument( + "--data", type=str, required=True, + help="Path to training data .npz file", + ) + parser.add_argument( + "--output", type=str, default="moonfish/models/nnue_v1.npz", + help="Output path for trained weights", + ) + parser.add_argument("--epochs", type=int, default=20) + parser.add_argument("--batch-size", type=int, default=16384) + parser.add_argument("--lr", type=float, default=0.001) + parser.add_argument( + "--wdl-lambda", type=float, default=0.5, + help="Weight for WDL loss (0=pure MSE, 1=pure WDL)", + ) + parser.add_argument("--workers", type=int, default=4) + + args = parser.parse_args() + train(args) + + +if __name__ == "__main__": + main() diff --git a/uv.lock b/uv.lock index 7accfb2..fa7885f 100644 --- a/uv.lock +++ b/uv.lock @@ -1,6 +1,6 @@ version = 1 -revision = 2 -requires-python = ">=3.10" +revision = 3 +requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.13'", "python_full_version < '3.13'", @@ -15,6 +15,37 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4d/3f/3bc3f1d83f6e4a7fcb834d3720544ca597590425be5ba9db032b2bf322a2/altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff", size = 21212, upload-time = "2023-09-25T09:04:50.691Z" }, ] +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, +] + [[package]] name = "attrs" version = "25.3.0" @@ -34,19 +65,9 @@ dependencies = [ { name = "packaging" }, { name = "pathspec" }, { name = "platformdirs" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/3b/4ba3f93ac8d90410423fdd31d7541ada9bcee1df32fb90d26de41ed40e1d/black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", size = 1629419, upload-time = "2025-01-29T05:37:06.642Z" }, - { url = "https://files.pythonhosted.org/packages/b4/02/0bde0485146a8a5e694daed47561785e8b77a0466ccc1f3e485d5ef2925e/black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", size = 1461080, upload-time = "2025-01-29T05:37:09.321Z" }, - { url = "https://files.pythonhosted.org/packages/52/0e/abdf75183c830eaca7589144ff96d49bce73d7ec6ad12ef62185cc0f79a2/black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", size = 1766886, upload-time = "2025-01-29T04:18:24.432Z" }, - { url = "https://files.pythonhosted.org/packages/dc/a6/97d8bb65b1d8a41f8a6736222ba0a334db7b7b77b8023ab4568288f23973/black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", size = 1419404, upload-time = "2025-01-29T04:19:04.296Z" }, - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload-time = "2025-01-29T05:37:11.71Z" }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload-time = "2025-01-29T05:37:14.309Z" }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload-time = "2025-01-29T04:18:17.688Z" }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload-time = "2025-01-29T04:18:51.711Z" }, { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, @@ -67,6 +88,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" }, ] +[[package]] +name = "certifi" +version = "2026.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, +] + [[package]] name = "chess" version = "1.11.2" @@ -94,6 +124,54 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "cuda-bindings" +version = "12.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/c1/dabe88f52c3e3760d861401bb994df08f672ec893b8f7592dc91626adcf3/cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fda147a344e8eaeca0c6ff113d2851ffca8f7dfc0a6c932374ee5c47caa649c8", size = 12151019, upload-time = "2025-10-21T14:51:43.167Z" }, + { url = "https://files.pythonhosted.org/packages/63/56/e465c31dc9111be3441a9ba7df1941fe98f4aa6e71e8788a3fb4534ce24d/cuda_bindings-12.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:32bdc5a76906be4c61eb98f546a6786c5773a881f3b166486449b5d141e4a39f", size = 11906628, upload-time = "2025-10-21T14:51:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/a3/84/1e6be415e37478070aeeee5884c2022713c1ecc735e6d82d744de0252eee/cuda_bindings-12.9.4-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56e0043c457a99ac473ddc926fe0dc4046694d99caef633e92601ab52cbe17eb", size = 11925991, upload-time = "2025-10-21T14:51:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/d1/af/6dfd8f2ed90b1d4719bc053ff8940e494640fe4212dc3dd72f383e4992da/cuda_bindings-12.9.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8b72ee72a9cc1b531db31eebaaee5c69a8ec3500e32c6933f2d3b15297b53686", size = 11922703, upload-time = "2025-10-21T14:52:03.585Z" }, + { url = "https://files.pythonhosted.org/packages/6c/19/90ac264acc00f6df8a49378eedec9fd2db3061bf9263bf9f39fd3d8377c3/cuda_bindings-12.9.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d80bffc357df9988dca279734bc9674c3934a654cab10cadeed27ce17d8635ee", size = 11924658, upload-time = "2025-10-21T14:52:10.411Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/5e/db279a3bfbd18d59d0598922a3b3c1454908d0969e8372260afec9736376/cuda_pathfinder-1.3.4-py3-none-any.whl", hash = "sha256:fb983f6e0d43af27ef486e14d5989b5f904ef45cedf40538bfdcbffa6bb01fb2", size = 30878, upload-time = "2026-02-11T18:50:31.008Z" }, +] + +[[package]] +name = "fastapi" +version = "0.129.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/47/75f6bea02e797abff1bca968d5997793898032d9923c1935ae2efdece642/fastapi-0.129.0.tar.gz", hash = "sha256:61315cebd2e65df5f97ec298c888f9de30430dd0612d59d6480beafbc10655af", size = 375450, upload-time = "2026-02-12T13:54:52.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/dd/d0ee25348ac58245ee9f90b6f3cbb666bf01f69be7e0911f9851bddbda16/fastapi-0.129.0-py3-none-any.whl", hash = "sha256:b4946880e48f462692b31c083be0432275cbfb6e2274566b1be91479cc1a84ec", size = 102950, upload-time = "2026-02-12T13:54:54.528Z" }, +] + +[[package]] +name = "filelock" +version = "3.24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/a8/dae62680be63cbb3ff87cfa2f51cf766269514ea5488479d42fec5aa6f3a/filelock-3.24.2.tar.gz", hash = "sha256:c22803117490f156e59fafce621f0550a7a853e2bbf4f87f112b11d469b6c81b", size = 37601, upload-time = "2026-02-16T02:50:45.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/04/a94ebfb4eaaa08db56725a40de2887e95de4e8641b9e902c311bfa00aa39/filelock-3.24.2-py3-none-any.whl", hash = "sha256:667d7dc0b7d1e1064dd5f8f8e80bdac157a6482e8d2e02cd16fd3b6b33bd6556", size = 24152, upload-time = "2026-02-16T02:50:44Z" }, +] + [[package]] name = "flake8" version = "7.3.0" @@ -138,6 +216,90 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/17/f8/01bf35a3afd734345528f98d0353f2a978a476528ad4d7e78b70c4d149dd/flask_cors-6.0.1-py3-none-any.whl", hash = "sha256:c7b2cbfb1a31aa0d2e5341eea03a6805349f7a61647daee1a15c46bbe981494c", size = 13244, upload-time = "2025-06-11T01:32:07.352Z" }, ] +[[package]] +name = "fsspec" +version = "2026.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/7c/f60c259dcbf4f0c47cc4ddb8f7720d2dcdc8888c8e5ad84c73ea4531cc5b/fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff", size = 313441, upload-time = "2026-02-05T21:50:53.743Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ab/fb21f4c939bb440104cc2b396d3be1d9b7a9fd3c6c2a53d98c45b3d7c954/fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437", size = 202505, upload-time = "2026-02-05T21:50:51.819Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload-time = "2025-10-10T03:55:08.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/7f/403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed/httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:38e0c83a2ea9746ebbd643bdfb521b9aa4a91703e2cd705c20443405d2fd16a5", size = 206280, upload-time = "2025-10-10T03:54:39.274Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b/httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f25bbaf1235e27704f1a7b86cd3304eabc04f569c828101d94a0e605ef7205a5", size = 110004, upload-time = "2025-10-10T03:54:40.403Z" }, + { url = "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03", size = 517655, upload-time = "2025-10-10T03:54:41.347Z" }, + { url = "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2", size = 511440, upload-time = "2025-10-10T03:54:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362", size = 495186, upload-time = "2025-10-10T03:54:43.937Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c", size = 499192, upload-time = "2025-10-10T03:54:45.003Z" }, + { url = "https://files.pythonhosted.org/packages/6d/de/40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f/httptools-0.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3e14f530fefa7499334a79b0cf7e7cd2992870eb893526fb097d51b4f2d0f321", size = 86694, upload-time = "2025-10-10T03:54:45.923Z" }, + { url = "https://files.pythonhosted.org/packages/09/8f/c77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90/httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6babce6cfa2a99545c60bfef8bee0cc0545413cb0018f617c8059a30ad985de3", size = 202889, upload-time = "2025-10-10T03:54:47.089Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1a/22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517/httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:601b7628de7504077dd3dcb3791c6b8694bbd967148a6d1f01806509254fb1ca", size = 108180, upload-time = "2025-10-10T03:54:48.052Z" }, + { url = "https://files.pythonhosted.org/packages/32/6a/6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011/httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04c6c0e6c5fb0739c5b8a9eb046d298650a0ff38cf42537fc372b28dc7e4472c", size = 478596, upload-time = "2025-10-10T03:54:48.919Z" }, + { url = "https://files.pythonhosted.org/packages/6d/70/023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6/httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69d4f9705c405ae3ee83d6a12283dc9feba8cc6aaec671b412917e644ab4fa66", size = 473268, upload-time = "2025-10-10T03:54:49.993Z" }, + { url = "https://files.pythonhosted.org/packages/32/4d/9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7/httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:44c8f4347d4b31269c8a9205d8a5ee2df5322b09bbbd30f8f862185bb6b05346", size = 455517, upload-time = "2025-10-10T03:54:51.066Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/a6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be/httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:465275d76db4d554918aba40bf1cbebe324670f3dfc979eaffaa5d108e2ed650", size = 458337, upload-time = "2025-10-10T03:54:52.196Z" }, + { url = "https://files.pythonhosted.org/packages/fd/82/88e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582/httptools-0.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:322d00c2068d125bd570f7bf78b2d367dad02b919d8581d7476d8b75b294e3e6", size = 85743, upload-time = "2025-10-10T03:54:53.448Z" }, + { url = "https://files.pythonhosted.org/packages/34/50/9d095fcbb6de2d523e027a2f304d4551855c2f46e0b82befd718b8b20056/httptools-0.7.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:c08fe65728b8d70b6923ce31e3956f859d5e1e8548e6f22ec520a962c6757270", size = 203619, upload-time = "2025-10-10T03:54:54.321Z" }, + { url = "https://files.pythonhosted.org/packages/07/f0/89720dc5139ae54b03f861b5e2c55a37dba9a5da7d51e1e824a1f343627f/httptools-0.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7aea2e3c3953521c3c51106ee11487a910d45586e351202474d45472db7d72d3", size = 108714, upload-time = "2025-10-10T03:54:55.163Z" }, + { url = "https://files.pythonhosted.org/packages/b3/cb/eea88506f191fb552c11787c23f9a405f4c7b0c5799bf73f2249cd4f5228/httptools-0.7.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0e68b8582f4ea9166be62926077a3334064d422cf08ab87d8b74664f8e9058e1", size = 472909, upload-time = "2025-10-10T03:54:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4a/a548bdfae6369c0d078bab5769f7b66f17f1bfaa6fa28f81d6be6959066b/httptools-0.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df091cf961a3be783d6aebae963cc9b71e00d57fa6f149025075217bc6a55a7b", size = 470831, upload-time = "2025-10-10T03:54:57.219Z" }, + { url = "https://files.pythonhosted.org/packages/4d/31/14df99e1c43bd132eec921c2e7e11cda7852f65619bc0fc5bdc2d0cb126c/httptools-0.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f084813239e1eb403ddacd06a30de3d3e09a9b76e7894dcda2b22f8a726e9c60", size = 452631, upload-time = "2025-10-10T03:54:58.219Z" }, + { url = "https://files.pythonhosted.org/packages/22/d2/b7e131f7be8d854d48cb6d048113c30f9a46dca0c9a8b08fcb3fcd588cdc/httptools-0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7347714368fb2b335e9063bc2b96f2f87a9ceffcd9758ac295f8bbcd3ffbc0ca", size = 452910, upload-time = "2025-10-10T03:54:59.366Z" }, + { url = "https://files.pythonhosted.org/packages/53/cf/878f3b91e4e6e011eff6d1fa9ca39f7eb17d19c9d7971b04873734112f30/httptools-0.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:cfabda2a5bb85aa2a904ce06d974a3f30fb36cc63d7feaddec05d2050acede96", size = 88205, upload-time = "2025-10-10T03:55:00.389Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + [[package]] name = "isort" version = "6.0.1" @@ -178,26 +340,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/89/aa/b52d195b167958fe1bd106a260f64cc80ec384f6ac2a9cda874d8803df06/libcst-1.8.2.tar.gz", hash = "sha256:66e82cedba95a6176194a817be4232c720312f8be6d2c8f3847f3317d95a0c7f", size = 881534, upload-time = "2025-06-13T20:56:37.915Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/2e/1d7f67d2ef6f875e9e8798c024f7cb3af3fe861e417bff485c69b655ac96/libcst-1.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:67d9720d91f507c87b3e5f070627ad640a00bc6cfdf5635f8c6ee9f2964cf71c", size = 2195106, upload-time = "2025-06-13T20:54:49.166Z" }, - { url = "https://files.pythonhosted.org/packages/82/d0/3d94fee2685f263fd8d85a83e2537fcc78b644eae450738bf2c72604f0df/libcst-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:94b7c032b72566077614a02baab1929739fd0af0cc1d46deaba4408b870faef2", size = 2080577, upload-time = "2025-06-13T20:54:51.518Z" }, - { url = "https://files.pythonhosted.org/packages/14/87/c9b49bebb9a930fdcb59bf841f1c45719d2a4a39c3eb7efacfd30a2bfb0a/libcst-1.8.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:11ea148902e3e1688afa392087c728ac3a843e54a87d334d1464d2097d3debb7", size = 2404076, upload-time = "2025-06-13T20:54:53.303Z" }, - { url = "https://files.pythonhosted.org/packages/49/fa/9ca145aa9033f9a8362a5663ceb28dfb67082574de8118424b6b8e445e7a/libcst-1.8.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:22c9473a2cc53faabcc95a0ac6ca4e52d127017bf34ba9bc0f8e472e44f7b38e", size = 2219813, upload-time = "2025-06-13T20:54:55.351Z" }, - { url = "https://files.pythonhosted.org/packages/0c/25/496a025c09e96116437a57fd34abefe84c041d930f832c6e42d84d9e028c/libcst-1.8.2-cp310-cp310-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b5269b96367e65793a7714608f6d906418eb056d59eaac9bba980486aabddbed", size = 2189782, upload-time = "2025-06-13T20:54:57.013Z" }, - { url = "https://files.pythonhosted.org/packages/b3/75/826b5772192826d70480efe93bab3e4f0b4a24d31031f45547257ad5f9a8/libcst-1.8.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:d20e932ddd9a389da57b060c26e84a24118c96ff6fc5dcc7b784da24e823b694", size = 2312403, upload-time = "2025-06-13T20:54:58.996Z" }, - { url = "https://files.pythonhosted.org/packages/93/f4/316fa14ea6c61ea8755672d60e012558f0216300b3819e72bebc7864a507/libcst-1.8.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a553d452004e44b841788f6faa7231a02157527ddecc89dbbe5b689b74822226", size = 2280566, upload-time = "2025-06-13T20:55:00.707Z" }, - { url = "https://files.pythonhosted.org/packages/fc/52/74b69350db379b1646739288b88ffab2981b2ad48407faf03df3768d7d2f/libcst-1.8.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe762c4c390039b79b818cbc725d8663586b25351dc18a2704b0e357d69b924", size = 2388508, upload-time = "2025-06-13T20:55:02.769Z" }, - { url = "https://files.pythonhosted.org/packages/bc/c6/fa92699b537ed65e93c2869144e23bdf156ec81ae7b84b4f34cbc20d6048/libcst-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:5c513e64eff0f7bf2a908e2d987a98653eb33e1062ce2afd3a84af58159a24f9", size = 2093260, upload-time = "2025-06-13T20:55:04.771Z" }, - { url = "https://files.pythonhosted.org/packages/b0/ac/4ec4ae9da311f72cd97e930c325bb605e9ad0baaafcafadb0588e1dc5c4e/libcst-1.8.2-cp310-cp310-win_arm64.whl", hash = "sha256:41613fe08e647213546c7c59a5a1fc5484666e7d4cab6e80260c612acbb20e8c", size = 1985236, upload-time = "2025-06-13T20:55:06.317Z" }, - { url = "https://files.pythonhosted.org/packages/c5/73/f0a4d807bff6931e3d8c3180472cf43d63a121aa60be895425fba2ed4f3a/libcst-1.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:688a03bac4dfb9afc5078ec01d53c21556381282bdf1a804dd0dbafb5056de2a", size = 2195040, upload-time = "2025-06-13T20:55:08.117Z" }, - { url = "https://files.pythonhosted.org/packages/e5/fa/ede0cfc410e498e1279eb489603f31077d2ca112d84e1327b04b508c0cbe/libcst-1.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c34060ff2991707c710250463ae9f415ebb21653f2f5b013c61c9c376ff9b715", size = 2080304, upload-time = "2025-06-13T20:55:09.729Z" }, - { url = "https://files.pythonhosted.org/packages/39/8d/59f7c488dbedf96454c07038dea72ee2a38de13d52b4f796a875a1dc45a6/libcst-1.8.2-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:f54f5c4176d60e7cd6b0880e18fb3fa8501ae046069151721cab457c7c538a3d", size = 2403816, upload-time = "2025-06-13T20:55:11.527Z" }, - { url = "https://files.pythonhosted.org/packages/b5/c2/af8d6cc0c6dcd1a5d0ed5cf846be242354513139a9358e005c63252c6ab7/libcst-1.8.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:d11992561de0ad29ec2800230fbdcbef9efaa02805d5c633a73ab3cf2ba51bf1", size = 2219415, upload-time = "2025-06-13T20:55:13.144Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b8/1638698d6c33bdb4397ee6f60e534e7504ef2cd1447b24104df65623dedb/libcst-1.8.2-cp311-cp311-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fa3b807c2d2b34397c135d19ad6abb20c47a2ddb7bf65d90455f2040f7797e1e", size = 2189568, upload-time = "2025-06-13T20:55:15.119Z" }, - { url = "https://files.pythonhosted.org/packages/05/16/51c1015dada47b8464c5fa0cbf70fecc5fce0facd07d05a5cb6e7eb68b88/libcst-1.8.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:b0110140738be1287e3724080a101e7cec6ae708008b7650c9d8a1c1788ec03a", size = 2312018, upload-time = "2025-06-13T20:55:16.831Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/8d24158f345ea2921d0d7ff49a6bf86fd4a08b0f05735f14a84ea9e28fa9/libcst-1.8.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a50618f4819a97ef897e055ac7aaf1cad5df84c206f33be35b0759d671574197", size = 2279875, upload-time = "2025-06-13T20:55:18.418Z" }, - { url = "https://files.pythonhosted.org/packages/73/fd/0441cc1bcf188300aaa41ca5d473919a00939cc7f4934b3b08b23c8740c1/libcst-1.8.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e9bb599c175dc34a4511f0e26d5b5374fbcc91ea338871701a519e95d52f3c28", size = 2388060, upload-time = "2025-06-13T20:55:20.304Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fc/28f6380eefd58543f80589b77cab81eb038e7cc86f7c34a815a287dba82f/libcst-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:96e2363e1f6e44bd7256bbbf3a53140743f821b5133046e6185491e0d9183447", size = 2093117, upload-time = "2025-06-13T20:55:21.977Z" }, - { url = "https://files.pythonhosted.org/packages/ef/db/cdbd1531bca276c44bc485e40c3156e770e01020f8c1a737282bf884d69f/libcst-1.8.2-cp311-cp311-win_arm64.whl", hash = "sha256:f5391d71bd7e9e6c73dcb3ee8d8c63b09efc14ce6e4dad31568d4838afc9aae0", size = 1985285, upload-time = "2025-06-13T20:55:24.438Z" }, { url = "https://files.pythonhosted.org/packages/31/2d/8726bf8ea8252e8fd1e48980753eef5449622c5f6cf731102bc43dcdc2c6/libcst-1.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2e8c1dfa854e700fcf6cd79b2796aa37d55697a74646daf5ea47c7c764bac31c", size = 2185942, upload-time = "2025-06-13T20:55:26.105Z" }, { url = "https://files.pythonhosted.org/packages/99/b3/565d24db8daed66eae7653c1fc1bc97793d49d5d3bcef530450ee8da882c/libcst-1.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b5c57a3c1976c365678eb0730bcb140d40510990cb77df9a91bb5c41d587ba6", size = 2072622, upload-time = "2025-06-13T20:55:27.548Z" }, { url = "https://files.pythonhosted.org/packages/8c/d6/5a433e8a58eeb5c5d46635cfe958d0605f598d87977d4560484e3662d438/libcst-1.8.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:0f23409add2aaebbb6d8e881babab43c2d979f051b8bd8aed5fe779ea180a4e8", size = 2402738, upload-time = "2025-06-13T20:55:29.539Z" }, @@ -248,26 +390,6 @@ version = "3.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, - { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload-time = "2024-10-18T15:20:52.426Z" }, - { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload-time = "2024-10-18T15:20:53.578Z" }, - { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload-time = "2024-10-18T15:20:55.06Z" }, - { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload-time = "2024-10-18T15:20:55.906Z" }, - { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload-time = "2024-10-18T15:20:57.189Z" }, - { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload-time = "2024-10-18T15:20:58.235Z" }, - { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload-time = "2024-10-18T15:20:59.235Z" }, - { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload-time = "2024-10-18T15:21:00.307Z" }, - { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload-time = "2024-10-18T15:21:01.122Z" }, - { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, - { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, - { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, - { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, - { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, - { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, - { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, - { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, @@ -321,27 +443,46 @@ dependencies = [ { name = "flask-cors" }, { name = "isort" }, { name = "mypy" }, + { name = "numpy" }, { name = "parameterized" }, { name = "pyinstaller" }, { name = "types-flask-cors" }, { name = "ufmt" }, ] +[package.optional-dependencies] +nn = [ + { name = "torch" }, +] +rl = [ + { name = "fastapi" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "uvicorn", extra = ["standard"] }, +] + [package.metadata] requires-dist = [ { name = "black" }, { name = "chess" }, { name = "click" }, + { name = "fastapi", marker = "extra == 'rl'", specifier = ">=0.100.0" }, { name = "flake8" }, { name = "flask" }, { name = "flask-cors" }, + { name = "httpx", marker = "extra == 'rl'", specifier = ">=0.24.0" }, { name = "isort" }, { name = "mypy" }, + { name = "numpy" }, { name = "parameterized" }, + { name = "pydantic", marker = "extra == 'rl'", specifier = ">=2.0.0" }, { name = "pyinstaller" }, + { name = "torch", marker = "extra == 'nn'", specifier = ">=2.0.0" }, { name = "types-flask-cors", specifier = ">=6.0.0.20250520" }, { name = "ufmt" }, + { name = "uvicorn", extras = ["standard"], marker = "extra == 'rl'", specifier = ">=0.23.0" }, ] +provides-extras = ["nn", "rl"] [[package]] name = "moreorless" @@ -355,6 +496,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fa/2e/9ea80ca55b73530b7639c6f146a58f636ddfe5a852ad467a44fe3e80d809/moreorless-0.5.0-py3-none-any.whl", hash = "sha256:66228870cd2f14bad5c3c3780aa71e29d3b2d9b5a01c03bfbf105efd4f668ecf", size = 14380, upload-time = "2025-05-04T22:29:57.417Z" }, ] +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + [[package]] name = "mypy" version = "1.17.0" @@ -362,23 +512,10 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, { name = "pathspec" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1e/e3/034322d5a779685218ed69286c32faa505247f1f096251ef66c8fd203b08/mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03", size = 3352114, upload-time = "2025-07-14T20:34:30.181Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/31/e762baa3b73905c856d45ab77b4af850e8159dffffd86a52879539a08c6b/mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6", size = 10998313, upload-time = "2025-07-14T20:33:24.519Z" }, - { url = "https://files.pythonhosted.org/packages/1c/c1/25b2f0d46fb7e0b5e2bee61ec3a47fe13eff9e3c2f2234f144858bbe6485/mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d", size = 10128922, upload-time = "2025-07-14T20:34:06.414Z" }, - { url = "https://files.pythonhosted.org/packages/02/78/6d646603a57aa8a2886df1b8881fe777ea60f28098790c1089230cd9c61d/mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b", size = 11913524, upload-time = "2025-07-14T20:33:19.109Z" }, - { url = "https://files.pythonhosted.org/packages/4f/19/dae6c55e87ee426fb76980f7e78484450cad1c01c55a1dc4e91c930bea01/mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a", size = 12650527, upload-time = "2025-07-14T20:32:44.095Z" }, - { url = "https://files.pythonhosted.org/packages/86/e1/f916845a235235a6c1e4d4d065a3930113767001d491b8b2e1b61ca56647/mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f", size = 12897284, upload-time = "2025-07-14T20:33:38.168Z" }, - { url = "https://files.pythonhosted.org/packages/ae/dc/414760708a4ea1b096bd214d26a24e30ac5e917ef293bc33cdb6fe22d2da/mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937", size = 9506493, upload-time = "2025-07-14T20:34:01.093Z" }, - { url = "https://files.pythonhosted.org/packages/d4/24/82efb502b0b0f661c49aa21cfe3e1999ddf64bf5500fc03b5a1536a39d39/mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be", size = 10914150, upload-time = "2025-07-14T20:31:51.985Z" }, - { url = "https://files.pythonhosted.org/packages/03/96/8ef9a6ff8cedadff4400e2254689ca1dc4b420b92c55255b44573de10c54/mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61", size = 10039845, upload-time = "2025-07-14T20:32:30.527Z" }, - { url = "https://files.pythonhosted.org/packages/df/32/7ce359a56be779d38021d07941cfbb099b41411d72d827230a36203dbb81/mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f", size = 11837246, upload-time = "2025-07-14T20:32:01.28Z" }, - { url = "https://files.pythonhosted.org/packages/82/16/b775047054de4d8dbd668df9137707e54b07fe18c7923839cd1e524bf756/mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d", size = 12571106, upload-time = "2025-07-14T20:34:26.942Z" }, - { url = "https://files.pythonhosted.org/packages/a1/cf/fa33eaf29a606102c8d9ffa45a386a04c2203d9ad18bf4eef3e20c43ebc8/mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3", size = 12759960, upload-time = "2025-07-14T20:33:42.882Z" }, - { url = "https://files.pythonhosted.org/packages/94/75/3f5a29209f27e739ca57e6350bc6b783a38c7621bdf9cac3ab8a08665801/mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70", size = 9503888, upload-time = "2025-07-14T20:32:34.392Z" }, { url = "https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb", size = 11086395, upload-time = "2025-07-14T20:34:11.452Z" }, { url = "https://files.pythonhosted.org/packages/ba/51/a4afd1ae279707953be175d303f04a5a7bd7e28dc62463ad29c1c857927e/mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d", size = 10120052, upload-time = "2025-07-14T20:33:09.897Z" }, { url = "https://files.pythonhosted.org/packages/8a/71/19adfeac926ba8205f1d1466d0d360d07b46486bf64360c54cb5a2bd86a8/mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8", size = 11861806, upload-time = "2025-07-14T20:32:16.028Z" }, @@ -403,6 +540,210 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/fd/0005efbd0af48e55eb3c7208af93f2862d4b1a56cd78e84309a2d959208d/numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae", size = 20723651, upload-time = "2026-01-31T23:13:10.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/6e/6f394c9c77668153e14d4da83bcc247beb5952f6ead7699a1a2992613bea/numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a", size = 16667963, upload-time = "2026-01-31T23:10:52.147Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f8/55483431f2b2fd015ae6ed4fe62288823ce908437ed49db5a03d15151678/numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1", size = 14693571, upload-time = "2026-01-31T23:10:54.789Z" }, + { url = "https://files.pythonhosted.org/packages/2f/20/18026832b1845cdc82248208dd929ca14c9d8f2bac391f67440707fff27c/numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e", size = 5203469, upload-time = "2026-01-31T23:10:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/2eb97c8a77daaba34eaa3fa7241a14ac5f51c46a6bd5911361b644c4a1e2/numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27", size = 6550820, upload-time = "2026-01-31T23:10:59.429Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/b97fdfd12dc75b02c44e26c6638241cc004d4079a0321a69c62f51470c4c/numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548", size = 15663067, upload-time = "2026-01-31T23:11:01.291Z" }, + { url = "https://files.pythonhosted.org/packages/f5/c6/a18e59f3f0b8071cc85cbc8d80cd02d68aa9710170b2553a117203d46936/numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f", size = 16619782, upload-time = "2026-01-31T23:11:03.669Z" }, + { url = "https://files.pythonhosted.org/packages/b7/83/9751502164601a79e18847309f5ceec0b1446d7b6aa12305759b72cf98b2/numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460", size = 17013128, upload-time = "2026-01-31T23:11:05.913Z" }, + { url = "https://files.pythonhosted.org/packages/61/c4/c4066322256ec740acc1c8923a10047818691d2f8aec254798f3dd90f5f2/numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba", size = 18345324, upload-time = "2026-01-31T23:11:08.248Z" }, + { url = "https://files.pythonhosted.org/packages/ab/af/6157aa6da728fa4525a755bfad486ae7e3f76d4c1864138003eb84328497/numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f", size = 5960282, upload-time = "2026-01-31T23:11:10.497Z" }, + { url = "https://files.pythonhosted.org/packages/92/0f/7ceaaeaacb40567071e94dbf2c9480c0ae453d5bb4f52bea3892c39dc83c/numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85", size = 12314210, upload-time = "2026-01-31T23:11:12.176Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a3/56c5c604fae6dd40fa2ed3040d005fca97e91bd320d232ac9931d77ba13c/numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa", size = 10220171, upload-time = "2026-01-31T23:11:14.684Z" }, + { url = "https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c", size = 16663696, upload-time = "2026-01-31T23:11:17.516Z" }, + { url = "https://files.pythonhosted.org/packages/09/f0/817d03a03f93ba9c6c8993de509277d84e69f9453601915e4a69554102a1/numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979", size = 14688322, upload-time = "2026-01-31T23:11:19.883Z" }, + { url = "https://files.pythonhosted.org/packages/da/b4/f805ab79293c728b9a99438775ce51885fd4f31b76178767cfc718701a39/numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98", size = 5198157, upload-time = "2026-01-31T23:11:22.375Z" }, + { url = "https://files.pythonhosted.org/packages/74/09/826e4289844eccdcd64aac27d13b0fd3f32039915dd5b9ba01baae1f436c/numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef", size = 6546330, upload-time = "2026-01-31T23:11:23.958Z" }, + { url = "https://files.pythonhosted.org/packages/19/fb/cbfdbfa3057a10aea5422c558ac57538e6acc87ec1669e666d32ac198da7/numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7", size = 15660968, upload-time = "2026-01-31T23:11:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499", size = 16607311, upload-time = "2026-01-31T23:11:28.117Z" }, + { url = "https://files.pythonhosted.org/packages/14/d9/4b5adfc39a43fa6bf918c6d544bc60c05236cc2f6339847fc5b35e6cb5b0/numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb", size = 17012850, upload-time = "2026-01-31T23:11:30.888Z" }, + { url = "https://files.pythonhosted.org/packages/b7/20/adb6e6adde6d0130046e6fdfb7675cc62bc2f6b7b02239a09eb58435753d/numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7", size = 18334210, upload-time = "2026-01-31T23:11:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/78/0e/0a73b3dff26803a8c02baa76398015ea2a5434d9b8265a7898a6028c1591/numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110", size = 5958199, upload-time = "2026-01-31T23:11:35.385Z" }, + { url = "https://files.pythonhosted.org/packages/43/bc/6352f343522fcb2c04dbaf94cb30cca6fd32c1a750c06ad6231b4293708c/numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622", size = 12310848, upload-time = "2026-01-31T23:11:38.001Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8d/6da186483e308da5da1cc6918ce913dcfe14ffde98e710bfeff2a6158d4e/numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71", size = 10221082, upload-time = "2026-01-31T23:11:40.392Z" }, + { url = "https://files.pythonhosted.org/packages/25/a1/9510aa43555b44781968935c7548a8926274f815de42ad3997e9e83680dd/numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262", size = 14815866, upload-time = "2026-01-31T23:11:42.495Z" }, + { url = "https://files.pythonhosted.org/packages/36/30/6bbb5e76631a5ae46e7923dd16ca9d3f1c93cfa8d4ed79a129814a9d8db3/numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913", size = 5325631, upload-time = "2026-01-31T23:11:44.7Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/3a490938800c1923b567b3a15cd17896e68052e2145d8662aaf3e1ffc58f/numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab", size = 6646254, upload-time = "2026-01-31T23:11:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e9/fac0890149898a9b609caa5af7455a948b544746e4b8fe7c212c8edd71f8/numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82", size = 15720138, upload-time = "2026-01-31T23:11:48.082Z" }, + { url = "https://files.pythonhosted.org/packages/ea/5c/08887c54e68e1e28df53709f1893ce92932cc6f01f7c3d4dc952f61ffd4e/numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f", size = 16655398, upload-time = "2026-01-31T23:11:50.293Z" }, + { url = "https://files.pythonhosted.org/packages/4d/89/253db0fa0e66e9129c745e4ef25631dc37d5f1314dad2b53e907b8538e6d/numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554", size = 17079064, upload-time = "2026-01-31T23:11:52.927Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d5/cbade46ce97c59c6c3da525e8d95b7abe8a42974a1dc5c1d489c10433e88/numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257", size = 18379680, upload-time = "2026-01-31T23:11:55.22Z" }, + { url = "https://files.pythonhosted.org/packages/40/62/48f99ae172a4b63d981babe683685030e8a3df4f246c893ea5c6ef99f018/numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657", size = 6082433, upload-time = "2026-01-31T23:11:58.096Z" }, + { url = "https://files.pythonhosted.org/packages/07/38/e054a61cfe48ad9f1ed0d188e78b7e26859d0b60ef21cd9de4897cdb5326/numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b", size = 12451181, upload-time = "2026-01-31T23:11:59.782Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a4/a05c3a6418575e185dd84d0b9680b6bb2e2dc3e4202f036b7b4e22d6e9dc/numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1", size = 10290756, upload-time = "2026-01-31T23:12:02.438Z" }, + { url = "https://files.pythonhosted.org/packages/18/88/b7df6050bf18fdcfb7046286c6535cabbdd2064a3440fca3f069d319c16e/numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b", size = 16663092, upload-time = "2026-01-31T23:12:04.521Z" }, + { url = "https://files.pythonhosted.org/packages/25/7a/1fee4329abc705a469a4afe6e69b1ef7e915117747886327104a8493a955/numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000", size = 14698770, upload-time = "2026-01-31T23:12:06.96Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0b/f9e49ba6c923678ad5bc38181c08ac5e53b7a5754dbca8e581aa1a56b1ff/numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1", size = 5208562, upload-time = "2026-01-31T23:12:09.632Z" }, + { url = "https://files.pythonhosted.org/packages/7d/12/d7de8f6f53f9bb76997e5e4c069eda2051e3fe134e9181671c4391677bb2/numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74", size = 6543710, upload-time = "2026-01-31T23:12:11.969Z" }, + { url = "https://files.pythonhosted.org/packages/09/63/c66418c2e0268a31a4cf8a8b512685748200f8e8e8ec6c507ce14e773529/numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a", size = 15677205, upload-time = "2026-01-31T23:12:14.33Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6c/7f237821c9642fb2a04d2f1e88b4295677144ca93285fd76eff3bcba858d/numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325", size = 16611738, upload-time = "2026-01-31T23:12:16.525Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/39c4cdda9f019b609b5c473899d87abff092fc908cfe4d1ecb2fcff453b0/numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909", size = 17028888, upload-time = "2026-01-31T23:12:19.306Z" }, + { url = "https://files.pythonhosted.org/packages/da/b3/e84bb64bdfea967cc10950d71090ec2d84b49bc691df0025dddb7c26e8e3/numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a", size = 18339556, upload-time = "2026-01-31T23:12:21.816Z" }, + { url = "https://files.pythonhosted.org/packages/88/f5/954a291bc1192a27081706862ac62bb5920fbecfbaa302f64682aa90beed/numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a", size = 6006899, upload-time = "2026-01-31T23:12:24.14Z" }, + { url = "https://files.pythonhosted.org/packages/05/cb/eff72a91b2efdd1bc98b3b8759f6a1654aa87612fc86e3d87d6fe4f948c4/numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75", size = 12443072, upload-time = "2026-01-31T23:12:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/37/75/62726948db36a56428fce4ba80a115716dc4fad6a3a4352487f8bb950966/numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05", size = 10494886, upload-time = "2026-01-31T23:12:28.488Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/ee93744f1e0661dc267e4b21940870cabfae187c092e1433b77b09b50ac4/numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308", size = 14818567, upload-time = "2026-01-31T23:12:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/a7/24/6535212add7d76ff938d8bdc654f53f88d35cddedf807a599e180dcb8e66/numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef", size = 5328372, upload-time = "2026-01-31T23:12:32.962Z" }, + { url = "https://files.pythonhosted.org/packages/5e/9d/c48f0a035725f925634bf6b8994253b43f2047f6778a54147d7e213bc5a7/numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d", size = 6649306, upload-time = "2026-01-31T23:12:34.797Z" }, + { url = "https://files.pythonhosted.org/packages/81/05/7c73a9574cd4a53a25907bad38b59ac83919c0ddc8234ec157f344d57d9a/numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8", size = 15722394, upload-time = "2026-01-31T23:12:36.565Z" }, + { url = "https://files.pythonhosted.org/packages/35/fa/4de10089f21fc7d18442c4a767ab156b25c2a6eaf187c0db6d9ecdaeb43f/numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5", size = 16653343, upload-time = "2026-01-31T23:12:39.188Z" }, + { url = "https://files.pythonhosted.org/packages/b8/f9/d33e4ffc857f3763a57aa85650f2e82486832d7492280ac21ba9efda80da/numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e", size = 17078045, upload-time = "2026-01-31T23:12:42.041Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b8/54bdb43b6225badbea6389fa038c4ef868c44f5890f95dd530a218706da3/numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a", size = 18380024, upload-time = "2026-01-31T23:12:44.331Z" }, + { url = "https://files.pythonhosted.org/packages/a5/55/6e1a61ded7af8df04016d81b5b02daa59f2ea9252ee0397cb9f631efe9e5/numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443", size = 6153937, upload-time = "2026-01-31T23:12:47.229Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/fa6118d1ed6d776b0983f3ceac9b1a5558e80df9365b1c3aa6d42bf9eee4/numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236", size = 12631844, upload-time = "2026-01-31T23:12:48.997Z" }, + { url = "https://files.pythonhosted.org/packages/32/0a/2ec5deea6dcd158f254a7b372fb09cfba5719419c8d66343bab35237b3fb/numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181", size = 10565379, upload-time = "2026-01-31T23:12:51.345Z" }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.8.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.10.2.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.3.3.83" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, +] + +[[package]] +name = "nvidia-cufile-cu12" +version = "1.13.1.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.9.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.3.90" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, + { name = "nvidia-cusparse-cu12" }, + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.8.93" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu12" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.27.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/09/6ea3ea725f82e1e76684f0708bbedd871fc96da89945adeba65c3835a64c/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:042f2500f24c021db8a06c5eec2539027d57460e1c1a762055a6554f72c369bd", size = 139103095, upload-time = "2025-09-06T00:32:31.266Z" }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, +] + [[package]] name = "packaging" version = "25.0" @@ -457,6 +798,92 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, ] +[[package]] +name = "pydantic" +version = "2.12.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, +] + [[package]] name = "pyflakes" version = "3.4.0" @@ -507,6 +934,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/bd/bc2c73931e8477f7430740859be172de55e9b7bbdafd1deace5e98f92f3d/pyinstaller_hooks_contrib-2025.7-py3-none-any.whl", hash = "sha256:ba4fecc94eb761de2015cd8b1e674354e8a1f13ba65047602912f34c20fb510b", size = 439598, upload-time = "2025-07-22T22:15:22.253Z" }, ] +[[package]] +name = "python-dotenv" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, +] + [[package]] name = "pywin32-ctypes" version = "0.2.3" @@ -522,24 +958,6 @@ version = "6.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, @@ -593,6 +1011,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, ] +[[package]] +name = "starlette" +version = "0.52.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" }, +] + [[package]] name = "stdlibs" version = "2025.5.10" @@ -602,6 +1033,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/45/51/a8f17bbb8f01cef657153972a99e382ce5c5e33a1a2df959f3ed2ebe2b89/stdlibs-2025.5.10-py3-none-any.whl", hash = "sha256:25178d9c2b45d2680292413bf59a20293355d45056ec92d32ea6ed349ce9e2a1", size = 57264, upload-time = "2025-05-11T03:46:41.633Z" }, ] +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + [[package]] name = "toml" version = "0.10.2" @@ -611,45 +1054,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, ] -[[package]] -name = "tomli" -version = "2.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, -] - [[package]] name = "tomlkit" version = "0.13.3" @@ -659,6 +1063,61 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, ] +[[package]] +name = "torch" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-bindings", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx" }, + { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/54/a2ba279afcca44bbd320d4e73675b282fcee3d81400ea1b53934efca6462/torch-2.10.0-2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:13ec4add8c3faaed8d13e0574f5cd4a323c11655546f91fbe6afa77b57423574", size = 79498202, upload-time = "2026-02-10T21:44:52.603Z" }, + { url = "https://files.pythonhosted.org/packages/ec/23/2c9fe0c9c27f7f6cb865abcea8a4568f29f00acaeadfc6a37f6801f84cb4/torch-2.10.0-2-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e521c9f030a3774ed770a9c011751fb47c4d12029a3d6522116e48431f2ff89e", size = 79498254, upload-time = "2026-02-10T21:44:44.095Z" }, + { url = "https://files.pythonhosted.org/packages/cc/af/758e242e9102e9988969b5e621d41f36b8f258bb4a099109b7a4b4b50ea4/torch-2.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5fd4117d89ffd47e3dcc71e71a22efac24828ad781c7e46aaaf56bf7f2796acf", size = 145996088, upload-time = "2026-01-21T16:24:44.171Z" }, + { url = "https://files.pythonhosted.org/packages/23/8e/3c74db5e53bff7ed9e34c8123e6a8bfef718b2450c35eefab85bb4a7e270/torch-2.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:787124e7db3b379d4f1ed54dd12ae7c741c16a4d29b49c0226a89bea50923ffb", size = 915711952, upload-time = "2026-01-21T16:23:53.503Z" }, + { url = "https://files.pythonhosted.org/packages/6e/01/624c4324ca01f66ae4c7cd1b74eb16fb52596dce66dbe51eff95ef9e7a4c/torch-2.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2c66c61f44c5f903046cc696d088e21062644cbe541c7f1c4eaae88b2ad23547", size = 113757972, upload-time = "2026-01-21T16:24:39.516Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5c/dee910b87c4d5c0fcb41b50839ae04df87c1cfc663cf1b5fca7ea565eeaa/torch-2.10.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:6d3707a61863d1c4d6ebba7be4ca320f42b869ee657e9b2c21c736bf17000294", size = 79498198, upload-time = "2026-01-21T16:24:34.704Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6f/f2e91e34e3fcba2e3fc8d8f74e7d6c22e74e480bbd1db7bc8900fdf3e95c/torch-2.10.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:5c4d217b14741e40776dd7074d9006fd28b8a97ef5654db959d8635b2fe5f29b", size = 146004247, upload-time = "2026-01-21T16:24:29.335Z" }, + { url = "https://files.pythonhosted.org/packages/98/fb/5160261aeb5e1ee12ee95fe599d0541f7c976c3701d607d8fc29e623229f/torch-2.10.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6b71486353fce0f9714ca0c9ef1c850a2ae766b409808acd58e9678a3edb7738", size = 915716445, upload-time = "2026-01-21T16:22:45.353Z" }, + { url = "https://files.pythonhosted.org/packages/6a/16/502fb1b41e6d868e8deb5b0e3ae926bbb36dab8ceb0d1b769b266ad7b0c3/torch-2.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c2ee399c644dc92ef7bc0d4f7e74b5360c37cdbe7c5ba11318dda49ffac2bc57", size = 113757050, upload-time = "2026-01-21T16:24:19.204Z" }, + { url = "https://files.pythonhosted.org/packages/1a/0b/39929b148f4824bc3ad6f9f72a29d4ad865bcf7ebfc2fa67584773e083d2/torch-2.10.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:3202429f58309b9fa96a614885eace4b7995729f44beb54d3e4a47773649d382", size = 79851305, upload-time = "2026-01-21T16:24:09.209Z" }, + { url = "https://files.pythonhosted.org/packages/d8/14/21fbce63bc452381ba5f74a2c0a959fdf5ad5803ccc0c654e752e0dbe91a/torch-2.10.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:aae1b29cd68e50a9397f5ee897b9c24742e9e306f88a807a27d617f07adb3bd8", size = 146005472, upload-time = "2026-01-21T16:22:29.022Z" }, + { url = "https://files.pythonhosted.org/packages/54/fd/b207d1c525cb570ef47f3e9f836b154685011fce11a2f444ba8a4084d042/torch-2.10.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6021db85958db2f07ec94e1bc77212721ba4920c12a18dc552d2ae36a3eb163f", size = 915612644, upload-time = "2026-01-21T16:21:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/36/53/0197f868c75f1050b199fe58f9bf3bf3aecac9b4e85cc9c964383d745403/torch-2.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff43db38af76fda183156153983c9a096fc4c78d0cd1e07b14a2314c7f01c2c8", size = 113997015, upload-time = "2026-01-21T16:23:00.767Z" }, + { url = "https://files.pythonhosted.org/packages/0e/13/e76b4d9c160e89fff48bf16b449ea324bda84745d2ab30294c37c2434c0d/torch-2.10.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:cdf2a523d699b70d613243211ecaac14fe9c5df8a0b0a9c02add60fb2a413e0f", size = 79498248, upload-time = "2026-01-21T16:23:09.315Z" }, + { url = "https://files.pythonhosted.org/packages/4f/93/716b5ac0155f1be70ed81bacc21269c3ece8dba0c249b9994094110bfc51/torch-2.10.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:bf0d9ff448b0218e0433aeb198805192346c4fd659c852370d5cc245f602a06a", size = 79464992, upload-time = "2026-01-21T16:23:05.162Z" }, + { url = "https://files.pythonhosted.org/packages/69/2b/51e663ff190c9d16d4a8271203b71bc73a16aa7619b9f271a69b9d4a936b/torch-2.10.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:233aed0659a2503b831d8a67e9da66a62c996204c0bba4f4c442ccc0c68a3f60", size = 146018567, upload-time = "2026-01-21T16:22:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/5e/cd/4b95ef7f293b927c283db0b136c42be91c8ec6845c44de0238c8c23bdc80/torch-2.10.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:682497e16bdfa6efeec8cde66531bc8d1fbbbb4d8788ec6173c089ed3cc2bfe5", size = 915721646, upload-time = "2026-01-21T16:21:16.983Z" }, + { url = "https://files.pythonhosted.org/packages/56/97/078a007208f8056d88ae43198833469e61a0a355abc0b070edd2c085eb9a/torch-2.10.0-cp314-cp314-win_amd64.whl", hash = "sha256:6528f13d2a8593a1a412ea07a99812495bec07e9224c28b2a25c0a30c7da025c", size = 113752373, upload-time = "2026-01-21T16:22:13.471Z" }, + { url = "https://files.pythonhosted.org/packages/d8/94/71994e7d0d5238393df9732fdab607e37e2b56d26a746cb59fdb415f8966/torch-2.10.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f5ab4ba32383061be0fb74bda772d470140a12c1c3b58a0cfbf3dae94d164c28", size = 79850324, upload-time = "2026-01-21T16:22:09.494Z" }, + { url = "https://files.pythonhosted.org/packages/e2/65/1a05346b418ea8ccd10360eef4b3e0ce688fba544e76edec26913a8d0ee0/torch-2.10.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:716b01a176c2a5659c98f6b01bf868244abdd896526f1c692712ab36dbaf9b63", size = 146006482, upload-time = "2026-01-21T16:22:18.42Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b9/5f6f9d9e859fc3235f60578fa64f52c9c6e9b4327f0fe0defb6de5c0de31/torch-2.10.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d8f5912ba938233f86361e891789595ff35ca4b4e2ac8fe3670895e5976731d6", size = 915613050, upload-time = "2026-01-21T16:20:49.035Z" }, + { url = "https://files.pythonhosted.org/packages/66/4d/35352043ee0eaffdeff154fad67cd4a31dbed7ff8e3be1cc4549717d6d51/torch-2.10.0-cp314-cp314t-win_amd64.whl", hash = "sha256:71283a373f0ee2c89e0f0d5f446039bdabe8dbc3c9ccf35f0f784908b0acd185", size = 113995816, upload-time = "2026-01-21T16:22:05.312Z" }, +] + [[package]] name = "trailrunner" version = "1.4.0" @@ -671,6 +1130,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/29/21001afea86bac5016c3940b43de3ce4786b0d8337d4ea79bb903c649ce3/trailrunner-1.4.0-py3-none-any.whl", hash = "sha256:a286d39f2723f28d167347f41cf8f232832648709366e722f55cf5545772a48e", size = 11071, upload-time = "2023-03-27T07:54:32.514Z" }, ] +[[package]] +name = "triton" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/a8/cdf8b3e4c98132f965f88c2313a4b493266832ad47fb52f23d14d4f86bb5/triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74caf5e34b66d9f3a429af689c1c7128daba1d8208df60e81106b115c00d6fca", size = 188266850, upload-time = "2026-01-20T16:00:43.041Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0b/37d991d8c130ce81a8728ae3c25b6e60935838e9be1b58791f5997b24a54/triton-3.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10c7f76c6e72d2ef08df639e3d0d30729112f47a56b0c81672edc05ee5116ac9", size = 188289450, upload-time = "2026-01-20T16:00:49.136Z" }, + { url = "https://files.pythonhosted.org/packages/35/f8/9c66bfc55361ec6d0e4040a0337fb5924ceb23de4648b8a81ae9d33b2b38/triton-3.6.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d002e07d7180fd65e622134fbd980c9a3d4211fb85224b56a0a0efbd422ab72f", size = 188400296, upload-time = "2026-01-20T16:00:56.042Z" }, + { url = "https://files.pythonhosted.org/packages/df/3d/9e7eee57b37c80cec63322c0231bb6da3cfe535a91d7a4d64896fcb89357/triton-3.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a17a5d5985f0ac494ed8a8e54568f092f7057ef60e1b0fa09d3fd1512064e803", size = 188273063, upload-time = "2026-01-20T16:01:07.278Z" }, + { url = "https://files.pythonhosted.org/packages/f6/56/6113c23ff46c00aae423333eb58b3e60bdfe9179d542781955a5e1514cb3/triton-3.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46bd1c1af4b6704e554cad2eeb3b0a6513a980d470ccfa63189737340c7746a7", size = 188397994, upload-time = "2026-01-20T16:01:14.236Z" }, +] + [[package]] name = "types-flask-cors" version = "6.0.0.20250520" @@ -692,6 +1163,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + [[package]] name = "ufmt" version = "2.8.0" @@ -729,6 +1212,177 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5f/55/cc51ceb3d93763b9d28def24615bc485212525550967ce9e992a455f9ab5/usort-1.0.8.post1-py3-none-any.whl", hash = "sha256:6c57cdf17b458c79f8a61eb3ce8bf3f93e36d3c2edd602b9b2aa16b6875d3255", size = 37281, upload-time = "2024-02-12T04:29:31.693Z" }, ] +[[package]] +name = "uvicorn" +version = "0.40.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/d1/8f3c683c9561a4e6689dd3b1d345c815f10f86acd044ee1fb9a4dcd0b8c5/uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea", size = 81761, upload-time = "2025-12-21T14:16:22.45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/d8/2083a1daa7439a66f3a48589a57d576aa117726762618f6bb09fe3798796/uvicorn-0.40.0-py3-none-any.whl", hash = "sha256:c6c8f55bc8bf13eb6fa9ff87ad62308bbbc33d0b67f84293151efe87e0d5f2ee", size = 68502, upload-time = "2025-12-21T14:16:21.041Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload-time = "2025-10-14T15:06:21.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/d5/f039e7e3c639d9b1d09b07ea412a6806d38123f0508e5f9b48a87b0a76cc/watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d", size = 404745, upload-time = "2025-10-14T15:04:46.731Z" }, + { url = "https://files.pythonhosted.org/packages/a5/96/a881a13aa1349827490dab2d363c8039527060cfcc2c92cc6d13d1b1049e/watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610", size = 391769, upload-time = "2025-10-14T15:04:48.003Z" }, + { url = "https://files.pythonhosted.org/packages/4b/5b/d3b460364aeb8da471c1989238ea0e56bec24b6042a68046adf3d9ddb01c/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af", size = 449374, upload-time = "2025-10-14T15:04:49.179Z" }, + { url = "https://files.pythonhosted.org/packages/b9/44/5769cb62d4ed055cb17417c0a109a92f007114a4e07f30812a73a4efdb11/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6", size = 459485, upload-time = "2025-10-14T15:04:50.155Z" }, + { url = "https://files.pythonhosted.org/packages/19/0c/286b6301ded2eccd4ffd0041a1b726afda999926cf720aab63adb68a1e36/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce", size = 488813, upload-time = "2025-10-14T15:04:51.059Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2b/8530ed41112dd4a22f4dcfdb5ccf6a1baad1ff6eed8dc5a5f09e7e8c41c7/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa", size = 594816, upload-time = "2025-10-14T15:04:52.031Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d2/f5f9fb49489f184f18470d4f99f4e862a4b3e9ac2865688eb2099e3d837a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb", size = 475186, upload-time = "2025-10-14T15:04:53.064Z" }, + { url = "https://files.pythonhosted.org/packages/cf/68/5707da262a119fb06fbe214d82dd1fe4a6f4af32d2d14de368d0349eb52a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803", size = 456812, upload-time = "2025-10-14T15:04:55.174Z" }, + { url = "https://files.pythonhosted.org/packages/66/ab/3cbb8756323e8f9b6f9acb9ef4ec26d42b2109bce830cc1f3468df20511d/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94", size = 630196, upload-time = "2025-10-14T15:04:56.22Z" }, + { url = "https://files.pythonhosted.org/packages/78/46/7152ec29b8335f80167928944a94955015a345440f524d2dfe63fc2f437b/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43", size = 622657, upload-time = "2025-10-14T15:04:57.521Z" }, + { url = "https://files.pythonhosted.org/packages/0a/bf/95895e78dd75efe9a7f31733607f384b42eb5feb54bd2eb6ed57cc2e94f4/watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9", size = 272042, upload-time = "2025-10-14T15:04:59.046Z" }, + { url = "https://files.pythonhosted.org/packages/87/0a/90eb755f568de2688cb220171c4191df932232c20946966c27a59c400850/watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9", size = 288410, upload-time = "2025-10-14T15:05:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/36/76/f322701530586922fbd6723c4f91ace21364924822a8772c549483abed13/watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404", size = 278209, upload-time = "2025-10-14T15:05:01.168Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/f750b29225fe77139f7ae5de89d4949f5a99f934c65a1f1c0b248f26f747/watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18", size = 404321, upload-time = "2025-10-14T15:05:02.063Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f9/f07a295cde762644aa4c4bb0f88921d2d141af45e735b965fb2e87858328/watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a", size = 391783, upload-time = "2025-10-14T15:05:03.052Z" }, + { url = "https://files.pythonhosted.org/packages/bc/11/fc2502457e0bea39a5c958d86d2cb69e407a4d00b85735ca724bfa6e0d1a/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219", size = 449279, upload-time = "2025-10-14T15:05:04.004Z" }, + { url = "https://files.pythonhosted.org/packages/e3/1f/d66bc15ea0b728df3ed96a539c777acfcad0eb78555ad9efcaa1274688f0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428", size = 459405, upload-time = "2025-10-14T15:05:04.942Z" }, + { url = "https://files.pythonhosted.org/packages/be/90/9f4a65c0aec3ccf032703e6db02d89a157462fbb2cf20dd415128251cac0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0", size = 488976, upload-time = "2025-10-14T15:05:05.905Z" }, + { url = "https://files.pythonhosted.org/packages/37/57/ee347af605d867f712be7029bb94c8c071732a4b44792e3176fa3c612d39/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150", size = 595506, upload-time = "2025-10-14T15:05:06.906Z" }, + { url = "https://files.pythonhosted.org/packages/a8/78/cc5ab0b86c122047f75e8fc471c67a04dee395daf847d3e59381996c8707/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae", size = 474936, upload-time = "2025-10-14T15:05:07.906Z" }, + { url = "https://files.pythonhosted.org/packages/62/da/def65b170a3815af7bd40a3e7010bf6ab53089ef1b75d05dd5385b87cf08/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d", size = 456147, upload-time = "2025-10-14T15:05:09.138Z" }, + { url = "https://files.pythonhosted.org/packages/57/99/da6573ba71166e82d288d4df0839128004c67d2778d3b566c138695f5c0b/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b", size = 630007, upload-time = "2025-10-14T15:05:10.117Z" }, + { url = "https://files.pythonhosted.org/packages/a8/51/7439c4dd39511368849eb1e53279cd3454b4a4dbace80bab88feeb83c6b5/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374", size = 622280, upload-time = "2025-10-14T15:05:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/95/9c/8ed97d4bba5db6fdcdb2b298d3898f2dd5c20f6b73aee04eabe56c59677e/watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0", size = 272056, upload-time = "2025-10-14T15:05:12.156Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/c14e28429f744a260d8ceae18bf58c1d5fa56b50d006a7a9f80e1882cb0d/watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42", size = 288162, upload-time = "2025-10-14T15:05:13.208Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/fe0e56c40d5cd29523e398d31153218718c5786b5e636d9ae8ae79453d27/watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18", size = 277909, upload-time = "2025-10-14T15:05:14.49Z" }, + { url = "https://files.pythonhosted.org/packages/79/42/e0a7d749626f1e28c7108a99fb9bf524b501bbbeb9b261ceecde644d5a07/watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da", size = 403389, upload-time = "2025-10-14T15:05:15.777Z" }, + { url = "https://files.pythonhosted.org/packages/15/49/08732f90ce0fbbc13913f9f215c689cfc9ced345fb1bcd8829a50007cc8d/watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051", size = 389964, upload-time = "2025-10-14T15:05:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/7c315d4bd5f2538910491a0393c56bf70d333d51bc5b34bee8e68e8cea19/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e", size = 448114, upload-time = "2025-10-14T15:05:17.876Z" }, + { url = "https://files.pythonhosted.org/packages/c3/24/9e096de47a4d11bc4df41e9d1e61776393eac4cb6eb11b3e23315b78b2cc/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70", size = 460264, upload-time = "2025-10-14T15:05:18.962Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0f/e8dea6375f1d3ba5fcb0b3583e2b493e77379834c74fd5a22d66d85d6540/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261", size = 487877, upload-time = "2025-10-14T15:05:20.094Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/df24cfc6424a12deb41503b64d42fbea6b8cb357ec62ca84a5a3476f654a/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620", size = 595176, upload-time = "2025-10-14T15:05:21.134Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b5/853b6757f7347de4e9b37e8cc3289283fb983cba1ab4d2d7144694871d9c/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04", size = 473577, upload-time = "2025-10-14T15:05:22.306Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f7/0a4467be0a56e80447c8529c9fce5b38eab4f513cb3d9bf82e7392a5696b/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77", size = 455425, upload-time = "2025-10-14T15:05:23.348Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/82583485ea00137ddf69bc84a2db88bd92ab4a6e3c405e5fb878ead8d0e7/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef", size = 628826, upload-time = "2025-10-14T15:05:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/a785356fccf9fae84c0cc90570f11702ae9571036fb25932f1242c82191c/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf", size = 622208, upload-time = "2025-10-14T15:05:25.45Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f4/0872229324ef69b2c3edec35e84bd57a1289e7d3fe74588048ed8947a323/watchfiles-1.1.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:d1715143123baeeaeadec0528bb7441103979a1d5f6fd0e1f915383fea7ea6d5", size = 404315, upload-time = "2025-10-14T15:05:26.501Z" }, + { url = "https://files.pythonhosted.org/packages/7b/22/16d5331eaed1cb107b873f6ae1b69e9ced582fcf0c59a50cd84f403b1c32/watchfiles-1.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:39574d6370c4579d7f5d0ad940ce5b20db0e4117444e39b6d8f99db5676c52fd", size = 390869, upload-time = "2025-10-14T15:05:27.649Z" }, + { url = "https://files.pythonhosted.org/packages/b2/7e/5643bfff5acb6539b18483128fdc0ef2cccc94a5b8fbda130c823e8ed636/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7365b92c2e69ee952902e8f70f3ba6360d0d596d9299d55d7d386df84b6941fb", size = 449919, upload-time = "2025-10-14T15:05:28.701Z" }, + { url = "https://files.pythonhosted.org/packages/51/2e/c410993ba5025a9f9357c376f48976ef0e1b1aefb73b97a5ae01a5972755/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfff9740c69c0e4ed32416f013f3c45e2ae42ccedd1167ef2d805c000b6c71a5", size = 460845, upload-time = "2025-10-14T15:05:30.064Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a4/2df3b404469122e8680f0fcd06079317e48db58a2da2950fb45020947734/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b27cf2eb1dda37b2089e3907d8ea92922b673c0c427886d4edc6b94d8dfe5db3", size = 489027, upload-time = "2025-10-14T15:05:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/ea/84/4587ba5b1f267167ee715b7f66e6382cca6938e0a4b870adad93e44747e6/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526e86aced14a65a5b0ec50827c745597c782ff46b571dbfe46192ab9e0b3c33", size = 595615, upload-time = "2025-10-14T15:05:32.074Z" }, + { url = "https://files.pythonhosted.org/packages/6a/0f/c6988c91d06e93cd0bb3d4a808bcf32375ca1904609835c3031799e3ecae/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04e78dd0b6352db95507fd8cb46f39d185cf8c74e4cf1e4fbad1d3df96faf510", size = 474836, upload-time = "2025-10-14T15:05:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/b4/36/ded8aebea91919485b7bbabbd14f5f359326cb5ec218cd67074d1e426d74/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c85794a4cfa094714fb9c08d4a218375b2b95b8ed1666e8677c349906246c05", size = 455099, upload-time = "2025-10-14T15:05:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/98/e0/8c9bdba88af756a2fce230dd365fab2baf927ba42cd47521ee7498fd5211/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:74d5012b7630714b66be7b7b7a78855ef7ad58e8650c73afc4c076a1f480a8d6", size = 630626, upload-time = "2025-10-14T15:05:35.216Z" }, + { url = "https://files.pythonhosted.org/packages/2a/84/a95db05354bf2d19e438520d92a8ca475e578c647f78f53197f5a2f17aaf/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:8fbe85cb3201c7d380d3d0b90e63d520f15d6afe217165d7f98c9c649654db81", size = 622519, upload-time = "2025-10-14T15:05:36.259Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ce/d8acdc8de545de995c339be67711e474c77d643555a9bb74a9334252bd55/watchfiles-1.1.1-cp314-cp314-win32.whl", hash = "sha256:3fa0b59c92278b5a7800d3ee7733da9d096d4aabcfabb9a928918bd276ef9b9b", size = 272078, upload-time = "2025-10-14T15:05:37.63Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c9/a74487f72d0451524be827e8edec251da0cc1fcf111646a511ae752e1a3d/watchfiles-1.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:c2047d0b6cea13b3316bdbafbfa0c4228ae593d995030fda39089d36e64fc03a", size = 287664, upload-time = "2025-10-14T15:05:38.95Z" }, + { url = "https://files.pythonhosted.org/packages/df/b8/8ac000702cdd496cdce998c6f4ee0ca1f15977bba51bdf07d872ebdfc34c/watchfiles-1.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:842178b126593addc05acf6fce960d28bc5fae7afbaa2c6c1b3a7b9460e5be02", size = 277154, upload-time = "2025-10-14T15:05:39.954Z" }, + { url = "https://files.pythonhosted.org/packages/47/a8/e3af2184707c29f0f14b1963c0aace6529f9d1b8582d5b99f31bbf42f59e/watchfiles-1.1.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:88863fbbc1a7312972f1c511f202eb30866370ebb8493aef2812b9ff28156a21", size = 403820, upload-time = "2025-10-14T15:05:40.932Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/e47e307c2f4bd75f9f9e8afbe3876679b18e1bcec449beca132a1c5ffb2d/watchfiles-1.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:55c7475190662e202c08c6c0f4d9e345a29367438cf8e8037f3155e10a88d5a5", size = 390510, upload-time = "2025-10-14T15:05:41.945Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a0/ad235642118090f66e7b2f18fd5c42082418404a79205cdfca50b6309c13/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f53fa183d53a1d7a8852277c92b967ae99c2d4dcee2bfacff8868e6e30b15f7", size = 448408, upload-time = "2025-10-14T15:05:43.385Z" }, + { url = "https://files.pythonhosted.org/packages/df/85/97fa10fd5ff3332ae17e7e40e20784e419e28521549780869f1413742e9d/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6aae418a8b323732fa89721d86f39ec8f092fc2af67f4217a2b07fd3e93c6101", size = 458968, upload-time = "2025-10-14T15:05:44.404Z" }, + { url = "https://files.pythonhosted.org/packages/47/c2/9059c2e8966ea5ce678166617a7f75ecba6164375f3b288e50a40dc6d489/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f096076119da54a6080e8920cbdaac3dbee667eb91dcc5e5b78840b87415bd44", size = 488096, upload-time = "2025-10-14T15:05:45.398Z" }, + { url = "https://files.pythonhosted.org/packages/94/44/d90a9ec8ac309bc26db808a13e7bfc0e4e78b6fc051078a554e132e80160/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00485f441d183717038ed2e887a7c868154f216877653121068107b227a2f64c", size = 596040, upload-time = "2025-10-14T15:05:46.502Z" }, + { url = "https://files.pythonhosted.org/packages/95/68/4e3479b20ca305cfc561db3ed207a8a1c745ee32bf24f2026a129d0ddb6e/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a55f3e9e493158d7bfdb60a1165035f1cf7d320914e7b7ea83fe22c6023b58fc", size = 473847, upload-time = "2025-10-14T15:05:47.484Z" }, + { url = "https://files.pythonhosted.org/packages/4f/55/2af26693fd15165c4ff7857e38330e1b61ab8c37d15dc79118cdba115b7a/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c91ed27800188c2ae96d16e3149f199d62f86c7af5f5f4d2c61a3ed8cd3666c", size = 455072, upload-time = "2025-10-14T15:05:48.928Z" }, + { url = "https://files.pythonhosted.org/packages/66/1d/d0d200b10c9311ec25d2273f8aad8c3ef7cc7ea11808022501811208a750/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:311ff15a0bae3714ffb603e6ba6dbfba4065ab60865d15a6ec544133bdb21099", size = 629104, upload-time = "2025-10-14T15:05:49.908Z" }, + { url = "https://files.pythonhosted.org/packages/e3/bd/fa9bb053192491b3867ba07d2343d9f2252e00811567d30ae8d0f78136fe/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a916a2932da8f8ab582f242c065f5c81bed3462849ca79ee357dd9551b0e9b01", size = 622112, upload-time = "2025-10-14T15:05:50.941Z" }, +] + +[[package]] +name = "websockets" +version = "16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload-time = "2026-01-10T09:22:46.787Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload-time = "2026-01-10T09:22:47.999Z" }, + { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload-time = "2026-01-10T09:22:49.809Z" }, + { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, + { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, + { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload-time = "2026-01-10T09:22:56.251Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload-time = "2026-01-10T09:22:57.478Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", size = 177406, upload-time = "2026-01-10T09:23:12.178Z" }, + { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904", size = 175085, upload-time = "2026-01-10T09:23:13.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4", size = 175328, upload-time = "2026-01-10T09:23:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e", size = 185044, upload-time = "2026-01-10T09:23:15.939Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4", size = 186279, upload-time = "2026-01-10T09:23:17.148Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1", size = 185711, upload-time = "2026-01-10T09:23:18.372Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3", size = 184982, upload-time = "2026-01-10T09:23:19.652Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", size = 177915, upload-time = "2026-01-10T09:23:21.458Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d", size = 178381, upload-time = "2026-01-10T09:23:22.715Z" }, + { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244", size = 177737, upload-time = "2026-01-10T09:23:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e", size = 175268, upload-time = "2026-01-10T09:23:25.781Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641", size = 175486, upload-time = "2026-01-10T09:23:27.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8", size = 185331, upload-time = "2026-01-10T09:23:28.259Z" }, + { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e", size = 186501, upload-time = "2026-01-10T09:23:29.449Z" }, + { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944", size = 186062, upload-time = "2026-01-10T09:23:31.368Z" }, + { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206", size = 185356, upload-time = "2026-01-10T09:23:32.627Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", size = 178085, upload-time = "2026-01-10T09:23:33.816Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, +] + [[package]] name = "werkzeug" version = "3.1.3"