diff --git a/kloppy/_providers/cdf.py b/kloppy/_providers/cdf.py new file mode 100644 index 000000000..156f80c8c --- /dev/null +++ b/kloppy/_providers/cdf.py @@ -0,0 +1,89 @@ +from typing import Optional + +from kloppy.domain import TrackingDataset +from kloppy.infra.serializers.tracking.cdf import ( + CDFTrackingDataInputs, + CDFTrackingDeserializer, +) +from kloppy.io import FileLike, open_as_file + + +def load_tracking( + meta_data: FileLike, + raw_data: FileLike, + sample_rate: Optional[float] = None, + limit: Optional[int] = None, + coordinates: Optional[str] = None, + include_empty_frames: Optional[bool] = False, + only_alive: Optional[bool] = True, +) -> TrackingDataset: + """ + Load Common Data Format broadcast tracking data. + + Args: + meta_data: A JSON feed containing the meta data. + raw_data: A JSONL feed containing the raw tracking data. + sample_rate: Sample the data at a specific rate. + limit: Limit the number of frames to load to the first `limit` frames. + coordinates: The coordinate system to use. + include_empty_frames: Include frames in which no objects were tracked. + only_alive: Only include frames in which the game is not paused. + + Returns: + The parsed tracking data. + """ + deserializer = CDFTrackingDeserializer( + sample_rate=sample_rate, + limit=limit, + coordinate_system=coordinates, + include_empty_frames=include_empty_frames, + only_alive=only_alive, + ) + with ( + open_as_file(meta_data) as meta_data_fp, + open_as_file(raw_data) as raw_data_fp, + ): + return deserializer.deserialize( + inputs=CDFTrackingDataInputs( + meta_data=meta_data_fp, raw_data=raw_data_fp + ) + ) + + +# def load_event( +# event_data: FileLike, +# meta_data: FileLike, +# event_types: Optional[list[str]] = None, +# coordinates: Optional[str] = None, +# event_factory: Optional[EventFactory] = None, +# ) -> EventDataset: +# """ +# Load Common Data Format event data. + +# Args: +# event_data: JSON feed with the raw event data of a game. +# meta_data: JSON feed with the corresponding lineup information of the game. +# event_types: A list of event types to load. +# coordinates: The coordinate system to use. +# event_factory: A custom event factory. + +# Returns: +# The parsed event data. +# """ +# deserializer = StatsBombDeserializer( +# event_types=event_types, +# coordinate_system=coordinates, +# event_factory=event_factory +# or get_config("event_factory") +# or StatsBombEventFactory(), +# ) +# with ( +# open_as_file(event_data) as event_data_fp, +# open_as_file(meta_data) as meta_data_fp, +# ): +# return deserializer.deserialize( +# inputs=StatsBombInputs( +# event_data=event_data_fp, +# lineup_data=meta_data_fp, +# ) +# ) diff --git a/kloppy/cdf.py b/kloppy/cdf.py new file mode 100644 index 000000000..2e245848a --- /dev/null +++ b/kloppy/cdf.py @@ -0,0 +1,5 @@ +"""Functions for loading SkillCorner broadcast tracking data.""" + +from ._providers.cdf import load_tracking + +__all__ = ["load_tracking"] diff --git a/kloppy/domain/models/common.py b/kloppy/domain/models/common.py index bccd630d6..48ba501b7 100644 --- a/kloppy/domain/models/common.py +++ b/kloppy/domain/models/common.py @@ -109,6 +109,7 @@ class Provider(Enum): HAWEKEYE (Provider): SPORTVU (Provider): IMPECT (Provider): + CDF (Provider): OTHER (Provider): """ @@ -126,8 +127,9 @@ class Provider(Enum): STATSPERFORM = "statsperform" HAWKEYE = "hawkeye" SPORTVU = "sportvu" - SIGNALITY = "signality" IMPECT = "impect" + CDF = "common_data_format" + SIGNALITY = "signality" OTHER = "other" def __str__(self): @@ -679,12 +681,16 @@ def to_mplsoccer(self): dim = BaseDims( left=self.pitch_dimensions.x_dim.min, right=self.pitch_dimensions.x_dim.max, - bottom=self.pitch_dimensions.y_dim.min - if not invert_y - else self.pitch_dimensions.y_dim.max, - top=self.pitch_dimensions.y_dim.max - if not invert_y - else self.pitch_dimensions.y_dim.min, + bottom=( + self.pitch_dimensions.y_dim.min + if not invert_y + else self.pitch_dimensions.y_dim.max + ), + top=( + self.pitch_dimensions.y_dim.max + if not invert_y + else self.pitch_dimensions.y_dim.min + ), width=self.pitch_dimensions.x_dim.max - self.pitch_dimensions.x_dim.min, length=self.pitch_dimensions.y_dim.max @@ -733,14 +739,16 @@ def to_mplsoccer(self): - self.pitch_dimensions.x_dim.min ), pad_multiplier=1, - aspect_equal=False - if self.pitch_dimensions.unit == Unit.NORMED - else True, + aspect_equal=( + False if self.pitch_dimensions.unit == Unit.NORMED else True + ), pitch_width=pitch_width, pitch_length=pitch_length, - aspect=pitch_width / pitch_length - if self.pitch_dimensions.unit == Unit.NORMED - else 1.0, + aspect=( + pitch_width / pitch_length + if self.pitch_dimensions.unit == Unit.NORMED + else 1.0 + ), ) return dim @@ -1184,6 +1192,58 @@ def pitch_dimensions(self) -> PitchDimensions: ) +class CDFCoordinateSystem(ProviderCoordinateSystem): + """ + CDFCoordinateSystem coordinate system. + + Uses a pitch with the origin at the center and the y-axis oriented + from bottom to top. The coordinates are in meters. + """ + + @property + def provider(self) -> Provider: + return Provider.CDF + + @property + def origin(self) -> Origin: + return Origin.CENTER + + @property + def vertical_orientation(self) -> VerticalOrientation: + return VerticalOrientation.BOTTOM_TO_TOP + + @property + def pitch_dimensions(self) -> PitchDimensions: + return NormalizedPitchDimensions( + x_dim=Dimension( + -1 * self._pitch_length / 2, self._pitch_length / 2 + ), + y_dim=Dimension(-1 * self._pitch_width / 2, self._pitch_width / 2), + pitch_length=self._pitch_length, + pitch_width=self._pitch_width, + standardized=False, + ) + + def __init__( + self, + base_coordinate_system: ProviderCoordinateSystem | None = None, + pitch_length: float | None = None, + pitch_width: float | None = None, + ): + if base_coordinate_system is not None: + # Used by serializer - derive dimensions from source coordinate system + self._pitch_length = ( + base_coordinate_system.pitch_dimensions.pitch_length + ) + self._pitch_width = ( + base_coordinate_system.pitch_dimensions.pitch_width + ) + else: + # Used by deserializer - direct pitch dimensions + self._pitch_length = pitch_length + self._pitch_width = pitch_width + + class SignalityCoordinateSystem(ProviderCoordinateSystem): @property def provider(self) -> Provider: @@ -1414,6 +1474,7 @@ def build_coordinate_system( Provider.SPORTVU: SportVUCoordinateSystem, Provider.SIGNALITY: SignalityCoordinateSystem, Provider.IMPECT: ImpectCoordinateSystem, + Provider.CDF: CDFCoordinateSystem, } if provider in coordinate_systems: @@ -1944,6 +2005,10 @@ def to_df( else: raise KloppyParameterError(f"Engine {engine} is not valid") + def to_cdf(self): + if self.dataset_type != DatasetType.TRACKING: + raise ValueError("to_cdf() is only supported for TrackingDataset") + def __repr__(self): return f"<{self.__class__.__name__} record_count={len(self.records)}>" diff --git a/kloppy/domain/models/tracking.py b/kloppy/domain/models/tracking.py index 695a3c1b5..9bf33d030 100644 --- a/kloppy/domain/models/tracking.py +++ b/kloppy/domain/models/tracking.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Any, Optional +from typing import TYPE_CHECKING, Any, Optional, Union from kloppy.domain.models.common import DatasetType from kloppy.utils import ( @@ -9,6 +9,11 @@ from .common import DataRecord, Dataset, Player from .pitch import Point, Point3D +if TYPE_CHECKING: + from cdf.domain import CdfMetaDataSchema + + from kloppy.io import FileLike + @dataclass class PlayerData: @@ -79,5 +84,74 @@ def frames(self): def frame_rate(self): return self.metadata.frame_rate + # Update the to_cdf method in Dataset class + def to_cdf( + self, + metadata_output_file: "FileLike", + tracking_output_file: "FileLike", + additional_metadata: Optional[Union[dict, "CdfMetaDataSchema"]] = None, + ) -> None: + """ + Export dataset to Common Data Format (CDF). + + Args: + metadata_output_file: File path or file-like object for metadata JSON output. + Must have .json extension if a string path. + tracking_output_file: File path or file-like object for tracking JSONL output. + Must have .jsonl extension if a string path. + additional_metadata: Additional metadata to include in the CDF output. + Can be a complete CdfMetaDataSchema TypedDict or a partial dict. + Supported top-level keys: 'competition', 'season', 'stadium', 'meta', 'match'. + Supports nested updates like {'stadium': {'id': '123'}}. + + Raises: + KloppyError: If the dataset is not a TrackingDataset. + ValueError: If file extensions are invalid. + + Examples: + >>> # Export to local files + >>> dataset.to_cdf( + ... metadata_output_file='metadata.json', + ... tracking_output_file='tracking.jsonl' + ... ) + + >>> # Export to S3 + >>> dataset.to_cdf( + ... metadata_output_file='s3://bucket/metadata.json', + ... tracking_output_file='s3://bucket/tracking.jsonl' + ... ) + + >>> # Export with partial metadata updates + >>> dataset.to_cdf( + ... metadata_output_file='metadata.json', + ... tracking_output_file='tracking.jsonl', + ... additional_metadata={ + ... 'competition': {'id': '123'}, + ... 'season': {'id': '2024'}, + ... 'stadium': {'id': '456', 'name': 'Stadium Name'} + ... } + ... ) + """ + from kloppy.infra.serializers.tracking.cdf import ( + CDFOutputs, + CDFTrackingSerializer, + ) + from kloppy.io import open_as_file + + serializer = CDFTrackingSerializer() + + # TODO: write files but also support non-local files, similar to how open_as_file supports non-local files + + # Use open_as_file with mode="wb" for writing + with ( + open_as_file(metadata_output_file, mode="wb") as metadata_fp, + open_as_file(tracking_output_file, mode="wb") as tracking_fp, + ): + serializer.serialize( + dataset=self, + outputs=CDFOutputs(meta_data=metadata_fp, raw_data=tracking_fp), + additional_metadata=additional_metadata, + ) + __all__ = ["Frame", "TrackingDataset", "PlayerData"] diff --git a/kloppy/infra/io/adapters/zip.py b/kloppy/infra/io/adapters/zip.py index 71a174eab..904433381 100644 --- a/kloppy/infra/io/adapters/zip.py +++ b/kloppy/infra/io/adapters/zip.py @@ -55,8 +55,10 @@ def list_directory(self, url: str, recursive: bool = True) -> list[str]: else: files = fs.listdir(url, detail=False) return [ - f"{protocol}://{fp}" - if protocol != "file" and not fp.startswith(protocol) - else fp + ( + f"{protocol}://{fp}" + if protocol != "file" and not fp.startswith(protocol) + else fp + ) for fp in files ] diff --git a/kloppy/infra/serializers/tracking/cdf/__init__.py b/kloppy/infra/serializers/tracking/cdf/__init__.py new file mode 100644 index 000000000..e024c16d4 --- /dev/null +++ b/kloppy/infra/serializers/tracking/cdf/__init__.py @@ -0,0 +1,6 @@ +from kloppy.domain.models.common import CDFCoordinateSystem + +from .deserializer import CDFTrackingDataInputs, CDFTrackingDeserializer +from .serializer import CDFOutputs, CDFTrackingSerializer + +__all__ = ["CDFCoordinateSystem", "CDFTrackingSerializer", "CDFOutputs"] diff --git a/kloppy/infra/serializers/tracking/cdf/deserializer.py b/kloppy/infra/serializers/tracking/cdf/deserializer.py new file mode 100644 index 000000000..16d13678c --- /dev/null +++ b/kloppy/infra/serializers/tracking/cdf/deserializer.py @@ -0,0 +1,451 @@ +from datetime import datetime, timedelta +import json +import logging +from typing import IO, NamedTuple, Optional, Union + +from kloppy.domain import ( + BallState, + DatasetFlag, + Ground, + Metadata, + Orientation, + Period, + Player, + PlayerData, + Point, + Point3D, + PositionType, + Provider, + Team, + TrackingDataset, +) +from kloppy.domain.services.frame_factory import create_frame +from kloppy.infra.serializers.tracking.deserializer import ( + TrackingDataDeserializer, +) +from kloppy.utils import performance_logging + +logger = logging.getLogger(__name__) + +# Mapping from CDF position codes to kloppy PositionType +position_types_mapping: dict[str, PositionType] = { + "LW": PositionType.LeftWing, + "LCF": PositionType.LeftForward, + "CF": PositionType.Striker, + "RCF": PositionType.RightForward, + "RW": PositionType.RightWing, + "LAM": PositionType.LeftAttackingMidfield, + "CAM": PositionType.CenterAttackingMidfield, + "RAM": PositionType.RightAttackingMidfield, + "LM": PositionType.LeftMidfield, + "LCM": PositionType.LeftCentralMidfield, + "CM": PositionType.CentralMidfield, + "RCM": PositionType.RightCentralMidfield, + "RM": PositionType.RightMidfield, + "LDM": PositionType.LeftDefensiveMidfield, + "CDM": PositionType.CenterDefensiveMidfield, + "RDM": PositionType.RightDefensiveMidfield, + "LB": PositionType.LeftBack, + "LCB": PositionType.LeftCenterBack, + "CB": PositionType.CenterBack, + "RCB": PositionType.RightCenterBack, + "RB": PositionType.RightBack, + "GK": PositionType.Goalkeeper, + "SUB": PositionType.Unknown, +} + +# Mapping from CDF period names to period IDs +PERIOD_NAME_TO_ID = { + "first_half": 1, + "second_half": 2, + "first_half_extratime": 3, + "second_half_extratime": 4, + "shootout": 5, +} + + +class CDFTrackingDataInputs(NamedTuple): + meta_data: IO[bytes] + raw_data: IO[bytes] + + +class CDFTrackingDeserializer(TrackingDataDeserializer[CDFTrackingDataInputs]): + def __init__( + self, + limit: Optional[int] = None, + sample_rate: Optional[float] = None, + coordinate_system: Optional[Union[str, Provider]] = None, + include_empty_frames: Optional[bool] = False, + only_alive: bool = True, + ): + super().__init__(limit, sample_rate, coordinate_system) + self.include_empty_frames = include_empty_frames + self.only_alive = only_alive + + @property + def provider(self) -> Provider: + return Provider.CDF + + @staticmethod + def _validate_cdf_data(metadata_content: dict, first_frame: dict): + """Validate CDF data using common-data-format-validator. + + Uses soft validation which emits warnings for schema violations + rather than raising exceptions. + """ + try: + import cdf + + # Validate metadata with soft=True (emits warnings) + meta_validator = cdf.MetaSchemaValidator( + schema=f"cdf/files/v{cdf.VERSION}/schema/meta.json" + ) + meta_validator.validate_schema(metadata_content, soft=True) + + # Validate first tracking frame with soft=True (emits warnings) + tracking_validator = cdf.TrackingSchemaValidator( + schema=f"cdf/files/v{cdf.VERSION}/schema/tracking.json" + ) + tracking_validator.validate_schema(first_frame, soft=True) + + except ImportError: + raise ImportError( + "common-data-format-validator package is required for CDF validation. " + "Please install the latest version: pip install common-data-format-validator" + ) + + @staticmethod + def _validate_orientation( + frames: list, teams: list[Team], periods: list[Period] + ): + """Validate that data conforms to CDF STATIC_HOME_AWAY orientation. + + CDF standard: Home team always plays left to right, meaning the home + goalkeeper should always be on the left side (negative x) in every period. + Uses average GK position over first 5 frames per period. + Raises ValueError if data doesn't conform. + """ + home_team = teams[0] # Ground.HOME + + for period in periods: + # Get first 5 frames for this period + period_frames = [f for f in frames if f.period.id == period.id][:5] + if not period_frames: + continue + + # Collect GK x-coordinates across frames + gk_x_positions = [] + for frame in period_frames: + for player, player_data in frame.players_data.items(): + if ( + player.team == home_team + and player.starting_position == PositionType.Goalkeeper + ): + gk_x_positions.append(player_data.coordinates.x) + break + + if not gk_x_positions: + continue + + # Calculate average GK x position + avg_gk_x = sum(gk_x_positions) / len(gk_x_positions) + + # Home GK should always be on left (negative x) in every period + if avg_gk_x > 0: + raise ValueError( + f"CDF data orientation error: Home team goalkeeper " + f"found on right side (avg x={avg_gk_x:.2f}) in period {period.id}. " + f"CDF requires home team player left-to-right every period." + ) + + @classmethod + def _frame_from_framedata( + cls, + teams: list[Team], + team_by_id: dict[str, Team], + period: Period, + frame_data: dict, + first_frame_timestamp: datetime, + ): + """Create a Frame from CDF frame data.""" + frame_id = frame_data["frame_id"] + + # Calculate timestamp relative to first frame of this period + frame_timestamp_str = frame_data["timestamp"] + frame_datetime = datetime.fromisoformat(frame_timestamp_str) + frame_timestamp = timedelta( + seconds=(frame_datetime - first_frame_timestamp).total_seconds() + ) + + # Ball coordinates (3D) - ball is required in CDF + ball_data = frame_data["ball"] + if ball_data["x"] is not None: + ball_x = float(ball_data["x"]) + ball_y = float(ball_data["y"]) + ball_z = float(ball_data.get("z") or 0.0) + ball_coordinates = Point3D(ball_x, ball_y, ball_z) + else: + ball_coordinates = None + + # Ball state + ball_state = ( + BallState.ALIVE if frame_data["ball_status"] else BallState.DEAD + ) + + # Ball owning team (optional in CDF) + ball_poss_team_id = frame_data.get("ball_poss_team_id") + if ball_poss_team_id is not None: + ball_owning_team = team_by_id.get(str(ball_poss_team_id)) + else: + ball_owning_team = None + + # Build players_data from home and away teams + players_data = {} + teams_data = frame_data["teams"] + + for team, team_key in zip(teams, ["home", "away"]): + team_frame_data = teams_data[team_key] + players_list = team_frame_data["players"] + + for player_data in players_list: + player_id = str(player_data["id"]) + player = team.get_player_by_id(player_id) + + if not player: + # Player not in metadata, create dynamically + position_code = player_data.get("position") + position = position_types_mapping.get( + position_code, PositionType.Unknown + ) + player = Player( + player_id=player_id, + team=team, + starting_position=position, + ) + team.players.append(player) + + x = float(player_data["x"]) + y = float(player_data["y"]) + players_data[player] = PlayerData(coordinates=Point(x, y)) + + frame = create_frame( + frame_id=frame_id, + timestamp=frame_timestamp, + ball_coordinates=ball_coordinates, + ball_state=ball_state, + ball_owning_team=ball_owning_team, + players_data=players_data, + period=period, + other_data={}, + ) + + return frame + + def deserialize(self, inputs: CDFTrackingDataInputs) -> TrackingDataset: + # Parse metadata JSON + with performance_logging("Loading CDF metadata", logger=logger): + metadata_content = json.loads(inputs.meta_data.read()) + + # Extract required fields - fail fast on missing keys + tracking_meta = metadata_content["meta"]["tracking"] + frame_rate = tracking_meta["fps"] + + stadium = metadata_content["stadium"] + pitch_length = float(stadium["pitch_length"]) + pitch_width = float(stadium["pitch_width"]) + + match_data = metadata_content["match"] + game_id = str(match_data["id"]) + kickoff_time_str = match_data.get("kickoff_time") + if kickoff_time_str: + date = datetime.fromisoformat(kickoff_time_str) + else: + date = None + + # Build periods + periods = [] + for period_data in match_data["periods"]: + period_name = period_data["period"] + period_id = PERIOD_NAME_TO_ID.get(period_name) + if period_id is None: + logger.warning(f"Unknown period name: {period_name}") + continue + + start_time_str = period_data.get("start_time") + end_time_str = period_data.get("end_time") + + # Calculate period duration as timestamps + if start_time_str and end_time_str: + start_dt = datetime.fromisoformat(start_time_str) + end_dt = datetime.fromisoformat(end_time_str) + start_timestamp = timedelta(seconds=0) + end_timestamp = timedelta( + seconds=(end_dt - start_dt).total_seconds() + ) + else: + start_timestamp = timedelta(seconds=0) + end_timestamp = timedelta(seconds=0) + + periods.append( + Period( + id=period_id, + start_timestamp=start_timestamp, + end_timestamp=end_timestamp, + ) + ) + + # Build teams - require home and away keys + teams_data = metadata_content["teams"] + + home_team_data = teams_data["home"] + home_team = Team( + team_id=str(home_team_data["id"]), + name=home_team_data["name"], + ground=Ground.HOME, + ) + + away_team_data = teams_data["away"] + away_team = Team( + team_id=str(away_team_data["id"]), + name=away_team_data["name"], + ground=Ground.AWAY, + ) + + # Add players to teams + for team, team_data in [ + (home_team, home_team_data), + (away_team, away_team_data), + ]: + for player_data in team_data["players"]: + player = Player( + player_id=str(player_data["id"]), + team=team, + jersey_no=player_data.get("jersey_number"), + starting=player_data.get("is_starter", False), + ) + team.players.append(player) + + teams = [home_team, away_team] + team_by_id = {team.team_id: team for team in teams} + + # Parse tracking JSONL + with performance_logging("Loading CDF tracking data", logger=logger): + transformer = self.get_transformer( + pitch_length=pitch_length, pitch_width=pitch_width + ) + + period_map = {period.id: period for period in periods} + + # Read first frame for validation + first_line = inputs.raw_data.readline() + if isinstance(first_line, bytes): + first_line = first_line.decode("utf-8") + first_frame_data = json.loads(first_line.strip()) + + # Validate CDF data + self._validate_cdf_data(metadata_content, first_frame_data) + + # Reset to beginning and process all frames + inputs.raw_data.seek(0) + + def _iter(): + n = 0 + sample = 1 / self.sample_rate + + for line in inputs.raw_data.readlines(): + line = line.strip() + if not line: + continue + + # Decode if bytes + if isinstance(line, bytes): + line = line.decode("utf-8") + + frame_data = json.loads(line) + + # Filter dead ball frames if only_alive is set + if self.only_alive and not frame_data["ball_status"]: + continue + + # Filter empty frames if not including them + if not self.include_empty_frames: + teams_frame = frame_data["teams"] + home_players = teams_frame["home"]["players"] + away_players = teams_frame["away"]["players"] + if not home_players and not away_players: + continue + + # Apply sampling + if n % sample == 0: + yield frame_data + + n += 1 + + frames = [] + n_frames = 0 + # Track first frame timestamp for each period (for relative timestamps) + first_frame_timestamps: dict[int, datetime] = {} + # Track if any frame has ball possession data + has_ball_owning_team = False + + for frame_data in _iter(): + # Get period from frame + period_name = frame_data["period"] + period_id = PERIOD_NAME_TO_ID.get(period_name, 1) + period = period_map.get(period_id) + + if period is None: + logger.warning( + f"Frame references unknown period: {period_name}" + ) + continue + + # Track first frame timestamp for this period + frame_datetime = datetime.fromisoformat(frame_data["timestamp"]) + if period_id not in first_frame_timestamps: + first_frame_timestamps[period_id] = frame_datetime + + # Check if this frame has ball possession data + if frame_data.get("ball_poss_team_id") is not None: + has_ball_owning_team = True + + frame = self._frame_from_framedata( + teams, + team_by_id, + period, + frame_data, + first_frame_timestamps[period_id], + ) + frame = transformer.transform_frame(frame) + frames.append(frame) + + n_frames += 1 + + if self.limit and n_frames >= self.limit: + break + + self._validate_orientation(frames, teams, periods) + orientation = Orientation.STATIC_HOME_AWAY + + # Set flags based on available data + flags = DatasetFlag.BALL_STATE + if has_ball_owning_team: + flags |= DatasetFlag.BALL_OWNING_TEAM + + metadata = Metadata( + teams=teams, + periods=periods, + pitch_dimensions=transformer.get_to_coordinate_system().pitch_dimensions, + frame_rate=frame_rate, + orientation=orientation, + provider=Provider.CDF, + flags=flags, + coordinate_system=transformer.get_to_coordinate_system(), + date=date, + game_id=game_id, + ) + + return TrackingDataset( + records=frames, + metadata=metadata, + ) diff --git a/kloppy/infra/serializers/tracking/cdf/helpers.py b/kloppy/infra/serializers/tracking/cdf/helpers.py new file mode 100644 index 000000000..5d3991a5d --- /dev/null +++ b/kloppy/infra/serializers/tracking/cdf/helpers.py @@ -0,0 +1,263 @@ +import warnings + +from kloppy.domain import Ground, Point3D, PositionType + +PERIODS_MAP = { + 1: "first_half", + 2: "second_half", + 3: "first_half_extratime", + 4: "second_half_extratime", + 5: "shootout", +} + + +def is_valid_cdf_position_code(x): + try: + from cdf.validators.common import POSITION_GROUPS + except ImportError: + raise ImportError( + "Seems like you don't have common-data-format-validator installed. Please" + " install it using: pip install common-data-format-validator" + ) + + return any(x in positions for positions in POSITION_GROUPS.values()) + + +def map_position_type_code_to_cdf(position_code): + """ + Docstring for map_position_type_code_to_cdf + + :param position_code: Description + """ + if is_valid_cdf_position_code(position_code): + return position_code + else: + if position_code == "UNK": + warnings.warn( + f"""position_code '{position_code}' identified within dataset. + \nThis means there is no appropriate mapping from the original position type (as provided by your data provider) to a kloppy.domain.PositionType. + \nTo resolve this, please open an issue at https://github.com/PySport/kloppy/issues""", + UserWarning, + ) + return None + elif position_code in ["DEF", "FB", "MID", "WM", "ATT"]: + warnings.warn( + f"""position_code '{position_code}' identified within dataset. + \nThere is no appropriate mapping for this position to Common Data Format.""", + UserWarning, + ) + return None + elif position_code == "LWB": + return "LB" + elif position_code == "RWB": + return "RB" + elif position_code == "DM": + return "CDM" + elif position_code == "AM": + return "CAM" + elif position_code == "LF": + return "LCF" + elif position_code == "ST": + return "CF" + elif position_code == "RF": + return "RCF" + else: + raise ValueError( + f"position.code '{position_code}' cannot be converted to CDF, because there is no appropriate mapping." + ) + + +def extract_team_players(team): + """Extract player IDs from a team.""" + return [player.player_id for player in team.players] + + +def get_player_coordinates(frame, ground: Ground): + """Create player data list for a team from frame coordinates.""" + + players = [] + for player, coordinates in frame.players_coordinates.items(): + if player.team.ground == ground: + players.append( + { + "id": str(player.player_id), + "x": round(coordinates.x, 3), + "y": round(coordinates.y, 3), + "position": map_position_type_code_to_cdf( + player.starting_position.code + ), + } + ) + return players + + +def get_ball_coordinates(frame): + if frame.ball_coordinates is not None: + if isinstance(frame.ball_coordinates, Point3D): + return { + "x": round(frame.ball_coordinates.x, 3), + "y": round(frame.ball_coordinates.y, 3), + "z": round(frame.ball_coordinates.z, 3), + } + else: + return { + "x": round(frame.ball_coordinates.x, 3), + "y": round(frame.ball_coordinates.y, 3), + } + + return {"x": None, "y": None, "z": None} + + +def initialize_period_tracking(periods): + """Initialize tracking dictionaries for all periods.""" + period_ids = [period.id for period in periods] + return { + "start_frame_id": {pid: None for pid in period_ids}, + "end_frame_id": {pid: None for pid in period_ids}, + "normalized_start_frame_id": {pid: None for pid in period_ids}, + "normalized_end_frame_id": {pid: None for pid in period_ids}, + "offset": {pid: 0 for pid in period_ids}, + } + + +def update_period_tracking(period_tracking, period_id, original_frame_id): + """Update period tracking information for the current frame.""" + if period_tracking["start_frame_id"][period_id] is None: + period_tracking["start_frame_id"][period_id] = original_frame_id + + if ( + period_id > 1 + and period_tracking["end_frame_id"][period_id - 1] is not None + ): + prev_period_length = ( + period_tracking["end_frame_id"][period_id - 1] + - period_tracking["start_frame_id"][period_id - 1] + + 1 + ) + period_tracking["offset"][period_id] = ( + period_tracking["offset"][period_id - 1] + prev_period_length + ) + + period_tracking["normalized_start_frame_id"][period_id] = ( + period_tracking["offset"][period_id] + ) + + period_tracking["end_frame_id"][period_id] = original_frame_id + + normalized_frame_id = ( + original_frame_id - period_tracking["start_frame_id"][period_id] + ) + period_tracking["offset"][period_id] + + period_tracking["normalized_end_frame_id"][period_id] = normalized_frame_id + + return normalized_frame_id + + +def get_starting_formation(team_players) -> str: + """ + determine the starting formation if not define. + + Args: + team: The team on which we want to infer the formation. + + Returns: + formation: the infered formation. + """ + default_formation = "4-3-3" + + defender = midfielder = attacker = 0 + for player in team_players: + if player.starting_position.position_group is None: + continue + elif player.starting_position.position_group == PositionType.Attacker: + attacker += 1 + elif player.starting_position.position_group == PositionType.Midfielder: + midfielder += 1 + elif player.starting_position.position_group == PositionType.Defender: + defender += 1 + if defender + midfielder + attacker == 10: + return f"{defender}-{midfielder}-{attacker}" + elif defender + midfielder + attacker != 10: + return default_formation + return default_formation + + +def build_periods_info(dataset, period_tracking, home_team, away_team): + """Build period information for metadata.""" + periods_info = [] + for period in dataset.metadata.periods: + periods_info.append( + { + "period": PERIODS_MAP[period.id], + "play_direction": "left_right", + "start_time": str( + dataset.metadata.date + period.start_timestamp + ), + "end_time": str(dataset.metadata.date + period.end_timestamp), + "start_frame_id": period_tracking["normalized_start_frame_id"][ + period.id + ], + "end_frame_id": period_tracking["normalized_end_frame_id"][ + period.id + ], + "left_team_id": str(home_team.team_id), + "right_team_id": str(away_team.team_id), + } + ) + return periods_info + + +def build_whistles(periods_info): + """Build whistle events from period information.""" + whistles = [] + for period in periods_info: + whistles.append( + { + "type": period["period"], + "sub_type": "start", + "time": period["start_time"], + } + ) + whistles.append( + { + "type": period["period"], + "sub_type": "end", + "time": period["end_time"], + } + ) + return whistles + + +def get_starters_and_formation(team, first_frame): + """ + Extract starter IDs and determine formation from first frame. + + Returns: + tuple: (set of starter player IDs, formation string) + """ + team_starters = { + player.player_id + for player, _ in first_frame.players_coordinates.items() + if player.team == team + } + + starters_list = [p for p in team.players if p.player_id in team_starters] + + formation = team.starting_formation or get_starting_formation(starters_list) + + return team_starters, formation + + +def build_team_players_metadata(team, starters): + """Build player metadata for a team.""" + players = [] + for player in team.players: + players.append( + { + "id": str(player.player_id), + "team_id": str(team.team_id), + "jersey_number": player.jersey_no, + "is_starter": player.player_id in starters, + } + ) + return players diff --git a/kloppy/infra/serializers/tracking/cdf/serializer.py b/kloppy/infra/serializers/tracking/cdf/serializer.py new file mode 100644 index 000000000..2c4d45c7d --- /dev/null +++ b/kloppy/infra/serializers/tracking/cdf/serializer.py @@ -0,0 +1,338 @@ +import json +from typing import IO, TYPE_CHECKING, NamedTuple, Optional, Union + +from kloppy import __version__ +from kloppy.domain import ( + BallState, + CDFCoordinateSystem, + Ground, + Orientation, + Provider, + TrackingDataset, +) +from kloppy.infra.serializers.tracking.serializer import TrackingDataSerializer + +from .helpers import ( + PERIODS_MAP, + build_periods_info, + build_team_players_metadata, + build_whistles, + get_ball_coordinates, + get_player_coordinates, + get_starters_and_formation, + initialize_period_tracking, + update_period_tracking, +) + +if TYPE_CHECKING: + from cdf.domain.latest.meta import ( + CdfMetaDataSchema, + Competition, + Meta, + Misc, + Season, + Stadium, + ) + +import warnings + +MISSING_MANDATORY_VALUE = "MISSING_MANDATORY_VALUE" + + +class CDFOutputs(NamedTuple): + meta_data: IO[bytes] + raw_data: IO[bytes] + + +class CDFTrackingSerializer(TrackingDataSerializer[CDFOutputs]): + provider = Provider.CDF + + def serialize( + self, + dataset: TrackingDataset, + outputs: CDFOutputs, + additional_metadata: Optional[ + Union[ + "CdfMetaDataSchema", + "Stadium", + "Competition", + "Season", + "Meta", + "Misc", + dict, + ] + ] = None, + ) -> bool: + """ + Serialize a TrackingDataset to Common Data Format. + + Args: + dataset: The tracking dataset to serialize + outputs: CDFOutputs containing file handles for metadata and tracking data + additional_metadata: Either a complete CdfMetaDataSchema or partial metadata + dict containing any of: 'competition', 'season', 'stadium', 'meta', 'misc'. + Can also contain direct field updates like {'stadium': {'id': '123'}}. + + Returns: + bool: True if serialization was successful + """ + if all( + True if x.ball_state == BallState.ALIVE else False for x in dataset + ): + warnings.warn( + "All frames in 'tracking_dataset' are 'ALIVE', the Common Data Format expects 'DEAD' frames as well. Set `only_alive=False` in your kloppy `.load_tracking()` call to include 'DEAD' frames.", + UserWarning, + ) + + dataset = dataset.transform( + to_coordinate_system=CDFCoordinateSystem( + dataset.metadata.coordinate_system + ), + to_orientation=Orientation.STATIC_HOME_AWAY, + ) + + period_tracking = initialize_period_tracking(dataset.metadata.periods) + self._home_team, self._away_team = dataset.metadata.teams + + self._serialize_tracking_frames( + dataset, + outputs, + period_tracking, + ) + + self._serialize_metadata( + dataset, + outputs, + period_tracking, + additional_metadata or {}, + ) + + return True + + def _serialize_tracking_frames(self, dataset, outputs, period_tracking): + """Serialize tracking data frames to JSONL format. + + Iterates through all frames in the dataset and writes each frame's tracking + data (player positions, ball coordinates, timestamps) directly to the output + JSONL file. + + Args: + dataset: The kloppy tracking dataset containing frames to serialize. + outputs: CDFOutputs object containing the tracking data file handle. + period_tracking: Dictionary containing period frame ID tracking information. + """ + for frame in dataset.frames: + period_id = frame.period.id + ball_status = frame.ball_state == BallState.ALIVE + + normalized_frame_id = update_period_tracking( + period_tracking, period_id, frame.frame_id + ) + + home_players = get_player_coordinates(frame, Ground.HOME) + away_players = get_player_coordinates(frame, Ground.AWAY) + + if period_id not in PERIODS_MAP: + raise ValueError( + f"Incorrect period_id {period_id}. Period ID {period_id} this is not supported by the Common Data Format" + ) + + frame_data = { + "frame_id": normalized_frame_id, + "original_frame_id": frame.frame_id, + "timestamp": str(dataset.metadata.date + frame.timestamp), + "period": PERIODS_MAP[period_id], + "match": {"id": str(dataset.metadata.game_id)}, + "ball_status": ball_status, + "teams": { + "home": { + "id": str(self._home_team.team_id), + "players": home_players, + "name": self._home_team.name, + }, + "away": { + "id": str(self._away_team.team_id), + "players": away_players, + "name": self._away_team.name, + }, + }, + "ball": get_ball_coordinates(frame), + } + + outputs.raw_data.write( + (json.dumps(frame_data) + "\n").encode("utf-8") + ) + + def _build_default_metadata_structure( + self, + dataset, + period_tracking, + ) -> "CdfMetaDataSchema": + """Build default CDF metadata structure from dataset.""" + try: + from cdf import VERSION + except ImportError: + raise ImportError( + "Seems like you don't have common-data-format-validator installed. Please" + " install it using: pip install common-data-format-validator" + ) + + first_frame = dataset[0] + + home_starters, home_formation = get_starters_and_formation( + self._home_team, first_frame + ) + away_starters, away_formation = get_starters_and_formation( + self._away_team, first_frame + ) + + periods_info = build_periods_info( + dataset, period_tracking, self._home_team, self._away_team + ) + + whistles = build_whistles(periods_info) + + return { + "competition": { + "id": MISSING_MANDATORY_VALUE, + }, + "season": { + "id": MISSING_MANDATORY_VALUE, + }, + "stadium": { + "id": MISSING_MANDATORY_VALUE, + "pitch_length": dataset.metadata.pitch_dimensions.pitch_length, + "pitch_width": dataset.metadata.pitch_dimensions.pitch_width, + }, + "match": { + "id": str(dataset.metadata.game_id), + "kickoff_time": str( + dataset.metadata.date + + dataset.metadata.periods[0].start_timestamp + ), + "periods": periods_info, + "whistles": whistles, + "scheduled_kickoff_time": str(dataset.metadata.date), + }, + "teams": { + "home": { + "id": str(self._home_team.team_id), + "players": build_team_players_metadata( + self._home_team, home_starters + ), + "name": self._home_team.name, + "formation": home_formation, + }, + "away": { + "id": str(self._away_team.team_id), + "players": build_team_players_metadata( + self._away_team, away_starters + ), + "name": self._away_team.name, + "formation": away_formation, + }, + }, + "meta": { + "video": None, + "tracking": { + "fps": dataset.metadata.frame_rate, + "name": dataset.metadata.provider.name.lower(), + "converted_by": f"kloppy-cdf-converter-{__version__}", + "version": MISSING_MANDATORY_VALUE, + "collection_timing": MISSING_MANDATORY_VALUE, + }, + "landmarks": None, + "ball": None, + "meta": None, + "cdf": {"version": VERSION}, + "event": None, + }, + } + + def _deep_merge_metadata(self, base: dict, updates: dict) -> dict: + """ + Deep merge metadata updates into base metadata. + + Args: + base: Base metadata dictionary + updates: Updates to apply (can be nested) + + Returns: + Merged metadata dictionary + """ + result = base.copy() + + for key, value in updates.items(): + if ( + key in result + and isinstance(result[key], dict) + and isinstance(value, dict) + ): + result[key] = self._deep_merge_metadata(result[key], value) + else: + result[key] = value + + return result + + def _internal_validation_metadata( + self, metadata: dict, path: str = "" + ) -> None: + """ + Validate metadata and warn about missing mandatory IDs. + + Args: + metadata: Metadata dictionary to validate + path: Current path in the metadata structure (for nested dicts) + """ + for key, value in metadata.items(): + current_path = f"{path}.{key}" if path else key + + if value == MISSING_MANDATORY_VALUE: + warnings.warn( + f"Missing mandatory ID at '{current_path}'. Currently replaced with the value '{MISSING_MANDATORY_VALUE}'. " + f"Please provide the correct value to 'additional_metadata' to completely adhere to the CDF specification.", + UserWarning, + ) + elif isinstance(value, dict): + self._internal_validation_metadata(value, current_path) + elif isinstance(value, list): + for i, item in enumerate(value): + if isinstance(item, dict): + self._internal_validation_metadata( + item, f"{current_path}[{i}]" + ) + + def _serialize_metadata( + self, + dataset, + outputs, + period_tracking, + additional_metadata: dict, + ): + """ + Serialize metadata to JSON format. + + Builds and writes the complete metadata JSON including competition, season, + match information, periods, whistles, team rosters with formations, and + stadium dimensions. Accepts additional metadata for overrides. + + Args: + dataset: The tracking dataset containing metadata to serialize. + outputs: CDFOutputs object containing the metadata file handle. + period_tracking: Dictionary containing normalized period frame IDs. + additional_metadata: Additional or override metadata following CdfMetaDataSchema. + """ + metadata_json = self._build_default_metadata_structure( + dataset, period_tracking + ) + + if additional_metadata: + metadata_json = self._deep_merge_metadata( + metadata_json, additional_metadata + ) + + self._internal_validation_metadata(metadata_json) + + outputs.meta_data.write( + (json.dumps(metadata_json) + "\n").encode("utf-8") + ) diff --git a/kloppy/infra/serializers/tracking/serializer.py b/kloppy/infra/serializers/tracking/serializer.py new file mode 100644 index 000000000..a7bc72e4c --- /dev/null +++ b/kloppy/infra/serializers/tracking/serializer.py @@ -0,0 +1,17 @@ +from abc import ABC, abstractmethod +from typing import Generic, TypeVar + +from kloppy.domain import Provider, TrackingDataset + +T = TypeVar("T") + + +class TrackingDataSerializer(ABC, Generic[T]): + @property + @abstractmethod + def provider(self) -> Provider: + raise NotImplementedError + + @abstractmethod + def serialize(self, dataset: TrackingDataset, outputs: T) -> bool: + raise NotImplementedError diff --git a/kloppy/io.py b/kloppy/io.py index 270dbc88b..bb47fea88 100644 --- a/kloppy/io.py +++ b/kloppy/io.py @@ -333,9 +333,33 @@ def _write_context_manager( raise AdapterError(f"No adapter found for {uri}") +@contextlib.contextmanager +def _write_context_manager( + uri: str, mode: str +) -> Generator[BinaryIO, None, None]: + """ + Context manager for write operations that buffers writes and flushes to adapter on exit. + + Args: + uri: The destination URI + mode: Write mode ('wb' or 'ab') + + Yields: + A BufferedStream for writing + """ + buffer = BufferedStream() + try: + yield buffer + finally: + adapter = get_adapter(uri) + if adapter: + adapter.write_from_stream(uri, buffer, mode) + else: + raise AdapterError(f"No adapter found for {uri}") + + def open_as_file( - input_: FileLike, - mode: str = "rb", + input_: FileLike, mode: str = "rb" ) -> AbstractContextManager[Optional[BinaryIO]]: """Open a byte stream to/from the given input object. diff --git a/kloppy/tests/files/cdf_metadata.json b/kloppy/tests/files/cdf_metadata.json new file mode 100644 index 000000000..05ebbc4fa --- /dev/null +++ b/kloppy/tests/files/cdf_metadata.json @@ -0,0 +1 @@ +{"competition": {"id": "61", "name": "A-League", "type": "mens", "format": "league"}, "season": {"id": "95", "name": "2024/2025"}, "stadium": {"id": "2914", "pitch_length": 105, "pitch_width": 68, "name": "Kayo Stadium"}, "match": {"id": "1925299", "kickoff_time": "2024-12-21 06:00:01+00:00", "periods": [{"period": "first_half", "play_direction": "left_right", "start_time": "2024-12-21 06:00:01+00:00", "end_time": "2024-12-21 06:50:24+00:00", "start_frame_id": 0, "end_frame_id": 49, "left_team_id": "1802", "right_team_id": "871"}, {"period": "second_half", "play_direction": "left_right", "start_time": "2024-12-21 06:50:25+00:00", "end_time": "2024-12-21 07:42:10+00:00", "start_frame_id": 30230, "end_frame_id": 30280, "left_team_id": "1802", "right_team_id": "871"}], "whistles": [{"type": "first_half", "sub_type": "start", "time": "2024-12-21 06:00:01+00:00"}, {"type": "first_half", "sub_type": "end", "time": "2024-12-21 06:50:24+00:00"}, {"type": "second_half", "sub_type": "start", "time": "2024-12-21 06:50:25+00:00"}, {"type": "second_half", "sub_type": "end", "time": "2024-12-21 07:42:10+00:00"}], "scheduled_kickoff_time": "2024-12-21 06:00:00+00:00"}, "teams": {"home": {"id": "1802", "players": [{"id": "51050", "team_id": "1802", "jersey_number": 4, "is_starter": true}, {"id": "333110", "team_id": "1802", "jersey_number": 11, "is_starter": false}, {"id": "797298", "team_id": "1802", "jersey_number": 43, "is_starter": true}, {"id": "560986", "team_id": "1802", "jersey_number": 23, "is_starter": true}, {"id": "51722", "team_id": "1802", "jersey_number": 19, "is_starter": false}, {"id": "51002", "team_id": "1802", "jersey_number": 26, "is_starter": true}, {"id": "560882", "team_id": "1802", "jersey_number": 10, "is_starter": true}, {"id": "795541", "team_id": "1802", "jersey_number": 30, "is_starter": false}, {"id": "965698", "team_id": "1802", "jersey_number": 18, "is_starter": false}, {"id": "69111", "team_id": "1802", "jersey_number": 15, "is_starter": false}, {"id": "50950", "team_id": "1802", "jersey_number": 29, "is_starter": false}, {"id": "560898", "team_id": "1802", "jersey_number": 35, "is_starter": false}, {"id": "287934", "team_id": "1802", "jersey_number": 8, "is_starter": true}, {"id": "795537", "team_id": "1802", "jersey_number": 16, "is_starter": true}, {"id": "50999", "team_id": "1802", "jersey_number": 1, "is_starter": true}, {"id": "965697", "team_id": "1802", "jersey_number": 12, "is_starter": true}, {"id": "560983", "team_id": "1802", "jersey_number": 21, "is_starter": true}, {"id": "51043", "team_id": "1802", "jersey_number": 17, "is_starter": true}], "name": "Brisbane Roar FC", "formation": "4-5-1"}, "away": {"id": "871", "players": [{"id": "966112", "team_id": "871", "jersey_number": 16, "is_starter": true}, {"id": "560987", "team_id": "871", "jersey_number": 20, "is_starter": true}, {"id": "795530", "team_id": "871", "jersey_number": 7, "is_starter": true}, {"id": "809869", "team_id": "871", "jersey_number": 31, "is_starter": false}, {"id": "560988", "team_id": "871", "jersey_number": 14, "is_starter": false}, {"id": "966113", "team_id": "871", "jersey_number": 27, "is_starter": false}, {"id": "795533", "team_id": "871", "jersey_number": 17, "is_starter": false}, {"id": "560989", "team_id": "871", "jersey_number": 29, "is_starter": true}, {"id": "966115", "team_id": "871", "jersey_number": 26, "is_starter": false}, {"id": "51021", "team_id": "871", "jersey_number": 1, "is_starter": false}, {"id": "796014", "team_id": "871", "jersey_number": 5, "is_starter": false}, {"id": "560984", "team_id": "871", "jersey_number": 9, "is_starter": true}, {"id": "51694", "team_id": "871", "jersey_number": 12, "is_starter": true}, {"id": "11897", "team_id": "871", "jersey_number": 19, "is_starter": true}, {"id": "560985", "team_id": "871", "jersey_number": 13, "is_starter": true}, {"id": "809166", "team_id": "871", "jersey_number": 24, "is_starter": true}, {"id": "50982", "team_id": "871", "jersey_number": 2, "is_starter": true}, {"id": "966114", "team_id": "871", "jersey_number": 21, "is_starter": true}], "name": "Perth Glory Football Club", "formation": "4-4-2"}}, "meta": {"video": null, "tracking": {"fps": 10, "name": "skillcorner", "converted_by": "kloppy-cdf-converter-3.18.0", "version": "v3", "collection_timing": "post_match"}, "landmarks": null, "ball": null, "meta": null, "cdf": {"version": "0.2.2"}, "event": null}} diff --git a/kloppy/tests/files/cdf_tracking.jsonl b/kloppy/tests/files/cdf_tracking.jsonl new file mode 100644 index 000000000..93866e497 --- /dev/null +++ b/kloppy/tests/files/cdf_tracking.jsonl @@ -0,0 +1,101 @@ +{"frame_id": 0, "original_frame_id": 10, "timestamp": "2024-12-21 06:00:00+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.29, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.96, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.92, "y": 0.45, "position": "LCB"}, {"id": "51043", "x": -1.08, "y": -32.63, "position": "RB"}, {"id": "560983", "x": -8.61, "y": 7.28, "position": "LB"}, {"id": "51002", "x": 0.1, "y": -0.47, "position": "LDM"}, {"id": "287934", "x": -6.67, "y": -6.81, "position": "RDM"}, {"id": "560882", "x": 0.76, "y": -9.36, "position": "CAM"}, {"id": "797298", "x": 0.22, "y": -19.38, "position": "RW"}, {"id": "560986", "x": -0.98, "y": 9.49, "position": "LW"}, {"id": "795537", "x": 15.66, "y": -2.56, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 40.85, "y": -1.08, "position": "GK"}, {"id": "809166", "x": 24.45, "y": -0.99, "position": "RCB"}, {"id": "560989", "x": 24.87, "y": -9.57, "position": "LCB"}, {"id": "11897", "x": 21.9, "y": 9.09, "position": "RB"}, {"id": "50982", "x": 22.38, "y": -20.02, "position": "LB"}, {"id": "795530", "x": 10.75, "y": -0.31, "position": "LM"}, {"id": "51694", "x": 14.09, "y": -10.43, "position": "RM"}, {"id": "560987", "x": 11.87, "y": 7.72, "position": "RW"}, {"id": "966114", "x": 7.32, "y": -20.7, "position": "LW"}, {"id": "560984", "x": 0.83, "y": 8.21, "position": "CF"}, {"id": "966112", "x": -0.63, "y": -11.43, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.66, "y": -0.58, "z": 0.29}} +{"frame_id": 1, "original_frame_id": 11, "timestamp": "2024-12-21 06:00:00.100000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.53, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.96, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.87, "y": 0.46, "position": "LCB"}, {"id": "51043", "x": -1.04, "y": -32.71, "position": "RB"}, {"id": "560983", "x": -8.53, "y": 7.34, "position": "LB"}, {"id": "51002", "x": 0.14, "y": -0.42, "position": "LDM"}, {"id": "287934", "x": -6.69, "y": -6.8, "position": "RDM"}, {"id": "560882", "x": 0.74, "y": -9.43, "position": "CAM"}, {"id": "797298", "x": 0.27, "y": -19.45, "position": "RW"}, {"id": "560986", "x": -0.83, "y": 9.43, "position": "LW"}, {"id": "795537", "x": 15.53, "y": -2.64, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.22, "y": -1.09, "position": "GK"}, {"id": "809166", "x": 24.51, "y": -0.9, "position": "RCB"}, {"id": "560989", "x": 25.02, "y": -9.61, "position": "LCB"}, {"id": "11897", "x": 22.03, "y": 9.2, "position": "RB"}, {"id": "50982", "x": 22.45, "y": -20.13, "position": "LB"}, {"id": "795530", "x": 10.74, "y": -0.32, "position": "LM"}, {"id": "51694", "x": 14.16, "y": -10.46, "position": "RM"}, {"id": "560987", "x": 11.83, "y": 7.77, "position": "RW"}, {"id": "966114", "x": 7.37, "y": -20.71, "position": "LW"}, {"id": "560984", "x": 0.92, "y": 8.15, "position": "CF"}, {"id": "966112", "x": -0.43, "y": -11.53, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.23, "y": -0.29, "z": 0.19}} +{"frame_id": 2, "original_frame_id": 12, "timestamp": "2024-12-21 06:00:00.200000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.74, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.96, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.83, "y": 0.47, "position": "LCB"}, {"id": "51043", "x": -1.01, "y": -32.78, "position": "RB"}, {"id": "560983", "x": -8.46, "y": 7.4, "position": "LB"}, {"id": "51002", "x": 0.18, "y": -0.37, "position": "LDM"}, {"id": "287934", "x": -6.71, "y": -6.79, "position": "RDM"}, {"id": "560882", "x": 0.71, "y": -9.49, "position": "CAM"}, {"id": "797298", "x": 0.32, "y": -19.52, "position": "RW"}, {"id": "560986", "x": -0.69, "y": 9.38, "position": "LW"}, {"id": "795537", "x": 15.44, "y": -2.72, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.55, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.56, "y": -0.81, "position": "RCB"}, {"id": "560989", "x": 25.15, "y": -9.64, "position": "LCB"}, {"id": "11897", "x": 22.16, "y": 9.31, "position": "RB"}, {"id": "50982", "x": 22.51, "y": -20.24, "position": "LB"}, {"id": "795530", "x": 10.72, "y": -0.32, "position": "LM"}, {"id": "51694", "x": 14.23, "y": -10.48, "position": "RM"}, {"id": "560987", "x": 11.79, "y": 7.82, "position": "RW"}, {"id": "966114", "x": 7.41, "y": -20.72, "position": "LW"}, {"id": "560984", "x": 0.99, "y": 8.09, "position": "CF"}, {"id": "966112", "x": -0.24, "y": -11.62, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.11, "y": -0.05, "z": 0.13}} +{"frame_id": 3, "original_frame_id": 13, "timestamp": "2024-12-21 06:00:00.300000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.92, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.95, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.78, "y": 0.47, "position": "LCB"}, {"id": "51043", "x": -0.98, "y": -32.86, "position": "RB"}, {"id": "560983", "x": -8.4, "y": 7.45, "position": "LB"}, {"id": "51002", "x": 0.22, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -6.74, "y": -6.78, "position": "RDM"}, {"id": "560882", "x": 0.69, "y": -9.54, "position": "CAM"}, {"id": "797298", "x": 0.35, "y": -19.58, "position": "RW"}, {"id": "560986", "x": -0.57, "y": 9.34, "position": "LW"}, {"id": "795537", "x": 15.39, "y": -2.81, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.86, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.61, "y": -0.73, "position": "RCB"}, {"id": "560989", "x": 25.26, "y": -9.67, "position": "LCB"}, {"id": "11897", "x": 22.27, "y": 9.4, "position": "RB"}, {"id": "50982", "x": 22.57, "y": -20.33, "position": "LB"}, {"id": "795530", "x": 10.71, "y": -0.33, "position": "LM"}, {"id": "51694", "x": 14.29, "y": -10.51, "position": "RM"}, {"id": "560987", "x": 11.75, "y": 7.87, "position": "RW"}, {"id": "966114", "x": 7.45, "y": -20.73, "position": "LW"}, {"id": "560984", "x": 1.07, "y": 8.06, "position": "CF"}, {"id": "966112", "x": -0.08, "y": -11.7, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.14, "y": 0.1, "z": 0.13}} +{"frame_id": 4, "original_frame_id": 14, "timestamp": "2024-12-21 06:00:00.400000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.08, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.96, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.74, "y": 0.46, "position": "LCB"}, {"id": "51043", "x": -0.96, "y": -32.92, "position": "RB"}, {"id": "560983", "x": -8.34, "y": 7.48, "position": "LB"}, {"id": "51002", "x": 0.25, "y": -0.29, "position": "LDM"}, {"id": "287934", "x": -6.76, "y": -6.77, "position": "RDM"}, {"id": "560882", "x": 0.65, "y": -9.58, "position": "CAM"}, {"id": "797298", "x": 0.38, "y": -19.65, "position": "RW"}, {"id": "560986", "x": -0.46, "y": 9.3, "position": "LW"}, {"id": "795537", "x": 15.37, "y": -2.89, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.13, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.64, "y": -0.66, "position": "RCB"}, {"id": "560989", "x": 25.36, "y": -9.69, "position": "LCB"}, {"id": "11897", "x": 22.36, "y": 9.49, "position": "RB"}, {"id": "50982", "x": 22.63, "y": -20.41, "position": "LB"}, {"id": "795530", "x": 10.69, "y": -0.34, "position": "LM"}, {"id": "51694", "x": 14.35, "y": -10.53, "position": "RM"}, {"id": "560987", "x": 11.72, "y": 7.91, "position": "RW"}, {"id": "966114", "x": 7.49, "y": -20.74, "position": "LW"}, {"id": "560984", "x": 1.14, "y": 8.03, "position": "CF"}, {"id": "966112", "x": 0.08, "y": -11.77, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.52, "y": 0.2, "z": 0.25}} +{"frame_id": 5, "original_frame_id": 15, "timestamp": "2024-12-21 06:00:00.500000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.21, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.96, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.71, "y": 0.45, "position": "LCB"}, {"id": "51043", "x": -0.94, "y": -32.99, "position": "RB"}, {"id": "560983", "x": -8.29, "y": 7.51, "position": "LB"}, {"id": "51002", "x": 0.28, "y": -0.26, "position": "LDM"}, {"id": "287934", "x": -6.79, "y": -6.77, "position": "RDM"}, {"id": "560882", "x": 0.61, "y": -9.61, "position": "CAM"}, {"id": "797298", "x": 0.4, "y": -19.71, "position": "RW"}, {"id": "560986", "x": -0.37, "y": 9.26, "position": "LW"}, {"id": "795537", "x": 15.4, "y": -2.98, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.38, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.67, "y": -0.59, "position": "RCB"}, {"id": "560989", "x": 25.44, "y": -9.72, "position": "LCB"}, {"id": "11897", "x": 22.44, "y": 9.57, "position": "RB"}, {"id": "50982", "x": 22.69, "y": -20.47, "position": "LB"}, {"id": "795530", "x": 10.67, "y": -0.34, "position": "LM"}, {"id": "51694", "x": 14.4, "y": -10.54, "position": "RM"}, {"id": "560987", "x": 11.7, "y": 7.95, "position": "RW"}, {"id": "966114", "x": 7.52, "y": -20.75, "position": "LW"}, {"id": "560984", "x": 1.21, "y": 8.01, "position": "CF"}, {"id": "966112", "x": 0.21, "y": -11.84, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.75, "y": -0.15, "z": 0.31}} +{"frame_id": 6, "original_frame_id": 16, "timestamp": "2024-12-21 06:00:00.600000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.32, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.97, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.67, "y": 0.43, "position": "LCB"}, {"id": "51043", "x": -0.93, "y": -33.05, "position": "RB"}, {"id": "560983", "x": -8.25, "y": 7.52, "position": "LB"}, {"id": "51002", "x": 0.31, "y": -0.23, "position": "LDM"}, {"id": "287934", "x": -6.82, "y": -6.76, "position": "RDM"}, {"id": "560882", "x": 0.57, "y": -9.64, "position": "CAM"}, {"id": "797298", "x": 0.42, "y": -19.76, "position": "RW"}, {"id": "560986", "x": -0.28, "y": 9.24, "position": "LW"}, {"id": "795537", "x": 15.47, "y": -3.07, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.59, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.7, "y": -0.53, "position": "RCB"}, {"id": "560989", "x": 25.51, "y": -9.75, "position": "LCB"}, {"id": "11897", "x": 22.5, "y": 9.64, "position": "RB"}, {"id": "50982", "x": 22.74, "y": -20.52, "position": "LB"}, {"id": "795530", "x": 10.65, "y": -0.35, "position": "LM"}, {"id": "51694", "x": 14.44, "y": -10.55, "position": "RM"}, {"id": "560987", "x": 11.69, "y": 7.98, "position": "RW"}, {"id": "966114", "x": 7.56, "y": -20.76, "position": "LW"}, {"id": "560984", "x": 1.27, "y": 8.01, "position": "CF"}, {"id": "966112", "x": 0.33, "y": -11.9, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.56, "y": -0.15, "z": 0.32}} +{"frame_id": 7, "original_frame_id": 17, "timestamp": "2024-12-21 06:00:00.700000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.41, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.98, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.64, "y": 0.41, "position": "LCB"}, {"id": "51043", "x": -0.92, "y": -33.11, "position": "RB"}, {"id": "560983", "x": -8.21, "y": 7.52, "position": "LB"}, {"id": "51002", "x": 0.33, "y": -0.21, "position": "LDM"}, {"id": "287934", "x": -6.85, "y": -6.75, "position": "RDM"}, {"id": "560882", "x": 0.52, "y": -9.65, "position": "CAM"}, {"id": "797298", "x": 0.42, "y": -19.82, "position": "RW"}, {"id": "560986", "x": -0.21, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 15.58, "y": -3.17, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.78, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.71, "y": -0.48, "position": "RCB"}, {"id": "560989", "x": 25.55, "y": -9.77, "position": "LCB"}, {"id": "11897", "x": 22.55, "y": 9.7, "position": "RB"}, {"id": "50982", "x": 22.8, "y": -20.56, "position": "LB"}, {"id": "795530", "x": 10.62, "y": -0.36, "position": "LM"}, {"id": "51694", "x": 14.48, "y": -10.56, "position": "RM"}, {"id": "560987", "x": 11.68, "y": 8.0, "position": "RW"}, {"id": "966114", "x": 7.59, "y": -20.77, "position": "LW"}, {"id": "560984", "x": 1.34, "y": 8.02, "position": "CF"}, {"id": "966112", "x": 0.43, "y": -11.94, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.47, "y": -0.18, "z": 0.31}} +{"frame_id": 8, "original_frame_id": 18, "timestamp": "2024-12-21 06:00:00.800000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.42, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -16.0, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.6, "y": 0.35, "position": "LCB"}, {"id": "51043", "x": -0.93, "y": -33.16, "position": "RB"}, {"id": "560983", "x": -8.16, "y": 7.51, "position": "LB"}, {"id": "51002", "x": 0.36, "y": -0.2, "position": "LDM"}, {"id": "287934", "x": -6.89, "y": -6.74, "position": "RDM"}, {"id": "560882", "x": 0.44, "y": -9.63, "position": "CAM"}, {"id": "797298", "x": 0.43, "y": -19.89, "position": "RW"}, {"id": "560986", "x": -0.12, "y": 9.16, "position": "LW"}, {"id": "795537", "x": 15.82, "y": -3.3, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.9, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.71, "y": -0.44, "position": "RCB"}, {"id": "560989", "x": 25.55, "y": -9.77, "position": "LCB"}, {"id": "11897", "x": 22.58, "y": 9.76, "position": "RB"}, {"id": "50982", "x": 22.86, "y": -20.57, "position": "LB"}, {"id": "795530", "x": 10.6, "y": -0.37, "position": "LM"}, {"id": "51694", "x": 14.49, "y": -10.56, "position": "RM"}, {"id": "560987", "x": 11.69, "y": 8.02, "position": "RW"}, {"id": "966114", "x": 7.62, "y": -20.7, "position": "LW"}, {"id": "560984", "x": 1.41, "y": 8.06, "position": "CF"}, {"id": "966112", "x": 0.51, "y": -12.0, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.46, "y": -0.32, "z": 0.28}} +{"frame_id": 9, "original_frame_id": 19, "timestamp": "2024-12-21 06:00:00.900000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.45, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.03, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.58, "y": 0.3, "position": "LCB"}, {"id": "51043", "x": -0.94, "y": -33.23, "position": "RB"}, {"id": "560983", "x": -8.14, "y": 7.5, "position": "LB"}, {"id": "51002", "x": 0.37, "y": -0.2, "position": "LDM"}, {"id": "287934", "x": -6.93, "y": -6.74, "position": "RDM"}, {"id": "560882", "x": 0.37, "y": -9.62, "position": "CAM"}, {"id": "797298", "x": 0.41, "y": -19.96, "position": "RW"}, {"id": "560986", "x": -0.08, "y": 9.15, "position": "LW"}, {"id": "795537", "x": 16.09, "y": -3.44, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.0, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.7, "y": -0.41, "position": "RCB"}, {"id": "560989", "x": 25.54, "y": -9.8, "position": "LCB"}, {"id": "11897", "x": 22.6, "y": 9.81, "position": "RB"}, {"id": "50982", "x": 22.93, "y": -20.57, "position": "LB"}, {"id": "795530", "x": 10.57, "y": -0.37, "position": "LM"}, {"id": "51694", "x": 14.51, "y": -10.55, "position": "RM"}, {"id": "560987", "x": 11.7, "y": 8.03, "position": "RW"}, {"id": "966114", "x": 7.66, "y": -20.72, "position": "LW"}, {"id": "560984", "x": 1.48, "y": 8.13, "position": "CF"}, {"id": "966112", "x": 0.57, "y": -12.03, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.36, "y": -0.34, "z": 0.27}} +{"frame_id": 10, "original_frame_id": 20, "timestamp": "2024-12-21 06:00:01+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.46, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.05, "y": -8.38, "position": "RCB"}, {"id": "51050", "x": -14.56, "y": 0.26, "position": "LCB"}, {"id": "51043", "x": -0.96, "y": -33.3, "position": "RB"}, {"id": "560983", "x": -8.13, "y": 7.47, "position": "LB"}, {"id": "51002", "x": 0.39, "y": -0.2, "position": "LDM"}, {"id": "287934", "x": -6.97, "y": -6.74, "position": "RDM"}, {"id": "560882", "x": 0.31, "y": -9.6, "position": "CAM"}, {"id": "797298", "x": 0.37, "y": -20.02, "position": "RW"}, {"id": "560986", "x": -0.08, "y": 9.17, "position": "LW"}, {"id": "795537", "x": 16.37, "y": -3.56, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.09, "y": -1.1, "position": "GK"}, {"id": "809166", "x": 24.69, "y": -0.38, "position": "RCB"}, {"id": "560989", "x": 25.54, "y": -9.83, "position": "LCB"}, {"id": "11897", "x": 22.61, "y": 9.86, "position": "RB"}, {"id": "50982", "x": 23.0, "y": -20.57, "position": "LB"}, {"id": "795530", "x": 10.55, "y": -0.37, "position": "LM"}, {"id": "51694", "x": 14.54, "y": -10.54, "position": "RM"}, {"id": "560987", "x": 11.72, "y": 8.05, "position": "RW"}, {"id": "966114", "x": 7.7, "y": -20.77, "position": "LW"}, {"id": "560984", "x": 1.53, "y": 8.18, "position": "CF"}, {"id": "966112", "x": 0.62, "y": -12.05, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.27, "y": -0.36, "z": 0.25}} +{"frame_id": 11, "original_frame_id": 21, "timestamp": "2024-12-21 06:00:01.100000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.47, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.38, "position": "RCB"}, {"id": "51050", "x": -14.53, "y": 0.22, "position": "LCB"}, {"id": "51043", "x": -0.98, "y": -33.36, "position": "RB"}, {"id": "560983", "x": -8.13, "y": 7.42, "position": "LB"}, {"id": "51002", "x": 0.41, "y": -0.2, "position": "LDM"}, {"id": "287934", "x": -7.0, "y": -6.72, "position": "RDM"}, {"id": "560882", "x": 0.25, "y": -9.57, "position": "CAM"}, {"id": "797298", "x": 0.34, "y": -20.06, "position": "RW"}, {"id": "560986", "x": -0.08, "y": 9.19, "position": "LW"}, {"id": "795537", "x": 16.62, "y": -3.65, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.16, "y": -1.08, "position": "GK"}, {"id": "809166", "x": 24.68, "y": -0.36, "position": "RCB"}, {"id": "560989", "x": 25.55, "y": -9.86, "position": "LCB"}, {"id": "11897", "x": 22.59, "y": 9.87, "position": "RB"}, {"id": "50982", "x": 23.05, "y": -20.54, "position": "LB"}, {"id": "795530", "x": 10.51, "y": -0.37, "position": "LM"}, {"id": "51694", "x": 14.56, "y": -10.54, "position": "RM"}, {"id": "560987", "x": 11.74, "y": 8.05, "position": "RW"}, {"id": "966114", "x": 7.73, "y": -20.8, "position": "LW"}, {"id": "560984", "x": 1.57, "y": 8.23, "position": "CF"}, {"id": "966112", "x": 0.64, "y": -12.06, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.2, "y": -0.38, "z": 0.24}} +{"frame_id": 12, "original_frame_id": 22, "timestamp": "2024-12-21 06:00:01.200000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.46, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -16.08, "y": -8.37, "position": "RCB"}, {"id": "51050", "x": -14.51, "y": 0.19, "position": "LCB"}, {"id": "51043", "x": -1.01, "y": -33.38, "position": "RB"}, {"id": "560983", "x": -8.15, "y": 7.35, "position": "LB"}, {"id": "51002", "x": 0.41, "y": -0.21, "position": "LDM"}, {"id": "287934", "x": -7.03, "y": -6.71, "position": "RDM"}, {"id": "560882", "x": 0.2, "y": -9.56, "position": "CAM"}, {"id": "797298", "x": 0.32, "y": -20.07, "position": "RW"}, {"id": "560986", "x": -0.08, "y": 9.2, "position": "LW"}, {"id": "795537", "x": 16.8, "y": -3.69, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.23, "y": -1.07, "position": "GK"}, {"id": "809166", "x": 24.68, "y": -0.33, "position": "RCB"}, {"id": "560989", "x": 25.53, "y": -9.87, "position": "LCB"}, {"id": "11897", "x": 22.55, "y": 9.86, "position": "RB"}, {"id": "50982", "x": 23.07, "y": -20.52, "position": "LB"}, {"id": "795530", "x": 10.47, "y": -0.38, "position": "LM"}, {"id": "51694", "x": 14.58, "y": -10.54, "position": "RM"}, {"id": "560987", "x": 11.75, "y": 8.05, "position": "RW"}, {"id": "966114", "x": 7.75, "y": -20.8, "position": "LW"}, {"id": "560984", "x": 1.6, "y": 8.25, "position": "CF"}, {"id": "966112", "x": 0.67, "y": -12.06, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.14, "y": -0.36, "z": 0.22}} +{"frame_id": 13, "original_frame_id": 23, "timestamp": "2024-12-21 06:00:01.300000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.44, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -16.06, "y": -8.37, "position": "RCB"}, {"id": "51050", "x": -14.48, "y": 0.15, "position": "LCB"}, {"id": "51043", "x": -1.02, "y": -33.38, "position": "RB"}, {"id": "560983", "x": -8.15, "y": 7.27, "position": "LB"}, {"id": "51002", "x": 0.41, "y": -0.22, "position": "LDM"}, {"id": "287934", "x": -7.04, "y": -6.7, "position": "RDM"}, {"id": "560882", "x": 0.17, "y": -9.57, "position": "CAM"}, {"id": "797298", "x": 0.31, "y": -20.08, "position": "RW"}, {"id": "560986", "x": -0.08, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 16.95, "y": -3.73, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.29, "y": -1.05, "position": "GK"}, {"id": "809166", "x": 24.66, "y": -0.31, "position": "RCB"}, {"id": "560989", "x": 25.52, "y": -9.88, "position": "LCB"}, {"id": "11897", "x": 22.52, "y": 9.87, "position": "RB"}, {"id": "50982", "x": 23.04, "y": -20.49, "position": "LB"}, {"id": "795530", "x": 10.45, "y": -0.39, "position": "LM"}, {"id": "51694", "x": 14.59, "y": -10.54, "position": "RM"}, {"id": "560987", "x": 11.74, "y": 8.04, "position": "RW"}, {"id": "966114", "x": 7.76, "y": -20.8, "position": "LW"}, {"id": "560984", "x": 1.63, "y": 8.27, "position": "CF"}, {"id": "966112", "x": 0.7, "y": -12.05, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.1, "y": -0.33, "z": 0.22}} +{"frame_id": 14, "original_frame_id": 24, "timestamp": "2024-12-21 06:00:01.400000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.42, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -16.06, "y": -8.37, "position": "RCB"}, {"id": "51050", "x": -14.45, "y": 0.12, "position": "LCB"}, {"id": "51043", "x": -1.01, "y": -33.4, "position": "RB"}, {"id": "560983", "x": -8.17, "y": 7.21, "position": "LB"}, {"id": "51002", "x": 0.41, "y": -0.22, "position": "LDM"}, {"id": "287934", "x": -7.05, "y": -6.7, "position": "RDM"}, {"id": "560882", "x": 0.14, "y": -9.58, "position": "CAM"}, {"id": "797298", "x": 0.3, "y": -20.08, "position": "RW"}, {"id": "560986", "x": -0.09, "y": 9.22, "position": "LW"}, {"id": "795537", "x": 17.09, "y": -3.76, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.34, "y": -1.04, "position": "GK"}, {"id": "809166", "x": 24.64, "y": -0.3, "position": "RCB"}, {"id": "560989", "x": 25.51, "y": -9.9, "position": "LCB"}, {"id": "11897", "x": 22.5, "y": 9.88, "position": "RB"}, {"id": "50982", "x": 23.03, "y": -20.47, "position": "LB"}, {"id": "795530", "x": 10.43, "y": -0.4, "position": "LM"}, {"id": "51694", "x": 14.61, "y": -10.55, "position": "RM"}, {"id": "560987", "x": 11.72, "y": 8.02, "position": "RW"}, {"id": "966114", "x": 7.78, "y": -20.83, "position": "LW"}, {"id": "560984", "x": 1.65, "y": 8.28, "position": "CF"}, {"id": "966112", "x": 0.72, "y": -12.05, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.07, "y": -0.32, "z": 0.22}} +{"frame_id": 15, "original_frame_id": 25, "timestamp": "2024-12-21 06:00:01.500000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.41, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.36, "position": "RCB"}, {"id": "51050", "x": -14.42, "y": 0.08, "position": "LCB"}, {"id": "51043", "x": -1.02, "y": -33.4, "position": "RB"}, {"id": "560983", "x": -8.19, "y": 7.15, "position": "LB"}, {"id": "51002", "x": 0.4, "y": -0.23, "position": "LDM"}, {"id": "287934", "x": -7.07, "y": -6.68, "position": "RDM"}, {"id": "560882", "x": 0.12, "y": -9.58, "position": "CAM"}, {"id": "797298", "x": 0.29, "y": -20.07, "position": "RW"}, {"id": "560986", "x": -0.1, "y": 9.22, "position": "LW"}, {"id": "795537", "x": 17.22, "y": -3.78, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.38, "y": -1.02, "position": "GK"}, {"id": "809166", "x": 24.62, "y": -0.29, "position": "RCB"}, {"id": "560989", "x": 25.51, "y": -9.9, "position": "LCB"}, {"id": "11897", "x": 22.47, "y": 9.9, "position": "RB"}, {"id": "50982", "x": 23.0, "y": -20.45, "position": "LB"}, {"id": "795530", "x": 10.41, "y": -0.4, "position": "LM"}, {"id": "51694", "x": 14.63, "y": -10.56, "position": "RM"}, {"id": "560987", "x": 11.69, "y": 8.01, "position": "RW"}, {"id": "966114", "x": 7.79, "y": -20.84, "position": "LW"}, {"id": "560984", "x": 1.66, "y": 8.28, "position": "CF"}, {"id": "966112", "x": 0.73, "y": -12.04, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.05, "y": -0.3, "z": 0.23}} +{"frame_id": 16, "original_frame_id": 26, "timestamp": "2024-12-21 06:00:01.600000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.4, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -16.06, "y": -8.37, "position": "RCB"}, {"id": "51050", "x": -14.39, "y": 0.06, "position": "LCB"}, {"id": "51043", "x": -1.02, "y": -33.41, "position": "RB"}, {"id": "560983", "x": -8.19, "y": 7.1, "position": "LB"}, {"id": "51002", "x": 0.39, "y": -0.24, "position": "LDM"}, {"id": "287934", "x": -7.08, "y": -6.67, "position": "RDM"}, {"id": "560882", "x": 0.1, "y": -9.59, "position": "CAM"}, {"id": "797298", "x": 0.28, "y": -20.07, "position": "RW"}, {"id": "560986", "x": -0.11, "y": 9.22, "position": "LW"}, {"id": "795537", "x": 17.33, "y": -3.8, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.41, "y": -1.0, "position": "GK"}, {"id": "809166", "x": 24.61, "y": -0.28, "position": "RCB"}, {"id": "560989", "x": 25.51, "y": -9.91, "position": "LCB"}, {"id": "11897", "x": 22.45, "y": 9.91, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.44, "position": "LB"}, {"id": "795530", "x": 10.39, "y": -0.41, "position": "LM"}, {"id": "51694", "x": 14.65, "y": -10.57, "position": "RM"}, {"id": "560987", "x": 11.68, "y": 8.0, "position": "RW"}, {"id": "966114", "x": 7.8, "y": -20.85, "position": "LW"}, {"id": "560984", "x": 1.67, "y": 8.28, "position": "CF"}, {"id": "966112", "x": 0.74, "y": -12.02, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.04, "y": -0.31, "z": 0.24}} +{"frame_id": 17, "original_frame_id": 27, "timestamp": "2024-12-21 06:00:01.700000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.38, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.38, "position": "RCB"}, {"id": "51050", "x": -14.37, "y": 0.03, "position": "LCB"}, {"id": "51043", "x": -1.01, "y": -33.43, "position": "RB"}, {"id": "560983", "x": -8.2, "y": 7.08, "position": "LB"}, {"id": "51002", "x": 0.38, "y": -0.25, "position": "LDM"}, {"id": "287934", "x": -7.09, "y": -6.66, "position": "RDM"}, {"id": "560882", "x": 0.08, "y": -9.59, "position": "CAM"}, {"id": "797298", "x": 0.27, "y": -20.07, "position": "RW"}, {"id": "560986", "x": -0.13, "y": 9.22, "position": "LW"}, {"id": "795537", "x": 17.43, "y": -3.83, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.45, "y": -0.99, "position": "GK"}, {"id": "809166", "x": 24.6, "y": -0.28, "position": "RCB"}, {"id": "560989", "x": 25.51, "y": -9.92, "position": "LCB"}, {"id": "11897", "x": 22.45, "y": 9.92, "position": "RB"}, {"id": "50982", "x": 22.98, "y": -20.43, "position": "LB"}, {"id": "795530", "x": 10.38, "y": -0.42, "position": "LM"}, {"id": "51694", "x": 14.67, "y": -10.58, "position": "RM"}, {"id": "560987", "x": 11.68, "y": 8.0, "position": "RW"}, {"id": "966114", "x": 7.82, "y": -20.86, "position": "LW"}, {"id": "560984", "x": 1.68, "y": 8.27, "position": "CF"}, {"id": "966112", "x": 0.75, "y": -12.01, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.02, "y": -0.3, "z": 0.25}} +{"frame_id": 18, "original_frame_id": 28, "timestamp": "2024-12-21 06:00:01.800000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.37, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.35, "y": 0.01, "position": "LCB"}, {"id": "51043", "x": -1.0, "y": -33.44, "position": "RB"}, {"id": "560983", "x": -8.2, "y": 7.05, "position": "LB"}, {"id": "51002", "x": 0.37, "y": -0.26, "position": "LDM"}, {"id": "287934", "x": -7.1, "y": -6.65, "position": "RDM"}, {"id": "560882", "x": 0.07, "y": -9.58, "position": "CAM"}, {"id": "797298", "x": 0.25, "y": -20.06, "position": "RW"}, {"id": "560986", "x": -0.15, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 17.53, "y": -3.85, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.48, "y": -0.97, "position": "GK"}, {"id": "809166", "x": 24.59, "y": -0.28, "position": "RCB"}, {"id": "560989", "x": 25.52, "y": -9.92, "position": "LCB"}, {"id": "11897", "x": 22.45, "y": 9.94, "position": "RB"}, {"id": "50982", "x": 22.98, "y": -20.43, "position": "LB"}, {"id": "795530", "x": 10.37, "y": -0.42, "position": "LM"}, {"id": "51694", "x": 14.68, "y": -10.59, "position": "RM"}, {"id": "560987", "x": 11.68, "y": 8.0, "position": "RW"}, {"id": "966114", "x": 7.83, "y": -20.88, "position": "LW"}, {"id": "560984", "x": 1.69, "y": 8.27, "position": "CF"}, {"id": "966112", "x": 0.75, "y": -11.99, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.01, "y": -0.3, "z": 0.25}} +{"frame_id": 19, "original_frame_id": 29, "timestamp": "2024-12-21 06:00:01.900000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.36, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.34, "y": -0.01, "position": "LCB"}, {"id": "51043", "x": -0.99, "y": -33.46, "position": "RB"}, {"id": "560983", "x": -8.2, "y": 7.03, "position": "LB"}, {"id": "51002", "x": 0.35, "y": -0.27, "position": "LDM"}, {"id": "287934", "x": -7.11, "y": -6.64, "position": "RDM"}, {"id": "560882", "x": 0.05, "y": -9.57, "position": "CAM"}, {"id": "797298", "x": 0.24, "y": -20.05, "position": "RW"}, {"id": "560986", "x": -0.17, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 17.62, "y": -3.87, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.51, "y": -0.96, "position": "GK"}, {"id": "809166", "x": 24.58, "y": -0.28, "position": "RCB"}, {"id": "560989", "x": 25.53, "y": -9.92, "position": "LCB"}, {"id": "11897", "x": 22.45, "y": 9.95, "position": "RB"}, {"id": "50982", "x": 22.98, "y": -20.43, "position": "LB"}, {"id": "795530", "x": 10.35, "y": -0.43, "position": "LM"}, {"id": "51694", "x": 14.7, "y": -10.59, "position": "RM"}, {"id": "560987", "x": 11.68, "y": 8.01, "position": "RW"}, {"id": "966114", "x": 7.85, "y": -20.9, "position": "LW"}, {"id": "560984", "x": 1.7, "y": 8.27, "position": "CF"}, {"id": "966112", "x": 0.74, "y": -11.96, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.01, "y": -0.3, "z": 0.26}} +{"frame_id": 20, "original_frame_id": 30, "timestamp": "2024-12-21 06:00:02+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.34, "y": -1.0, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.33, "y": -0.04, "position": "LCB"}, {"id": "51043", "x": -0.96, "y": -33.47, "position": "RB"}, {"id": "560983", "x": -8.2, "y": 7.02, "position": "LB"}, {"id": "51002", "x": 0.34, "y": -0.28, "position": "LDM"}, {"id": "287934", "x": -7.11, "y": -6.63, "position": "RDM"}, {"id": "560882", "x": 0.04, "y": -9.56, "position": "CAM"}, {"id": "797298", "x": 0.24, "y": -20.03, "position": "RW"}, {"id": "560986", "x": -0.19, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 17.71, "y": -3.89, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.54, "y": -0.95, "position": "GK"}, {"id": "809166", "x": 24.57, "y": -0.29, "position": "RCB"}, {"id": "560989", "x": 25.53, "y": -9.92, "position": "LCB"}, {"id": "11897", "x": 22.45, "y": 9.97, "position": "RB"}, {"id": "50982", "x": 22.98, "y": -20.43, "position": "LB"}, {"id": "795530", "x": 10.32, "y": -0.44, "position": "LM"}, {"id": "51694", "x": 14.71, "y": -10.6, "position": "RM"}, {"id": "560987", "x": 11.68, "y": 8.03, "position": "RW"}, {"id": "966114", "x": 7.87, "y": -20.92, "position": "LW"}, {"id": "560984", "x": 1.72, "y": 8.27, "position": "CF"}, {"id": "966112", "x": 0.73, "y": -11.93, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.03, "y": -0.31, "z": 0.27}} +{"frame_id": 21, "original_frame_id": 31, "timestamp": "2024-12-21 06:00:02.100000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.33, "y": -1.0, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.41, "position": "RCB"}, {"id": "51050", "x": -14.32, "y": -0.06, "position": "LCB"}, {"id": "51043", "x": -0.93, "y": -33.48, "position": "RB"}, {"id": "560983", "x": -8.21, "y": 7.01, "position": "LB"}, {"id": "51002", "x": 0.32, "y": -0.29, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.61, "position": "RDM"}, {"id": "560882", "x": 0.03, "y": -9.54, "position": "CAM"}, {"id": "797298", "x": 0.24, "y": -20.02, "position": "RW"}, {"id": "560986", "x": -0.2, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 17.8, "y": -3.91, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.57, "y": -0.94, "position": "GK"}, {"id": "809166", "x": 24.57, "y": -0.29, "position": "RCB"}, {"id": "560989", "x": 25.54, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.45, "y": 9.98, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.43, "position": "LB"}, {"id": "795530", "x": 10.29, "y": -0.45, "position": "LM"}, {"id": "51694", "x": 14.71, "y": -10.61, "position": "RM"}, {"id": "560987", "x": 11.67, "y": 8.05, "position": "RW"}, {"id": "966114", "x": 7.89, "y": -20.94, "position": "LW"}, {"id": "560984", "x": 1.73, "y": 8.28, "position": "CF"}, {"id": "966112", "x": 0.71, "y": -11.89, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.05, "y": -0.34, "z": 0.28}} +{"frame_id": 22, "original_frame_id": 32, "timestamp": "2024-12-21 06:00:02.200000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.32, "y": -1.0, "position": "GK"}, {"id": "965697", "x": -16.08, "y": -8.41, "position": "RCB"}, {"id": "51050", "x": -14.31, "y": -0.09, "position": "LCB"}, {"id": "51043", "x": -0.9, "y": -33.48, "position": "RB"}, {"id": "560983", "x": -8.22, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 0.31, "y": -0.3, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.6, "position": "RDM"}, {"id": "560882", "x": 0.02, "y": -9.53, "position": "CAM"}, {"id": "797298", "x": 0.25, "y": -20.0, "position": "RW"}, {"id": "560986", "x": -0.21, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 17.89, "y": -3.93, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.6, "y": -0.93, "position": "GK"}, {"id": "809166", "x": 24.57, "y": -0.3, "position": "RCB"}, {"id": "560989", "x": 25.55, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.0, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.44, "position": "LB"}, {"id": "795530", "x": 10.26, "y": -0.46, "position": "LM"}, {"id": "51694", "x": 14.72, "y": -10.61, "position": "RM"}, {"id": "560987", "x": 11.67, "y": 8.07, "position": "RW"}, {"id": "966114", "x": 7.91, "y": -20.96, "position": "LW"}, {"id": "560984", "x": 1.75, "y": 8.29, "position": "CF"}, {"id": "966112", "x": 0.68, "y": -11.85, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.06, "y": -0.36, "z": 0.29}} +{"frame_id": 23, "original_frame_id": 33, "timestamp": "2024-12-21 06:00:02.300000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.31, "y": -1.0, "position": "GK"}, {"id": "965697", "x": -16.08, "y": -8.42, "position": "RCB"}, {"id": "51050", "x": -14.3, "y": -0.13, "position": "LCB"}, {"id": "51043", "x": -0.86, "y": -33.48, "position": "RB"}, {"id": "560983", "x": -8.23, "y": 6.98, "position": "LB"}, {"id": "51002", "x": 0.29, "y": -0.31, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.59, "position": "RDM"}, {"id": "797298", "x": 0.27, "y": -19.99, "position": "RW"}, {"id": "560986", "x": -0.22, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 17.98, "y": -3.95, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.63, "y": -0.92, "position": "GK"}, {"id": "809166", "x": 24.58, "y": -0.31, "position": "RCB"}, {"id": "560989", "x": 25.56, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.01, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.46, "position": "LB"}, {"id": "795530", "x": 10.22, "y": -0.48, "position": "LM"}, {"id": "51694", "x": 14.72, "y": -10.62, "position": "RM"}, {"id": "560987", "x": 11.66, "y": 8.1, "position": "RW"}, {"id": "966114", "x": 7.94, "y": -20.98, "position": "LW"}, {"id": "560984", "x": 1.77, "y": 8.3, "position": "CF"}, {"id": "966112", "x": 0.65, "y": -11.8, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.06, "y": -0.38, "z": 0.29}} +{"frame_id": 24, "original_frame_id": 34, "timestamp": "2024-12-21 06:00:02.400000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.3, "y": -1.0, "position": "GK"}, {"id": "965697", "x": -16.08, "y": -8.41, "position": "RCB"}, {"id": "51050", "x": -14.28, "y": -0.16, "position": "LCB"}, {"id": "51043", "x": -0.82, "y": -33.48, "position": "RB"}, {"id": "560983", "x": -8.25, "y": 6.97, "position": "LB"}, {"id": "51002", "x": 0.28, "y": -0.31, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.58, "position": "RDM"}, {"id": "560882", "x": -0.01, "y": -9.5, "position": "CAM"}, {"id": "797298", "x": 0.3, "y": -19.98, "position": "RW"}, {"id": "560986", "x": -0.23, "y": 9.21, "position": "LW"}, {"id": "795537", "x": 18.07, "y": -3.97, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.66, "y": -0.91, "position": "GK"}, {"id": "809166", "x": 24.59, "y": -0.32, "position": "RCB"}, {"id": "560989", "x": 25.57, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.03, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.47, "position": "LB"}, {"id": "795530", "x": 10.18, "y": -0.49, "position": "LM"}, {"id": "51694", "x": 14.72, "y": -10.62, "position": "RM"}, {"id": "560987", "x": 11.65, "y": 8.13, "position": "RW"}, {"id": "966114", "x": 7.97, "y": -21.01, "position": "LW"}, {"id": "560984", "x": 1.79, "y": 8.31, "position": "CF"}, {"id": "966112", "x": 0.61, "y": -11.74, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.07, "y": -0.38, "z": 0.3}} +{"frame_id": 25, "original_frame_id": 35, "timestamp": "2024-12-21 06:00:02.500000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.28, "y": -1.0, "position": "GK"}, {"id": "965697", "x": -16.08, "y": -8.41, "position": "RCB"}, {"id": "51050", "x": -14.26, "y": -0.2, "position": "LCB"}, {"id": "51043", "x": -0.77, "y": -33.48, "position": "RB"}, {"id": "560983", "x": -8.26, "y": 6.96, "position": "LB"}, {"id": "51002", "x": 0.27, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.56, "position": "RDM"}, {"id": "560882", "x": -0.02, "y": -9.48, "position": "CAM"}, {"id": "797298", "x": 0.35, "y": -19.97, "position": "RW"}, {"id": "560986", "x": -0.23, "y": 9.2, "position": "LW"}, {"id": "795537", "x": 18.15, "y": -3.99, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.68, "y": -0.9, "position": "GK"}, {"id": "809166", "x": 24.6, "y": -0.32, "position": "RCB"}, {"id": "560989", "x": 25.58, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.04, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.49, "position": "LB"}, {"id": "795530", "x": 10.14, "y": -0.51, "position": "LM"}, {"id": "51694", "x": 14.71, "y": -10.62, "position": "RM"}, {"id": "560987", "x": 11.63, "y": 8.16, "position": "RW"}, {"id": "966114", "x": 8.01, "y": -21.03, "position": "LW"}, {"id": "560984", "x": 1.82, "y": 8.32, "position": "CF"}, {"id": "966112", "x": 0.55, "y": -11.67, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.08, "y": -0.37, "z": 0.3}} +{"frame_id": 26, "original_frame_id": 36, "timestamp": "2024-12-21 06:00:02.600000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.27, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.07, "y": -8.41, "position": "RCB"}, {"id": "51050", "x": -14.24, "y": -0.24, "position": "LCB"}, {"id": "51043", "x": -0.71, "y": -33.47, "position": "RB"}, {"id": "560983", "x": -8.28, "y": 6.95, "position": "LB"}, {"id": "51002", "x": 0.25, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.55, "position": "RDM"}, {"id": "560882", "x": -0.03, "y": -9.47, "position": "CAM"}, {"id": "797298", "x": 0.4, "y": -19.97, "position": "RW"}, {"id": "560986", "x": -0.24, "y": 9.2, "position": "LW"}, {"id": "795537", "x": 18.23, "y": -4.0, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.71, "y": -0.89, "position": "GK"}, {"id": "809166", "x": 24.62, "y": -0.33, "position": "RCB"}, {"id": "560989", "x": 25.59, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.05, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.52, "position": "LB"}, {"id": "795530", "x": 10.09, "y": -0.53, "position": "LM"}, {"id": "51694", "x": 14.7, "y": -10.63, "position": "RM"}, {"id": "560987", "x": 11.61, "y": 8.19, "position": "RW"}, {"id": "966114", "x": 8.04, "y": -21.06, "position": "LW"}, {"id": "560984", "x": 1.84, "y": 8.33, "position": "CF"}, {"id": "966112", "x": 0.49, "y": -11.59, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.1, "y": -0.34, "z": 0.31}} +{"frame_id": 27, "original_frame_id": 37, "timestamp": "2024-12-21 06:00:02.700000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.26, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.06, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.21, "y": -0.29, "position": "LCB"}, {"id": "51043", "x": -0.63, "y": -33.46, "position": "RB"}, {"id": "560983", "x": -8.3, "y": 6.94, "position": "LB"}, {"id": "51002", "x": 0.24, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.12, "y": -6.54, "position": "RDM"}, {"id": "560882", "x": -0.03, "y": -9.45, "position": "CAM"}, {"id": "797298", "x": 0.48, "y": -19.98, "position": "RW"}, {"id": "560986", "x": -0.24, "y": 9.18, "position": "LW"}, {"id": "795537", "x": 18.3, "y": -4.02, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.73, "y": -0.88, "position": "GK"}, {"id": "809166", "x": 24.64, "y": -0.34, "position": "RCB"}, {"id": "560989", "x": 25.6, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.05, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.55, "position": "LB"}, {"id": "795530", "x": 10.03, "y": -0.54, "position": "LM"}, {"id": "51694", "x": 14.68, "y": -10.63, "position": "RM"}, {"id": "560987", "x": 11.59, "y": 8.23, "position": "RW"}, {"id": "966114", "x": 8.09, "y": -21.08, "position": "LW"}, {"id": "560984", "x": 1.86, "y": 8.33, "position": "CF"}, {"id": "966112", "x": 0.42, "y": -11.51, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.13, "y": -0.3, "z": 0.31}} +{"frame_id": 28, "original_frame_id": 38, "timestamp": "2024-12-21 06:00:02.800000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.24, "y": -0.99, "position": "GK"}, {"id": "965697", "x": -16.05, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -14.16, "y": -0.34, "position": "LCB"}, {"id": "51043", "x": -0.55, "y": -33.45, "position": "RB"}, {"id": "560983", "x": -8.33, "y": 6.93, "position": "LB"}, {"id": "51002", "x": 0.24, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.11, "y": -6.52, "position": "RDM"}, {"id": "560882", "x": -0.03, "y": -9.44, "position": "CAM"}, {"id": "797298", "x": 0.59, "y": -19.99, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 9.16, "position": "LW"}, {"id": "795537", "x": 18.37, "y": -4.03, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.76, "y": -0.86, "position": "GK"}, {"id": "809166", "x": 24.67, "y": -0.35, "position": "RCB"}, {"id": "560989", "x": 25.61, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.06, "position": "RB"}, {"id": "50982", "x": 22.99, "y": -20.59, "position": "LB"}, {"id": "795530", "x": 9.97, "y": -0.57, "position": "LM"}, {"id": "51694", "x": 14.66, "y": -10.64, "position": "RM"}, {"id": "560987", "x": 11.56, "y": 8.27, "position": "RW"}, {"id": "966114", "x": 8.14, "y": -21.1, "position": "LW"}, {"id": "560984", "x": 1.89, "y": 8.32, "position": "CF"}, {"id": "966112", "x": 0.33, "y": -11.41, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.19, "y": -0.27, "z": 0.31}} +{"frame_id": 29, "original_frame_id": 39, "timestamp": "2024-12-21 06:00:02.900000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.22, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -16.03, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.1, "y": -0.38, "position": "LCB"}, {"id": "51043", "x": -0.44, "y": -33.44, "position": "RB"}, {"id": "560983", "x": -8.36, "y": 6.93, "position": "LB"}, {"id": "51002", "x": 0.24, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.1, "y": -6.51, "position": "RDM"}, {"id": "560882", "x": -0.01, "y": -9.42, "position": "CAM"}, {"id": "797298", "x": 0.72, "y": -20.0, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 9.13, "position": "LW"}, {"id": "795537", "x": 18.44, "y": -4.04, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.78, "y": -0.85, "position": "GK"}, {"id": "809166", "x": 24.71, "y": -0.36, "position": "RCB"}, {"id": "560989", "x": 25.62, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.06, "position": "RB"}, {"id": "50982", "x": 23.0, "y": -20.65, "position": "LB"}, {"id": "795530", "x": 9.91, "y": -0.59, "position": "LM"}, {"id": "51694", "x": 14.63, "y": -10.65, "position": "RM"}, {"id": "560987", "x": 11.53, "y": 8.31, "position": "RW"}, {"id": "966114", "x": 8.19, "y": -21.12, "position": "LW"}, {"id": "560984", "x": 1.91, "y": 8.31, "position": "CF"}, {"id": "966112", "x": 0.23, "y": -11.3, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.34, "y": -0.24, "z": 0.31}} +{"frame_id": 30, "original_frame_id": 40, "timestamp": "2024-12-21 06:00:03+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.2, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -16.01, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -14.01, "y": -0.43, "position": "LCB"}, {"id": "51043", "x": -0.32, "y": -33.42, "position": "RB"}, {"id": "560983", "x": -8.38, "y": 6.93, "position": "LB"}, {"id": "51002", "x": 0.26, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.09, "y": -6.49, "position": "RDM"}, {"id": "560882", "x": 0.03, "y": -9.4, "position": "CAM"}, {"id": "797298", "x": 0.88, "y": -20.02, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 9.09, "position": "LW"}, {"id": "795537", "x": 18.52, "y": -4.06, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.81, "y": -0.84, "position": "GK"}, {"id": "809166", "x": 24.75, "y": -0.38, "position": "RCB"}, {"id": "560989", "x": 25.63, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.06, "position": "RB"}, {"id": "50982", "x": 23.01, "y": -20.71, "position": "LB"}, {"id": "795530", "x": 9.84, "y": -0.61, "position": "LM"}, {"id": "51694", "x": 14.59, "y": -10.66, "position": "RM"}, {"id": "560987", "x": 11.5, "y": 8.36, "position": "RW"}, {"id": "966114", "x": 8.25, "y": -21.15, "position": "LW"}, {"id": "560984", "x": 1.93, "y": 8.28, "position": "CF"}, {"id": "966112", "x": 0.12, "y": -11.19, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -0.64, "y": -0.19, "z": 0.3}} +{"frame_id": 31, "original_frame_id": 41, "timestamp": "2024-12-21 06:00:03.100000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.17, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -15.98, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -13.91, "y": -0.46, "position": "LCB"}, {"id": "51043", "x": -0.18, "y": -33.4, "position": "RB"}, {"id": "560983", "x": -8.41, "y": 6.93, "position": "LB"}, {"id": "51002", "x": 0.28, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.08, "y": -6.48, "position": "RDM"}, {"id": "560882", "x": 0.08, "y": -9.38, "position": "CAM"}, {"id": "797298", "x": 1.07, "y": -20.04, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 9.04, "position": "LW"}, {"id": "795537", "x": 18.59, "y": -4.07, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.83, "y": -0.83, "position": "GK"}, {"id": "809166", "x": 24.8, "y": -0.4, "position": "RCB"}, {"id": "560989", "x": 25.64, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.46, "y": 10.06, "position": "RB"}, {"id": "50982", "x": 23.03, "y": -20.78, "position": "LB"}, {"id": "795530", "x": 9.77, "y": -0.64, "position": "LM"}, {"id": "51694", "x": 14.54, "y": -10.67, "position": "RM"}, {"id": "560987", "x": 11.46, "y": 8.4, "position": "RW"}, {"id": "966114", "x": 8.31, "y": -21.17, "position": "LW"}, {"id": "560984", "x": 1.94, "y": 8.23, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -1.1, "y": -0.18, "z": 0.28}} +{"frame_id": 32, "original_frame_id": 42, "timestamp": "2024-12-21 06:00:03.200000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.14, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.93, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -13.78, "y": -0.49, "position": "LCB"}, {"id": "51043", "x": -0.02, "y": -33.37, "position": "RB"}, {"id": "560983", "x": -8.45, "y": 6.94, "position": "LB"}, {"id": "51002", "x": 0.32, "y": -0.32, "position": "LDM"}, {"id": "287934", "x": -7.06, "y": -6.46, "position": "RDM"}, {"id": "560882", "x": 0.16, "y": -9.36, "position": "CAM"}, {"id": "797298", "x": 1.29, "y": -20.07, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 8.97, "position": "LW"}, {"id": "795537", "x": 18.67, "y": -4.08, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.86, "y": -0.81, "position": "GK"}, {"id": "809166", "x": 24.86, "y": -0.42, "position": "RCB"}, {"id": "560989", "x": 25.64, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.47, "y": 10.05, "position": "RB"}, {"id": "50982", "x": 23.05, "y": -20.86, "position": "LB"}, {"id": "795530", "x": 9.7, "y": -0.67, "position": "LM"}, {"id": "51694", "x": 14.49, "y": -10.68, "position": "RM"}, {"id": "560987", "x": 11.43, "y": 8.44, "position": "RW"}, {"id": "966114", "x": 8.38, "y": -21.19, "position": "LW"}, {"id": "560984", "x": 1.95, "y": 8.16, "position": "CF"}, {"id": "966112", "x": -0.13, "y": -10.94, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -1.7, "y": -0.17, "z": 0.26}} +{"frame_id": 33, "original_frame_id": 43, "timestamp": "2024-12-21 06:00:03.300000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.12, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.87, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -13.63, "y": -0.52, "position": "LCB"}, {"id": "51043", "x": 0.16, "y": -33.33, "position": "RB"}, {"id": "560983", "x": -8.48, "y": 6.94, "position": "LB"}, {"id": "51002", "x": 0.38, "y": -0.33, "position": "LDM"}, {"id": "287934", "x": -7.04, "y": -6.44, "position": "RDM"}, {"id": "560882", "x": 0.27, "y": -9.33, "position": "CAM"}, {"id": "797298", "x": 1.54, "y": -20.09, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 8.89, "position": "LW"}, {"id": "795537", "x": 18.75, "y": -4.09, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.88, "y": -0.8, "position": "GK"}, {"id": "809166", "x": 24.92, "y": -0.44, "position": "RCB"}, {"id": "560989", "x": 25.64, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.48, "y": 10.05, "position": "RB"}, {"id": "50982", "x": 23.09, "y": -20.95, "position": "LB"}, {"id": "795530", "x": 9.62, "y": -0.7, "position": "LM"}, {"id": "51694", "x": 14.44, "y": -10.7, "position": "RM"}, {"id": "560987", "x": 11.39, "y": 8.47, "position": "RW"}, {"id": "966114", "x": 8.46, "y": -21.22, "position": "LW"}, {"id": "560984", "x": 1.96, "y": 8.08, "position": "CF"}, {"id": "966112", "x": -0.28, "y": -10.8, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -2.36, "y": -0.16, "z": 0.24}} +{"frame_id": 34, "original_frame_id": 44, "timestamp": "2024-12-21 06:00:03.400000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.09, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.79, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -13.46, "y": -0.53, "position": "LCB"}, {"id": "51043", "x": 0.37, "y": -33.3, "position": "RB"}, {"id": "560983", "x": -8.51, "y": 6.95, "position": "LB"}, {"id": "51002", "x": 0.46, "y": -0.33, "position": "LDM"}, {"id": "287934", "x": -7.02, "y": -6.42, "position": "RDM"}, {"id": "560882", "x": 0.42, "y": -9.3, "position": "CAM"}, {"id": "797298", "x": 1.82, "y": -20.1, "position": "RW"}, {"id": "560986", "x": -0.24, "y": 8.79, "position": "LW"}, {"id": "795537", "x": 18.84, "y": -4.11, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.91, "y": -0.78, "position": "GK"}, {"id": "809166", "x": 24.99, "y": -0.46, "position": "RCB"}, {"id": "560989", "x": 25.64, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 22.49, "y": 10.04, "position": "RB"}, {"id": "50982", "x": 23.14, "y": -21.04, "position": "LB"}, {"id": "795530", "x": 9.55, "y": -0.73, "position": "LM"}, {"id": "51694", "x": 14.4, "y": -10.71, "position": "RM"}, {"id": "560987", "x": 11.36, "y": 8.5, "position": "RW"}, {"id": "966114", "x": 8.54, "y": -21.24, "position": "LW"}, {"id": "560984", "x": 1.96, "y": 7.98, "position": "CF"}, {"id": "966112", "x": -0.44, "y": -10.65, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -3.04, "y": -0.17, "z": 0.22}} +{"frame_id": 35, "original_frame_id": 45, "timestamp": "2024-12-21 06:00:03.500000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.07, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.69, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -13.27, "y": -0.54, "position": "LCB"}, {"id": "51043", "x": 0.6, "y": -33.25, "position": "RB"}, {"id": "560983", "x": -8.54, "y": 6.96, "position": "LB"}, {"id": "51002", "x": 0.55, "y": -0.34, "position": "LDM"}, {"id": "287934", "x": -6.98, "y": -6.39, "position": "RDM"}, {"id": "560882", "x": 0.6, "y": -9.27, "position": "CAM"}, {"id": "797298", "x": 2.12, "y": -20.11, "position": "RW"}, {"id": "560986", "x": -0.23, "y": 8.67, "position": "LW"}, {"id": "795537", "x": 18.92, "y": -4.12, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.93, "y": -0.77, "position": "GK"}, {"id": "809166", "x": 25.06, "y": -0.5, "position": "RCB"}, {"id": "560989", "x": 25.64, "y": -9.94, "position": "LCB"}, {"id": "11897", "x": 22.51, "y": 10.03, "position": "RB"}, {"id": "50982", "x": 23.2, "y": -21.14, "position": "LB"}, {"id": "795530", "x": 9.49, "y": -0.78, "position": "LM"}, {"id": "51694", "x": 14.36, "y": -10.73, "position": "RM"}, {"id": "560987", "x": 11.34, "y": 8.52, "position": "RW"}, {"id": "966114", "x": 8.64, "y": -21.26, "position": "LW"}, {"id": "560984", "x": 1.96, "y": 7.86, "position": "CF"}, {"id": "966112", "x": -0.61, "y": -10.5, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -3.69, "y": -0.18, "z": 0.22}} +{"frame_id": 36, "original_frame_id": 46, "timestamp": "2024-12-21 06:00:03.600000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.05, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.58, "y": -8.39, "position": "RCB"}, {"id": "51050", "x": -13.05, "y": -0.54, "position": "LCB"}, {"id": "51043", "x": 0.85, "y": -33.21, "position": "RB"}, {"id": "560983", "x": -8.57, "y": 6.97, "position": "LB"}, {"id": "51002", "x": 0.67, "y": -0.35, "position": "LDM"}, {"id": "287934", "x": -6.95, "y": -6.36, "position": "RDM"}, {"id": "560882", "x": 0.81, "y": -9.24, "position": "CAM"}, {"id": "797298", "x": 2.44, "y": -20.11, "position": "RW"}, {"id": "560986", "x": -0.2, "y": 8.53, "position": "LW"}, {"id": "795537", "x": 19.01, "y": -4.14, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.95, "y": -0.76, "position": "GK"}, {"id": "809166", "x": 25.13, "y": -0.55, "position": "RCB"}, {"id": "560989", "x": 25.63, "y": -9.94, "position": "LCB"}, {"id": "11897", "x": 22.53, "y": 10.01, "position": "RB"}, {"id": "50982", "x": 23.28, "y": -21.25, "position": "LB"}, {"id": "795530", "x": 9.43, "y": -0.83, "position": "LM"}, {"id": "51694", "x": 14.34, "y": -10.75, "position": "RM"}, {"id": "560987", "x": 11.32, "y": 8.54, "position": "RW"}, {"id": "966114", "x": 8.74, "y": -21.28, "position": "LW"}, {"id": "560984", "x": 1.95, "y": 7.73, "position": "CF"}, {"id": "966112", "x": -0.79, "y": -10.33, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -4.25, "y": -0.2, "z": 0.21}} +{"frame_id": 37, "original_frame_id": 47, "timestamp": "2024-12-21 06:00:03.700000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.03, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.44, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -12.81, "y": -0.53, "position": "LCB"}, {"id": "51043", "x": 1.13, "y": -33.15, "position": "RB"}, {"id": "560983", "x": -8.6, "y": 6.98, "position": "LB"}, {"id": "51002", "x": 0.8, "y": -0.36, "position": "LDM"}, {"id": "287934", "x": -6.91, "y": -6.33, "position": "RDM"}, {"id": "560882", "x": 1.06, "y": -9.22, "position": "CAM"}, {"id": "797298", "x": 2.78, "y": -20.1, "position": "RW"}, {"id": "560986", "x": -0.17, "y": 8.37, "position": "LW"}, {"id": "795537", "x": 19.11, "y": -4.15, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 43.98, "y": -0.76, "position": "GK"}, {"id": "809166", "x": 25.21, "y": -0.6, "position": "RCB"}, {"id": "560989", "x": 25.62, "y": -9.95, "position": "LCB"}, {"id": "11897", "x": 22.56, "y": 10.0, "position": "RB"}, {"id": "50982", "x": 23.37, "y": -21.36, "position": "LB"}, {"id": "795530", "x": 9.38, "y": -0.89, "position": "LM"}, {"id": "51694", "x": 14.33, "y": -10.77, "position": "RM"}, {"id": "560987", "x": 11.3, "y": 8.54, "position": "RW"}, {"id": "966114", "x": 8.86, "y": -21.31, "position": "LW"}, {"id": "560984", "x": 1.94, "y": 7.57, "position": "CF"}, {"id": "966112", "x": -0.98, "y": -10.16, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -4.76, "y": -0.16, "z": 0.19}} +{"frame_id": 38, "original_frame_id": 48, "timestamp": "2024-12-21 06:00:03.800000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -37.0, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -15.28, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -12.55, "y": -0.51, "position": "LCB"}, {"id": "51043", "x": 1.43, "y": -33.09, "position": "RB"}, {"id": "560983", "x": -8.63, "y": 6.98, "position": "LB"}, {"id": "51002", "x": 0.96, "y": -0.38, "position": "LDM"}, {"id": "287934", "x": -6.86, "y": -6.28, "position": "RDM"}, {"id": "560882", "x": 1.36, "y": -9.19, "position": "CAM"}, {"id": "797298", "x": 3.15, "y": -20.09, "position": "RW"}, {"id": "560986", "x": -0.13, "y": 8.18, "position": "LW"}, {"id": "795537", "x": 19.2, "y": -4.17, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.0, "y": -0.75, "position": "GK"}, {"id": "809166", "x": 25.29, "y": -0.66, "position": "RCB"}, {"id": "560989", "x": 25.62, "y": -9.95, "position": "LCB"}, {"id": "11897", "x": 22.59, "y": 9.97, "position": "RB"}, {"id": "50982", "x": 23.48, "y": -21.48, "position": "LB"}, {"id": "795530", "x": 9.34, "y": -0.96, "position": "LM"}, {"id": "51694", "x": 14.35, "y": -10.79, "position": "RM"}, {"id": "560987", "x": 11.3, "y": 8.54, "position": "RW"}, {"id": "966114", "x": 9.0, "y": -21.33, "position": "LW"}, {"id": "560984", "x": 1.92, "y": 7.39, "position": "CF"}, {"id": "966112", "x": -1.18, "y": -9.96, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -5.27, "y": -0.08, "z": 0.18}} +{"frame_id": 39, "original_frame_id": 49, "timestamp": "2024-12-21 06:00:03.900000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.98, "y": -0.96, "position": "GK"}, {"id": "965697", "x": -15.09, "y": -8.4, "position": "RCB"}, {"id": "51050", "x": -12.27, "y": -0.48, "position": "LCB"}, {"id": "51043", "x": 1.75, "y": -33.03, "position": "RB"}, {"id": "560983", "x": -8.65, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 1.13, "y": -0.41, "position": "LDM"}, {"id": "287934", "x": -6.8, "y": -6.23, "position": "RDM"}, {"id": "560882", "x": 1.68, "y": -9.17, "position": "CAM"}, {"id": "797298", "x": 3.53, "y": -20.06, "position": "RW"}, {"id": "560986", "x": -0.08, "y": 7.97, "position": "LW"}, {"id": "795537", "x": 19.3, "y": -4.18, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.01, "y": -0.74, "position": "GK"}, {"id": "809166", "x": 25.38, "y": -0.73, "position": "RCB"}, {"id": "560989", "x": 25.61, "y": -9.96, "position": "LCB"}, {"id": "11897", "x": 22.63, "y": 9.94, "position": "RB"}, {"id": "50982", "x": 23.59, "y": -21.6, "position": "LB"}, {"id": "795530", "x": 9.32, "y": -1.04, "position": "LM"}, {"id": "51694", "x": 14.39, "y": -10.82, "position": "RM"}, {"id": "560987", "x": 11.3, "y": 8.52, "position": "RW"}, {"id": "966114", "x": 9.14, "y": -21.35, "position": "LW"}, {"id": "560984", "x": 1.9, "y": 7.19, "position": "CF"}, {"id": "966112", "x": -1.38, "y": -9.74, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -5.75, "y": -0.03, "z": 0.16}} +{"frame_id": 40, "original_frame_id": 50, "timestamp": "2024-12-21 06:00:04+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.95, "y": -0.96, "position": "GK"}, {"id": "965697", "x": -14.88, "y": -8.41, "position": "RCB"}, {"id": "51050", "x": -11.96, "y": -0.45, "position": "LCB"}, {"id": "51043", "x": 2.09, "y": -32.97, "position": "RB"}, {"id": "560983", "x": -8.66, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 1.31, "y": -0.44, "position": "LDM"}, {"id": "287934", "x": -6.73, "y": -6.17, "position": "RDM"}, {"id": "560882", "x": 2.05, "y": -9.16, "position": "CAM"}, {"id": "797298", "x": 3.93, "y": -20.03, "position": "RW"}, {"id": "560986", "x": -0.01, "y": 7.73, "position": "LW"}, {"id": "795537", "x": 19.39, "y": -4.19, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.03, "y": -0.74, "position": "GK"}, {"id": "809166", "x": 25.48, "y": -0.82, "position": "RCB"}, {"id": "560989", "x": 25.61, "y": -9.97, "position": "LCB"}, {"id": "11897", "x": 22.66, "y": 9.91, "position": "RB"}, {"id": "50982", "x": 23.72, "y": -21.73, "position": "LB"}, {"id": "795530", "x": 9.32, "y": -1.14, "position": "LM"}, {"id": "51694", "x": 14.47, "y": -10.85, "position": "RM"}, {"id": "560987", "x": 11.3, "y": 8.5, "position": "RW"}, {"id": "966114", "x": 9.3, "y": -21.38, "position": "LW"}, {"id": "560984", "x": 1.88, "y": 6.98, "position": "CF"}, {"id": "966112", "x": -1.59, "y": -9.5, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -6.2, "y": -0.03, "z": 0.15}} +{"frame_id": 41, "original_frame_id": 51, "timestamp": "2024-12-21 06:00:04.100000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.92, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -14.66, "y": -8.42, "position": "RCB"}, {"id": "51050", "x": -11.64, "y": -0.41, "position": "LCB"}, {"id": "51043", "x": 2.46, "y": -32.9, "position": "RB"}, {"id": "560983", "x": -8.66, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 1.52, "y": -0.49, "position": "LDM"}, {"id": "287934", "x": -6.65, "y": -6.1, "position": "RDM"}, {"id": "560882", "x": 2.45, "y": -9.15, "position": "CAM"}, {"id": "797298", "x": 4.35, "y": -19.99, "position": "RW"}, {"id": "560986", "x": 0.07, "y": 7.46, "position": "LW"}, {"id": "795537", "x": 19.5, "y": -4.2, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.05, "y": -0.74, "position": "GK"}, {"id": "809166", "x": 25.58, "y": -0.92, "position": "RCB"}, {"id": "560989", "x": 25.61, "y": -9.98, "position": "LCB"}, {"id": "11897", "x": 22.7, "y": 9.86, "position": "RB"}, {"id": "50982", "x": 23.86, "y": -21.86, "position": "LB"}, {"id": "795530", "x": 9.34, "y": -1.25, "position": "LM"}, {"id": "51694", "x": 14.57, "y": -10.88, "position": "RM"}, {"id": "560987", "x": 11.31, "y": 8.46, "position": "RW"}, {"id": "966114", "x": 9.48, "y": -21.4, "position": "LW"}, {"id": "560984", "x": 1.86, "y": 6.76, "position": "CF"}, {"id": "966112", "x": -1.8, "y": -9.23, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -6.62, "y": -0.04, "z": 0.14}} +{"frame_id": 42, "original_frame_id": 52, "timestamp": "2024-12-21 06:00:04.200000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.88, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -14.41, "y": -8.44, "position": "RCB"}, {"id": "51050", "x": -11.31, "y": -0.38, "position": "LCB"}, {"id": "51043", "x": 2.85, "y": -32.84, "position": "RB"}, {"id": "560983", "x": -8.65, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 1.74, "y": -0.55, "position": "LDM"}, {"id": "287934", "x": -6.56, "y": -6.02, "position": "RDM"}, {"id": "560882", "x": 2.88, "y": -9.16, "position": "CAM"}, {"id": "797298", "x": 4.79, "y": -19.94, "position": "RW"}, {"id": "560986", "x": 0.18, "y": 7.16, "position": "LW"}, {"id": "795537", "x": 19.6, "y": -4.21, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.07, "y": -0.74, "position": "GK"}, {"id": "809166", "x": 25.69, "y": -1.03, "position": "RCB"}, {"id": "560989", "x": 25.62, "y": -9.99, "position": "LCB"}, {"id": "11897", "x": 22.74, "y": 9.81, "position": "RB"}, {"id": "50982", "x": 24.0, "y": -22.01, "position": "LB"}, {"id": "795530", "x": 9.4, "y": -1.38, "position": "LM"}, {"id": "51694", "x": 14.7, "y": -10.92, "position": "RM"}, {"id": "560987", "x": 11.32, "y": 8.41, "position": "RW"}, {"id": "966114", "x": 9.67, "y": -21.42, "position": "LW"}, {"id": "560984", "x": 1.84, "y": 6.52, "position": "CF"}, {"id": "966112", "x": -2.01, "y": -8.94, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -7.03, "y": -0.03, "z": 0.13}} +{"frame_id": 43, "original_frame_id": 53, "timestamp": "2024-12-21 06:00:04.300000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.83, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -14.13, "y": -8.47, "position": "RCB"}, {"id": "51050", "x": -10.96, "y": -0.36, "position": "LCB"}, {"id": "51043", "x": 3.26, "y": -32.78, "position": "RB"}, {"id": "560983", "x": -8.61, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 1.97, "y": -0.62, "position": "LDM"}, {"id": "287934", "x": -6.45, "y": -5.93, "position": "RDM"}, {"id": "560882", "x": 3.34, "y": -9.18, "position": "CAM"}, {"id": "797298", "x": 5.24, "y": -19.89, "position": "RW"}, {"id": "560986", "x": 0.3, "y": 6.84, "position": "LW"}, {"id": "795537", "x": 19.72, "y": -4.21, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.08, "y": -0.76, "position": "GK"}, {"id": "809166", "x": 25.8, "y": -1.15, "position": "RCB"}, {"id": "560989", "x": 25.65, "y": -10.0, "position": "LCB"}, {"id": "11897", "x": 22.79, "y": 9.75, "position": "RB"}, {"id": "50982", "x": 24.15, "y": -22.15, "position": "LB"}, {"id": "795530", "x": 9.48, "y": -1.53, "position": "LM"}, {"id": "51694", "x": 14.85, "y": -10.97, "position": "RM"}, {"id": "560987", "x": 11.34, "y": 8.34, "position": "RW"}, {"id": "966114", "x": 9.87, "y": -21.45, "position": "LW"}, {"id": "560984", "x": 1.82, "y": 6.28, "position": "CF"}, {"id": "966112", "x": -2.21, "y": -8.62, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -7.46, "y": 0.02, "z": 0.12}} +{"frame_id": 44, "original_frame_id": 54, "timestamp": "2024-12-21 06:00:04.400000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.8, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -13.85, "y": -8.5, "position": "RCB"}, {"id": "51050", "x": -10.62, "y": -0.34, "position": "LCB"}, {"id": "51043", "x": 3.69, "y": -32.72, "position": "RB"}, {"id": "560983", "x": -8.55, "y": 6.99, "position": "LB"}, {"id": "51002", "x": 2.23, "y": -0.71, "position": "LDM"}, {"id": "287934", "x": -6.33, "y": -5.83, "position": "RDM"}, {"id": "560882", "x": 3.82, "y": -9.2, "position": "CAM"}, {"id": "797298", "x": 5.71, "y": -19.82, "position": "RW"}, {"id": "560986", "x": 0.46, "y": 6.51, "position": "LW"}, {"id": "795537", "x": 19.85, "y": -4.22, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.08, "y": -0.78, "position": "GK"}, {"id": "809166", "x": 25.92, "y": -1.28, "position": "RCB"}, {"id": "560989", "x": 25.68, "y": -10.02, "position": "LCB"}, {"id": "11897", "x": 22.85, "y": 9.69, "position": "RB"}, {"id": "50982", "x": 24.31, "y": -22.3, "position": "LB"}, {"id": "795530", "x": 9.59, "y": -1.7, "position": "LM"}, {"id": "51694", "x": 15.03, "y": -11.03, "position": "RM"}, {"id": "560987", "x": 11.37, "y": 8.26, "position": "RW"}, {"id": "966114", "x": 10.09, "y": -21.47, "position": "LW"}, {"id": "560984", "x": 1.81, "y": 6.03, "position": "CF"}, {"id": "966112", "x": -2.4, "y": -8.27, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -7.93, "y": 0.1, "z": 0.11}} +{"frame_id": 45, "original_frame_id": 55, "timestamp": "2024-12-21 06:00:04.500000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.76, "y": -0.98, "position": "GK"}, {"id": "965697", "x": -13.55, "y": -8.54, "position": "RCB"}, {"id": "51050", "x": -10.28, "y": -0.34, "position": "LCB"}, {"id": "51043", "x": 4.14, "y": -32.66, "position": "RB"}, {"id": "560983", "x": -8.47, "y": 6.97, "position": "LB"}, {"id": "51002", "x": 2.49, "y": -0.81, "position": "LDM"}, {"id": "287934", "x": -6.21, "y": -5.73, "position": "RDM"}, {"id": "560882", "x": 4.31, "y": -9.24, "position": "CAM"}, {"id": "797298", "x": 6.19, "y": -19.75, "position": "RW"}, {"id": "560986", "x": 0.63, "y": 6.16, "position": "LW"}, {"id": "795537", "x": 20.0, "y": -4.24, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.08, "y": -0.81, "position": "GK"}, {"id": "809166", "x": 26.06, "y": -1.42, "position": "RCB"}, {"id": "560989", "x": 25.72, "y": -10.05, "position": "LCB"}, {"id": "11897", "x": 22.92, "y": 9.63, "position": "RB"}, {"id": "50982", "x": 24.48, "y": -22.45, "position": "LB"}, {"id": "795530", "x": 9.73, "y": -1.89, "position": "LM"}, {"id": "51694", "x": 15.24, "y": -11.1, "position": "RM"}, {"id": "560987", "x": 11.41, "y": 8.16, "position": "RW"}, {"id": "966114", "x": 10.31, "y": -21.48, "position": "LW"}, {"id": "560984", "x": 1.8, "y": 5.77, "position": "CF"}, {"id": "966112", "x": -2.58, "y": -7.89, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -8.35, "y": 0.22, "z": 0.11}} +{"frame_id": 46, "original_frame_id": 56, "timestamp": "2024-12-21 06:00:04.600000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.73, "y": -0.97, "position": "GK"}, {"id": "965697", "x": -13.22, "y": -8.57, "position": "RCB"}, {"id": "51050", "x": -9.95, "y": -0.35, "position": "LCB"}, {"id": "51043", "x": 4.62, "y": -32.6, "position": "RB"}, {"id": "560983", "x": -8.37, "y": 6.95, "position": "LB"}, {"id": "51002", "x": 2.78, "y": -0.92, "position": "LDM"}, {"id": "287934", "x": -6.08, "y": -5.62, "position": "RDM"}, {"id": "560882", "x": 4.82, "y": -9.29, "position": "CAM"}, {"id": "797298", "x": 6.69, "y": -19.67, "position": "RW"}, {"id": "560986", "x": 0.84, "y": 5.8, "position": "LW"}, {"id": "795537", "x": 20.16, "y": -4.25, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.09, "y": -0.86, "position": "GK"}, {"id": "809166", "x": 26.2, "y": -1.57, "position": "RCB"}, {"id": "560989", "x": 25.78, "y": -10.09, "position": "LCB"}, {"id": "11897", "x": 23.01, "y": 9.55, "position": "RB"}, {"id": "50982", "x": 24.65, "y": -22.6, "position": "LB"}, {"id": "795530", "x": 9.91, "y": -2.1, "position": "LM"}, {"id": "51694", "x": 15.47, "y": -11.19, "position": "RM"}, {"id": "560987", "x": 11.46, "y": 8.04, "position": "RW"}, {"id": "966114", "x": 10.56, "y": -21.5, "position": "LW"}, {"id": "560984", "x": 1.81, "y": 5.52, "position": "CF"}, {"id": "966112", "x": -2.73, "y": -7.49, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -8.63, "y": 0.25, "z": 0.17}} +{"frame_id": 47, "original_frame_id": 57, "timestamp": "2024-12-21 06:00:04.700000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.69, "y": -0.96, "position": "GK"}, {"id": "965697", "x": -12.88, "y": -8.61, "position": "RCB"}, {"id": "51050", "x": -9.64, "y": -0.37, "position": "LCB"}, {"id": "51043", "x": 5.13, "y": -32.55, "position": "RB"}, {"id": "560983", "x": -8.23, "y": 6.91, "position": "LB"}, {"id": "51002", "x": 3.08, "y": -1.05, "position": "LDM"}, {"id": "287934", "x": -5.94, "y": -5.5, "position": "RDM"}, {"id": "560882", "x": 5.34, "y": -9.35, "position": "CAM"}, {"id": "797298", "x": 7.2, "y": -19.59, "position": "RW"}, {"id": "560986", "x": 1.07, "y": 5.45, "position": "LW"}, {"id": "795537", "x": 20.34, "y": -4.26, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.1, "y": -0.91, "position": "GK"}, {"id": "809166", "x": 26.36, "y": -1.74, "position": "RCB"}, {"id": "560989", "x": 25.86, "y": -10.14, "position": "LCB"}, {"id": "11897", "x": 23.12, "y": 9.46, "position": "RB"}, {"id": "50982", "x": 24.84, "y": -22.75, "position": "LB"}, {"id": "795530", "x": 10.12, "y": -2.33, "position": "LM"}, {"id": "51694", "x": 15.73, "y": -11.31, "position": "RM"}, {"id": "560987", "x": 11.52, "y": 7.9, "position": "RW"}, {"id": "966114", "x": 10.81, "y": -21.51, "position": "LW"}, {"id": "560984", "x": 1.83, "y": 5.26, "position": "CF"}, {"id": "966112", "x": -2.86, "y": -7.08, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -8.62, "y": -0.07, "z": 0.34}} +{"frame_id": 48, "original_frame_id": 58, "timestamp": "2024-12-21 06:00:04.800000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.64, "y": -0.94, "position": "GK"}, {"id": "965697", "x": -12.52, "y": -8.64, "position": "RCB"}, {"id": "51050", "x": -9.36, "y": -0.42, "position": "LCB"}, {"id": "51043", "x": 5.66, "y": -32.5, "position": "RB"}, {"id": "560983", "x": -8.07, "y": 6.87, "position": "LB"}, {"id": "51002", "x": 3.4, "y": -1.19, "position": "LDM"}, {"id": "287934", "x": -5.8, "y": -5.38, "position": "RDM"}, {"id": "560882", "x": 5.87, "y": -9.43, "position": "CAM"}, {"id": "797298", "x": 7.72, "y": -19.49, "position": "RW"}, {"id": "560986", "x": 1.32, "y": 5.1, "position": "LW"}, {"id": "795537", "x": 20.53, "y": -4.27, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.13, "y": -0.97, "position": "GK"}, {"id": "809166", "x": 26.52, "y": -1.91, "position": "RCB"}, {"id": "560989", "x": 25.96, "y": -10.21, "position": "LCB"}, {"id": "11897", "x": 23.26, "y": 9.36, "position": "RB"}, {"id": "50982", "x": 25.03, "y": -22.9, "position": "LB"}, {"id": "795530", "x": 10.36, "y": -2.58, "position": "LM"}, {"id": "51694", "x": 16.0, "y": -11.44, "position": "RM"}, {"id": "560987", "x": 11.61, "y": 7.75, "position": "RW"}, {"id": "966114", "x": 11.08, "y": -21.51, "position": "LW"}, {"id": "560984", "x": 1.86, "y": 5.02, "position": "CF"}, {"id": "966112", "x": -2.96, "y": -6.65, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -7.97, "y": -0.89, "z": 0.69}} +{"frame_id": 49, "original_frame_id": 59, "timestamp": "2024-12-21 06:00:04.900000+00:00", "period": "first_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -36.58, "y": -0.92, "position": "GK"}, {"id": "965697", "x": -12.14, "y": -8.68, "position": "RCB"}, {"id": "51050", "x": -9.1, "y": -0.5, "position": "LCB"}, {"id": "51043", "x": 6.21, "y": -32.46, "position": "RB"}, {"id": "560983", "x": -7.88, "y": 6.81, "position": "LB"}, {"id": "51002", "x": 3.73, "y": -1.33, "position": "LDM"}, {"id": "287934", "x": -5.66, "y": -5.26, "position": "RDM"}, {"id": "560882", "x": 6.39, "y": -9.51, "position": "CAM"}, {"id": "797298", "x": 8.24, "y": -19.39, "position": "RW"}, {"id": "560986", "x": 1.6, "y": 4.76, "position": "LW"}, {"id": "795537", "x": 20.73, "y": -4.27, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 44.16, "y": -1.05, "position": "GK"}, {"id": "809166", "x": 26.7, "y": -2.08, "position": "RCB"}, {"id": "560989", "x": 26.08, "y": -10.29, "position": "LCB"}, {"id": "11897", "x": 23.41, "y": 9.25, "position": "RB"}, {"id": "50982", "x": 25.24, "y": -23.05, "position": "LB"}, {"id": "795530", "x": 10.62, "y": -2.84, "position": "LM"}, {"id": "51694", "x": 16.3, "y": -11.59, "position": "RM"}, {"id": "560987", "x": 11.71, "y": 7.58, "position": "RW"}, {"id": "966114", "x": 11.36, "y": -21.51, "position": "LW"}, {"id": "560984", "x": 1.91, "y": 4.77, "position": "CF"}, {"id": "966112", "x": -3.04, "y": -6.23, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": -6.46, "y": -1.84, "z": 1.42}} +{"frame_id": 30230, "original_frame_id": 30250, "timestamp": "2024-12-21 06:00:00+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -40.4, "y": -0.19, "position": "GK"}, {"id": "965697", "x": -16.81, "y": -7.38, "position": "RCB"}, {"id": "69111", "x": -23.4, "y": 2.18, "position": "LCB"}, {"id": "51043", "x": -13.76, "y": -19.27, "position": "RB"}, {"id": "560983", "x": -18.31, "y": 16.25, "position": "LB"}, {"id": "51002", "x": -10.09, "y": 1.47, "position": "LDM"}, {"id": "287934", "x": -9.83, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": -0.99, "y": 9.35, "position": "CAM"}, {"id": "797298", "x": -2.97, "y": -19.31, "position": "RW"}, {"id": "560986", "x": -2.31, "y": 17.7, "position": "LW"}, {"id": "795537", "x": 0.35, "y": -10.29, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 40.65, "y": 0.05, "position": "GK"}, {"id": "809166", "x": 22.24, "y": 4.71, "position": "RCB"}, {"id": "560989", "x": 22.06, "y": -8.98, "position": "LCB"}, {"id": "11897", "x": 23.77, "y": 18.78, "position": "RB"}, {"id": "50982", "x": 18.29, "y": -20.44, "position": "LB"}, {"id": "795530", "x": 6.08, "y": 7.17, "position": "LM"}, {"id": "51694", "x": 7.93, "y": -6.61, "position": "RM"}, {"id": "560987", "x": 0.11, "y": 17.85, "position": "RW"}, {"id": "966114", "x": 0.58, "y": -22.6, "position": "LW"}, {"id": "560984", "x": 0.54, "y": 0.24, "position": "CF"}, {"id": "966112", "x": -0.14, "y": -8.57, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.36, "y": -0.66, "z": 0.16}} +{"frame_id": 30231, "original_frame_id": 30251, "timestamp": "2024-12-21 06:00:00.100000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -40.7, "y": -0.2, "position": "GK"}, {"id": "965697", "x": -16.99, "y": -7.46, "position": "RCB"}, {"id": "69111", "x": -23.48, "y": 2.24, "position": "LCB"}, {"id": "51043", "x": -13.93, "y": -19.34, "position": "RB"}, {"id": "560983", "x": -18.52, "y": 16.23, "position": "LB"}, {"id": "51002", "x": -10.18, "y": 1.45, "position": "LDM"}, {"id": "287934", "x": -9.88, "y": -2.66, "position": "RDM"}, {"id": "560882", "x": -0.94, "y": 9.36, "position": "CAM"}, {"id": "797298", "x": -3.02, "y": -19.34, "position": "RW"}, {"id": "560986", "x": -2.43, "y": 17.65, "position": "LW"}, {"id": "795537", "x": 0.21, "y": -10.41, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 40.96, "y": 0.06, "position": "GK"}, {"id": "809166", "x": 22.38, "y": 4.63, "position": "RCB"}, {"id": "560989", "x": 22.37, "y": -9.2, "position": "LCB"}, {"id": "11897", "x": 23.94, "y": 18.93, "position": "RB"}, {"id": "50982", "x": 18.35, "y": -20.53, "position": "LB"}, {"id": "795530", "x": 6.05, "y": 7.08, "position": "LM"}, {"id": "51694", "x": 7.99, "y": -6.72, "position": "RM"}, {"id": "560987", "x": 0.08, "y": 17.84, "position": "RW"}, {"id": "966114", "x": 0.59, "y": -22.72, "position": "LW"}, {"id": "560984", "x": 0.52, "y": 0.3, "position": "CF"}, {"id": "966112", "x": -0.06, "y": -8.7, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.12, "y": -0.8, "z": 0.26}} +{"frame_id": 30232, "original_frame_id": 30252, "timestamp": "2024-12-21 06:00:00.200000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -40.98, "y": -0.2, "position": "GK"}, {"id": "965697", "x": -17.15, "y": -7.52, "position": "RCB"}, {"id": "69111", "x": -23.55, "y": 2.29, "position": "LCB"}, {"id": "51043", "x": -14.1, "y": -19.39, "position": "RB"}, {"id": "560983", "x": -18.71, "y": 16.2, "position": "LB"}, {"id": "51002", "x": -10.26, "y": 1.44, "position": "LDM"}, {"id": "287934", "x": -9.93, "y": -2.64, "position": "RDM"}, {"id": "560882", "x": -0.9, "y": 9.37, "position": "CAM"}, {"id": "797298", "x": -3.06, "y": -19.36, "position": "RW"}, {"id": "560986", "x": -2.53, "y": 17.61, "position": "LW"}, {"id": "795537", "x": 0.09, "y": -10.51, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.24, "y": 0.07, "position": "GK"}, {"id": "809166", "x": 22.5, "y": 4.57, "position": "RCB"}, {"id": "560989", "x": 22.65, "y": -9.4, "position": "LCB"}, {"id": "11897", "x": 24.08, "y": 19.07, "position": "RB"}, {"id": "50982", "x": 18.4, "y": -20.6, "position": "LB"}, {"id": "795530", "x": 6.02, "y": 7.01, "position": "LM"}, {"id": "51694", "x": 8.05, "y": -6.81, "position": "RM"}, {"id": "560987", "x": 0.04, "y": 17.83, "position": "RW"}, {"id": "966114", "x": 0.59, "y": -22.83, "position": "LW"}, {"id": "560984", "x": 0.51, "y": 0.37, "position": "CF"}, {"id": "966112", "x": 0.02, "y": -8.81, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.19, "y": -0.76, "z": 0.22}} +{"frame_id": 30233, "original_frame_id": 30253, "timestamp": "2024-12-21 06:00:00.300000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.23, "y": -0.21, "position": "GK"}, {"id": "965697", "x": -17.3, "y": -7.57, "position": "RCB"}, {"id": "69111", "x": -23.62, "y": 2.35, "position": "LCB"}, {"id": "51043", "x": -14.25, "y": -19.43, "position": "RB"}, {"id": "560983", "x": -18.89, "y": 16.17, "position": "LB"}, {"id": "51002", "x": -10.32, "y": 1.42, "position": "LDM"}, {"id": "287934", "x": -9.97, "y": -2.62, "position": "RDM"}, {"id": "560882", "x": -0.86, "y": 9.38, "position": "CAM"}, {"id": "797298", "x": -3.11, "y": -19.39, "position": "RW"}, {"id": "560986", "x": -2.62, "y": 17.57, "position": "LW"}, {"id": "795537", "x": -0.01, "y": -10.6, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.49, "y": 0.09, "position": "GK"}, {"id": "809166", "x": 22.61, "y": 4.51, "position": "RCB"}, {"id": "560989", "x": 22.9, "y": -9.57, "position": "LCB"}, {"id": "11897", "x": 24.21, "y": 19.18, "position": "RB"}, {"id": "50982", "x": 18.44, "y": -20.67, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 6.94, "position": "LM"}, {"id": "51694", "x": 8.11, "y": -6.89, "position": "RM"}, {"id": "560987", "x": 0.01, "y": 17.83, "position": "RW"}, {"id": "966114", "x": 0.59, "y": -22.93, "position": "LW"}, {"id": "560984", "x": 0.49, "y": 0.42, "position": "CF"}, {"id": "966112", "x": 0.09, "y": -8.9, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.15, "y": -0.6, "z": 0.25}} +{"frame_id": 30234, "original_frame_id": 30254, "timestamp": "2024-12-21 06:00:00.400000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.45, "y": -0.2, "position": "GK"}, {"id": "965697", "x": -17.43, "y": -7.61, "position": "RCB"}, {"id": "69111", "x": -23.68, "y": 2.4, "position": "LCB"}, {"id": "51043", "x": -14.38, "y": -19.45, "position": "RB"}, {"id": "560983", "x": -19.05, "y": 16.13, "position": "LB"}, {"id": "51002", "x": -10.37, "y": 1.41, "position": "LDM"}, {"id": "287934", "x": -10.0, "y": -2.61, "position": "RDM"}, {"id": "560882", "x": -0.83, "y": 9.39, "position": "CAM"}, {"id": "797298", "x": -3.15, "y": -19.4, "position": "RW"}, {"id": "560986", "x": -2.7, "y": 17.54, "position": "LW"}, {"id": "795537", "x": -0.1, "y": -10.68, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.7, "y": 0.1, "position": "GK"}, {"id": "809166", "x": 22.7, "y": 4.45, "position": "RCB"}, {"id": "560989", "x": 23.12, "y": -9.72, "position": "LCB"}, {"id": "11897", "x": 24.32, "y": 19.27, "position": "RB"}, {"id": "50982", "x": 18.47, "y": -20.73, "position": "LB"}, {"id": "795530", "x": 5.97, "y": 6.88, "position": "LM"}, {"id": "51694", "x": 8.17, "y": -6.95, "position": "RM"}, {"id": "560987", "x": -0.02, "y": 17.83, "position": "RW"}, {"id": "966114", "x": 0.58, "y": -23.01, "position": "LW"}, {"id": "560984", "x": 0.47, "y": 0.47, "position": "CF"}, {"id": "966112", "x": 0.14, "y": -8.98, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.22, "y": -0.43, "z": 0.24}} +{"frame_id": 30235, "original_frame_id": 30255, "timestamp": "2024-12-21 06:00:00.500000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.64, "y": -0.19, "position": "GK"}, {"id": "965697", "x": -17.54, "y": -7.65, "position": "RCB"}, {"id": "69111", "x": -23.73, "y": 2.46, "position": "LCB"}, {"id": "51043", "x": -14.51, "y": -19.45, "position": "RB"}, {"id": "560983", "x": -19.2, "y": 16.08, "position": "LB"}, {"id": "51002", "x": -10.41, "y": 1.39, "position": "LDM"}, {"id": "287934", "x": -10.03, "y": -2.59, "position": "RDM"}, {"id": "560882", "x": -0.81, "y": 9.4, "position": "CAM"}, {"id": "797298", "x": -3.19, "y": -19.42, "position": "RW"}, {"id": "560986", "x": -2.77, "y": 17.52, "position": "LW"}, {"id": "795537", "x": -0.17, "y": -10.74, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.89, "y": 0.12, "position": "GK"}, {"id": "809166", "x": 22.77, "y": 4.4, "position": "RCB"}, {"id": "560989", "x": 23.31, "y": -9.84, "position": "LCB"}, {"id": "11897", "x": 24.4, "y": 19.35, "position": "RB"}, {"id": "50982", "x": 18.5, "y": -20.77, "position": "LB"}, {"id": "795530", "x": 5.95, "y": 6.84, "position": "LM"}, {"id": "51694", "x": 8.23, "y": -7.0, "position": "RM"}, {"id": "560987", "x": -0.06, "y": 17.83, "position": "RW"}, {"id": "966114", "x": 0.58, "y": -23.08, "position": "LW"}, {"id": "560984", "x": 0.45, "y": 0.51, "position": "CF"}, {"id": "966112", "x": 0.19, "y": -9.05, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.32, "y": -0.35, "z": 0.25}} +{"frame_id": 30236, "original_frame_id": 30256, "timestamp": "2024-12-21 06:00:00.600000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.8, "y": -0.18, "position": "GK"}, {"id": "965697", "x": -17.64, "y": -7.67, "position": "RCB"}, {"id": "69111", "x": -23.78, "y": 2.51, "position": "LCB"}, {"id": "51043", "x": -14.62, "y": -19.44, "position": "RB"}, {"id": "560983", "x": -19.33, "y": 16.03, "position": "LB"}, {"id": "51002", "x": -10.43, "y": 1.38, "position": "LDM"}, {"id": "287934", "x": -10.06, "y": -2.58, "position": "RDM"}, {"id": "560882", "x": -0.79, "y": 9.41, "position": "CAM"}, {"id": "797298", "x": -3.22, "y": -19.43, "position": "RW"}, {"id": "560986", "x": -2.83, "y": 17.51, "position": "LW"}, {"id": "795537", "x": -0.23, "y": -10.79, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.04, "y": 0.14, "position": "GK"}, {"id": "809166", "x": 22.82, "y": 4.36, "position": "RCB"}, {"id": "560989", "x": 23.47, "y": -9.93, "position": "LCB"}, {"id": "11897", "x": 24.46, "y": 19.4, "position": "RB"}, {"id": "50982", "x": 18.52, "y": -20.81, "position": "LB"}, {"id": "795530", "x": 5.94, "y": 6.8, "position": "LM"}, {"id": "51694", "x": 8.29, "y": -7.03, "position": "RM"}, {"id": "560987", "x": -0.09, "y": 17.84, "position": "RW"}, {"id": "966114", "x": 0.57, "y": -23.13, "position": "LW"}, {"id": "560984", "x": 0.42, "y": 0.55, "position": "CF"}, {"id": "966112", "x": 0.22, "y": -9.09, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.45, "y": -0.28, "z": 0.24}} +{"frame_id": 30237, "original_frame_id": 30257, "timestamp": "2024-12-21 06:00:00.700000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.93, "y": -0.15, "position": "GK"}, {"id": "965697", "x": -17.72, "y": -7.69, "position": "RCB"}, {"id": "69111", "x": -23.81, "y": 2.57, "position": "LCB"}, {"id": "51043", "x": -14.71, "y": -19.42, "position": "RB"}, {"id": "560983", "x": -19.45, "y": 15.97, "position": "LB"}, {"id": "51002", "x": -10.44, "y": 1.37, "position": "LDM"}, {"id": "287934", "x": -10.08, "y": -2.57, "position": "RDM"}, {"id": "560882", "x": -0.78, "y": 9.41, "position": "CAM"}, {"id": "797298", "x": -3.26, "y": -19.44, "position": "RW"}, {"id": "560986", "x": -2.87, "y": 17.5, "position": "LW"}, {"id": "795537", "x": -0.27, "y": -10.83, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.16, "y": 0.16, "position": "GK"}, {"id": "809166", "x": 22.86, "y": 4.32, "position": "RCB"}, {"id": "560989", "x": 23.59, "y": -10.01, "position": "LCB"}, {"id": "11897", "x": 24.51, "y": 19.44, "position": "RB"}, {"id": "50982", "x": 18.52, "y": -20.83, "position": "LB"}, {"id": "795530", "x": 5.94, "y": 6.77, "position": "LM"}, {"id": "51694", "x": 8.35, "y": -7.05, "position": "RM"}, {"id": "560987", "x": -0.11, "y": 17.85, "position": "RW"}, {"id": "966114", "x": 0.56, "y": -23.17, "position": "LW"}, {"id": "560984", "x": 0.4, "y": 0.58, "position": "CF"}, {"id": "966112", "x": 0.24, "y": -9.12, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.55, "y": -0.21, "z": 0.24}} +{"frame_id": 30238, "original_frame_id": 30258, "timestamp": "2024-12-21 06:00:00.800000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.97, "y": -0.09, "position": "GK"}, {"id": "965697", "x": -17.77, "y": -7.68, "position": "RCB"}, {"id": "69111", "x": -23.82, "y": 2.61, "position": "LCB"}, {"id": "51043", "x": -14.78, "y": -19.29, "position": "RB"}, {"id": "560983", "x": -19.56, "y": 15.91, "position": "LB"}, {"id": "51002", "x": -10.42, "y": 1.35, "position": "LDM"}, {"id": "287934", "x": -10.1, "y": -2.57, "position": "RDM"}, {"id": "560882", "x": -0.8, "y": 9.42, "position": "CAM"}, {"id": "797298", "x": -3.28, "y": -19.42, "position": "RW"}, {"id": "560986", "x": -2.9, "y": 17.52, "position": "LW"}, {"id": "795537", "x": -0.29, "y": -10.83, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.22, "y": 0.2, "position": "GK"}, {"id": "809166", "x": 22.88, "y": 4.29, "position": "RCB"}, {"id": "560989", "x": 23.65, "y": -10.03, "position": "LCB"}, {"id": "11897", "x": 24.52, "y": 19.43, "position": "RB"}, {"id": "50982", "x": 18.52, "y": -20.85, "position": "LB"}, {"id": "795530", "x": 5.93, "y": 6.8, "position": "LM"}, {"id": "51694", "x": 8.42, "y": -7.03, "position": "RM"}, {"id": "560987", "x": -0.16, "y": 17.86, "position": "RW"}, {"id": "966114", "x": 0.55, "y": -23.2, "position": "LW"}, {"id": "560984", "x": 0.36, "y": 0.59, "position": "CF"}, {"id": "966112", "x": 0.24, "y": -9.1, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.64, "y": -0.17, "z": 0.24}} +{"frame_id": 30239, "original_frame_id": 30259, "timestamp": "2024-12-21 06:00:00.900000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.02, "y": -0.04, "position": "GK"}, {"id": "965697", "x": -17.8, "y": -7.67, "position": "RCB"}, {"id": "69111", "x": -23.84, "y": 2.66, "position": "LCB"}, {"id": "51043", "x": -14.84, "y": -19.21, "position": "RB"}, {"id": "560983", "x": -19.63, "y": 15.84, "position": "LB"}, {"id": "51002", "x": -10.38, "y": 1.35, "position": "LDM"}, {"id": "287934", "x": -10.09, "y": -2.57, "position": "RDM"}, {"id": "560882", "x": -0.81, "y": 9.42, "position": "CAM"}, {"id": "797298", "x": -3.3, "y": -19.42, "position": "RW"}, {"id": "560986", "x": -2.91, "y": 17.54, "position": "LW"}, {"id": "795537", "x": -0.29, "y": -10.83, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.26, "y": 0.23, "position": "GK"}, {"id": "809166", "x": 22.88, "y": 4.28, "position": "RCB"}, {"id": "560989", "x": 23.7, "y": -10.03, "position": "LCB"}, {"id": "11897", "x": 24.49, "y": 19.39, "position": "RB"}, {"id": "50982", "x": 18.52, "y": -20.85, "position": "LB"}, {"id": "795530", "x": 5.94, "y": 6.8, "position": "LM"}, {"id": "51694", "x": 8.49, "y": -7.0, "position": "RM"}, {"id": "560987", "x": -0.21, "y": 17.88, "position": "RW"}, {"id": "966114", "x": 0.54, "y": -23.18, "position": "LW"}, {"id": "560984", "x": 0.34, "y": 0.6, "position": "CF"}, {"id": "966112", "x": 0.23, "y": -9.06, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.68, "y": -0.12, "z": 0.25}} +{"frame_id": 30240, "original_frame_id": 30260, "timestamp": "2024-12-21 06:00:01+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "965697", "x": -17.83, "y": -7.66, "position": "RCB"}, {"id": "69111", "x": -23.86, "y": 2.72, "position": "LCB"}, {"id": "51043", "x": -14.9, "y": -19.14, "position": "RB"}, {"id": "560983", "x": -19.68, "y": 15.75, "position": "LB"}, {"id": "51002", "x": -10.33, "y": 1.34, "position": "LDM"}, {"id": "287934", "x": -10.09, "y": -2.56, "position": "RDM"}, {"id": "560882", "x": -0.82, "y": 9.42, "position": "CAM"}, {"id": "797298", "x": -3.33, "y": -19.42, "position": "RW"}, {"id": "560986", "x": -2.9, "y": 17.56, "position": "LW"}, {"id": "795537", "x": -0.27, "y": -10.83, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.28, "y": 0.25, "position": "GK"}, {"id": "809166", "x": 22.86, "y": 4.26, "position": "RCB"}, {"id": "560989", "x": 23.73, "y": -10.01, "position": "LCB"}, {"id": "11897", "x": 24.44, "y": 19.35, "position": "RB"}, {"id": "50982", "x": 18.49, "y": -20.83, "position": "LB"}, {"id": "795530", "x": 5.96, "y": 6.8, "position": "LM"}, {"id": "51694", "x": 8.53, "y": -6.97, "position": "RM"}, {"id": "560987", "x": -0.23, "y": 17.9, "position": "RW"}, {"id": "966114", "x": 0.52, "y": -23.14, "position": "LW"}, {"id": "560984", "x": 0.31, "y": 0.6, "position": "CF"}, {"id": "966112", "x": 0.21, "y": -9.03, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.69, "y": -0.09, "z": 0.25}} +{"frame_id": 30241, "original_frame_id": 30261, "timestamp": "2024-12-21 06:00:01.100000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.09, "y": 0.02, "position": "GK"}, {"id": "965697", "x": -17.86, "y": -7.65, "position": "RCB"}, {"id": "69111", "x": -23.86, "y": 2.77, "position": "LCB"}, {"id": "51043", "x": -14.95, "y": -19.09, "position": "RB"}, {"id": "560983", "x": -19.73, "y": 15.66, "position": "LB"}, {"id": "51002", "x": -10.28, "y": 1.34, "position": "LDM"}, {"id": "287934", "x": -10.1, "y": -2.56, "position": "RDM"}, {"id": "560882", "x": -0.82, "y": 9.42, "position": "CAM"}, {"id": "797298", "x": -3.36, "y": -19.41, "position": "RW"}, {"id": "560986", "x": -2.9, "y": 17.58, "position": "LW"}, {"id": "795537", "x": -0.25, "y": -10.83, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.28, "y": 0.26, "position": "GK"}, {"id": "809166", "x": 22.82, "y": 4.25, "position": "RCB"}, {"id": "560989", "x": 23.74, "y": -9.98, "position": "LCB"}, {"id": "11897", "x": 24.39, "y": 19.32, "position": "RB"}, {"id": "50982", "x": 18.47, "y": -20.82, "position": "LB"}, {"id": "795530", "x": 5.97, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.58, "y": -6.93, "position": "RM"}, {"id": "560987", "x": -0.24, "y": 17.92, "position": "RW"}, {"id": "966114", "x": 0.49, "y": -23.11, "position": "LW"}, {"id": "560984", "x": 0.28, "y": 0.61, "position": "CF"}, {"id": "966112", "x": 0.19, "y": -9.01, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.66, "y": -0.04, "z": 0.26}} +{"frame_id": 30242, "original_frame_id": 30262, "timestamp": "2024-12-21 06:00:01.200000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.11, "y": 0.04, "position": "GK"}, {"id": "965697", "x": -17.88, "y": -7.63, "position": "RCB"}, {"id": "69111", "x": -23.87, "y": 2.83, "position": "LCB"}, {"id": "51043", "x": -14.99, "y": -19.04, "position": "RB"}, {"id": "560983", "x": -19.78, "y": 15.58, "position": "LB"}, {"id": "51002", "x": -10.25, "y": 1.34, "position": "LDM"}, {"id": "287934", "x": -10.1, "y": -2.57, "position": "RDM"}, {"id": "560882", "x": -0.83, "y": 9.43, "position": "CAM"}, {"id": "797298", "x": -3.39, "y": -19.41, "position": "RW"}, {"id": "560986", "x": -2.9, "y": 17.6, "position": "LW"}, {"id": "795537", "x": -0.22, "y": -10.82, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.28, "y": 0.26, "position": "GK"}, {"id": "809166", "x": 22.78, "y": 4.23, "position": "RCB"}, {"id": "560989", "x": 23.74, "y": -9.95, "position": "LCB"}, {"id": "11897", "x": 24.36, "y": 19.28, "position": "RB"}, {"id": "50982", "x": 18.44, "y": -20.8, "position": "LB"}, {"id": "795530", "x": 5.98, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.62, "y": -6.91, "position": "RM"}, {"id": "560987", "x": -0.24, "y": 17.95, "position": "RW"}, {"id": "966114", "x": 0.46, "y": -23.11, "position": "LW"}, {"id": "560984", "x": 0.25, "y": 0.62, "position": "CF"}, {"id": "966112", "x": 0.18, "y": -8.99, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.62, "y": 0.02, "z": 0.26}} +{"frame_id": 30243, "original_frame_id": 30263, "timestamp": "2024-12-21 06:00:01.300000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.14, "y": 0.06, "position": "GK"}, {"id": "965697", "x": -17.89, "y": -7.61, "position": "RCB"}, {"id": "69111", "x": -23.87, "y": 2.88, "position": "LCB"}, {"id": "51043", "x": -15.04, "y": -19.0, "position": "RB"}, {"id": "560983", "x": -19.84, "y": 15.49, "position": "LB"}, {"id": "51002", "x": -10.23, "y": 1.36, "position": "LDM"}, {"id": "287934", "x": -10.1, "y": -2.57, "position": "RDM"}, {"id": "560882", "x": -0.84, "y": 9.44, "position": "CAM"}, {"id": "797298", "x": -3.42, "y": -19.41, "position": "RW"}, {"id": "560986", "x": -2.9, "y": 17.61, "position": "LW"}, {"id": "795537", "x": -0.19, "y": -10.81, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.27, "y": 0.26, "position": "GK"}, {"id": "809166", "x": 22.74, "y": 4.21, "position": "RCB"}, {"id": "560989", "x": 23.76, "y": -9.92, "position": "LCB"}, {"id": "11897", "x": 24.36, "y": 19.25, "position": "RB"}, {"id": "50982", "x": 18.41, "y": -20.79, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.66, "y": -6.89, "position": "RM"}, {"id": "560987", "x": -0.24, "y": 17.98, "position": "RW"}, {"id": "966114", "x": 0.44, "y": -23.13, "position": "LW"}, {"id": "560984", "x": 0.23, "y": 0.63, "position": "CF"}, {"id": "966112", "x": 0.17, "y": -8.97, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.58, "y": 0.06, "z": 0.28}} +{"frame_id": 30244, "original_frame_id": 30264, "timestamp": "2024-12-21 06:00:01.400000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.16, "y": 0.07, "position": "GK"}, {"id": "965697", "x": -17.9, "y": -7.58, "position": "RCB"}, {"id": "69111", "x": -23.88, "y": 2.93, "position": "LCB"}, {"id": "51043", "x": -15.07, "y": -18.96, "position": "RB"}, {"id": "560983", "x": -19.91, "y": 15.41, "position": "LB"}, {"id": "51002", "x": -10.23, "y": 1.37, "position": "LDM"}, {"id": "287934", "x": -10.11, "y": -2.58, "position": "RDM"}, {"id": "560882", "x": -0.85, "y": 9.45, "position": "CAM"}, {"id": "797298", "x": -3.45, "y": -19.42, "position": "RW"}, {"id": "560986", "x": -2.91, "y": 17.62, "position": "LW"}, {"id": "795537", "x": -0.15, "y": -10.8, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.26, "y": 0.26, "position": "GK"}, {"id": "809166", "x": 22.7, "y": 4.2, "position": "RCB"}, {"id": "560989", "x": 23.79, "y": -9.9, "position": "LCB"}, {"id": "11897", "x": 24.38, "y": 19.23, "position": "RB"}, {"id": "50982", "x": 18.39, "y": -20.78, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.69, "y": -6.88, "position": "RM"}, {"id": "560987", "x": -0.24, "y": 17.99, "position": "RW"}, {"id": "966114", "x": 0.41, "y": -23.16, "position": "LW"}, {"id": "560984", "x": 0.21, "y": 0.63, "position": "CF"}, {"id": "966112", "x": 0.15, "y": -8.95, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.54, "y": 0.07, "z": 0.29}} +{"frame_id": 30245, "original_frame_id": 30265, "timestamp": "2024-12-21 06:00:01.500000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.18, "y": 0.09, "position": "GK"}, {"id": "965697", "x": -17.91, "y": -7.56, "position": "RCB"}, {"id": "69111", "x": -23.88, "y": 2.98, "position": "LCB"}, {"id": "51043", "x": -15.1, "y": -18.92, "position": "RB"}, {"id": "560983", "x": -19.97, "y": 15.33, "position": "LB"}, {"id": "51002", "x": -10.22, "y": 1.39, "position": "LDM"}, {"id": "287934", "x": -10.11, "y": -2.6, "position": "RDM"}, {"id": "560882", "x": -0.85, "y": 9.46, "position": "CAM"}, {"id": "797298", "x": -3.48, "y": -19.44, "position": "RW"}, {"id": "560986", "x": -2.93, "y": 17.62, "position": "LW"}, {"id": "795537", "x": -0.1, "y": -10.78, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.26, "y": 0.25, "position": "GK"}, {"id": "809166", "x": 22.66, "y": 4.19, "position": "RCB"}, {"id": "560989", "x": 23.83, "y": -9.87, "position": "LCB"}, {"id": "11897", "x": 24.4, "y": 19.21, "position": "RB"}, {"id": "50982", "x": 18.38, "y": -20.77, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.71, "y": -6.87, "position": "RM"}, {"id": "560987", "x": -0.25, "y": 18.0, "position": "RW"}, {"id": "966114", "x": 0.37, "y": -23.21, "position": "LW"}, {"id": "560984", "x": 0.19, "y": 0.63, "position": "CF"}, {"id": "966112", "x": 0.14, "y": -8.93, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.51, "y": 0.03, "z": 0.3}} +{"frame_id": 30246, "original_frame_id": 30266, "timestamp": "2024-12-21 06:00:01.600000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.21, "y": 0.11, "position": "GK"}, {"id": "965697", "x": -17.92, "y": -7.53, "position": "RCB"}, {"id": "69111", "x": -23.87, "y": 3.02, "position": "LCB"}, {"id": "51043", "x": -15.12, "y": -18.88, "position": "RB"}, {"id": "560983", "x": -20.03, "y": 15.25, "position": "LB"}, {"id": "51002", "x": -10.22, "y": 1.42, "position": "LDM"}, {"id": "287934", "x": -10.1, "y": -2.62, "position": "RDM"}, {"id": "560882", "x": -0.83, "y": 9.46, "position": "CAM"}, {"id": "797298", "x": -3.5, "y": -19.46, "position": "RW"}, {"id": "560986", "x": -2.94, "y": 17.62, "position": "LW"}, {"id": "795537", "x": -0.05, "y": -10.75, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.26, "y": 0.25, "position": "GK"}, {"id": "809166", "x": 22.62, "y": 4.18, "position": "RCB"}, {"id": "560989", "x": 23.87, "y": -9.85, "position": "LCB"}, {"id": "11897", "x": 24.42, "y": 19.19, "position": "RB"}, {"id": "50982", "x": 18.37, "y": -20.77, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.73, "y": -6.87, "position": "RM"}, {"id": "560987", "x": -0.27, "y": 17.99, "position": "RW"}, {"id": "966114", "x": 0.33, "y": -23.25, "position": "LW"}, {"id": "560984", "x": 0.18, "y": 0.62, "position": "CF"}, {"id": "966112", "x": 0.11, "y": -8.9, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.49, "y": -0.05, "z": 0.31}} +{"frame_id": 30247, "original_frame_id": 30267, "timestamp": "2024-12-21 06:00:01.700000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.23, "y": 0.12, "position": "GK"}, {"id": "965697", "x": -17.93, "y": -7.51, "position": "RCB"}, {"id": "69111", "x": -23.86, "y": 3.06, "position": "LCB"}, {"id": "51043", "x": -15.14, "y": -18.84, "position": "RB"}, {"id": "560983", "x": -20.08, "y": 15.16, "position": "LB"}, {"id": "51002", "x": -10.21, "y": 1.44, "position": "LDM"}, {"id": "287934", "x": -10.08, "y": -2.64, "position": "RDM"}, {"id": "560882", "x": -0.81, "y": 9.46, "position": "CAM"}, {"id": "797298", "x": -3.52, "y": -19.48, "position": "RW"}, {"id": "560986", "x": -2.96, "y": 17.61, "position": "LW"}, {"id": "795537", "x": 0.02, "y": -10.72, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.25, "y": 0.24, "position": "GK"}, {"id": "809166", "x": 22.59, "y": 4.18, "position": "RCB"}, {"id": "560989", "x": 23.91, "y": -9.82, "position": "LCB"}, {"id": "11897", "x": 24.44, "y": 19.18, "position": "RB"}, {"id": "50982", "x": 18.36, "y": -20.76, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 6.78, "position": "LM"}, {"id": "51694", "x": 8.75, "y": -6.87, "position": "RM"}, {"id": "560987", "x": -0.29, "y": 17.97, "position": "RW"}, {"id": "966114", "x": 0.28, "y": -23.31, "position": "LW"}, {"id": "560984", "x": 0.16, "y": 0.62, "position": "CF"}, {"id": "966112", "x": 0.09, "y": -8.88, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.48, "y": -0.13, "z": 0.31}} +{"frame_id": 30248, "original_frame_id": 30268, "timestamp": "2024-12-21 06:00:01.800000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.24, "y": 0.13, "position": "GK"}, {"id": "965697", "x": -17.94, "y": -7.48, "position": "RCB"}, {"id": "69111", "x": -23.83, "y": 3.1, "position": "LCB"}, {"id": "51043", "x": -15.15, "y": -18.81, "position": "RB"}, {"id": "560983", "x": -20.13, "y": 15.07, "position": "LB"}, {"id": "51002", "x": -10.19, "y": 1.47, "position": "LDM"}, {"id": "287934", "x": -10.06, "y": -2.66, "position": "RDM"}, {"id": "560882", "x": -0.76, "y": 9.45, "position": "CAM"}, {"id": "797298", "x": -3.55, "y": -19.52, "position": "RW"}, {"id": "560986", "x": -2.97, "y": 17.6, "position": "LW"}, {"id": "795537", "x": 0.1, "y": -10.69, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.25, "y": 0.24, "position": "GK"}, {"id": "809166", "x": 22.55, "y": 4.17, "position": "RCB"}, {"id": "560989", "x": 23.95, "y": -9.8, "position": "LCB"}, {"id": "11897", "x": 24.45, "y": 19.16, "position": "RB"}, {"id": "50982", "x": 18.36, "y": -20.76, "position": "LB"}, {"id": "795530", "x": 5.98, "y": 6.78, "position": "LM"}, {"id": "51694", "x": 8.76, "y": -6.88, "position": "RM"}, {"id": "560987", "x": -0.32, "y": 17.94, "position": "RW"}, {"id": "966114", "x": 0.23, "y": -23.36, "position": "LW"}, {"id": "560984", "x": 0.14, "y": 0.61, "position": "CF"}, {"id": "966112", "x": 0.06, "y": -8.85, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.48, "y": -0.18, "z": 0.31}} +{"frame_id": 30249, "original_frame_id": 30269, "timestamp": "2024-12-21 06:00:01.900000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.26, "y": 0.15, "position": "GK"}, {"id": "965697", "x": -17.95, "y": -7.46, "position": "RCB"}, {"id": "69111", "x": -23.81, "y": 3.14, "position": "LCB"}, {"id": "51043", "x": -15.16, "y": -18.78, "position": "RB"}, {"id": "560983", "x": -20.17, "y": 14.98, "position": "LB"}, {"id": "51002", "x": -10.17, "y": 1.5, "position": "LDM"}, {"id": "287934", "x": -10.04, "y": -2.67, "position": "RDM"}, {"id": "560882", "x": -0.7, "y": 9.43, "position": "CAM"}, {"id": "797298", "x": -3.58, "y": -19.56, "position": "RW"}, {"id": "560986", "x": -2.99, "y": 17.59, "position": "LW"}, {"id": "795537", "x": 0.2, "y": -10.65, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.24, "y": 0.23, "position": "GK"}, {"id": "809166", "x": 22.53, "y": 4.17, "position": "RCB"}, {"id": "560989", "x": 23.99, "y": -9.77, "position": "LCB"}, {"id": "11897", "x": 24.46, "y": 19.16, "position": "RB"}, {"id": "50982", "x": 18.36, "y": -20.76, "position": "LB"}, {"id": "795530", "x": 5.97, "y": 6.78, "position": "LM"}, {"id": "51694", "x": 8.76, "y": -6.89, "position": "RM"}, {"id": "560987", "x": -0.37, "y": 17.9, "position": "RW"}, {"id": "966114", "x": 0.17, "y": -23.43, "position": "LW"}, {"id": "560984", "x": 0.12, "y": 0.61, "position": "CF"}, {"id": "966112", "x": 0.03, "y": -8.82, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.48, "y": -0.2, "z": 0.32}} +{"frame_id": 30250, "original_frame_id": 30270, "timestamp": "2024-12-21 06:00:02+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.26, "y": 0.16, "position": "GK"}, {"id": "965697", "x": -17.96, "y": -7.43, "position": "RCB"}, {"id": "69111", "x": -23.77, "y": 3.18, "position": "LCB"}, {"id": "51043", "x": -15.18, "y": -18.74, "position": "RB"}, {"id": "560983", "x": -20.22, "y": 14.88, "position": "LB"}, {"id": "51002", "x": -10.15, "y": 1.52, "position": "LDM"}, {"id": "287934", "x": -10.01, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": -0.62, "y": 9.4, "position": "CAM"}, {"id": "797298", "x": -3.61, "y": -19.61, "position": "RW"}, {"id": "560986", "x": -3.01, "y": 17.57, "position": "LW"}, {"id": "795537", "x": 0.32, "y": -10.6, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.23, "y": 0.22, "position": "GK"}, {"id": "809166", "x": 22.5, "y": 4.17, "position": "RCB"}, {"id": "560989", "x": 24.02, "y": -9.73, "position": "LCB"}, {"id": "11897", "x": 24.47, "y": 19.16, "position": "RB"}, {"id": "50982", "x": 18.36, "y": -20.76, "position": "LB"}, {"id": "795530", "x": 5.95, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.76, "y": -6.9, "position": "RM"}, {"id": "560987", "x": -0.42, "y": 17.84, "position": "RW"}, {"id": "966114", "x": 0.1, "y": -23.5, "position": "LW"}, {"id": "560984", "x": 0.1, "y": 0.61, "position": "CF"}, {"id": "966112", "x": -0.01, "y": -8.78, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.46, "y": -0.23, "z": 0.33}} +{"frame_id": 30251, "original_frame_id": 30271, "timestamp": "2024-12-21 06:00:02.100000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.27, "y": 0.18, "position": "GK"}, {"id": "965697", "x": -17.97, "y": -7.4, "position": "RCB"}, {"id": "69111", "x": -23.73, "y": 3.21, "position": "LCB"}, {"id": "51043", "x": -15.19, "y": -18.71, "position": "RB"}, {"id": "560983", "x": -20.26, "y": 14.78, "position": "LB"}, {"id": "51002", "x": -10.12, "y": 1.55, "position": "LDM"}, {"id": "287934", "x": -9.97, "y": -2.69, "position": "RDM"}, {"id": "560882", "x": -0.52, "y": 9.35, "position": "CAM"}, {"id": "797298", "x": -3.65, "y": -19.68, "position": "RW"}, {"id": "560986", "x": -3.03, "y": 17.54, "position": "LW"}, {"id": "795537", "x": 0.46, "y": -10.54, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.21, "y": 0.21, "position": "GK"}, {"id": "809166", "x": 22.47, "y": 4.18, "position": "RCB"}, {"id": "560989", "x": 24.04, "y": -9.7, "position": "LCB"}, {"id": "11897", "x": 24.49, "y": 19.16, "position": "RB"}, {"id": "50982", "x": 18.37, "y": -20.77, "position": "LB"}, {"id": "795530", "x": 5.94, "y": 6.79, "position": "LM"}, {"id": "51694", "x": 8.75, "y": -6.91, "position": "RM"}, {"id": "560987", "x": -0.5, "y": 17.77, "position": "RW"}, {"id": "966114", "x": 0.04, "y": -23.58, "position": "LW"}, {"id": "560984", "x": 0.08, "y": 0.62, "position": "CF"}, {"id": "966112", "x": -0.06, "y": -8.74, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.47, "y": -0.22, "z": 0.34}} +{"frame_id": 30252, "original_frame_id": 30272, "timestamp": "2024-12-21 06:00:02.200000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": false, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.28, "y": 0.2, "position": "GK"}, {"id": "965697", "x": -17.98, "y": -7.37, "position": "RCB"}, {"id": "69111", "x": -23.68, "y": 3.25, "position": "LCB"}, {"id": "51043", "x": -15.21, "y": -18.69, "position": "RB"}, {"id": "560983", "x": -20.29, "y": 14.67, "position": "LB"}, {"id": "51002", "x": -10.08, "y": 1.58, "position": "LDM"}, {"id": "287934", "x": -9.93, "y": -2.69, "position": "RDM"}, {"id": "560882", "x": -0.4, "y": 9.3, "position": "CAM"}, {"id": "797298", "x": -3.7, "y": -19.76, "position": "RW"}, {"id": "560986", "x": -3.06, "y": 17.52, "position": "LW"}, {"id": "795537", "x": 0.62, "y": -10.46, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.18, "y": 0.2, "position": "GK"}, {"id": "809166", "x": 22.45, "y": 4.19, "position": "RCB"}, {"id": "560989", "x": 24.07, "y": -9.66, "position": "LCB"}, {"id": "11897", "x": 24.5, "y": 19.16, "position": "RB"}, {"id": "50982", "x": 18.37, "y": -20.78, "position": "LB"}, {"id": "795530", "x": 5.93, "y": 6.81, "position": "LM"}, {"id": "51694", "x": 8.73, "y": -6.92, "position": "RM"}, {"id": "560987", "x": -0.59, "y": 17.69, "position": "RW"}, {"id": "966114", "x": -0.04, "y": -23.67, "position": "LW"}, {"id": "560984", "x": 0.05, "y": 0.64, "position": "CF"}, {"id": "966112", "x": -0.12, "y": -8.7, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 0.65, "y": -0.14, "z": 0.36}} +{"frame_id": 30253, "original_frame_id": 30273, "timestamp": "2024-12-21 06:00:02.300000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.29, "y": 0.22, "position": "GK"}, {"id": "965697", "x": -17.99, "y": -7.34, "position": "RCB"}, {"id": "69111", "x": -23.63, "y": 3.29, "position": "LCB"}, {"id": "51043", "x": -15.23, "y": -18.66, "position": "RB"}, {"id": "560983", "x": -20.33, "y": 14.56, "position": "LB"}, {"id": "51002", "x": -10.04, "y": 1.61, "position": "LDM"}, {"id": "287934", "x": -9.89, "y": -2.69, "position": "RDM"}, {"id": "560882", "x": -0.24, "y": 9.23, "position": "CAM"}, {"id": "797298", "x": -3.75, "y": -19.84, "position": "RW"}, {"id": "560986", "x": -3.08, "y": 17.49, "position": "LW"}, {"id": "795537", "x": 0.8, "y": -10.37, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.14, "y": 0.19, "position": "GK"}, {"id": "809166", "x": 22.42, "y": 4.2, "position": "RCB"}, {"id": "560989", "x": 24.09, "y": -9.62, "position": "LCB"}, {"id": "11897", "x": 24.52, "y": 19.16, "position": "RB"}, {"id": "50982", "x": 18.38, "y": -20.79, "position": "LB"}, {"id": "795530", "x": 5.92, "y": 6.83, "position": "LM"}, {"id": "51694", "x": 8.7, "y": -6.92, "position": "RM"}, {"id": "560987", "x": -0.7, "y": 17.59, "position": "RW"}, {"id": "966114", "x": -0.11, "y": -23.77, "position": "LW"}, {"id": "560984", "x": 0.02, "y": 0.68, "position": "CF"}, {"id": "966112", "x": -0.18, "y": -8.64, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 1.13, "y": 0.07, "z": 0.38}} +{"frame_id": 30254, "original_frame_id": 30274, "timestamp": "2024-12-21 06:00:02.400000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.3, "y": 0.24, "position": "GK"}, {"id": "965697", "x": -18.0, "y": -7.31, "position": "RCB"}, {"id": "69111", "x": -23.58, "y": 3.32, "position": "LCB"}, {"id": "51043", "x": -15.24, "y": -18.63, "position": "RB"}, {"id": "560983", "x": -20.36, "y": 14.46, "position": "LB"}, {"id": "51002", "x": -9.99, "y": 1.65, "position": "LDM"}, {"id": "287934", "x": -9.84, "y": -2.69, "position": "RDM"}, {"id": "560882", "x": -0.07, "y": 9.16, "position": "CAM"}, {"id": "797298", "x": -3.8, "y": -19.95, "position": "RW"}, {"id": "560986", "x": -3.1, "y": 17.48, "position": "LW"}, {"id": "795537", "x": 1.01, "y": -10.26, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.1, "y": 0.18, "position": "GK"}, {"id": "809166", "x": 22.39, "y": 4.24, "position": "RCB"}, {"id": "560989", "x": 24.1, "y": -9.58, "position": "LCB"}, {"id": "11897", "x": 24.54, "y": 19.17, "position": "RB"}, {"id": "50982", "x": 18.39, "y": -20.81, "position": "LB"}, {"id": "795530", "x": 5.91, "y": 6.87, "position": "LM"}, {"id": "51694", "x": 8.67, "y": -6.92, "position": "RM"}, {"id": "560987", "x": -0.84, "y": 17.48, "position": "RW"}, {"id": "966114", "x": -0.2, "y": -23.88, "position": "LW"}, {"id": "560984", "x": -0.03, "y": 0.73, "position": "CF"}, {"id": "966112", "x": -0.26, "y": -8.58, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 2.06, "y": 0.4, "z": 0.41}} +{"frame_id": 30255, "original_frame_id": 30275, "timestamp": "2024-12-21 06:00:02.500000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.31, "y": 0.26, "position": "GK"}, {"id": "965697", "x": -18.0, "y": -7.27, "position": "RCB"}, {"id": "69111", "x": -23.51, "y": 3.34, "position": "LCB"}, {"id": "51043", "x": -15.26, "y": -18.59, "position": "RB"}, {"id": "560983", "x": -20.39, "y": 14.35, "position": "LB"}, {"id": "51002", "x": -9.93, "y": 1.68, "position": "LDM"}, {"id": "287934", "x": -9.78, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 0.14, "y": 9.07, "position": "CAM"}, {"id": "797298", "x": -3.86, "y": -20.06, "position": "RW"}, {"id": "560986", "x": -3.12, "y": 17.46, "position": "LW"}, {"id": "795537", "x": 1.24, "y": -10.13, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.05, "y": 0.17, "position": "GK"}, {"id": "809166", "x": 22.36, "y": 4.28, "position": "RCB"}, {"id": "560989", "x": 24.11, "y": -9.53, "position": "LCB"}, {"id": "11897", "x": 24.57, "y": 19.18, "position": "RB"}, {"id": "50982", "x": 18.4, "y": -20.84, "position": "LB"}, {"id": "795530", "x": 5.91, "y": 6.91, "position": "LM"}, {"id": "51694", "x": 8.63, "y": -6.9, "position": "RM"}, {"id": "560987", "x": -0.99, "y": 17.36, "position": "RW"}, {"id": "966114", "x": -0.28, "y": -24.0, "position": "LW"}, {"id": "560984", "x": -0.09, "y": 0.79, "position": "CF"}, {"id": "966112", "x": -0.35, "y": -8.51, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 3.36, "y": 0.83, "z": 0.44}} +{"frame_id": 30256, "original_frame_id": 30276, "timestamp": "2024-12-21 06:00:02.600000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.31, "y": 0.28, "position": "GK"}, {"id": "965697", "x": -18.01, "y": -7.23, "position": "RCB"}, {"id": "69111", "x": -23.44, "y": 3.36, "position": "LCB"}, {"id": "51043", "x": -15.28, "y": -18.55, "position": "RB"}, {"id": "560983", "x": -20.42, "y": 14.24, "position": "LB"}, {"id": "51002", "x": -9.87, "y": 1.72, "position": "LDM"}, {"id": "287934", "x": -9.71, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 0.38, "y": 8.99, "position": "CAM"}, {"id": "797298", "x": -3.92, "y": -20.19, "position": "RW"}, {"id": "560986", "x": -3.13, "y": 17.45, "position": "LW"}, {"id": "795537", "x": 1.48, "y": -9.98, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.0, "y": 0.16, "position": "GK"}, {"id": "809166", "x": 22.33, "y": 4.35, "position": "RCB"}, {"id": "560989", "x": 24.12, "y": -9.48, "position": "LCB"}, {"id": "11897", "x": 24.59, "y": 19.19, "position": "RB"}, {"id": "50982", "x": 18.41, "y": -20.87, "position": "LB"}, {"id": "795530", "x": 5.92, "y": 6.96, "position": "LM"}, {"id": "51694", "x": 8.59, "y": -6.88, "position": "RM"}, {"id": "560987", "x": -1.16, "y": 17.23, "position": "RW"}, {"id": "966114", "x": -0.37, "y": -24.14, "position": "LW"}, {"id": "560984", "x": -0.16, "y": 0.88, "position": "CF"}, {"id": "966112", "x": -0.45, "y": -8.44, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 4.87, "y": 1.31, "z": 0.45}} +{"frame_id": 30257, "original_frame_id": 30277, "timestamp": "2024-12-21 06:00:02.700000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.29, "y": 0.3, "position": "GK"}, {"id": "965697", "x": -18.01, "y": -7.19, "position": "RCB"}, {"id": "69111", "x": -23.36, "y": 3.38, "position": "LCB"}, {"id": "51043", "x": -15.3, "y": -18.5, "position": "RB"}, {"id": "560983", "x": -20.44, "y": 14.13, "position": "LB"}, {"id": "51002", "x": -9.8, "y": 1.76, "position": "LDM"}, {"id": "287934", "x": -9.64, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 0.65, "y": 8.9, "position": "CAM"}, {"id": "797298", "x": -3.97, "y": -20.33, "position": "RW"}, {"id": "560986", "x": -3.13, "y": 17.45, "position": "LW"}, {"id": "795537", "x": 1.73, "y": -9.82, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.95, "y": 0.16, "position": "GK"}, {"id": "809166", "x": 22.3, "y": 4.43, "position": "RCB"}, {"id": "560989", "x": 24.14, "y": -9.43, "position": "LCB"}, {"id": "11897", "x": 24.62, "y": 19.21, "position": "RB"}, {"id": "50982", "x": 18.42, "y": -20.9, "position": "LB"}, {"id": "795530", "x": 5.92, "y": 7.03, "position": "LM"}, {"id": "51694", "x": 8.55, "y": -6.84, "position": "RM"}, {"id": "560987", "x": -1.34, "y": 17.1, "position": "RW"}, {"id": "966114", "x": -0.46, "y": -24.29, "position": "LW"}, {"id": "560984", "x": -0.26, "y": 0.98, "position": "CF"}, {"id": "966112", "x": -0.57, "y": -8.36, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 6.41, "y": 1.81, "z": 0.42}} +{"frame_id": 30258, "original_frame_id": 30278, "timestamp": "2024-12-21 06:00:02.800000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.28, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -18.0, "y": -7.14, "position": "RCB"}, {"id": "69111", "x": -23.26, "y": 3.39, "position": "LCB"}, {"id": "51043", "x": -15.3, "y": -18.45, "position": "RB"}, {"id": "560983", "x": -20.46, "y": 14.03, "position": "LB"}, {"id": "51002", "x": -9.72, "y": 1.82, "position": "LDM"}, {"id": "287934", "x": -9.56, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 0.94, "y": 8.82, "position": "CAM"}, {"id": "797298", "x": -4.03, "y": -20.48, "position": "RW"}, {"id": "560986", "x": -3.13, "y": 17.46, "position": "LW"}, {"id": "795537", "x": 2.0, "y": -9.64, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.9, "y": 0.16, "position": "GK"}, {"id": "809166", "x": 22.27, "y": 4.54, "position": "RCB"}, {"id": "560989", "x": 24.16, "y": -9.38, "position": "LCB"}, {"id": "11897", "x": 24.66, "y": 19.22, "position": "RB"}, {"id": "50982", "x": 18.43, "y": -20.94, "position": "LB"}, {"id": "795530", "x": 5.94, "y": 7.1, "position": "LM"}, {"id": "51694", "x": 8.5, "y": -6.79, "position": "RM"}, {"id": "560987", "x": -1.54, "y": 16.95, "position": "RW"}, {"id": "966114", "x": -0.54, "y": -24.45, "position": "LW"}, {"id": "560984", "x": -0.37, "y": 1.1, "position": "CF"}, {"id": "966112", "x": -0.69, "y": -8.27, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 7.93, "y": 2.31, "z": 0.37}} +{"frame_id": 30259, "original_frame_id": 30279, "timestamp": "2024-12-21 06:00:02.900000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.26, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -17.99, "y": -7.09, "position": "RCB"}, {"id": "69111", "x": -23.16, "y": 3.4, "position": "LCB"}, {"id": "51043", "x": -15.3, "y": -18.39, "position": "RB"}, {"id": "560983", "x": -20.46, "y": 13.93, "position": "LB"}, {"id": "51002", "x": -9.64, "y": 1.89, "position": "LDM"}, {"id": "287934", "x": -9.47, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 1.27, "y": 8.75, "position": "CAM"}, {"id": "797298", "x": -4.08, "y": -20.64, "position": "RW"}, {"id": "560986", "x": -3.1, "y": 17.47, "position": "LW"}, {"id": "795537", "x": 2.28, "y": -9.43, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.86, "y": 0.17, "position": "GK"}, {"id": "809166", "x": 22.25, "y": 4.67, "position": "RCB"}, {"id": "560989", "x": 24.18, "y": -9.33, "position": "LCB"}, {"id": "11897", "x": 24.7, "y": 19.25, "position": "RB"}, {"id": "50982", "x": 18.44, "y": -20.98, "position": "LB"}, {"id": "795530", "x": 5.96, "y": 7.17, "position": "LM"}, {"id": "51694", "x": 8.46, "y": -6.74, "position": "RM"}, {"id": "560987", "x": -1.76, "y": 16.8, "position": "RW"}, {"id": "966114", "x": -0.62, "y": -24.63, "position": "LW"}, {"id": "560984", "x": -0.51, "y": 1.23, "position": "CF"}, {"id": "966112", "x": -0.83, "y": -8.18, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 9.39, "y": 2.81, "z": 0.33}} +{"frame_id": 30260, "original_frame_id": 30280, "timestamp": "2024-12-21 06:00:03+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.23, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -17.98, "y": -7.05, "position": "RCB"}, {"id": "69111", "x": -23.03, "y": 3.41, "position": "LCB"}, {"id": "51043", "x": -15.28, "y": -18.33, "position": "RB"}, {"id": "560983", "x": -20.46, "y": 13.83, "position": "LB"}, {"id": "51002", "x": -9.55, "y": 1.98, "position": "LDM"}, {"id": "287934", "x": -9.38, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 1.63, "y": 8.69, "position": "CAM"}, {"id": "797298", "x": -4.12, "y": -20.81, "position": "RW"}, {"id": "560986", "x": -3.07, "y": 17.49, "position": "LW"}, {"id": "795537", "x": 2.56, "y": -9.21, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.83, "y": 0.19, "position": "GK"}, {"id": "809166", "x": 22.23, "y": 4.82, "position": "RCB"}, {"id": "560989", "x": 24.21, "y": -9.29, "position": "LCB"}, {"id": "11897", "x": 24.74, "y": 19.27, "position": "RB"}, {"id": "50982", "x": 18.46, "y": -21.01, "position": "LB"}, {"id": "795530", "x": 5.99, "y": 7.25, "position": "LM"}, {"id": "51694", "x": 8.43, "y": -6.67, "position": "RM"}, {"id": "560987", "x": -1.98, "y": 16.65, "position": "RW"}, {"id": "966114", "x": -0.7, "y": -24.81, "position": "LW"}, {"id": "560984", "x": -0.66, "y": 1.37, "position": "CF"}, {"id": "966112", "x": -0.97, "y": -8.07, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 10.8, "y": 3.31, "z": 0.31}} +{"frame_id": 30261, "original_frame_id": 30281, "timestamp": "2024-12-21 06:00:03.100000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.19, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -17.95, "y": -7.0, "position": "RCB"}, {"id": "69111", "x": -22.89, "y": 3.44, "position": "LCB"}, {"id": "51043", "x": -15.26, "y": -18.26, "position": "RB"}, {"id": "560983", "x": -20.45, "y": 13.73, "position": "LB"}, {"id": "51002", "x": -9.46, "y": 2.09, "position": "LDM"}, {"id": "287934", "x": -9.29, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 2.02, "y": 8.65, "position": "CAM"}, {"id": "797298", "x": -4.17, "y": -20.98, "position": "RW"}, {"id": "560986", "x": -3.01, "y": 17.51, "position": "LW"}, {"id": "795537", "x": 2.86, "y": -8.97, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.81, "y": 0.22, "position": "GK"}, {"id": "809166", "x": 22.22, "y": 5.0, "position": "RCB"}, {"id": "560989", "x": 24.24, "y": -9.24, "position": "LCB"}, {"id": "11897", "x": 24.79, "y": 19.31, "position": "RB"}, {"id": "50982", "x": 18.48, "y": -21.05, "position": "LB"}, {"id": "795530", "x": 6.03, "y": 7.33, "position": "LM"}, {"id": "51694", "x": 8.4, "y": -6.59, "position": "RM"}, {"id": "560987", "x": -2.21, "y": 16.5, "position": "RW"}, {"id": "966114", "x": -0.77, "y": -25.0, "position": "LW"}, {"id": "560984", "x": -0.83, "y": 1.52, "position": "CF"}, {"id": "966112", "x": -1.11, "y": -7.96, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 12.09, "y": 3.78, "z": 0.3}} +{"frame_id": 30262, "original_frame_id": 30282, "timestamp": "2024-12-21 06:00:03.200000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.14, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -17.92, "y": -6.95, "position": "RCB"}, {"id": "69111", "x": -22.74, "y": 3.47, "position": "LCB"}, {"id": "51043", "x": -15.23, "y": -18.19, "position": "RB"}, {"id": "560983", "x": -20.42, "y": 13.64, "position": "LB"}, {"id": "51002", "x": -9.36, "y": 2.21, "position": "LDM"}, {"id": "287934", "x": -9.19, "y": -2.68, "position": "RDM"}, {"id": "560882", "x": 2.42, "y": 8.63, "position": "CAM"}, {"id": "797298", "x": -4.2, "y": -21.16, "position": "RW"}, {"id": "560986", "x": -2.94, "y": 17.54, "position": "LW"}, {"id": "795537", "x": 3.15, "y": -8.72, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.8, "y": 0.25, "position": "GK"}, {"id": "809166", "x": 22.21, "y": 5.21, "position": "RCB"}, {"id": "560989", "x": 24.27, "y": -9.2, "position": "LCB"}, {"id": "11897", "x": 24.85, "y": 19.34, "position": "RB"}, {"id": "50982", "x": 18.5, "y": -21.08, "position": "LB"}, {"id": "795530", "x": 6.07, "y": 7.42, "position": "LM"}, {"id": "51694", "x": 8.37, "y": -6.51, "position": "RM"}, {"id": "560987", "x": -2.45, "y": 16.34, "position": "RW"}, {"id": "966114", "x": -0.84, "y": -25.2, "position": "LW"}, {"id": "560984", "x": -1.0, "y": 1.68, "position": "CF"}, {"id": "966112", "x": -1.26, "y": -7.85, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 13.32, "y": 4.2, "z": 0.28}} +{"frame_id": 30263, "original_frame_id": 30283, "timestamp": "2024-12-21 06:00:03.300000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.1, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -17.88, "y": -6.89, "position": "RCB"}, {"id": "69111", "x": -22.57, "y": 3.51, "position": "LCB"}, {"id": "51043", "x": -15.19, "y": -18.11, "position": "RB"}, {"id": "560983", "x": -20.39, "y": 13.55, "position": "LB"}, {"id": "51002", "x": -9.25, "y": 2.35, "position": "LDM"}, {"id": "287934", "x": -9.1, "y": -2.67, "position": "RDM"}, {"id": "560882", "x": 2.86, "y": 8.63, "position": "CAM"}, {"id": "797298", "x": -4.23, "y": -21.33, "position": "RW"}, {"id": "560986", "x": -2.86, "y": 17.58, "position": "LW"}, {"id": "795537", "x": 3.45, "y": -8.45, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.8, "y": 0.3, "position": "GK"}, {"id": "809166", "x": 22.21, "y": 5.44, "position": "RCB"}, {"id": "560989", "x": 24.31, "y": -9.15, "position": "LCB"}, {"id": "11897", "x": 24.91, "y": 19.38, "position": "RB"}, {"id": "50982", "x": 18.51, "y": -21.11, "position": "LB"}, {"id": "795530", "x": 6.11, "y": 7.52, "position": "LM"}, {"id": "51694", "x": 8.34, "y": -6.42, "position": "RM"}, {"id": "560987", "x": -2.69, "y": 16.18, "position": "RW"}, {"id": "966114", "x": -0.9, "y": -25.39, "position": "LW"}, {"id": "560984", "x": -1.19, "y": 1.85, "position": "CF"}, {"id": "966112", "x": -1.41, "y": -7.73, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 14.57, "y": 4.58, "z": 0.26}} +{"frame_id": 30264, "original_frame_id": 30284, "timestamp": "2024-12-21 06:00:03.400000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.04, "y": 0.31, "position": "GK"}, {"id": "965697", "x": -17.83, "y": -6.84, "position": "RCB"}, {"id": "69111", "x": -22.39, "y": 3.56, "position": "LCB"}, {"id": "51043", "x": -15.15, "y": -18.04, "position": "RB"}, {"id": "560983", "x": -20.35, "y": 13.47, "position": "LB"}, {"id": "51002", "x": -9.14, "y": 2.51, "position": "LDM"}, {"id": "287934", "x": -9.01, "y": -2.65, "position": "RDM"}, {"id": "560882", "x": 3.31, "y": 8.64, "position": "CAM"}, {"id": "797298", "x": -4.25, "y": -21.49, "position": "RW"}, {"id": "560986", "x": -2.76, "y": 17.62, "position": "LW"}, {"id": "795537", "x": 3.75, "y": -8.16, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.8, "y": 0.35, "position": "GK"}, {"id": "809166", "x": 22.22, "y": 5.7, "position": "RCB"}, {"id": "560989", "x": 24.34, "y": -9.09, "position": "LCB"}, {"id": "11897", "x": 24.97, "y": 19.43, "position": "RB"}, {"id": "50982", "x": 18.53, "y": -21.14, "position": "LB"}, {"id": "795530", "x": 6.15, "y": 7.62, "position": "LM"}, {"id": "51694", "x": 8.31, "y": -6.32, "position": "RM"}, {"id": "560987", "x": -2.94, "y": 16.01, "position": "RW"}, {"id": "966114", "x": -0.97, "y": -25.57, "position": "LW"}, {"id": "560984", "x": -1.39, "y": 2.03, "position": "CF"}, {"id": "966112", "x": -1.56, "y": -7.59, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 15.71, "y": 5.02, "z": 0.24}} +{"frame_id": 30265, "original_frame_id": 30285, "timestamp": "2024-12-21 06:00:03.500000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -42.0, "y": 0.32, "position": "GK"}, {"id": "965697", "x": -17.78, "y": -6.77, "position": "RCB"}, {"id": "69111", "x": -22.21, "y": 3.63, "position": "LCB"}, {"id": "51043", "x": -15.11, "y": -17.96, "position": "RB"}, {"id": "560983", "x": -20.29, "y": 13.39, "position": "LB"}, {"id": "51002", "x": -9.02, "y": 2.68, "position": "LDM"}, {"id": "287934", "x": -8.93, "y": -2.62, "position": "RDM"}, {"id": "560882", "x": 3.79, "y": 8.67, "position": "CAM"}, {"id": "797298", "x": -4.27, "y": -21.64, "position": "RW"}, {"id": "560986", "x": -2.64, "y": 17.67, "position": "LW"}, {"id": "795537", "x": 4.04, "y": -7.86, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.81, "y": 0.41, "position": "GK"}, {"id": "809166", "x": 22.23, "y": 5.97, "position": "RCB"}, {"id": "560989", "x": 24.36, "y": -9.03, "position": "LCB"}, {"id": "11897", "x": 25.03, "y": 19.48, "position": "RB"}, {"id": "50982", "x": 18.54, "y": -21.17, "position": "LB"}, {"id": "795530", "x": 6.19, "y": 7.74, "position": "LM"}, {"id": "51694", "x": 8.28, "y": -6.22, "position": "RM"}, {"id": "560987", "x": -3.19, "y": 15.84, "position": "RW"}, {"id": "966114", "x": -1.03, "y": -25.74, "position": "LW"}, {"id": "560984", "x": -1.61, "y": 2.21, "position": "CF"}, {"id": "966112", "x": -1.73, "y": -7.45, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 16.77, "y": 5.46, "z": 0.24}} +{"frame_id": 30266, "original_frame_id": 30286, "timestamp": "2024-12-21 06:00:03.600000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.95, "y": 0.33, "position": "GK"}, {"id": "965697", "x": -17.72, "y": -6.7, "position": "RCB"}, {"id": "69111", "x": -22.02, "y": 3.71, "position": "LCB"}, {"id": "51043", "x": -15.06, "y": -17.88, "position": "RB"}, {"id": "560983", "x": -20.24, "y": 13.32, "position": "LB"}, {"id": "51002", "x": -8.9, "y": 2.88, "position": "LDM"}, {"id": "287934", "x": -8.85, "y": -2.57, "position": "RDM"}, {"id": "560882", "x": 4.28, "y": 8.72, "position": "CAM"}, {"id": "797298", "x": -4.27, "y": -21.78, "position": "RW"}, {"id": "560986", "x": -2.51, "y": 17.72, "position": "LW"}, {"id": "795537", "x": 4.35, "y": -7.54, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.83, "y": 0.48, "position": "GK"}, {"id": "809166", "x": 22.26, "y": 6.26, "position": "RCB"}, {"id": "560989", "x": 24.39, "y": -8.96, "position": "LCB"}, {"id": "11897", "x": 25.08, "y": 19.54, "position": "RB"}, {"id": "50982", "x": 18.54, "y": -21.19, "position": "LB"}, {"id": "795530", "x": 6.22, "y": 7.86, "position": "LM"}, {"id": "51694", "x": 8.25, "y": -6.11, "position": "RM"}, {"id": "560987", "x": -3.45, "y": 15.68, "position": "RW"}, {"id": "966114", "x": -1.09, "y": -25.9, "position": "LW"}, {"id": "560984", "x": -1.83, "y": 2.39, "position": "CF"}, {"id": "966112", "x": -1.89, "y": -7.3, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 17.79, "y": 5.92, "z": 0.23}} +{"frame_id": 30267, "original_frame_id": 30287, "timestamp": "2024-12-21 06:00:03.700000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.9, "y": 0.36, "position": "GK"}, {"id": "965697", "x": -17.66, "y": -6.63, "position": "RCB"}, {"id": "69111", "x": -21.82, "y": 3.8, "position": "LCB"}, {"id": "51043", "x": -15.01, "y": -17.8, "position": "RB"}, {"id": "560983", "x": -20.17, "y": 13.24, "position": "LB"}, {"id": "51002", "x": -8.76, "y": 3.09, "position": "LDM"}, {"id": "287934", "x": -8.77, "y": -2.51, "position": "RDM"}, {"id": "560882", "x": 4.78, "y": 8.78, "position": "CAM"}, {"id": "797298", "x": -4.25, "y": -21.9, "position": "RW"}, {"id": "560986", "x": -2.37, "y": 17.78, "position": "LW"}, {"id": "795537", "x": 4.65, "y": -7.21, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.85, "y": 0.55, "position": "GK"}, {"id": "809166", "x": 22.29, "y": 6.56, "position": "RCB"}, {"id": "560989", "x": 24.41, "y": -8.89, "position": "LCB"}, {"id": "11897", "x": 25.13, "y": 19.61, "position": "RB"}, {"id": "50982", "x": 18.54, "y": -21.22, "position": "LB"}, {"id": "795530", "x": 6.26, "y": 8.0, "position": "LM"}, {"id": "51694", "x": 8.21, "y": -6.0, "position": "RM"}, {"id": "560987", "x": -3.71, "y": 15.51, "position": "RW"}, {"id": "966114", "x": -1.16, "y": -26.04, "position": "LW"}, {"id": "560984", "x": -2.06, "y": 2.58, "position": "CF"}, {"id": "966112", "x": -2.05, "y": -7.14, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 18.78, "y": 6.32, "z": 0.23}} +{"frame_id": 30268, "original_frame_id": 30288, "timestamp": "2024-12-21 06:00:03.800000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.86, "y": 0.39, "position": "GK"}, {"id": "965697", "x": -17.6, "y": -6.54, "position": "RCB"}, {"id": "69111", "x": -21.62, "y": 3.9, "position": "LCB"}, {"id": "51043", "x": -14.97, "y": -17.72, "position": "RB"}, {"id": "560983", "x": -20.11, "y": 13.18, "position": "LB"}, {"id": "51002", "x": -8.62, "y": 3.31, "position": "LDM"}, {"id": "287934", "x": -8.71, "y": -2.44, "position": "RDM"}, {"id": "560882", "x": 5.29, "y": 8.85, "position": "CAM"}, {"id": "797298", "x": -4.22, "y": -22.01, "position": "RW"}, {"id": "560986", "x": -2.22, "y": 17.84, "position": "LW"}, {"id": "795537", "x": 4.95, "y": -6.86, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.87, "y": 0.62, "position": "GK"}, {"id": "809166", "x": 22.34, "y": 6.86, "position": "RCB"}, {"id": "560989", "x": 24.42, "y": -8.81, "position": "LCB"}, {"id": "11897", "x": 25.17, "y": 19.69, "position": "RB"}, {"id": "50982", "x": 18.53, "y": -21.25, "position": "LB"}, {"id": "795530", "x": 6.28, "y": 8.14, "position": "LM"}, {"id": "51694", "x": 8.17, "y": -5.88, "position": "RM"}, {"id": "560987", "x": -3.97, "y": 15.34, "position": "RW"}, {"id": "966114", "x": -1.22, "y": -26.17, "position": "LW"}, {"id": "560984", "x": -2.3, "y": 2.76, "position": "CF"}, {"id": "966112", "x": -2.21, "y": -6.96, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 19.74, "y": 6.63, "z": 0.22}} +{"frame_id": 30269, "original_frame_id": 30289, "timestamp": "2024-12-21 06:00:03.900000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.81, "y": 0.43, "position": "GK"}, {"id": "965697", "x": -17.54, "y": -6.45, "position": "RCB"}, {"id": "69111", "x": -21.42, "y": 4.01, "position": "LCB"}, {"id": "51043", "x": -14.93, "y": -17.63, "position": "RB"}, {"id": "560983", "x": -20.06, "y": 13.12, "position": "LB"}, {"id": "51002", "x": -8.47, "y": 3.55, "position": "LDM"}, {"id": "287934", "x": -8.64, "y": -2.35, "position": "RDM"}, {"id": "560882", "x": 5.81, "y": 8.93, "position": "CAM"}, {"id": "797298", "x": -4.16, "y": -22.11, "position": "RW"}, {"id": "560986", "x": -2.05, "y": 17.9, "position": "LW"}, {"id": "795537", "x": 5.24, "y": -6.51, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.89, "y": 0.7, "position": "GK"}, {"id": "809166", "x": 22.4, "y": 7.16, "position": "RCB"}, {"id": "560989", "x": 24.42, "y": -8.72, "position": "LCB"}, {"id": "11897", "x": 25.21, "y": 19.77, "position": "RB"}, {"id": "50982", "x": 18.51, "y": -21.28, "position": "LB"}, {"id": "795530", "x": 6.3, "y": 8.29, "position": "LM"}, {"id": "51694", "x": 8.13, "y": -5.77, "position": "RM"}, {"id": "560987", "x": -4.24, "y": 15.17, "position": "RW"}, {"id": "966114", "x": -1.28, "y": -26.27, "position": "LW"}, {"id": "560984", "x": -2.55, "y": 2.95, "position": "CF"}, {"id": "966112", "x": -2.37, "y": -6.78, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 20.64, "y": 6.89, "z": 0.21}} +{"frame_id": 30270, "original_frame_id": 30290, "timestamp": "2024-12-21 06:00:04+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.75, "y": 0.47, "position": "GK"}, {"id": "965697", "x": -17.48, "y": -6.35, "position": "RCB"}, {"id": "69111", "x": -21.21, "y": 4.12, "position": "LCB"}, {"id": "51043", "x": -14.9, "y": -17.53, "position": "RB"}, {"id": "560983", "x": -20.02, "y": 13.07, "position": "LB"}, {"id": "51002", "x": -8.31, "y": 3.8, "position": "LDM"}, {"id": "287934", "x": -8.59, "y": -2.25, "position": "RDM"}, {"id": "560882", "x": 6.34, "y": 9.02, "position": "CAM"}, {"id": "797298", "x": -4.09, "y": -22.19, "position": "RW"}, {"id": "560986", "x": -1.86, "y": 17.97, "position": "LW"}, {"id": "795537", "x": 5.53, "y": -6.15, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.91, "y": 0.77, "position": "GK"}, {"id": "809166", "x": 22.47, "y": 7.45, "position": "RCB"}, {"id": "560989", "x": 24.43, "y": -8.63, "position": "LCB"}, {"id": "11897", "x": 25.23, "y": 19.86, "position": "RB"}, {"id": "50982", "x": 18.48, "y": -21.3, "position": "LB"}, {"id": "795530", "x": 6.31, "y": 8.45, "position": "LM"}, {"id": "51694", "x": 8.09, "y": -5.65, "position": "RM"}, {"id": "560987", "x": -4.51, "y": 15.01, "position": "RW"}, {"id": "966114", "x": -1.34, "y": -26.35, "position": "LW"}, {"id": "560984", "x": -2.81, "y": 3.12, "position": "CF"}, {"id": "966112", "x": -2.53, "y": -6.58, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 21.43, "y": 7.2, "z": 0.2}} +{"frame_id": 30271, "original_frame_id": 30291, "timestamp": "2024-12-21 06:00:04.100000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.7, "y": 0.51, "position": "GK"}, {"id": "965697", "x": -17.42, "y": -6.24, "position": "RCB"}, {"id": "69111", "x": -21.02, "y": 4.24, "position": "LCB"}, {"id": "51043", "x": -14.86, "y": -17.43, "position": "RB"}, {"id": "560983", "x": -19.97, "y": 13.04, "position": "LB"}, {"id": "51002", "x": -8.15, "y": 4.07, "position": "LDM"}, {"id": "287934", "x": -8.54, "y": -2.14, "position": "RDM"}, {"id": "560882", "x": 6.86, "y": 9.12, "position": "CAM"}, {"id": "797298", "x": -3.99, "y": -22.26, "position": "RW"}, {"id": "560986", "x": -1.67, "y": 18.03, "position": "LW"}, {"id": "795537", "x": 5.82, "y": -5.79, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.92, "y": 0.84, "position": "GK"}, {"id": "809166", "x": 22.55, "y": 7.74, "position": "RCB"}, {"id": "560989", "x": 24.43, "y": -8.53, "position": "LCB"}, {"id": "11897", "x": 25.24, "y": 19.96, "position": "RB"}, {"id": "50982", "x": 18.45, "y": -21.32, "position": "LB"}, {"id": "795530", "x": 6.31, "y": 8.62, "position": "LM"}, {"id": "51694", "x": 8.04, "y": -5.53, "position": "RM"}, {"id": "560987", "x": -4.78, "y": 14.86, "position": "RW"}, {"id": "966114", "x": -1.41, "y": -26.42, "position": "LW"}, {"id": "560984", "x": -3.09, "y": 3.28, "position": "CF"}, {"id": "966112", "x": -2.68, "y": -6.38, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 22.07, "y": 7.65, "z": 0.21}} +{"frame_id": 30272, "original_frame_id": 30292, "timestamp": "2024-12-21 06:00:04.200000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.65, "y": 0.55, "position": "GK"}, {"id": "965697", "x": -17.37, "y": -6.12, "position": "RCB"}, {"id": "69111", "x": -20.83, "y": 4.36, "position": "LCB"}, {"id": "51043", "x": -14.83, "y": -17.32, "position": "RB"}, {"id": "560983", "x": -19.94, "y": 13.03, "position": "LB"}, {"id": "51002", "x": -8.0, "y": 4.35, "position": "LDM"}, {"id": "287934", "x": -8.5, "y": -2.01, "position": "RDM"}, {"id": "560882", "x": 7.4, "y": 9.23, "position": "CAM"}, {"id": "797298", "x": -3.88, "y": -22.31, "position": "RW"}, {"id": "560986", "x": -1.46, "y": 18.08, "position": "LW"}, {"id": "795537", "x": 6.11, "y": -5.42, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.93, "y": 0.92, "position": "GK"}, {"id": "809166", "x": 22.65, "y": 8.02, "position": "RCB"}, {"id": "560989", "x": 24.44, "y": -8.43, "position": "LCB"}, {"id": "11897", "x": 25.24, "y": 20.07, "position": "RB"}, {"id": "50982", "x": 18.41, "y": -21.33, "position": "LB"}, {"id": "795530", "x": 6.31, "y": 8.8, "position": "LM"}, {"id": "51694", "x": 8.0, "y": -5.39, "position": "RM"}, {"id": "560987", "x": -5.06, "y": 14.73, "position": "RW"}, {"id": "966114", "x": -1.47, "y": -26.47, "position": "LW"}, {"id": "560984", "x": -3.38, "y": 3.44, "position": "CF"}, {"id": "966112", "x": -2.83, "y": -6.16, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 22.54, "y": 8.23, "z": 0.23}} +{"frame_id": 30273, "original_frame_id": 30293, "timestamp": "2024-12-21 06:00:04.300000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.6, "y": 0.59, "position": "GK"}, {"id": "965697", "x": -17.31, "y": -6.0, "position": "RCB"}, {"id": "69111", "x": -20.65, "y": 4.49, "position": "LCB"}, {"id": "51043", "x": -14.8, "y": -17.21, "position": "RB"}, {"id": "560983", "x": -19.9, "y": 13.05, "position": "LB"}, {"id": "51002", "x": -7.84, "y": 4.64, "position": "LDM"}, {"id": "287934", "x": -8.47, "y": -1.87, "position": "RDM"}, {"id": "560882", "x": 7.93, "y": 9.34, "position": "CAM"}, {"id": "797298", "x": -3.75, "y": -22.35, "position": "RW"}, {"id": "560986", "x": -1.24, "y": 18.14, "position": "LW"}, {"id": "795537", "x": 6.4, "y": -5.05, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.95, "y": 1.0, "position": "GK"}, {"id": "809166", "x": 22.75, "y": 8.3, "position": "RCB"}, {"id": "560989", "x": 24.45, "y": -8.33, "position": "LCB"}, {"id": "11897", "x": 25.23, "y": 20.2, "position": "RB"}, {"id": "50982", "x": 18.37, "y": -21.33, "position": "LB"}, {"id": "795530", "x": 6.3, "y": 8.99, "position": "LM"}, {"id": "51694", "x": 7.95, "y": -5.25, "position": "RM"}, {"id": "560987", "x": -5.34, "y": 14.6, "position": "RW"}, {"id": "966114", "x": -1.53, "y": -26.51, "position": "LW"}, {"id": "560984", "x": -3.69, "y": 3.58, "position": "CF"}, {"id": "966112", "x": -2.98, "y": -5.93, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 22.86, "y": 8.74, "z": 0.26}} +{"frame_id": 30274, "original_frame_id": 30294, "timestamp": "2024-12-21 06:00:04.400000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.55, "y": 0.63, "position": "GK"}, {"id": "965697", "x": -17.27, "y": -5.86, "position": "RCB"}, {"id": "69111", "x": -20.47, "y": 4.63, "position": "LCB"}, {"id": "51043", "x": -14.77, "y": -17.09, "position": "RB"}, {"id": "560983", "x": -19.86, "y": 13.1, "position": "LB"}, {"id": "51002", "x": -7.69, "y": 4.95, "position": "LDM"}, {"id": "287934", "x": -8.45, "y": -1.71, "position": "RDM"}, {"id": "560882", "x": 8.47, "y": 9.46, "position": "CAM"}, {"id": "797298", "x": -3.6, "y": -22.37, "position": "RW"}, {"id": "560986", "x": -1.01, "y": 18.19, "position": "LW"}, {"id": "795537", "x": 6.69, "y": -4.67, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.96, "y": 1.09, "position": "GK"}, {"id": "809166", "x": 22.87, "y": 8.56, "position": "RCB"}, {"id": "560989", "x": 24.47, "y": -8.22, "position": "LCB"}, {"id": "11897", "x": 25.21, "y": 20.33, "position": "RB"}, {"id": "50982", "x": 18.33, "y": -21.32, "position": "LB"}, {"id": "795530", "x": 6.28, "y": 9.19, "position": "LM"}, {"id": "51694", "x": 7.9, "y": -5.09, "position": "RM"}, {"id": "560987", "x": -5.61, "y": 14.49, "position": "RW"}, {"id": "966114", "x": -1.58, "y": -26.53, "position": "LW"}, {"id": "560984", "x": -4.01, "y": 3.72, "position": "CF"}, {"id": "966112", "x": -3.12, "y": -5.69, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.09, "y": 9.04, "z": 0.27}} +{"frame_id": 30275, "original_frame_id": 30295, "timestamp": "2024-12-21 06:00:04.500000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.5, "y": 0.68, "position": "GK"}, {"id": "965697", "x": -17.23, "y": -5.73, "position": "RCB"}, {"id": "69111", "x": -20.3, "y": 4.78, "position": "LCB"}, {"id": "51043", "x": -14.74, "y": -16.96, "position": "RB"}, {"id": "560983", "x": -19.82, "y": 13.18, "position": "LB"}, {"id": "51002", "x": -7.53, "y": 5.26, "position": "LDM"}, {"id": "287934", "x": -8.43, "y": -1.54, "position": "RDM"}, {"id": "560882", "x": 9.01, "y": 9.58, "position": "CAM"}, {"id": "797298", "x": -3.44, "y": -22.37, "position": "RW"}, {"id": "560986", "x": -0.77, "y": 18.24, "position": "LW"}, {"id": "795537", "x": 6.98, "y": -4.3, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 41.98, "y": 1.18, "position": "GK"}, {"id": "809166", "x": 22.99, "y": 8.83, "position": "RCB"}, {"id": "560989", "x": 24.48, "y": -8.11, "position": "LCB"}, {"id": "11897", "x": 25.19, "y": 20.47, "position": "RB"}, {"id": "50982", "x": 18.28, "y": -21.3, "position": "LB"}, {"id": "795530", "x": 6.26, "y": 9.4, "position": "LM"}, {"id": "51694", "x": 7.84, "y": -4.93, "position": "RM"}, {"id": "560987", "x": -5.89, "y": 14.39, "position": "RW"}, {"id": "966114", "x": -1.64, "y": -26.54, "position": "LW"}, {"id": "560984", "x": -4.34, "y": 3.84, "position": "CF"}, {"id": "966112", "x": -3.26, "y": -5.44, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.34, "y": 9.2, "z": 0.23}} +{"frame_id": 30276, "original_frame_id": 30296, "timestamp": "2024-12-21 06:00:04.600000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.45, "y": 0.74, "position": "GK"}, {"id": "965697", "x": -17.2, "y": -5.58, "position": "RCB"}, {"id": "69111", "x": -20.14, "y": 4.92, "position": "LCB"}, {"id": "51043", "x": -14.71, "y": -16.83, "position": "RB"}, {"id": "560983", "x": -19.78, "y": 13.29, "position": "LB"}, {"id": "51002", "x": -7.38, "y": 5.58, "position": "LDM"}, {"id": "287934", "x": -8.42, "y": -1.35, "position": "RDM"}, {"id": "560882", "x": 9.54, "y": 9.71, "position": "CAM"}, {"id": "797298", "x": -3.27, "y": -22.36, "position": "RW"}, {"id": "560986", "x": -0.51, "y": 18.29, "position": "LW"}, {"id": "795537", "x": 7.28, "y": -3.92, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.0, "y": 1.27, "position": "GK"}, {"id": "809166", "x": 23.13, "y": 9.08, "position": "RCB"}, {"id": "560989", "x": 24.5, "y": -7.99, "position": "LCB"}, {"id": "11897", "x": 25.16, "y": 20.62, "position": "RB"}, {"id": "50982", "x": 18.23, "y": -21.27, "position": "LB"}, {"id": "795530", "x": 6.24, "y": 9.63, "position": "LM"}, {"id": "51694", "x": 7.78, "y": -4.75, "position": "RM"}, {"id": "560987", "x": -6.18, "y": 14.31, "position": "RW"}, {"id": "966114", "x": -1.7, "y": -26.53, "position": "LW"}, {"id": "560984", "x": -4.68, "y": 3.96, "position": "CF"}, {"id": "966112", "x": -3.4, "y": -5.17, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.61, "y": 9.22, "z": 0.18}} +{"frame_id": 30277, "original_frame_id": 30297, "timestamp": "2024-12-21 06:00:04.700000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.4, "y": 0.79, "position": "GK"}, {"id": "965697", "x": -17.17, "y": -5.44, "position": "RCB"}, {"id": "69111", "x": -19.99, "y": 5.08, "position": "LCB"}, {"id": "51043", "x": -14.69, "y": -16.69, "position": "RB"}, {"id": "560983", "x": -19.74, "y": 13.42, "position": "LB"}, {"id": "51002", "x": -7.23, "y": 5.9, "position": "LDM"}, {"id": "287934", "x": -8.41, "y": -1.14, "position": "RDM"}, {"id": "560882", "x": 10.08, "y": 9.86, "position": "CAM"}, {"id": "797298", "x": -3.08, "y": -22.32, "position": "RW"}, {"id": "560986", "x": -0.25, "y": 18.34, "position": "LW"}, {"id": "795537", "x": 7.58, "y": -3.55, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.02, "y": 1.36, "position": "GK"}, {"id": "809166", "x": 23.27, "y": 9.33, "position": "RCB"}, {"id": "560989", "x": 24.52, "y": -7.88, "position": "LCB"}, {"id": "11897", "x": 25.12, "y": 20.78, "position": "RB"}, {"id": "50982", "x": 18.17, "y": -21.24, "position": "LB"}, {"id": "795530", "x": 6.22, "y": 9.87, "position": "LM"}, {"id": "51694", "x": 7.71, "y": -4.56, "position": "RM"}, {"id": "560987", "x": -6.47, "y": 14.24, "position": "RW"}, {"id": "966114", "x": -1.76, "y": -26.52, "position": "LW"}, {"id": "560984", "x": -5.04, "y": 4.06, "position": "CF"}, {"id": "966112", "x": -3.53, "y": -4.89, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.85, "y": 9.24, "z": 0.19}} +{"frame_id": 30278, "original_frame_id": 30298, "timestamp": "2024-12-21 06:00:04.800000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.35, "y": 0.86, "position": "GK"}, {"id": "965697", "x": -17.15, "y": -5.29, "position": "RCB"}, {"id": "69111", "x": -19.84, "y": 5.23, "position": "LCB"}, {"id": "51043", "x": -14.66, "y": -16.54, "position": "RB"}, {"id": "560983", "x": -19.69, "y": 13.59, "position": "LB"}, {"id": "51002", "x": -7.07, "y": 6.23, "position": "LDM"}, {"id": "287934", "x": -8.39, "y": -0.93, "position": "RDM"}, {"id": "560882", "x": 10.61, "y": 10.01, "position": "CAM"}, {"id": "797298", "x": -2.89, "y": -22.27, "position": "RW"}, {"id": "560986", "x": 0.03, "y": 18.39, "position": "LW"}, {"id": "795537", "x": 7.87, "y": -3.18, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.04, "y": 1.46, "position": "GK"}, {"id": "809166", "x": 23.42, "y": 9.56, "position": "RCB"}, {"id": "560989", "x": 24.54, "y": -7.75, "position": "LCB"}, {"id": "11897", "x": 25.09, "y": 20.95, "position": "RB"}, {"id": "50982", "x": 18.11, "y": -21.2, "position": "LB"}, {"id": "795530", "x": 6.21, "y": 10.12, "position": "LM"}, {"id": "51694", "x": 7.63, "y": -4.36, "position": "RM"}, {"id": "560987", "x": -6.76, "y": 14.19, "position": "RW"}, {"id": "966114", "x": -1.82, "y": -26.48, "position": "LW"}, {"id": "560984", "x": -5.41, "y": 4.16, "position": "CF"}, {"id": "966112", "x": -3.67, "y": -4.6, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.93, "y": 9.67, "z": 0.22}} +{"frame_id": 30279, "original_frame_id": 30299, "timestamp": "2024-12-21 06:00:04.900000+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.3, "y": 0.92, "position": "GK"}, {"id": "965697", "x": -17.13, "y": -5.14, "position": "RCB"}, {"id": "69111", "x": -19.7, "y": 5.39, "position": "LCB"}, {"id": "51043", "x": -14.62, "y": -16.39, "position": "RB"}, {"id": "560983", "x": -19.63, "y": 13.77, "position": "LB"}, {"id": "51002", "x": -6.91, "y": 6.55, "position": "LDM"}, {"id": "287934", "x": -8.37, "y": -0.69, "position": "RDM"}, {"id": "560882", "x": 11.12, "y": 10.18, "position": "CAM"}, {"id": "797298", "x": -2.68, "y": -22.19, "position": "RW"}, {"id": "560986", "x": 0.32, "y": 18.45, "position": "LW"}, {"id": "795537", "x": 8.17, "y": -2.81, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.06, "y": 1.56, "position": "GK"}, {"id": "809166", "x": 23.58, "y": 9.78, "position": "RCB"}, {"id": "560989", "x": 24.55, "y": -7.63, "position": "LCB"}, {"id": "11897", "x": 25.05, "y": 21.13, "position": "RB"}, {"id": "50982", "x": 18.04, "y": -21.16, "position": "LB"}, {"id": "795530", "x": 6.21, "y": 10.38, "position": "LM"}, {"id": "51694", "x": 7.55, "y": -4.14, "position": "RM"}, {"id": "560987", "x": -7.06, "y": 14.15, "position": "RW"}, {"id": "966114", "x": -1.88, "y": -26.44, "position": "LW"}, {"id": "560984", "x": -5.79, "y": 4.24, "position": "CF"}, {"id": "966112", "x": -3.82, "y": -4.29, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.93, "y": 10.72, "z": 0.22}} +{"frame_id": 30280, "original_frame_id": 30300, "timestamp": "2024-12-21 06:00:05+00:00", "period": "second_half", "match": {"id": "1925299"}, "ball_status": true, "teams": {"home": {"id": "1802", "players": [{"id": "50999", "x": -41.24, "y": 0.99, "position": "GK"}, {"id": "965697", "x": -17.11, "y": -4.98, "position": "RCB"}, {"id": "69111", "x": -19.57, "y": 5.56, "position": "LCB"}, {"id": "51043", "x": -14.59, "y": -16.23, "position": "RB"}, {"id": "560983", "x": -19.57, "y": 13.96, "position": "LB"}, {"id": "51002", "x": -6.74, "y": 6.88, "position": "LDM"}, {"id": "287934", "x": -8.35, "y": -0.45, "position": "RDM"}, {"id": "560882", "x": 11.62, "y": 10.36, "position": "CAM"}, {"id": "797298", "x": -2.46, "y": -22.09, "position": "RW"}, {"id": "560986", "x": 0.61, "y": 18.52, "position": "LW"}, {"id": "795537", "x": 8.47, "y": -2.44, "position": "CF"}], "name": "Brisbane Roar FC"}, "away": {"id": "871", "players": [{"id": "560985", "x": 42.08, "y": 1.66, "position": "GK"}, {"id": "809166", "x": 23.74, "y": 9.98, "position": "RCB"}, {"id": "560989", "x": 24.57, "y": -7.51, "position": "LCB"}, {"id": "11897", "x": 25.01, "y": 21.31, "position": "RB"}, {"id": "50982", "x": 17.96, "y": -21.12, "position": "LB"}, {"id": "795530", "x": 6.23, "y": 10.66, "position": "LM"}, {"id": "51694", "x": 7.45, "y": -3.91, "position": "RM"}, {"id": "560987", "x": -7.36, "y": 14.13, "position": "RW"}, {"id": "966114", "x": -1.94, "y": -26.38, "position": "LW"}, {"id": "560984", "x": -6.17, "y": 4.31, "position": "CF"}, {"id": "966112", "x": -3.96, "y": -3.98, "position": "CF"}], "name": "Perth Glory Football Club"}}, "ball": {"x": 23.95, "y": 12.15, "z": 0.21}} diff --git a/kloppy/tests/files/skillcorner_v3_meta_data-2.json b/kloppy/tests/files/skillcorner_v3_meta_data-2.json new file mode 100644 index 000000000..10779035f --- /dev/null +++ b/kloppy/tests/files/skillcorner_v3_meta_data-2.json @@ -0,0 +1 @@ +{"id":1886347,"home_team_score":2,"away_team_score":0,"date_time":"2024-11-30T04:00:00Z","stadium":{"id":3811,"name":"Mount Smart Stadium","city":"Auckland","capacity":25000},"home_team":{"id":4177,"name":"Auckland FC","short_name":"Auckland FC","acronym":"AUC"},"home_team_kit":{"id":14025,"team_id":4177,"season":{"id":95,"start_year":2024,"end_year":2025,"name":"2024/2025"},"name":"Home","jersey_color":"#2800f0","number_color":"#ffffff"},"away_team":{"id":1805,"name":"Newcastle United Jets FC","short_name":"Newcastle","acronym":"NEW"},"away_team_kit":{"id":10376,"team_id":1805,"season":{"id":29,"start_year":2024,"end_year":2024,"name":"2024"},"name":"away","jersey_color":"#ffffff","number_color":"#000000"},"home_team_coach":null,"away_team_coach":null,"home_team_playing_time":{"minutes_tip":31.13,"minutes_otip":22.2},"away_team_playing_time":{"minutes_tip":22.2,"minutes_otip":31.13},"competition_edition":{"id":870,"competition":{"id":61,"area":"AUS","name":"A-League","gender":"male","age_group":"adult"},"season":{"id":95,"start_year":2024,"end_year":2025,"name":"2024/2025"},"name":"AUS - A-League - 2024/2025"},"match_periods":[{"period":1,"name":"period_1","start_frame":10,"end_frame":27790,"duration_frames":27780,"duration_minutes":46.3},{"period":2,"name":"period_2","start_frame":27800,"end_frame":59060,"duration_frames":31260,"duration_minutes":52.1}],"competition_round":{"id":611,"name":"Round 6","round_number":6,"potential_overtime":false},"referees":[],"players":[{"player_role":{"id":15,"position_group":"Center Forward","name":"Center Forward","acronym":"CF"},"start_time":"00:00:00","end_time":"01:25:21","number":10,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":29.55,"minutes_otip":18.76,"start_frame":10,"end_frame":52009,"minutes_played":86.65,"minutes_played_regular_time":86.65},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.34,"minutes_otip":7.73,"start_frame":27800,"end_frame":52009,"minutes_played":40.35}]},"team_player_id":1507965,"team_id":4177,"id":38673,"first_name":"Guillermo Luis","last_name":"May Bartesaghi","short_name":"G. May","birthday":"1998-03-11","trackable_object":39794,"gender":"male"},{"player_role":{"id":20,"position_group":"Full Back","name":"Right Back","acronym":"RB"},"start_time":"00:00:00","end_time":null,"number":17,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507968,"team_id":4177,"id":51713,"first_name":"Callan","last_name":"Elliot","short_name":"C. Elliott","birthday":"1999-07-07","trackable_object":52839,"gender":"male"},{"player_role":{"id":15,"position_group":"Center Forward","name":"Center Forward","acronym":"CF"},"start_time":"00:00:00","end_time":"01:16:37","number":22,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":26.28,"minutes_otip":17.94,"start_frame":10,"end_frame":46769,"minutes_played":77.91,"minutes_played_regular_time":77.91},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":8.07,"minutes_otip":6.91,"start_frame":27800,"end_frame":46769,"minutes_played":31.62}]},"team_player_id":1507963,"team_id":4177,"id":50951,"first_name":"Jake","last_name":"Brimmer","short_name":"J. Brimmer","birthday":"1998-04-03","trackable_object":52077,"gender":"male"},{"player_role":{"id":21,"position_group":"Midfield","name":"Left Defensive Midfield","acronym":"LDM"},"start_time":"00:00:00","end_time":"01:24:58","number":19,"yellow_card":1,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":18.76,"minutes_otip":29.55,"start_frame":10,"end_frame":51779,"minutes_played":86.26,"minutes_played_regular_time":86.26},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":7.73,"minutes_otip":11.34,"start_frame":27800,"end_frame":51779,"minutes_played":39.97}]},"team_player_id":1087119,"team_id":1805,"id":50978,"first_name":"Callum","last_name":"Timmins","short_name":"C. Timmins","birthday":"1999-12-23","trackable_object":52104,"gender":"male"},{"player_role":{"id":19,"position_group":"Full Back","name":"Left Back","acronym":"LB"},"start_time":"00:00:00","end_time":null,"number":15,"yellow_card":0,"red_card":0,"injured":false,"goal":1,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507956,"team_id":4177,"id":133498,"first_name":"Francis","last_name":"De Vries","short_name":"F. De Vries","birthday":"1994-11-28","trackable_object":135053,"gender":"male"},{"player_role":{"id":3,"position_group":"Central Defender","name":"Left Center Back","acronym":"LCB"},"start_time":"00:00:00","end_time":null,"number":4,"yellow_card":1,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507971,"team_id":4177,"id":33697,"first_name":"Nando","last_name":"Pijnaker","short_name":"N. Pijnaker","birthday":"1999-02-25","trackable_object":34805,"gender":"male"},{"player_role":{"id":4,"position_group":"Central Defender","name":"Right Center Back","acronym":"RCB"},"start_time":"00:00:00","end_time":null,"number":23,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507974,"team_id":4177,"id":51667,"first_name":"Daniel","last_name":"Hall","short_name":"D. Hall","birthday":"1999-06-14","trackable_object":52793,"gender":"male"},{"player_role":{"id":7,"position_group":"Midfield","name":"Defensive Midfield","acronym":"DM"},"start_time":"00:00:00","end_time":null,"number":6,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507966,"team_id":4177,"id":14736,"first_name":"Louis","last_name":"Verstraete","short_name":"L. Verstraete","birthday":"1999-05-04","trackable_object":14933,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":28,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1508548,"team_id":1805,"id":966125,"first_name":"Will ","last_name":"Dobson","short_name":"W. Will Dobson","birthday":null,"trackable_object":967688,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":21,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1508547,"team_id":1805,"id":966124,"first_name":"Noah Paul","last_name":"James","short_name":"N. James","birthday":"2001-02-14","trackable_object":967687,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":27,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1229663,"team_id":1805,"id":808965,"first_name":"Nathan","last_name":"Grimaldi","short_name":"N. Grimaldi","birthday":"2001-09-15","trackable_object":810528,"gender":"male"},{"player_role":{"id":12,"position_group":"Wide Attacker","name":"Left Winger","acronym":"LW"},"start_time":"00:00:00","end_time":null,"number":39,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1087109,"team_id":1805,"id":735573,"first_name":"Thomas","last_name":"Aquilina","short_name":"T. Aquilina","birthday":"2001-02-02","trackable_object":737136,"gender":"male"},{"player_role":{"id":0,"position_group":"Other","name":"Goalkeeper","acronym":"GK"},"start_time":"00:00:00","end_time":null,"number":1,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1204873,"team_id":1805,"id":51009,"first_name":"Ryan","last_name":"Scott","short_name":"R. Scott","birthday":"1995-12-18","trackable_object":52135,"gender":"male"},{"player_role":{"id":4,"position_group":"Central Defender","name":"Right Center Back","acronym":"RCB"},"start_time":"00:00:00","end_time":null,"number":4,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1204875,"team_id":1805,"id":176224,"first_name":"Phillip","last_name":"Cancar","short_name":"P. Cancar","birthday":"2001-05-11","trackable_object":177779,"gender":"male"},{"player_role":{"id":19,"position_group":"Full Back","name":"Left Back","acronym":"LB"},"start_time":"00:00:00","end_time":null,"number":33,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1087123,"team_id":1805,"id":735578,"first_name":"Mark","last_name":"Natta","short_name":"M. Natta","birthday":"2002-11-28","trackable_object":737141,"gender":"male"},{"player_role":{"id":22,"position_group":"Midfield","name":"Right Defensive Midfield","acronym":"RDM"},"start_time":"00:00:00","end_time":null,"number":17,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1087114,"team_id":1805,"id":735574,"first_name":"Kosta","last_name":"Grozos","short_name":"K. Grozos","birthday":"2000-08-10","trackable_object":737137,"gender":"male"},{"player_role":{"id":20,"position_group":"Full Back","name":"Right Back","acronym":"RB"},"start_time":"00:00:00","end_time":null,"number":14,"yellow_card":1,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1087111,"team_id":1805,"id":50983,"first_name":"Dane","last_name":"Ingham","short_name":"D. Ingham","birthday":"1999-06-08","trackable_object":52109,"gender":"male"},{"player_role":{"id":3,"position_group":"Central Defender","name":"Left Center Back","acronym":"LCB"},"start_time":"00:00:00","end_time":null,"number":15,"yellow_card":1,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":22.2,"minutes_otip":31.13,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":11.18,"minutes_otip":12.92,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1508538,"team_id":1805,"id":51649,"first_name":"Aleksandar","last_name":"Šušnjar","short_name":"A. Šušnjar","birthday":"1995-08-19","trackable_object":52775,"gender":"male"},{"player_role":{"id":12,"position_group":"Wide Attacker","name":"Left Winger","acronym":"LW"},"start_time":"00:00:00","end_time":null,"number":14,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507975,"team_id":4177,"id":965685,"first_name":"Liam ","last_name":"Gillion","short_name":"L. Gillion","birthday":"2002-10-17","trackable_object":967248,"gender":"male"},{"player_role":{"id":15,"position_group":"Center Forward","name":"Center Forward","acronym":"CF"},"start_time":"01:07:43","end_time":null,"number":13,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":6.28,"minutes_otip":6.56,"start_frame":41430,"end_frame":59059,"minutes_played":29.38,"minutes_played_regular_time":29.38},"by_period":[{"name":"period_2","minutes_tip":6.28,"minutes_otip":6.56,"start_frame":41430,"end_frame":59059,"minutes_played":29.38}]},"team_player_id":1204871,"team_id":1805,"id":795506,"first_name":"Clayton","last_name":"Taylor","short_name":"C. Taylor","birthday":"2004-03-01","trackable_object":797069,"gender":"male"},{"player_role":{"id":11,"position_group":"Midfield","name":"Attacking Midfield","acronym":"AM"},"start_time":"01:24:58","end_time":null,"number":6,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":3.45,"minutes_otip":1.58,"start_frame":51780,"end_frame":59059,"minutes_played":12.13,"minutes_played_regular_time":12.13},"by_period":[{"name":"period_2","minutes_tip":3.45,"minutes_otip":1.58,"start_frame":51780,"end_frame":59059,"minutes_played":12.13}]},"team_player_id":1508543,"team_id":1805,"id":797297,"first_name":"Matthew","last_name":"Scarcella","short_name":"M. Scarcella","birthday":"2004-03-04","trackable_object":798860,"gender":"male"},{"player_role":{"id":11,"position_group":"Midfield","name":"Attacking Midfield","acronym":"AM"},"start_time":"01:00:15","end_time":null,"number":23,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":6.98,"minutes_otip":7.76,"start_frame":36950,"end_frame":59059,"minutes_played":36.85,"minutes_played_regular_time":36.85},"by_period":[{"name":"period_2","minutes_tip":6.98,"minutes_otip":7.76,"start_frame":36950,"end_frame":59059,"minutes_played":36.85}]},"team_player_id":1204874,"team_id":1805,"id":560992,"first_name":"Daniel","last_name":"Wilmering","short_name":"D. Wilmering","birthday":"2000-12-19","trackable_object":562549,"gender":"male"},{"player_role":{"id":21,"position_group":"Midfield","name":"Left Defensive Midfield","acronym":"LDM"},"start_time":"01:24:58","end_time":null,"number":29,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":3.45,"minutes_otip":1.58,"start_frame":51780,"end_frame":59059,"minutes_played":12.13,"minutes_played_regular_time":12.13},"by_period":[{"name":"period_2","minutes_tip":3.45,"minutes_otip":1.58,"start_frame":51780,"end_frame":59059,"minutes_played":12.13}]},"team_player_id":1216248,"team_id":1805,"id":800320,"first_name":"Justin","last_name":"Vidic","short_name":"J. Vidic","birthday":"2004-04-29","trackable_object":801883,"gender":"male"},{"player_role":{"id":13,"position_group":"Wide Attacker","name":"Right Winger","acronym":"RW"},"start_time":"01:09:53","end_time":null,"number":25,"yellow_card":0,"red_card":0,"injured":false,"goal":1,"own_goal":0,"playing_time":{"total":{"minutes_tip":6.49,"minutes_otip":5.75,"start_frame":42730,"end_frame":59059,"minutes_played":27.22,"minutes_played_regular_time":27.22},"by_period":[{"name":"period_2","minutes_tip":6.49,"minutes_otip":5.75,"start_frame":42730,"end_frame":59059,"minutes_played":27.22}]},"team_player_id":1507969,"team_id":4177,"id":43829,"first_name":"Neyder Stiven","last_name":"Moreno Betancur","short_name":"N. Moreno","birthday":"1997-02-09","trackable_object":44955,"gender":"male"},{"player_role":{"id":2,"position_group":"Central Defender","name":"Center Back","acronym":"CB"},"start_time":"01:25:21","end_time":null,"number":5,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":1.58,"minutes_otip":3.45,"start_frame":52010,"end_frame":59059,"minutes_played":11.75,"minutes_played_regular_time":11.75},"by_period":[{"name":"period_2","minutes_tip":1.58,"minutes_otip":3.45,"start_frame":52010,"end_frame":59059,"minutes_played":11.75}]},"team_player_id":1507955,"team_id":4177,"id":31147,"first_name":"Tommy","last_name":"Smith","short_name":"T. Smith","birthday":"1990-03-31","trackable_object":32245,"gender":"male"},{"player_role":{"id":15,"position_group":"Center Forward","name":"Center Forward","acronym":"CF"},"start_time":"01:16:37","end_time":null,"number":9,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":4.85,"minutes_otip":4.27,"start_frame":46770,"end_frame":59059,"minutes_played":20.48,"minutes_played_regular_time":20.48},"by_period":[{"name":"period_2","minutes_tip":4.85,"minutes_otip":4.27,"start_frame":46770,"end_frame":59059,"minutes_played":20.48}]},"team_player_id":1507964,"team_id":4177,"id":163972,"first_name":"Max","last_name":"Mata","short_name":"M. Mata","birthday":"2000-07-10","trackable_object":165527,"gender":"male"},{"player_role":{"id":13,"position_group":"Wide Attacker","name":"Right Winger","acronym":"RW"},"start_time":"00:00:00","end_time":"01:09:53","number":27,"yellow_card":1,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":24.64,"minutes_otip":16.45,"start_frame":10,"end_frame":42729,"minutes_played":71.18,"minutes_played_regular_time":71.18},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":6.43,"minutes_otip":5.42,"start_frame":27800,"end_frame":42729,"minutes_played":24.88}]},"team_player_id":1507961,"team_id":4177,"id":133501,"first_name":"Logan","last_name":"Rogerson","short_name":"L. Rogerson","birthday":"1998-05-28","trackable_object":135056,"gender":"male"},{"player_role":{"id":11,"position_group":"Midfield","name":"Attacking Midfield","acronym":"AM"},"start_time":"00:00:00","end_time":null,"number":28,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507957,"team_id":4177,"id":23418,"first_name":"Luis Felipe","last_name":"Gallegos Leiva","short_name":"F. Gallegos","birthday":"1991-12-03","trackable_object":24342,"gender":"male"},{"player_role":{"id":11,"position_group":"Midfield","name":"Attacking Midfield","acronym":"AM"},"start_time":"00:00:00","end_time":"01:00:15","number":37,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":15.23,"minutes_otip":23.37,"start_frame":10,"end_frame":36949,"minutes_played":61.55,"minutes_played_regular_time":61.55},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":4.2,"minutes_otip":5.16,"start_frame":27800,"end_frame":36949,"minutes_played":15.25}]},"team_player_id":1204872,"team_id":1805,"id":795507,"first_name":"Lachlan","last_name":"Bayliss","short_name":"L. Bayliss","birthday":"2002-07-24","trackable_object":797070,"gender":"male"},{"player_role":{"id":13,"position_group":"Wide Attacker","name":"Right Winger","acronym":"RW"},"start_time":"00:00:00","end_time":"01:24:58","number":7,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":18.76,"minutes_otip":29.55,"start_frame":10,"end_frame":51779,"minutes_played":86.26,"minutes_played_regular_time":86.26},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":7.73,"minutes_otip":11.34,"start_frame":27800,"end_frame":51779,"minutes_played":39.97}]},"team_player_id":1508540,"team_id":1805,"id":795505,"first_name":"Eli","last_name":"Adams","short_name":"E. Adams","birthday":"2002-03-12","trackable_object":797068,"gender":"male"},{"player_role":{"id":15,"position_group":"Center Forward","name":"Center Forward","acronym":"CF"},"start_time":"00:00:00","end_time":"01:07:43","number":22,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":15.92,"minutes_otip":24.57,"start_frame":10,"end_frame":41429,"minutes_played":69.02,"minutes_played_regular_time":69.02},"by_period":[{"name":"period_1","minutes_tip":11.03,"minutes_otip":18.21,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":4.89,"minutes_otip":6.36,"start_frame":27800,"end_frame":41429,"minutes_played":22.72}]},"team_player_id":1508542,"team_id":1805,"id":966120,"first_name":"Benjamin","last_name":"Gibson","short_name":"B. Gibson","birthday":"2003-01-03","trackable_object":967683,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":3,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1507960,"team_id":4177,"id":23928,"first_name":"Scott","last_name":"Galloway","short_name":"S. Galloway","birthday":"1995-04-25","trackable_object":24886,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":1,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1507962,"team_id":4177,"id":14355,"first_name":"Michael","last_name":"Woud","short_name":"M. Woud","birthday":"1999-01-16","trackable_object":14552,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":8,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1507973,"team_id":4177,"id":965684,"first_name":"Luis","last_name":"Toomey","short_name":"L. Toomey","birthday":"2001-07-01","trackable_object":967247,"gender":"male"},{"player_role":{"id":17,"position_group":"Other","name":"Substitute","acronym":"SUB"},"start_time":null,"end_time":null,"number":7,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":null,"by_period":[]},"team_player_id":1507959,"team_id":4177,"id":133495,"first_name":"Cameron Drew","last_name":"Howieson","short_name":"C. Howieson","birthday":"1994-12-22","trackable_object":135050,"gender":"male"},{"player_role":{"id":0,"position_group":"Other","name":"Goalkeeper","acronym":"GK"},"start_time":"00:00:00","end_time":null,"number":12,"yellow_card":0,"red_card":0,"injured":false,"goal":0,"own_goal":0,"playing_time":{"total":{"minutes_tip":31.13,"minutes_otip":22.2,"start_frame":10,"end_frame":59059,"minutes_played":98.4,"minutes_played_regular_time":98.4},"by_period":[{"name":"period_1","minutes_tip":18.21,"minutes_otip":11.03,"start_frame":10,"end_frame":27790,"minutes_played":46.3},{"name":"period_2","minutes_tip":12.92,"minutes_otip":11.18,"start_frame":27800,"end_frame":59059,"minutes_played":52.1}]},"team_player_id":1507970,"team_id":4177,"id":285188,"first_name":"Alex Noah","last_name":"Paulsen","short_name":"A. Paulsen","birthday":"2002-07-04","trackable_object":286745,"gender":"male"}],"status":"closed","home_team_side":["right_to_left","left_to_right"],"ball":{"trackable_object":55},"pitch_length":104,"pitch_width":68} \ No newline at end of file diff --git a/kloppy/tests/files/skillcorner_v3_raw_data-2.jsonl b/kloppy/tests/files/skillcorner_v3_raw_data-2.jsonl new file mode 100644 index 000000000..b5d6c6cf1 --- /dev/null +++ b/kloppy/tests/files/skillcorner_v3_raw_data-2.jsonl @@ -0,0 +1,17 @@ +{"frame": 10, "timestamp": "00:00:00.00", "period": 1, "ball_data": {"x": 0.32, "y": 0.38, "z": 0.13, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -52.52, "y_top_left": 39.0, "x_bottom_left": -23.21, "y_bottom_left": -37.05, "x_bottom_right": 22.76, "y_bottom_right": -36.88, "x_top_right": 50.99, "y_top_right": 39.0}, "player_data": [{"x": -39.63, "y": -0.08, "player_id": 51009, "is_detected": false}, {"x": -19.21, "y": -9.18, "player_id": 176224, "is_detected": true}, {"x": -21.83, "y": 0.47, "player_id": 51649, "is_detected": true}, {"x": -1.16, "y": -32.47, "player_id": 50983, "is_detected": true}, {"x": -18.88, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.41, "y": 7.13, "player_id": 50978, "is_detected": true}, {"x": -9.51, "y": -5.01, "player_id": 735574, "is_detected": true}, {"x": -2.5, "y": 7.27, "player_id": 795507, "is_detected": false}, {"x": -0.78, "y": -20.69, "player_id": 795505, "is_detected": true}, {"x": -1.85, "y": 18.8, "player_id": 735573, "is_detected": true}, {"x": 1.27, "y": 0.88, "player_id": 966120, "is_detected": true}, {"x": 40.47, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 17.85, "y": 5.52, "player_id": 51667, "is_detected": true}, {"x": 16.78, "y": -3.67, "player_id": 33697, "is_detected": true}, {"x": 17.03, "y": 14.69, "player_id": 51713, "is_detected": true}, {"x": 17.55, "y": -13.6, "player_id": 133498, "is_detected": true}, {"x": 11.7, "y": 6.73, "player_id": 14736, "is_detected": true}, {"x": 10.16, "y": -2.12, "player_id": 23418, "is_detected": true}, {"x": 0.91, "y": 18.96, "player_id": 133501, "is_detected": false}, {"x": 7.74, "y": -16.27, "player_id": 965685, "is_detected": true}, {"x": 0.4, "y": -8.28, "player_id": 50951, "is_detected": true}, {"x": 2.67, "y": 9.94, "player_id": 38673, "is_detected": true}]} +{"frame": 11, "timestamp": "00:00:00.10", "period": 1, "ball_data": {"x": 0.54, "y": 0.08, "z": 0.22, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -52.37, "y_top_left": 39.0, "x_bottom_left": -23.18, "y_bottom_left": -36.89, "x_bottom_right": 22.69, "y_bottom_right": -36.7, "x_top_right": 50.74, "y_top_right": 39.0}, "player_data": [{"x": -39.86, "y": -0.13, "player_id": 51009, "is_detected": false}, {"x": -19.23, "y": -9.23, "player_id": 176224, "is_detected": true}, {"x": -21.82, "y": 0.43, "player_id": 51649, "is_detected": true}, {"x": -1.14, "y": -32.57, "player_id": 50983, "is_detected": true}, {"x": -18.98, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.37, "y": 7.13, "player_id": 50978, "is_detected": true}, {"x": -9.48, "y": -5.08, "player_id": 735574, "is_detected": true}, {"x": -2.29, "y": 7.33, "player_id": 795507, "is_detected": false}, {"x": -0.84, "y": -20.66, "player_id": 795505, "is_detected": true}, {"x": -1.82, "y": 18.78, "player_id": 735573, "is_detected": true}, {"x": 1.24, "y": 0.74, "player_id": 966120, "is_detected": true}, {"x": 40.65, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 17.92, "y": 5.42, "player_id": 51667, "is_detected": true}, {"x": 16.81, "y": -3.7, "player_id": 33697, "is_detected": true}, {"x": 17.09, "y": 14.62, "player_id": 51713, "is_detected": true}, {"x": 17.57, "y": -13.63, "player_id": 133498, "is_detected": true}, {"x": 11.58, "y": 6.69, "player_id": 14736, "is_detected": true}, {"x": 10.13, "y": -2.22, "player_id": 23418, "is_detected": true}, {"x": 0.98, "y": 18.84, "player_id": 133501, "is_detected": false}, {"x": 7.78, "y": -16.35, "player_id": 965685, "is_detected": true}, {"x": 0.44, "y": -8.39, "player_id": 50951, "is_detected": true}, {"x": 2.61, "y": 9.91, "player_id": 38673, "is_detected": true}]} +{"frame": 12, "timestamp": "00:00:00.20", "period": 1, "ball_data": {"x": 0.57, "y": -0.07, "z": 0.19, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -52.11, "y_top_left": 39.0, "x_bottom_left": -23.09, "y_bottom_left": -36.74, "x_bottom_right": 22.58, "y_bottom_right": -36.58, "x_top_right": 50.48, "y_top_right": 39.0}, "player_data": [{"x": -40.06, "y": -0.18, "player_id": 51009, "is_detected": false}, {"x": -19.24, "y": -9.27, "player_id": 176224, "is_detected": true}, {"x": -21.81, "y": 0.4, "player_id": 51649, "is_detected": true}, {"x": -1.13, "y": -32.66, "player_id": 50983, "is_detected": true}, {"x": -19.07, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.32, "y": 7.14, "player_id": 50978, "is_detected": true}, {"x": -9.46, "y": -5.15, "player_id": 735574, "is_detected": true}, {"x": -2.09, "y": 7.39, "player_id": 795507, "is_detected": false}, {"x": -0.9, "y": -20.64, "player_id": 795505, "is_detected": true}, {"x": -1.8, "y": 18.77, "player_id": 735573, "is_detected": true}, {"x": 1.22, "y": 0.61, "player_id": 966120, "is_detected": true}, {"x": 40.83, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 17.98, "y": 5.34, "player_id": 51667, "is_detected": true}, {"x": 16.83, "y": -3.72, "player_id": 33697, "is_detected": true}, {"x": 17.13, "y": 14.55, "player_id": 51713, "is_detected": true}, {"x": 17.59, "y": -13.66, "player_id": 133498, "is_detected": true}, {"x": 11.46, "y": 6.66, "player_id": 14736, "is_detected": true}, {"x": 10.09, "y": -2.31, "player_id": 23418, "is_detected": true}, {"x": 1.05, "y": 18.74, "player_id": 133501, "is_detected": false}, {"x": 7.8, "y": -16.43, "player_id": 965685, "is_detected": true}, {"x": 0.48, "y": -8.49, "player_id": 50951, "is_detected": true}, {"x": 2.56, "y": 9.87, "player_id": 38673, "is_detected": true}]} +{"frame": 13, "timestamp": "00:00:00.30", "period": 1, "ball_data": {"x": 0.56, "y": -0.07, "z": 0.14, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -52.02, "y_top_left": 39.0, "x_bottom_left": -23.09, "y_bottom_left": -36.67, "x_bottom_right": 22.54, "y_bottom_right": -36.51, "x_top_right": 50.28, "y_top_right": 39.0}, "player_data": [{"x": -40.24, "y": -0.22, "player_id": 51009, "is_detected": false}, {"x": -19.25, "y": -9.31, "player_id": 176224, "is_detected": true}, {"x": -21.8, "y": 0.36, "player_id": 51649, "is_detected": true}, {"x": -1.12, "y": -32.74, "player_id": 50983, "is_detected": true}, {"x": -19.16, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.28, "y": 7.14, "player_id": 50978, "is_detected": true}, {"x": -9.45, "y": -5.2, "player_id": 735574, "is_detected": true}, {"x": -1.91, "y": 7.45, "player_id": 795507, "is_detected": false}, {"x": -0.95, "y": -20.62, "player_id": 795505, "is_detected": true}, {"x": -1.76, "y": 18.76, "player_id": 735573, "is_detected": true}, {"x": 1.19, "y": 0.51, "player_id": 966120, "is_detected": true}, {"x": 40.98, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 18.04, "y": 5.26, "player_id": 51667, "is_detected": true}, {"x": 16.86, "y": -3.73, "player_id": 33697, "is_detected": true}, {"x": 17.17, "y": 14.48, "player_id": 51713, "is_detected": true}, {"x": 17.6, "y": -13.68, "player_id": 133498, "is_detected": true}, {"x": 11.34, "y": 6.63, "player_id": 14736, "is_detected": true}, {"x": 10.06, "y": -2.39, "player_id": 23418, "is_detected": true}, {"x": 1.11, "y": 18.63, "player_id": 133501, "is_detected": false}, {"x": 7.83, "y": -16.51, "player_id": 965685, "is_detected": true}, {"x": 0.51, "y": -8.57, "player_id": 50951, "is_detected": true}, {"x": 2.5, "y": 9.83, "player_id": 38673, "is_detected": true}]} +{"frame": 14, "timestamp": "00:00:00.40", "period": 1, "ball_data": {"x": 0.59, "y": -0.03, "z": 0.14, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.78, "y_top_left": 39.0, "x_bottom_left": -22.98, "y_bottom_left": -36.59, "x_bottom_right": 22.49, "y_bottom_right": -36.4, "x_top_right": 50.16, "y_top_right": 39.0}, "player_data": [{"x": -40.39, "y": -0.25, "player_id": 51009, "is_detected": false}, {"x": -19.26, "y": -9.36, "player_id": 176224, "is_detected": true}, {"x": -21.78, "y": 0.34, "player_id": 51649, "is_detected": true}, {"x": -1.11, "y": -32.82, "player_id": 50983, "is_detected": true}, {"x": -19.25, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.23, "y": 7.13, "player_id": 50978, "is_detected": true}, {"x": -9.44, "y": -5.24, "player_id": 735574, "is_detected": true}, {"x": -1.75, "y": 7.52, "player_id": 795507, "is_detected": false}, {"x": -1.0, "y": -20.6, "player_id": 795505, "is_detected": true}, {"x": -1.73, "y": 18.75, "player_id": 735573, "is_detected": true}, {"x": 1.17, "y": 0.41, "player_id": 966120, "is_detected": true}, {"x": 41.12, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 18.08, "y": 5.19, "player_id": 51667, "is_detected": true}, {"x": 16.88, "y": -3.74, "player_id": 33697, "is_detected": true}, {"x": 17.19, "y": 14.43, "player_id": 51713, "is_detected": true}, {"x": 17.62, "y": -13.71, "player_id": 133498, "is_detected": true}, {"x": 11.22, "y": 6.61, "player_id": 14736, "is_detected": true}, {"x": 10.02, "y": -2.45, "player_id": 23418, "is_detected": true}, {"x": 1.17, "y": 18.53, "player_id": 133501, "is_detected": false}, {"x": 7.84, "y": -16.57, "player_id": 965685, "is_detected": true}, {"x": 0.53, "y": -8.64, "player_id": 50951, "is_detected": true}, {"x": 2.45, "y": 9.79, "player_id": 38673, "is_detected": true}]} +{"frame": 15, "timestamp": "00:00:00.50", "period": 1, "ball_data": {"x": 0.63, "y": 0.02, "z": 0.14, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.61, "y_top_left": 39.0, "x_bottom_left": -22.99, "y_bottom_left": -36.5, "x_bottom_right": 22.4, "y_bottom_right": -36.42, "x_top_right": 49.91, "y_top_right": 39.0}, "player_data": [{"x": -40.52, "y": -0.28, "player_id": 51009, "is_detected": false}, {"x": -19.27, "y": -9.4, "player_id": 176224, "is_detected": true}, {"x": -21.77, "y": 0.31, "player_id": 51649, "is_detected": true}, {"x": -1.1, "y": -32.88, "player_id": 50983, "is_detected": true}, {"x": -19.33, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.19, "y": 7.12, "player_id": 50978, "is_detected": true}, {"x": -9.43, "y": -5.28, "player_id": 735574, "is_detected": true}, {"x": -1.6, "y": 7.59, "player_id": 795507, "is_detected": false}, {"x": -1.04, "y": -20.59, "player_id": 795505, "is_detected": true}, {"x": -1.7, "y": 18.75, "player_id": 735573, "is_detected": true}, {"x": 1.15, "y": 0.34, "player_id": 966120, "is_detected": true}, {"x": 41.25, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 18.12, "y": 5.13, "player_id": 51667, "is_detected": true}, {"x": 16.9, "y": -3.74, "player_id": 33697, "is_detected": true}, {"x": 17.2, "y": 14.37, "player_id": 51713, "is_detected": true}, {"x": 17.63, "y": -13.73, "player_id": 133498, "is_detected": true}, {"x": 11.11, "y": 6.59, "player_id": 14736, "is_detected": true}, {"x": 9.98, "y": -2.51, "player_id": 23418, "is_detected": true}, {"x": 1.22, "y": 18.44, "player_id": 133501, "is_detected": false}, {"x": 7.85, "y": -16.64, "player_id": 965685, "is_detected": true}, {"x": 0.55, "y": -8.69, "player_id": 50951, "is_detected": true}, {"x": 2.4, "y": 9.75, "player_id": 38673, "is_detected": true}]} +{"frame": 16, "timestamp": "00:00:00.60", "period": 1, "ball_data": {"x": 0.65, "y": 0.03, "z": 0.14, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.55, "y_top_left": 39.0, "x_bottom_left": -22.93, "y_bottom_left": -36.56, "x_bottom_right": 22.38, "y_bottom_right": -36.37, "x_top_right": 49.8, "y_top_right": 39.0}, "player_data": [{"x": -40.63, "y": -0.3, "player_id": 51009, "is_detected": false}, {"x": -19.28, "y": -9.43, "player_id": 176224, "is_detected": true}, {"x": -21.75, "y": 0.29, "player_id": 51649, "is_detected": true}, {"x": -1.09, "y": -32.93, "player_id": 50983, "is_detected": true}, {"x": -19.41, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -7.14, "y": 7.11, "player_id": 50978, "is_detected": true}, {"x": -9.43, "y": -5.3, "player_id": 735574, "is_detected": true}, {"x": -1.47, "y": 7.66, "player_id": 795507, "is_detected": false}, {"x": -1.08, "y": -20.57, "player_id": 795505, "is_detected": true}, {"x": -1.66, "y": 18.75, "player_id": 735573, "is_detected": true}, {"x": 1.13, "y": 0.28, "player_id": 966120, "is_detected": true}, {"x": 41.36, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 18.15, "y": 5.08, "player_id": 51667, "is_detected": true}, {"x": 16.93, "y": -3.74, "player_id": 33697, "is_detected": true}, {"x": 17.2, "y": 14.33, "player_id": 51713, "is_detected": true}, {"x": 17.63, "y": -13.75, "player_id": 133498, "is_detected": true}, {"x": 11.0, "y": 6.58, "player_id": 14736, "is_detected": true}, {"x": 9.93, "y": -2.56, "player_id": 23418, "is_detected": true}, {"x": 1.26, "y": 18.35, "player_id": 133501, "is_detected": false}, {"x": 7.85, "y": -16.69, "player_id": 965685, "is_detected": true}, {"x": 0.56, "y": -8.73, "player_id": 50951, "is_detected": true}, {"x": 2.35, "y": 9.7, "player_id": 38673, "is_detected": true}]} +{"frame": 17, "timestamp": "00:00:00.70", "period": 1, "ball_data": {"x": 0.66, "y": 0.05, "z": 0.14, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.62, "y_top_left": 39.0, "x_bottom_left": -22.93, "y_bottom_left": -36.58, "x_bottom_right": 22.37, "y_bottom_right": -36.37, "x_top_right": 49.81, "y_top_right": 39.0}, "player_data": [{"x": -40.71, "y": -0.31, "player_id": 51009, "is_detected": false}, {"x": -19.28, "y": -9.47, "player_id": 176224, "is_detected": true}, {"x": -21.74, "y": 0.27, "player_id": 51649, "is_detected": true}, {"x": -1.08, "y": -32.98, "player_id": 50983, "is_detected": true}, {"x": -19.48, "y": 15.72, "player_id": 735578, "is_detected": true}, {"x": -7.09, "y": 7.09, "player_id": 50978, "is_detected": true}, {"x": -9.44, "y": -5.31, "player_id": 735574, "is_detected": true}, {"x": -1.35, "y": 7.73, "player_id": 795507, "is_detected": false}, {"x": -1.11, "y": -20.56, "player_id": 795505, "is_detected": true}, {"x": -1.62, "y": 18.76, "player_id": 735573, "is_detected": true}, {"x": 1.11, "y": 0.24, "player_id": 966120, "is_detected": true}, {"x": 41.45, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 18.17, "y": 5.04, "player_id": 51667, "is_detected": true}, {"x": 16.95, "y": -3.73, "player_id": 33697, "is_detected": true}, {"x": 17.19, "y": 14.29, "player_id": 51713, "is_detected": true}, {"x": 17.64, "y": -13.78, "player_id": 133498, "is_detected": true}, {"x": 10.89, "y": 6.56, "player_id": 14736, "is_detected": true}, {"x": 9.89, "y": -2.6, "player_id": 23418, "is_detected": true}, {"x": 1.3, "y": 18.26, "player_id": 133501, "is_detected": false}, {"x": 7.85, "y": -16.74, "player_id": 965685, "is_detected": true}, {"x": 0.56, "y": -8.75, "player_id": 50951, "is_detected": true}, {"x": 2.3, "y": 9.65, "player_id": 38673, "is_detected": true}]} +{"frame": 18, "timestamp": "00:00:00.80", "period": 1, "ball_data": {"x": 0.67, "y": 0.06, "z": 0.15, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.57, "y_top_left": 39.0, "x_bottom_left": -22.89, "y_bottom_left": -36.59, "x_bottom_right": 22.3, "y_bottom_right": -36.39, "x_top_right": 49.71, "y_top_right": 39.0}, "player_data": [{"x": -40.72, "y": -0.29, "player_id": 51009, "is_detected": false}, {"x": -19.27, "y": -9.5, "player_id": 176224, "is_detected": true}, {"x": -21.72, "y": 0.27, "player_id": 51649, "is_detected": true}, {"x": -1.08, "y": -32.99, "player_id": 50983, "is_detected": true}, {"x": -19.57, "y": 15.7, "player_id": 735578, "is_detected": true}, {"x": -7.05, "y": 7.04, "player_id": 50978, "is_detected": true}, {"x": -9.47, "y": -5.3, "player_id": 735574, "is_detected": true}, {"x": -1.3, "y": 7.83, "player_id": 795507, "is_detected": false}, {"x": -1.14, "y": -20.54, "player_id": 795505, "is_detected": true}, {"x": -1.57, "y": 18.81, "player_id": 735573, "is_detected": true}, {"x": 1.11, "y": 0.24, "player_id": 966120, "is_detected": true}, {"x": 41.49, "y": 0.25, "player_id": 285188, "is_detected": false}, {"x": 18.17, "y": 5.02, "player_id": 51667, "is_detected": true}, {"x": 16.94, "y": -3.7, "player_id": 33697, "is_detected": true}, {"x": 17.15, "y": 14.27, "player_id": 51713, "is_detected": true}, {"x": 17.64, "y": -13.78, "player_id": 133498, "is_detected": true}, {"x": 10.77, "y": 6.58, "player_id": 14736, "is_detected": true}, {"x": 9.84, "y": -2.61, "player_id": 23418, "is_detected": true}, {"x": 1.35, "y": 18.22, "player_id": 133501, "is_detected": false}, {"x": 7.81, "y": -16.77, "player_id": 965685, "is_detected": true}, {"x": 0.55, "y": -8.74, "player_id": 50951, "is_detected": true}, {"x": 2.26, "y": 9.61, "player_id": 38673, "is_detected": true}]} +{"frame": 19, "timestamp": "00:00:00.90", "period": 1, "ball_data": {"x": 0.69, "y": 0.01, "z": 0.15, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.48, "y_top_left": 39.0, "x_bottom_left": -22.86, "y_bottom_left": -36.57, "x_bottom_right": 22.32, "y_bottom_right": -36.37, "x_top_right": 49.74, "y_top_right": 39.0}, "player_data": [{"x": -40.73, "y": -0.27, "player_id": 51009, "is_detected": false}, {"x": -19.27, "y": -9.53, "player_id": 176224, "is_detected": true}, {"x": -21.71, "y": 0.25, "player_id": 51649, "is_detected": true}, {"x": -1.09, "y": -33.03, "player_id": 50983, "is_detected": true}, {"x": -19.64, "y": 15.69, "player_id": 735578, "is_detected": true}, {"x": -7.0, "y": 7.0, "player_id": 50978, "is_detected": true}, {"x": -9.5, "y": -5.28, "player_id": 735574, "is_detected": true}, {"x": -1.25, "y": 7.93, "player_id": 795507, "is_detected": false}, {"x": -1.16, "y": -20.55, "player_id": 795505, "is_detected": true}, {"x": -1.52, "y": 18.84, "player_id": 735573, "is_detected": true}, {"x": 1.1, "y": 0.23, "player_id": 966120, "is_detected": true}, {"x": 41.53, "y": 0.25, "player_id": 285188, "is_detected": false}, {"x": 18.17, "y": 5.01, "player_id": 51667, "is_detected": true}, {"x": 16.96, "y": -3.66, "player_id": 33697, "is_detected": true}, {"x": 17.11, "y": 14.25, "player_id": 51713, "is_detected": true}, {"x": 17.64, "y": -13.8, "player_id": 133498, "is_detected": true}, {"x": 10.67, "y": 6.6, "player_id": 14736, "is_detected": true}, {"x": 9.79, "y": -2.61, "player_id": 23418, "is_detected": true}, {"x": 1.37, "y": 18.16, "player_id": 133501, "is_detected": false}, {"x": 7.79, "y": -16.8, "player_id": 965685, "is_detected": true}, {"x": 0.55, "y": -8.73, "player_id": 50951, "is_detected": true}, {"x": 2.22, "y": 9.56, "player_id": 38673, "is_detected": true}]} +{"frame": 20, "timestamp": "00:00:01.00", "period": 1, "ball_data": {"x": 0.69, "y": -0.05, "z": 0.16, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.46, "y_top_left": 39.0, "x_bottom_left": -22.87, "y_bottom_left": -36.57, "x_bottom_right": 22.29, "y_bottom_right": -36.35, "x_top_right": 49.59, "y_top_right": 39.0}, "player_data": [{"x": -40.74, "y": -0.26, "player_id": 51009, "is_detected": false}, {"x": -19.27, "y": -9.57, "player_id": 176224, "is_detected": true}, {"x": -21.7, "y": 0.25, "player_id": 51649, "is_detected": true}, {"x": -1.1, "y": -33.05, "player_id": 50983, "is_detected": true}, {"x": -19.69, "y": 15.69, "player_id": 735578, "is_detected": true}, {"x": -6.94, "y": 6.96, "player_id": 50978, "is_detected": true}, {"x": -9.52, "y": -5.26, "player_id": 735574, "is_detected": true}, {"x": -1.17, "y": 8.01, "player_id": 795507, "is_detected": false}, {"x": -1.18, "y": -20.55, "player_id": 795505, "is_detected": true}, {"x": -1.47, "y": 18.87, "player_id": 735573, "is_detected": true}, {"x": 1.09, "y": 0.24, "player_id": 966120, "is_detected": true}, {"x": 41.58, "y": 0.24, "player_id": 285188, "is_detected": false}, {"x": 18.17, "y": 4.99, "player_id": 51667, "is_detected": true}, {"x": 16.98, "y": -3.63, "player_id": 33697, "is_detected": true}, {"x": 17.06, "y": 14.23, "player_id": 51713, "is_detected": true}, {"x": 17.62, "y": -13.83, "player_id": 133498, "is_detected": true}, {"x": 10.57, "y": 6.59, "player_id": 14736, "is_detected": true}, {"x": 9.74, "y": -2.61, "player_id": 23418, "is_detected": true}, {"x": 1.39, "y": 18.08, "player_id": 133501, "is_detected": false}, {"x": 7.75, "y": -16.82, "player_id": 965685, "is_detected": true}, {"x": 0.54, "y": -8.71, "player_id": 50951, "is_detected": true}, {"x": 2.17, "y": 9.5, "player_id": 38673, "is_detected": true}]} +{"frame": 21, "timestamp": "00:00:01.10", "period": 1, "ball_data": {"x": 0.67, "y": -0.08, "z": 0.16, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.33, "y_top_left": 39.0, "x_bottom_left": -22.86, "y_bottom_left": -36.49, "x_bottom_right": 22.15, "y_bottom_right": -36.31, "x_top_right": 49.26, "y_top_right": 39.0}, "player_data": [{"x": -40.74, "y": -0.26, "player_id": 51009, "is_detected": false}, {"x": -19.27, "y": -9.6, "player_id": 176224, "is_detected": true}, {"x": -21.68, "y": 0.24, "player_id": 51649, "is_detected": true}, {"x": -1.08, "y": -33.06, "player_id": 50983, "is_detected": true}, {"x": -19.73, "y": 15.69, "player_id": 735578, "is_detected": true}, {"x": -6.87, "y": 6.93, "player_id": 50978, "is_detected": true}, {"x": -9.54, "y": -5.23, "player_id": 735574, "is_detected": true}, {"x": -1.1, "y": 8.06, "player_id": 795507, "is_detected": false}, {"x": -1.2, "y": -20.55, "player_id": 795505, "is_detected": true}, {"x": -1.41, "y": 18.88, "player_id": 735573, "is_detected": true}, {"x": 1.08, "y": 0.26, "player_id": 966120, "is_detected": true}, {"x": 41.62, "y": 0.23, "player_id": 285188, "is_detected": false}, {"x": 18.16, "y": 4.97, "player_id": 51667, "is_detected": true}, {"x": 17.02, "y": -3.61, "player_id": 33697, "is_detected": true}, {"x": 17.0, "y": 14.2, "player_id": 51713, "is_detected": true}, {"x": 17.61, "y": -13.85, "player_id": 133498, "is_detected": true}, {"x": 10.47, "y": 6.58, "player_id": 14736, "is_detected": true}, {"x": 9.69, "y": -2.61, "player_id": 23418, "is_detected": true}, {"x": 1.4, "y": 17.98, "player_id": 133501, "is_detected": false}, {"x": 7.72, "y": -16.84, "player_id": 965685, "is_detected": true}, {"x": 0.52, "y": -8.67, "player_id": 50951, "is_detected": true}, {"x": 2.12, "y": 9.43, "player_id": 38673, "is_detected": true}]} +{"frame": 22, "timestamp": "00:00:01.20", "period": 1, "ball_data": {"x": 0.63, "y": -0.06, "z": 0.18, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.28, "y_top_left": 39.0, "x_bottom_left": -22.83, "y_bottom_left": -36.57, "x_bottom_right": 22.2, "y_bottom_right": -36.37, "x_top_right": 49.34, "y_top_right": 39.0}, "player_data": [{"x": -40.74, "y": -0.27, "player_id": 51009, "is_detected": false}, {"x": -19.28, "y": -9.63, "player_id": 176224, "is_detected": true}, {"x": -21.66, "y": 0.24, "player_id": 51649, "is_detected": true}, {"x": -1.04, "y": -33.08, "player_id": 50983, "is_detected": true}, {"x": -19.79, "y": 15.69, "player_id": 735578, "is_detected": true}, {"x": -6.81, "y": 6.91, "player_id": 50978, "is_detected": true}, {"x": -9.55, "y": -5.2, "player_id": 735574, "is_detected": true}, {"x": -1.0, "y": 8.11, "player_id": 795507, "is_detected": false}, {"x": -1.22, "y": -20.55, "player_id": 795505, "is_detected": true}, {"x": -1.37, "y": 18.88, "player_id": 735573, "is_detected": true}, {"x": 1.05, "y": 0.3, "player_id": 966120, "is_detected": true}, {"x": 41.66, "y": 0.21, "player_id": 285188, "is_detected": false}, {"x": 18.15, "y": 4.95, "player_id": 51667, "is_detected": true}, {"x": 17.06, "y": -3.59, "player_id": 33697, "is_detected": true}, {"x": 16.95, "y": 14.18, "player_id": 51713, "is_detected": true}, {"x": 17.6, "y": -13.88, "player_id": 133498, "is_detected": true}, {"x": 10.36, "y": 6.57, "player_id": 14736, "is_detected": true}, {"x": 9.63, "y": -2.62, "player_id": 23418, "is_detected": true}, {"x": 1.41, "y": 17.88, "player_id": 133501, "is_detected": false}, {"x": 7.7, "y": -16.88, "player_id": 965685, "is_detected": true}, {"x": 0.5, "y": -8.62, "player_id": 50951, "is_detected": true}, {"x": 2.07, "y": 9.38, "player_id": 38673, "is_detected": true}]} +{"frame": 23, "timestamp": "00:00:01.30", "period": 1, "ball_data": {"x": 0.57, "y": 0.03, "z": 0.22, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.24, "y_top_left": 39.0, "x_bottom_left": -22.77, "y_bottom_left": -36.53, "x_bottom_right": 22.14, "y_bottom_right": -36.24, "x_top_right": 49.17, "y_top_right": 39.0}, "player_data": [{"x": -40.75, "y": -0.27, "player_id": 51009, "is_detected": false}, {"x": -19.28, "y": -9.64, "player_id": 176224, "is_detected": true}, {"x": -21.65, "y": 0.24, "player_id": 51649, "is_detected": true}, {"x": -1.0, "y": -33.09, "player_id": 50983, "is_detected": true}, {"x": -19.84, "y": 15.7, "player_id": 735578, "is_detected": true}, {"x": -6.76, "y": 6.9, "player_id": 50978, "is_detected": true}, {"x": -9.56, "y": -5.17, "player_id": 735574, "is_detected": true}, {"x": -0.88, "y": 8.14, "player_id": 795507, "is_detected": false}, {"x": -1.24, "y": -20.55, "player_id": 795505, "is_detected": true}, {"x": -1.33, "y": 18.87, "player_id": 735573, "is_detected": true}, {"x": 1.01, "y": 0.33, "player_id": 966120, "is_detected": true}, {"x": 41.7, "y": 0.19, "player_id": 285188, "is_detected": false}, {"x": 18.13, "y": 4.93, "player_id": 51667, "is_detected": true}, {"x": 17.11, "y": -3.57, "player_id": 33697, "is_detected": true}, {"x": 16.89, "y": 14.15, "player_id": 51713, "is_detected": true}, {"x": 17.59, "y": -13.92, "player_id": 133498, "is_detected": true}, {"x": 10.26, "y": 6.55, "player_id": 14736, "is_detected": true}, {"x": 9.56, "y": -2.64, "player_id": 23418, "is_detected": true}, {"x": 1.39, "y": 17.77, "player_id": 133501, "is_detected": true}, {"x": 7.68, "y": -16.92, "player_id": 965685, "is_detected": true}, {"x": 0.47, "y": -8.57, "player_id": 50951, "is_detected": true}, {"x": 2.03, "y": 9.33, "player_id": 38673, "is_detected": true}]} +{"frame": 24, "timestamp": "00:00:01.40", "period": 1, "ball_data": {"x": 0.53, "y": 0.01, "z": 0.28, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.09, "y_top_left": 39.0, "x_bottom_left": -22.75, "y_bottom_left": -36.47, "x_bottom_right": 22.1, "y_bottom_right": -36.28, "x_top_right": 49.11, "y_top_right": 39.0}, "player_data": [{"x": -40.75, "y": -0.28, "player_id": 51009, "is_detected": false}, {"x": -19.29, "y": -9.66, "player_id": 176224, "is_detected": true}, {"x": -21.65, "y": 0.23, "player_id": 51649, "is_detected": true}, {"x": -0.94, "y": -33.1, "player_id": 50983, "is_detected": true}, {"x": -19.89, "y": 15.71, "player_id": 735578, "is_detected": true}, {"x": -6.71, "y": 6.89, "player_id": 50978, "is_detected": true}, {"x": -9.57, "y": -5.14, "player_id": 735574, "is_detected": true}, {"x": -0.76, "y": 8.16, "player_id": 795507, "is_detected": true}, {"x": -1.24, "y": -20.54, "player_id": 795505, "is_detected": true}, {"x": -1.29, "y": 18.85, "player_id": 735573, "is_detected": true}, {"x": 0.96, "y": 0.37, "player_id": 966120, "is_detected": true}, {"x": 41.75, "y": 0.18, "player_id": 285188, "is_detected": false}, {"x": 18.1, "y": 4.91, "player_id": 51667, "is_detected": true}, {"x": 17.16, "y": -3.56, "player_id": 33697, "is_detected": true}, {"x": 16.83, "y": 14.13, "player_id": 51713, "is_detected": true}, {"x": 17.57, "y": -13.96, "player_id": 133498, "is_detected": true}, {"x": 10.16, "y": 6.53, "player_id": 14736, "is_detected": true}, {"x": 9.48, "y": -2.65, "player_id": 23418, "is_detected": true}, {"x": 1.35, "y": 17.66, "player_id": 133501, "is_detected": true}, {"x": 7.66, "y": -16.97, "player_id": 965685, "is_detected": true}, {"x": 0.41, "y": -8.5, "player_id": 50951, "is_detected": true}, {"x": 1.98, "y": 9.28, "player_id": 38673, "is_detected": true}]} +{"frame": 25, "timestamp": "00:00:01.50", "period": 1, "ball_data": {"x": 0.53, "y": -0.17, "z": 0.31, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -51.18, "y_top_left": 39.0, "x_bottom_left": -22.76, "y_bottom_left": -36.51, "x_bottom_right": 22.12, "y_bottom_right": -36.32, "x_top_right": 49.21, "y_top_right": 39.0}, "player_data": [{"x": -40.75, "y": -0.29, "player_id": 51009, "is_detected": false}, {"x": -19.29, "y": -9.66, "player_id": 176224, "is_detected": true}, {"x": -21.65, "y": 0.23, "player_id": 51649, "is_detected": true}, {"x": -0.88, "y": -33.09, "player_id": 50983, "is_detected": true}, {"x": -19.94, "y": 15.72, "player_id": 735578, "is_detected": true}, {"x": -6.66, "y": 6.9, "player_id": 50978, "is_detected": true}, {"x": -9.57, "y": -5.11, "player_id": 735574, "is_detected": true}, {"x": -0.61, "y": 8.16, "player_id": 795507, "is_detected": true}, {"x": -1.23, "y": -20.53, "player_id": 795505, "is_detected": true}, {"x": -1.25, "y": 18.82, "player_id": 735573, "is_detected": true}, {"x": 0.91, "y": 0.41, "player_id": 966120, "is_detected": true}, {"x": 41.8, "y": 0.16, "player_id": 285188, "is_detected": false}, {"x": 18.07, "y": 4.89, "player_id": 51667, "is_detected": true}, {"x": 17.23, "y": -3.56, "player_id": 33697, "is_detected": true}, {"x": 16.76, "y": 14.11, "player_id": 51713, "is_detected": true}, {"x": 17.56, "y": -14.01, "player_id": 133498, "is_detected": true}, {"x": 10.06, "y": 6.51, "player_id": 14736, "is_detected": true}, {"x": 9.39, "y": -2.68, "player_id": 23418, "is_detected": true}, {"x": 1.3, "y": 17.53, "player_id": 133501, "is_detected": true}, {"x": 7.65, "y": -17.02, "player_id": 965685, "is_detected": true}, {"x": 0.34, "y": -8.43, "player_id": 50951, "is_detected": true}, {"x": 1.93, "y": 9.25, "player_id": 38673, "is_detected": true}]} +{"frame": 26, "timestamp": "00:00:01.60", "period": 1, "ball_data": {"x": 0.57, "y": -0.34, "z": 0.29, "is_detected": true}, "possession": {"player_id": null, "group": null}, "image_corners_projection": {"x_top_left": -50.99, "y_top_left": 39.0, "x_bottom_left": -22.7, "y_bottom_left": -36.46, "x_bottom_right": 22.03, "y_bottom_right": -36.28, "x_top_right": 48.99, "y_top_right": 39.0}, "player_data": [{"x": -40.74, "y": -0.29, "player_id": 51009, "is_detected": false}, {"x": -19.3, "y": -9.66, "player_id": 176224, "is_detected": true}, {"x": -21.66, "y": 0.22, "player_id": 51649, "is_detected": true}, {"x": -0.81, "y": -33.08, "player_id": 50983, "is_detected": true}, {"x": -20.0, "y": 15.73, "player_id": 735578, "is_detected": true}, {"x": -6.61, "y": 6.91, "player_id": 50978, "is_detected": true}, {"x": -9.58, "y": -5.08, "player_id": 735574, "is_detected": true}, {"x": -0.46, "y": 8.16, "player_id": 795507, "is_detected": true}, {"x": -1.2, "y": -20.52, "player_id": 795505, "is_detected": true}, {"x": -1.2, "y": 18.79, "player_id": 735573, "is_detected": true}, {"x": 0.84, "y": 0.45, "player_id": 966120, "is_detected": true}, {"x": 41.85, "y": 0.16, "player_id": 285188, "is_detected": false}, {"x": 18.03, "y": 4.86, "player_id": 51667, "is_detected": true}, {"x": 17.29, "y": -3.55, "player_id": 33697, "is_detected": true}, {"x": 16.69, "y": 14.1, "player_id": 51713, "is_detected": true}, {"x": 17.54, "y": -14.06, "player_id": 133498, "is_detected": true}, {"x": 9.95, "y": 6.49, "player_id": 14736, "is_detected": true}, {"x": 9.28, "y": -2.71, "player_id": 23418, "is_detected": true}, {"x": 1.24, "y": 17.41, "player_id": 133501, "is_detected": true}, {"x": 7.64, "y": -17.08, "player_id": 965685, "is_detected": true}, {"x": 0.24, "y": -8.34, "player_id": 50951, "is_detected": true}, {"x": 1.88, "y": 9.23, "player_id": 38673, "is_detected": true}]} \ No newline at end of file diff --git a/kloppy/tests/test_cdf.py b/kloppy/tests/test_cdf.py new file mode 100644 index 000000000..120c7f9b4 --- /dev/null +++ b/kloppy/tests/test_cdf.py @@ -0,0 +1,297 @@ +from pathlib import Path +import tempfile + +import pytest + +from kloppy import skillcorner, sportec +from kloppy.domain import PositionType, TrackingDataset +from kloppy.infra.serializers.tracking.cdf.helpers import ( + is_valid_cdf_position_code, +) +from kloppy.infra.serializers.tracking.cdf.serializer import ( + CDFOutputs, + CDFTrackingSerializer, +) + + +def mimimum_valid_cdf_output( + dataset, meta_data_validator, tracking_data_validator, tmp_path +): + """Test that CDFTrackingDataSerializer produces valid CDF output.""" + meta_path = tmp_path / "metadata.json" + tracking_path = tmp_path / "tracking.jsonl" + + with pytest.warns( + UserWarning, + ): + dataset.to_cdf( + metadata_output_file=str(meta_path), + tracking_output_file=str(tracking_path), + additional_metadata={}, + ) + + dataset.to_cdf( + metadata_output_file=str(meta_path), + tracking_output_file=str(tracking_path), + additional_metadata={ + "competition": dict( + id="61", + ), + "season": dict( + id="95", + ), + "stadium": dict( + id="2914", + ), + "meta": dict( + tracking=dict(version="v3", collection_timing="post_match") + ), + }, + ) + + meta_data_validator.validate_schema(sample=meta_path) + tracking_data_validator.validate_schema(sample=tracking_path, limit=None) + + +def produces_valid_cdf_output_with_additional_metadata( + dataset, meta_data_validator, tracking_data_validator, tmp_path +): + """Test that CDFTrackingDataSerializer produces valid CDF output with additional metadata.""" + + from cdf.domain import ( + CdfMetaDataSchema, + Competition, + Meta, + Season, + Stadium, + Tracking, + ) + + # Define additional metadata + additional_meta_data = CdfMetaDataSchema( + competition=Competition( + id="61", name="A-League", type="mens", format="league" + ), + season=Season(id="95", name="2024/2025"), + stadium=Stadium( + id="2914", + name="Kayo Stadium", + ), + meta=Meta( + tracking=Tracking( + version="v3", + collection_timing="post_match", + ) + ), + ) + + meta_path = tmp_path / "metadata.json" + tracking_path = tmp_path / "tracking.jsonl" + + dataset.to_cdf( + metadata_output_file=str(meta_path), + tracking_output_file=str(tracking_path), + additional_metadata=additional_meta_data, + ) + + meta_data_validator.validate_schema(sample=meta_path) + tracking_data_validator.validate_schema(sample=tracking_path, limit=None) + + +def serializer_handles_invalid_metadata_types(dataset): + """Test that CDFTrackingDataSerializer handles invalid metadata types gracefully.""" + import cdf + + serializer = CDFTrackingSerializer() + + with ( + tempfile.NamedTemporaryFile( + mode="w+b", suffix=".json", delete=False + ) as meta_file, + tempfile.NamedTemporaryFile( + mode="w+b", suffix=".jsonl", delete=False + ) as tracking_file, + ): + meta_path = meta_file.name + tracking_path = tracking_file.name + + outputs = CDFOutputs(meta_data=meta_file, raw_data=tracking_file) + + # Test with invalid metadata types - should still serialize but may fail validation + invalid_metadata = { + "competition": { + "id": 123, # Should be string + }, + "season": { + "id": ["2024"], # Should be string, not list + }, + "stadium": { + "id": None, # Should be string + "pitch_length": "one hundred five", # Should be float/int + }, + "meta": { + "tracking": { + "fps": "25", # Should be int + "version": 1.0, # Should be string, + "collection_timing": "Nothing", + } + }, + } + + # Serialization should succeed (no type checking in serializer) + success = serializer.serialize( + dataset, outputs, additional_metadata=invalid_metadata + ) + assert success is True + + # The file should be created but validation should fail + meta_validator = cdf.MetaSchemaValidator( + schema=f"cdf/files/v{cdf.VERSION}/schema/meta.json" + ) + + # Validation should fail due to type mismatches + with pytest.raises(Exception): # Could be ValidationError or similar + meta_validator.validate_schema(sample=meta_path) + + # Clean up + Path(meta_path).unlink() + Path(tracking_path).unlink() + + +class TestCDFSerializer: + @pytest.fixture + def raw_data(self, base_dir) -> Path: + return base_dir / "files/sportec_positional.xml" + + @pytest.fixture + def meta_data(self, base_dir) -> Path: + return base_dir / "files/sportec_meta.xml" + + @pytest.fixture + def meta_data_v3(self, base_dir) -> str: + return base_dir / "files/skillcorner_v3_meta_data-2.json" + + @pytest.fixture + def raw_data_v3(self, base_dir) -> str: + return base_dir / "files/skillcorner_v3_raw_data-2.jsonl" + + @pytest.fixture + def dataset_sportec( + self, raw_data: Path, meta_data: Path + ) -> TrackingDataset: + """Load a small Sportec tracking data snippet for testing CDF serialization.""" + return sportec.load_tracking( + raw_data=raw_data, + meta_data=meta_data, + coordinates="sportec", + limit=None, + only_alive=False, + ) + + @pytest.fixture + def dataset_skillcorner(self, raw_data_v3: Path, meta_data_v3: Path): + return skillcorner.load( + meta_data=meta_data_v3, + raw_data=raw_data_v3, + coordinates="skillcorner", + include_empty_frames=True, + only_alive=False, + ) + + @pytest.fixture + def meta_data_validator(self): + import cdf + + # Instantiate Validators + return cdf.MetaSchemaValidator( + schema=f"cdf/files/v{cdf.VERSION}/schema/meta.json" + ) + + @pytest.fixture + def tracking_data_validator(self): + import cdf + + # Instantiate Validators + return cdf.TrackingSchemaValidator( + schema=f"cdf/files/v{cdf.VERSION}/schema/tracking.json" + ) + + def test_produces_valid_cdf_output( + self, + dataset_sportec, + dataset_skillcorner, + tracking_data_validator, + meta_data_validator, + tmp_path, + ): + mimimum_valid_cdf_output( + dataset_sportec, + meta_data_validator, + tracking_data_validator, + tmp_path, + ) + mimimum_valid_cdf_output( + dataset_skillcorner, + meta_data_validator, + tracking_data_validator, + tmp_path, + ) + + def test_produces_valid_cdf_output_with_additional_metadata( + self, + dataset_skillcorner, + dataset_sportec, + tracking_data_validator, + meta_data_validator, + tmp_path, + ): + produces_valid_cdf_output_with_additional_metadata( + dataset_skillcorner, + meta_data_validator, + tracking_data_validator, + tmp_path, + ) + produces_valid_cdf_output_with_additional_metadata( + dataset_sportec, + meta_data_validator, + tracking_data_validator, + tmp_path, + ) + + def test_serializer_handles_invalid_metadata_types( + self, dataset_skillcorner, dataset_sportec + ): + serializer_handles_invalid_metadata_types(dataset=dataset_skillcorner) + serializer_handles_invalid_metadata_types(dataset=dataset_sportec) + + def test_cdf_positions(self): + """ + Make sure we have not introduced any non-cdf supported positions to kloppy PositionType. + If we did, update map_position_type_code_to_cdf + """ + + test_list = [] + + for position in PositionType: + if is_valid_cdf_position_code(position.code): + pass + else: + test_list.append(position.code) + + assert set(test_list) == set( + [ + "UNK", + "DEF", + "FB", + "LWB", + "RWB", + "MID", + "DM", + "AM", + "WM", + "ATT", + "LF", + "ST", + "RF", + ] + ) diff --git a/kloppy/tests/test_deserializer_cdf.py b/kloppy/tests/test_deserializer_cdf.py new file mode 100644 index 000000000..99d86ce5e --- /dev/null +++ b/kloppy/tests/test_deserializer_cdf.py @@ -0,0 +1,285 @@ +from pathlib import Path + +import pytest + +from kloppy import cdf +from kloppy.domain import ( + BallState, + DatasetType, + Ground, + Orientation, + Point3D, + Provider, +) + + +class TestCDFDeserializer: + @pytest.fixture + def meta_data(self, base_dir) -> Path: + return base_dir / "files/cdf_metadata.json" + + @pytest.fixture + def raw_data(self, base_dir) -> Path: + return base_dir / "files/cdf_tracking.jsonl" + + def test_correct_deserialization( + self, meta_data: Path, raw_data: Path + ) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + assert dataset.dataset_type == DatasetType.TRACKING + assert dataset.metadata.provider == Provider.CDF + + assert dataset.metadata.frame_rate == 10 + + assert len(dataset.metadata.teams) == 2 + home_team = dataset.metadata.teams[0] + away_team = dataset.metadata.teams[1] + + assert home_team.ground == Ground.HOME + assert home_team.name == "Brisbane Roar FC" + assert home_team.team_id == "1802" + + assert away_team.ground == Ground.AWAY + assert away_team.name == "Perth Glory Football Club" + assert away_team.team_id == "871" + + assert len(home_team.players) == 18 + assert len(away_team.players) == 18 + + # Check periods + assert len(dataset.metadata.periods) == 2 + assert dataset.metadata.periods[0].id == 1 + assert dataset.metadata.periods[1].id == 2 + + assert len(dataset.records) == 101 + + first_frame = dataset.records[0] + assert first_frame.frame_id == 0 + assert first_frame.period.id == 1 + + assert first_frame.ball_coordinates is not None + assert isinstance(first_frame.ball_coordinates, Point3D) + assert first_frame.ball_coordinates.x == pytest.approx(0.66, abs=0.01) + assert first_frame.ball_coordinates.y == pytest.approx(-0.58, abs=0.01) + assert first_frame.ball_coordinates.z == pytest.approx(0.29, abs=0.01) + + assert first_frame.ball_state == BallState.DEAD + + def test_correct_normalized_deserialization( + self, meta_data: Path, raw_data: Path + ) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + # No coordinates specified = normalized + ) + + first_frame = dataset.records[0] + # First home player in metadata is player_id "51050" + home_player = dataset.metadata.teams[0].players[0] + assert home_player.player_id == "51050" + + coords = first_frame.players_coordinates[home_player] + # Raw CDF coords: x=-14.92, y=0.45 + # Normalized coordinates (kloppy transforms to 0-1 range) + assert coords.x == pytest.approx(0.358, abs=0.001) + assert coords.y == pytest.approx(0.493, abs=0.001) + + def test_limit(self, meta_data: Path, raw_data: Path) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + limit=50, + coordinates="cdf", + ) + + assert len(dataset.records) == 50 + + def test_sample_rate(self, meta_data: Path, raw_data: Path) -> None: + dataset_all = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + dataset_sampled = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + sample_rate=0.5, + coordinates="cdf", + ) + + assert len(dataset_all.records) == 101 + assert len(dataset_sampled.records) == 51 + + def test_only_alive(self, meta_data: Path, raw_data: Path) -> None: + dataset_all = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + dataset_alive = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=True, + coordinates="cdf", + ) + + assert len(dataset_all.records) == 101 + assert len(dataset_alive.records) == 48 + + for frame in dataset_alive.records: + assert frame.ball_state == BallState.ALIVE + + def test_ball_coordinates_3d(self, meta_data: Path, raw_data: Path) -> None: + """Test that 3D ball coordinates are correctly parsed.""" + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + first_frame = dataset.records[0] + assert first_frame.ball_coordinates is not None + assert isinstance(first_frame.ball_coordinates, Point3D) + assert hasattr(first_frame.ball_coordinates, "z") + + def test_player_coordinates(self, meta_data: Path, raw_data: Path) -> None: + """Test that player coordinates are correctly parsed.""" + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + first_frame = dataset.records[0] + + home_team = dataset.metadata.teams[0] + away_team = dataset.metadata.teams[1] + + # First frame has 11 home + 11 away = 22 players + assert len(first_frame.players_data) == 22 + + for player in first_frame.players_data.keys(): + assert player.team in [home_team, away_team] + + def test_periods(self, meta_data: Path, raw_data: Path) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + assert len(dataset.metadata.periods) == 2 + + period_1 = dataset.metadata.periods[0] + period_2 = dataset.metadata.periods[1] + + assert period_1.id == 1 + assert period_2.id == 2 + + first_half_frames = [f for f in dataset.records if f.period.id == 1] + second_half_frames = [f for f in dataset.records if f.period.id == 2] + + assert len(first_half_frames) == 50 + assert len(second_half_frames) == 51 + + def test_game_metadata(self, meta_data: Path, raw_data: Path) -> None: + """Test that game metadata is correctly parsed.""" + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + assert dataset.metadata.game_id == "1925299" + + assert dataset.metadata.date is not None + assert dataset.metadata.date.year == 2024 + assert dataset.metadata.date.month == 12 + assert dataset.metadata.date.day == 21 + + def test_player_jersey_numbers( + self, meta_data: Path, raw_data: Path + ) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + home_team = dataset.metadata.teams[0] + + gk = home_team.get_player_by_jersey_number(1) + assert gk is not None + assert gk.player_id == "50999" + + def test_player_starting_status( + self, meta_data: Path, raw_data: Path + ) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + home_team = dataset.metadata.teams[0] + + starters = [p for p in home_team.players if p.starting] + non_starters = [p for p in home_team.players if not p.starting] + + assert len(starters) == 11 + assert len(non_starters) == 7 + + def test_coordinate_system(self, meta_data: Path, raw_data: Path) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + from kloppy.domain import CDFCoordinateSystem + + assert isinstance( + dataset.metadata.coordinate_system, CDFCoordinateSystem + ) + + pitch_dims = dataset.metadata.pitch_dimensions + assert pitch_dims.x_dim.min == -52.5 + assert pitch_dims.x_dim.max == 52.5 + assert pitch_dims.y_dim.min == -34.0 + assert pitch_dims.y_dim.max == 34.0 + + assert pitch_dims.pitch_length == 105 + assert pitch_dims.pitch_width == 68 + + def test_orientation_static_home_away( + self, meta_data: Path, raw_data: Path + ) -> None: + dataset = cdf.load_tracking( + meta_data=meta_data, + raw_data=raw_data, + only_alive=False, + coordinates="cdf", + ) + + assert dataset.metadata.orientation == Orientation.STATIC_HOME_AWAY diff --git a/pyproject.toml b/pyproject.toml index 6a4ee028a..8a370eed5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,12 +63,13 @@ Documentation = "https://kloppy.pysport.org/" [dependency-groups] dev = [ - "ruff", # Python formatter - "pytest>=6.2.5,<8", # Testing framework - "pytest-lazy-fixture>=0.6.3", # Use fixtures as parameters in pytest - "pytest-httpserver", # Mock HTTP server for testing - "moto[s3,server]", # Mock AWS S3 for testing - "pre-commit>=4.2.0", # Git hooks for code quality checks + "ruff", # Python formatter + "pytest>=6.2.5,<8", # Testing framework + "pytest-lazy-fixture>=0.6.3", # Use fixtures as parameters in pytest + "pytest-httpserver", # Mock HTTP server for testing + "moto[s3,server]", # Mock AWS S3 for testing + "pre-commit>=4.2.0", # Git hooks for code quality checks + "common-data-format-validator==0.0.13", ] docs = [ diff --git a/requirements-dev.txt b/requirements-dev.txt index 11d1954a0..37a65c794 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,10 +6,13 @@ antlr4-python3-runtime==4.13.2 # via moto attrs==25.4.0 # via + # jsonlines # jsonschema # referencing -aws-sam-translator==1.105.0 - # via cfn-lint +aws-sam-translator==1.103.0 + # via + # cfn-lint + # moto aws-xray-sdk==2.15.0 # via moto blinker==1.9.0 @@ -24,7 +27,7 @@ botocore==1.41.5 # boto3 # moto # s3transfer -certifi==2025.11.12 +certifi==2026.1.4 # via requests cffi==2.0.0 ; platform_python_implementation != 'PyPy' # via cryptography @@ -32,7 +35,7 @@ cfgv==3.4.0 ; python_full_version < '3.10' # via pre-commit cfgv==3.5.0 ; python_full_version >= '3.10' # via pre-commit -cfn-lint==1.42.1 +cfn-lint==1.41.0 # via moto charset-normalizer==3.4.4 # via requests @@ -44,6 +47,7 @@ colorama==0.4.6 ; sys_platform == 'win32' # via # click # pytest +common-data-format-validator==0.0.13 cryptography==46.0.3 # via # joserfc @@ -56,13 +60,13 @@ exceptiongroup==1.3.1 ; python_full_version < '3.11' # via pytest filelock==3.19.1 ; python_full_version < '3.10' # via virtualenv -filelock==3.20.0 ; python_full_version >= '3.10' +filelock==3.20.2 ; python_full_version >= '3.10' # via virtualenv flask==3.1.2 # via # flask-cors # moto -flask-cors==6.0.1 +flask-cors==6.0.2 # via moto graphql-core==3.2.7 # via moto @@ -70,7 +74,7 @@ identify==2.6.15 # via pre-commit idna==3.11 # via requests -importlib-metadata==8.7.0 ; python_full_version < '3.10' +importlib-metadata==8.7.1 ; python_full_version < '3.10' # via flask iniconfig==2.1.0 ; python_full_version < '3.10' # via pytest @@ -86,25 +90,29 @@ jmespath==1.0.1 # via # boto3 # botocore -joserfc==1.5.0 +joserfc==1.6.1 # via moto +jsonlines==4.0.0 + # via common-data-format-validator jsonpatch==1.33 # via cfn-lint jsonpath-ng==1.7.0 # via moto jsonpointer==3.0.0 # via jsonpatch -jsonschema==4.25.1 +jsonschema==4.23.0 # via # aws-sam-translator + # common-data-format-validator + # jsonschema-spec # openapi-schema-validator # openapi-spec-validator -jsonschema-path==0.3.4 +jsonschema-spec==0.1.3 # via openapi-spec-validator -jsonschema-specifications==2025.9.1 +jsonschema-specifications==2024.10.1 # via + # common-data-format-validator # jsonschema - # openapi-schema-validator lazy-object-proxy==1.12.0 # via openapi-spec-validator markupsafe==3.0.3 @@ -112,21 +120,21 @@ markupsafe==3.0.3 # flask # jinja2 # werkzeug -moto==5.1.18 +moto==5.1.19 mpmath==1.3.0 # via sympy networkx==2.8.8 # via cfn-lint -nodeenv==1.9.1 +nodeenv==1.10.0 # via pre-commit -openapi-schema-validator==0.6.3 +openapi-schema-validator==0.4.3 # via openapi-spec-validator -openapi-spec-validator==0.7.2 +openapi-spec-validator==0.5.5 # via moto packaging==25.0 # via pytest pathable==0.4.4 - # via jsonschema-path + # via jsonschema-spec platformdirs==4.4.0 ; python_full_version < '3.10' # via virtualenv platformdirs==4.5.1 ; python_full_version >= '3.10' @@ -136,16 +144,18 @@ pluggy==1.6.0 ply==3.11 # via jsonpath-ng pre-commit==4.3.0 ; python_full_version < '3.10' -pre-commit==4.5.0 ; python_full_version >= '3.10' +pre-commit==4.5.1 ; python_full_version >= '3.10' py-partiql-parser==0.6.3 # via moto pycparser==2.23 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy' # via cffi -pydantic==2.12.5 - # via aws-sam-translator +pydantic==2.12.4 + # via + # aws-sam-translator + # moto pydantic-core==2.41.5 # via pydantic -pyparsing==3.2.5 +pyparsing==3.3.1 # via moto pytest==7.4.4 # via pytest-lazy-fixture @@ -160,21 +170,24 @@ pywin32==311 ; sys_platform == 'win32' pyyaml==6.0.3 # via # cfn-lint - # jsonschema-path + # jsonschema-spec # moto # pre-commit # responses -referencing==0.36.2 +referencing==0.36.2 ; python_full_version < '3.10' + # via + # jsonschema + # jsonschema-specifications +referencing==0.37.0 ; python_full_version >= '3.10' # via # jsonschema - # jsonschema-path # jsonschema-specifications regex==2025.11.3 # via cfn-lint -requests==2.32.5 +requests==2.32.3 # via + # common-data-format-validator # docker - # jsonschema-path # moto # responses responses==0.25.8 @@ -189,7 +202,7 @@ rpds-py==0.30.0 ; python_full_version >= '3.10' # via # jsonschema # referencing -ruff==0.14.9 +ruff==0.14.10 s3transfer==0.15.0 # via boto3 setuptools==80.9.0 @@ -209,6 +222,7 @@ typing-extensions==4.15.0 # cryptography # exceptiongroup # graphql-core + # jsonschema-spec # pydantic # pydantic-core # referencing @@ -222,13 +236,13 @@ urllib3==1.26.20 ; python_full_version < '3.10' # docker # requests # responses -urllib3==2.6.2 ; python_full_version >= '3.10' +urllib3==2.6.3 ; python_full_version >= '3.10' # via # botocore # docker # requests # responses -virtualenv==20.35.4 +virtualenv==20.36.0 # via pre-commit werkzeug==3.1.4 # via diff --git a/requirements-docs.txt b/requirements-docs.txt index 454ae456a..bcb50f762 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -18,7 +18,7 @@ bleach==6.2.0 ; python_full_version < '3.10' # via nbconvert bleach==6.3.0 ; python_full_version >= '3.10' # via nbconvert -certifi==2025.11.12 +certifi==2026.1.4 # via requests cffi==2.0.0 ; implementation_name == 'pypy' # via pyzmq @@ -49,7 +49,7 @@ contourpy==1.3.3 ; python_full_version >= '3.11' # via matplotlib cycler==0.12.1 # via matplotlib -debugpy==1.8.18 +debugpy==1.8.19 # via ipykernel decorator==5.2.1 # via ipython @@ -63,7 +63,7 @@ fastjsonschema==2.21.2 # via nbformat fonttools==4.60.2 ; python_full_version < '3.10' # via matplotlib -fonttools==4.61.0 ; python_full_version >= '3.10' +fonttools==4.61.1 ; python_full_version >= '3.10' # via matplotlib ghp-import==2.1.0 # via mkdocs @@ -82,7 +82,7 @@ hjson==3.1.0 # super-collections idna==3.11 # via requests -importlib-metadata==8.7.0 ; python_full_version < '3.10' +importlib-metadata==8.7.1 ; python_full_version < '3.10' # via # jupyter-client # markdown @@ -96,9 +96,9 @@ ipykernel==6.31.0 # via mkdocs-jupyter ipython==8.18.1 ; python_full_version < '3.10' # via ipykernel -ipython==8.37.0 ; python_full_version == '3.10.*' +ipython==8.38.0 ; python_full_version == '3.10.*' # via ipykernel -ipython==9.8.0 ; python_full_version >= '3.11' +ipython==9.9.0 ; python_full_version >= '3.11' # via ipykernel ipython-pygments-lexers==1.1.1 ; python_full_version >= '3.11' # via ipython @@ -112,9 +112,9 @@ jinja2==3.1.6 # mkdocstrings # nbconvert # pandas -jsonschema==4.25.1 +jsonschema==4.23.0 # via nbformat -jsonschema-specifications==2025.9.1 +jsonschema-specifications==2024.10.1 # via jsonschema jupyter-client==8.6.3 ; python_full_version < '3.10' # via @@ -199,7 +199,7 @@ mergedeep==1.3.4 # via # mkdocs # mkdocs-get-deps -mistune==3.1.4 +mistune==3.2.0 # via nbconvert mkdocs==1.6.1 # via @@ -218,7 +218,7 @@ mkdocs-get-deps==0.2.0 # via mkdocs mkdocs-jupyter==0.24.7 mkdocs-macros-plugin==1.5.0 -mkdocs-material==9.7.0 +mkdocs-material==9.7.1 # via mkdocs-jupyter mkdocs-material-extensions==1.3.1 # via mkdocs-material @@ -226,7 +226,9 @@ mkdocstrings==0.27.0 # via mkdocstrings-python mkdocstrings-python==1.12.2 mplsoccer==1.3.0 -nbclient==0.10.2 +nbclient==0.10.2 ; python_full_version < '3.10' + # via nbconvert +nbclient==0.10.4 ; python_full_version >= '3.10' # via nbconvert nbconvert==7.16.6 # via mkdocs-jupyter @@ -253,7 +255,7 @@ numpy==2.2.6 ; python_full_version == '3.10.*' # pandas # scipy # seaborn -numpy==2.3.5 ; python_full_version >= '3.11' +numpy==2.4.0 ; python_full_version >= '3.11' # via # contourpy # matplotlib @@ -279,7 +281,7 @@ pandocfilters==1.5.1 # via nbconvert parso==0.8.5 # via jedi -pathspec==0.12.1 +pathspec==1.0.2 # via # mkdocs # mkdocs-macros-plugin @@ -289,7 +291,7 @@ pillow==11.3.0 ; python_full_version < '3.10' # via # matplotlib # mplsoccer -pillow==12.0.0 ; python_full_version >= '3.10' +pillow==12.1.0 ; python_full_version >= '3.10' # via # matplotlib # mplsoccer @@ -305,7 +307,7 @@ platformdirs==4.5.1 ; python_full_version >= '3.10' # mkdocstrings prompt-toolkit==3.0.52 # via ipython -psutil==7.1.3 +psutil==7.2.1 # via ipykernel ptyprocess==0.7.0 ; (python_full_version < '3.10' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32') # via pexpect @@ -323,12 +325,12 @@ pygments==2.19.2 # pygments-ansi-color pygments-ansi-color==0.3.0 # via markdown-exec -pymdown-extensions==10.19 +pymdown-extensions==10.20 # via # markdown-exec # mkdocs-material # mkdocstrings -pyparsing==3.2.5 +pyparsing==3.3.1 # via matplotlib python-dateutil==2.9.0.post0 # via @@ -355,11 +357,15 @@ pyzmq==27.1.0 # via # ipykernel # jupyter-client -referencing==0.36.2 +referencing==0.36.2 ; python_full_version < '3.10' + # via + # jsonschema + # jsonschema-specifications +referencing==0.37.0 ; python_full_version >= '3.10' # via # jsonschema # jsonschema-specifications -requests==2.32.5 +requests==2.32.3 # via # mkdocs-macros-plugin # mkdocs-material @@ -382,7 +388,7 @@ seaborn==0.13.2 # via mplsoccer six==1.17.0 # via python-dateutil -soupsieve==2.8 +soupsieve==2.8.1 # via beautifulsoup4 stack-data==0.6.3 # via ipython @@ -392,13 +398,13 @@ tabulate==0.9.0 # via pandas termcolor==3.1.0 ; python_full_version < '3.10' # via mkdocs-macros-plugin -termcolor==3.2.0 ; python_full_version >= '3.10' +termcolor==3.3.0 ; python_full_version >= '3.10' # via mkdocs-macros-plugin tinycss2==1.4.0 # via bleach tomli==2.3.0 ; python_full_version < '3.11' # via jupytext -tornado==6.5.3 +tornado==6.5.4 # via # ipykernel # jupyter-client @@ -421,11 +427,11 @@ typing-extensions==4.15.0 # mistune # mkdocstrings # referencing -tzdata==2025.2 +tzdata==2025.3 # via pandas urllib3==1.26.20 ; python_full_version < '3.10' # via requests -urllib3==2.6.2 ; python_full_version >= '3.10' +urllib3==2.6.3 ; python_full_version >= '3.10' # via requests watchdog==6.0.0 # via mkdocs diff --git a/uv.lock b/uv.lock index 25586d297..7d2d37e77 100644 --- a/uv.lock +++ b/uv.lock @@ -37,7 +37,7 @@ wheels = [ [[package]] name = "aiohttp" -version = "3.13.2" +version = "3.13.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -49,127 +49,127 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1c/ce/3b83ebba6b3207a7135e5fcaba49706f8a4b6008153b4e30540c982fae26/aiohttp-3.13.2.tar.gz", hash = "sha256:40176a52c186aefef6eb3cad2cdd30cd06e3afbe88fe8ab2af9c0b90f228daca", size = 7837994, upload-time = "2025-10-28T20:59:39.937Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/34/939730e66b716b76046dedfe0842995842fa906ccc4964bba414ff69e429/aiohttp-3.13.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2372b15a5f62ed37789a6b383ff7344fc5b9f243999b0cd9b629d8bc5f5b4155", size = 736471, upload-time = "2025-10-28T20:55:27.924Z" }, - { url = "https://files.pythonhosted.org/packages/fd/cf/dcbdf2df7f6ca72b0bb4c0b4509701f2d8942cf54e29ca197389c214c07f/aiohttp-3.13.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7f8659a48995edee7229522984bd1009c1213929c769c2daa80b40fe49a180c", size = 493985, upload-time = "2025-10-28T20:55:29.456Z" }, - { url = "https://files.pythonhosted.org/packages/9d/87/71c8867e0a1d0882dcbc94af767784c3cb381c1c4db0943ab4aae4fed65e/aiohttp-3.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:939ced4a7add92296b0ad38892ce62b98c619288a081170695c6babe4f50e636", size = 489274, upload-time = "2025-10-28T20:55:31.134Z" }, - { url = "https://files.pythonhosted.org/packages/38/0f/46c24e8dae237295eaadd113edd56dee96ef6462adf19b88592d44891dc5/aiohttp-3.13.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6315fb6977f1d0dd41a107c527fee2ed5ab0550b7d885bc15fee20ccb17891da", size = 1668171, upload-time = "2025-10-28T20:55:36.065Z" }, - { url = "https://files.pythonhosted.org/packages/eb/c6/4cdfb4440d0e28483681a48f69841fa5e39366347d66ef808cbdadddb20e/aiohttp-3.13.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6e7352512f763f760baaed2637055c49134fd1d35b37c2dedfac35bfe5cf8725", size = 1636036, upload-time = "2025-10-28T20:55:37.576Z" }, - { url = "https://files.pythonhosted.org/packages/84/37/8708cf678628216fb678ab327a4e1711c576d6673998f4f43e86e9ae90dd/aiohttp-3.13.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e09a0a06348a2dd73e7213353c90d709502d9786219f69b731f6caa0efeb46f5", size = 1727975, upload-time = "2025-10-28T20:55:39.457Z" }, - { url = "https://files.pythonhosted.org/packages/e6/2e/3ebfe12fdcb9b5f66e8a0a42dffcd7636844c8a018f261efb2419f68220b/aiohttp-3.13.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a09a6d073fb5789456545bdee2474d14395792faa0527887f2f4ec1a486a59d3", size = 1815823, upload-time = "2025-10-28T20:55:40.958Z" }, - { url = "https://files.pythonhosted.org/packages/a1/4f/ca2ef819488cbb41844c6cf92ca6dd15b9441e6207c58e5ae0e0fc8d70ad/aiohttp-3.13.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b59d13c443f8e049d9e94099c7e412e34610f1f49be0f230ec656a10692a5802", size = 1669374, upload-time = "2025-10-28T20:55:42.745Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/1fe2e1179a0d91ce09c99069684aab619bf2ccde9b20bd6ca44f8837203e/aiohttp-3.13.2-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:20db2d67985d71ca033443a1ba2001c4b5693fe09b0e29f6d9358a99d4d62a8a", size = 1555315, upload-time = "2025-10-28T20:55:44.264Z" }, - { url = "https://files.pythonhosted.org/packages/5a/2b/f3781899b81c45d7cbc7140cddb8a3481c195e7cbff8e36374759d2ab5a5/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:960c2fc686ba27b535f9fd2b52d87ecd7e4fd1cf877f6a5cba8afb5b4a8bd204", size = 1639140, upload-time = "2025-10-28T20:55:46.626Z" }, - { url = "https://files.pythonhosted.org/packages/72/27/c37e85cd3ece6f6c772e549bd5a253d0c122557b25855fb274224811e4f2/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6c00dbcf5f0d88796151e264a8eab23de2997c9303dd7c0bf622e23b24d3ce22", size = 1645496, upload-time = "2025-10-28T20:55:48.933Z" }, - { url = "https://files.pythonhosted.org/packages/66/20/3af1ab663151bd3780b123e907761cdb86ec2c4e44b2d9b195ebc91fbe37/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fed38a5edb7945f4d1bcabe2fcd05db4f6ec7e0e82560088b754f7e08d93772d", size = 1697625, upload-time = "2025-10-28T20:55:50.377Z" }, - { url = "https://files.pythonhosted.org/packages/95/eb/ae5cab15efa365e13d56b31b0d085a62600298bf398a7986f8388f73b598/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:b395bbca716c38bef3c764f187860e88c724b342c26275bc03e906142fc5964f", size = 1542025, upload-time = "2025-10-28T20:55:51.861Z" }, - { url = "https://files.pythonhosted.org/packages/e9/2d/1683e8d67ec72d911397fe4e575688d2a9b8f6a6e03c8fdc9f3fd3d4c03f/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:204ffff2426c25dfda401ba08da85f9c59525cdc42bda26660463dd1cbcfec6f", size = 1714918, upload-time = "2025-10-28T20:55:53.515Z" }, - { url = "https://files.pythonhosted.org/packages/99/a2/ffe8e0e1c57c5e542d47ffa1fcf95ef2b3ea573bf7c4d2ee877252431efc/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:05c4dd3c48fb5f15db31f57eb35374cb0c09afdde532e7fb70a75aede0ed30f6", size = 1656113, upload-time = "2025-10-28T20:55:55.438Z" }, - { url = "https://files.pythonhosted.org/packages/0d/42/d511aff5c3a2b06c09d7d214f508a4ad8ac7799817f7c3d23e7336b5e896/aiohttp-3.13.2-cp310-cp310-win32.whl", hash = "sha256:e574a7d61cf10351d734bcddabbe15ede0eaa8a02070d85446875dc11189a251", size = 432290, upload-time = "2025-10-28T20:55:56.96Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ea/1c2eb7098b5bad4532994f2b7a8228d27674035c9b3234fe02c37469ef14/aiohttp-3.13.2-cp310-cp310-win_amd64.whl", hash = "sha256:364f55663085d658b8462a1c3f17b2b84a5c2e1ba858e1b79bff7b2e24ad1514", size = 455075, upload-time = "2025-10-28T20:55:58.373Z" }, - { url = "https://files.pythonhosted.org/packages/35/74/b321e7d7ca762638cdf8cdeceb39755d9c745aff7a64c8789be96ddf6e96/aiohttp-3.13.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4647d02df098f6434bafd7f32ad14942f05a9caa06c7016fdcc816f343997dd0", size = 743409, upload-time = "2025-10-28T20:56:00.354Z" }, - { url = "https://files.pythonhosted.org/packages/99/3d/91524b905ec473beaf35158d17f82ef5a38033e5809fe8742e3657cdbb97/aiohttp-3.13.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e3403f24bcb9c3b29113611c3c16a2a447c3953ecf86b79775e7be06f7ae7ccb", size = 497006, upload-time = "2025-10-28T20:56:01.85Z" }, - { url = "https://files.pythonhosted.org/packages/eb/d3/7f68bc02a67716fe80f063e19adbd80a642e30682ce74071269e17d2dba1/aiohttp-3.13.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:43dff14e35aba17e3d6d5ba628858fb8cb51e30f44724a2d2f0c75be492c55e9", size = 493195, upload-time = "2025-10-28T20:56:03.314Z" }, - { url = "https://files.pythonhosted.org/packages/98/31/913f774a4708775433b7375c4f867d58ba58ead833af96c8af3621a0d243/aiohttp-3.13.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2a9ea08e8c58bb17655630198833109227dea914cd20be660f52215f6de5613", size = 1747759, upload-time = "2025-10-28T20:56:04.904Z" }, - { url = "https://files.pythonhosted.org/packages/e8/63/04efe156f4326f31c7c4a97144f82132c3bb21859b7bb84748d452ccc17c/aiohttp-3.13.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53b07472f235eb80e826ad038c9d106c2f653584753f3ddab907c83f49eedead", size = 1704456, upload-time = "2025-10-28T20:56:06.986Z" }, - { url = "https://files.pythonhosted.org/packages/8e/02/4e16154d8e0a9cf4ae76f692941fd52543bbb148f02f098ca73cab9b1c1b/aiohttp-3.13.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e736c93e9c274fce6419af4aac199984d866e55f8a4cec9114671d0ea9688780", size = 1807572, upload-time = "2025-10-28T20:56:08.558Z" }, - { url = "https://files.pythonhosted.org/packages/34/58/b0583defb38689e7f06798f0285b1ffb3a6fb371f38363ce5fd772112724/aiohttp-3.13.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ff5e771f5dcbc81c64898c597a434f7682f2259e0cd666932a913d53d1341d1a", size = 1895954, upload-time = "2025-10-28T20:56:10.545Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f3/083907ee3437425b4e376aa58b2c915eb1a33703ec0dc30040f7ae3368c6/aiohttp-3.13.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3b6fb0c207cc661fa0bf8c66d8d9b657331ccc814f4719468af61034b478592", size = 1747092, upload-time = "2025-10-28T20:56:12.118Z" }, - { url = "https://files.pythonhosted.org/packages/ac/61/98a47319b4e425cc134e05e5f3fc512bf9a04bf65aafd9fdcda5d57ec693/aiohttp-3.13.2-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:97a0895a8e840ab3520e2288db7cace3a1981300d48babeb50e7425609e2e0ab", size = 1606815, upload-time = "2025-10-28T20:56:14.191Z" }, - { url = "https://files.pythonhosted.org/packages/97/4b/e78b854d82f66bb974189135d31fce265dee0f5344f64dd0d345158a5973/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9e8f8afb552297aca127c90cb840e9a1d4bfd6a10d7d8f2d9176e1acc69bad30", size = 1723789, upload-time = "2025-10-28T20:56:16.101Z" }, - { url = "https://files.pythonhosted.org/packages/ed/fc/9d2ccc794fc9b9acd1379d625c3a8c64a45508b5091c546dea273a41929e/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ed2f9c7216e53c3df02264f25d824b079cc5914f9e2deba94155190ef648ee40", size = 1718104, upload-time = "2025-10-28T20:56:17.655Z" }, - { url = "https://files.pythonhosted.org/packages/66/65/34564b8765ea5c7d79d23c9113135d1dd3609173da13084830f1507d56cf/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:99c5280a329d5fa18ef30fd10c793a190d996567667908bef8a7f81f8202b948", size = 1785584, upload-time = "2025-10-28T20:56:19.238Z" }, - { url = "https://files.pythonhosted.org/packages/30/be/f6a7a426e02fc82781afd62016417b3948e2207426d90a0e478790d1c8a4/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ca6ffef405fc9c09a746cb5d019c1672cd7f402542e379afc66b370833170cf", size = 1595126, upload-time = "2025-10-28T20:56:20.836Z" }, - { url = "https://files.pythonhosted.org/packages/e5/c7/8e22d5d28f94f67d2af496f14a83b3c155d915d1fe53d94b66d425ec5b42/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:47f438b1a28e926c37632bff3c44df7d27c9b57aaf4e34b1def3c07111fdb782", size = 1800665, upload-time = "2025-10-28T20:56:22.922Z" }, - { url = "https://files.pythonhosted.org/packages/d1/11/91133c8b68b1da9fc16555706aa7276fdf781ae2bb0876c838dd86b8116e/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9acda8604a57bb60544e4646a4615c1866ee6c04a8edef9b8ee6fd1d8fa2ddc8", size = 1739532, upload-time = "2025-10-28T20:56:25.924Z" }, - { url = "https://files.pythonhosted.org/packages/17/6b/3747644d26a998774b21a616016620293ddefa4d63af6286f389aedac844/aiohttp-3.13.2-cp311-cp311-win32.whl", hash = "sha256:868e195e39b24aaa930b063c08bb0c17924899c16c672a28a65afded9c46c6ec", size = 431876, upload-time = "2025-10-28T20:56:27.524Z" }, - { url = "https://files.pythonhosted.org/packages/c3/63/688462108c1a00eb9f05765331c107f95ae86f6b197b865d29e930b7e462/aiohttp-3.13.2-cp311-cp311-win_amd64.whl", hash = "sha256:7fd19df530c292542636c2a9a85854fab93474396a52f1695e799186bbd7f24c", size = 456205, upload-time = "2025-10-28T20:56:29.062Z" }, - { url = "https://files.pythonhosted.org/packages/29/9b/01f00e9856d0a73260e86dd8ed0c2234a466c5c1712ce1c281548df39777/aiohttp-3.13.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b1e56bab2e12b2b9ed300218c351ee2a3d8c8fdab5b1ec6193e11a817767e47b", size = 737623, upload-time = "2025-10-28T20:56:30.797Z" }, - { url = "https://files.pythonhosted.org/packages/5a/1b/4be39c445e2b2bd0aab4ba736deb649fabf14f6757f405f0c9685019b9e9/aiohttp-3.13.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:364e25edaabd3d37b1db1f0cbcee8c73c9a3727bfa262b83e5e4cf3489a2a9dc", size = 492664, upload-time = "2025-10-28T20:56:32.708Z" }, - { url = "https://files.pythonhosted.org/packages/28/66/d35dcfea8050e131cdd731dff36434390479b4045a8d0b9d7111b0a968f1/aiohttp-3.13.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c5c94825f744694c4b8db20b71dba9a257cd2ba8e010a803042123f3a25d50d7", size = 491808, upload-time = "2025-10-28T20:56:34.57Z" }, - { url = "https://files.pythonhosted.org/packages/00/29/8e4609b93e10a853b65f8291e64985de66d4f5848c5637cddc70e98f01f8/aiohttp-3.13.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba2715d842ffa787be87cbfce150d5e88c87a98e0b62e0f5aa489169a393dbbb", size = 1738863, upload-time = "2025-10-28T20:56:36.377Z" }, - { url = "https://files.pythonhosted.org/packages/9d/fa/4ebdf4adcc0def75ced1a0d2d227577cd7b1b85beb7edad85fcc87693c75/aiohttp-3.13.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:585542825c4bc662221fb257889e011a5aa00f1ae4d75d1d246a5225289183e3", size = 1700586, upload-time = "2025-10-28T20:56:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/da/04/73f5f02ff348a3558763ff6abe99c223381b0bace05cd4530a0258e52597/aiohttp-3.13.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:39d02cb6025fe1aabca329c5632f48c9532a3dabccd859e7e2f110668972331f", size = 1768625, upload-time = "2025-10-28T20:56:39.75Z" }, - { url = "https://files.pythonhosted.org/packages/f8/49/a825b79ffec124317265ca7d2344a86bcffeb960743487cb11988ffb3494/aiohttp-3.13.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e67446b19e014d37342f7195f592a2a948141d15a312fe0e700c2fd2f03124f6", size = 1867281, upload-time = "2025-10-28T20:56:41.471Z" }, - { url = "https://files.pythonhosted.org/packages/b9/48/adf56e05f81eac31edcfae45c90928f4ad50ef2e3ea72cb8376162a368f8/aiohttp-3.13.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4356474ad6333e41ccefd39eae869ba15a6c5299c9c01dfdcfdd5c107be4363e", size = 1752431, upload-time = "2025-10-28T20:56:43.162Z" }, - { url = "https://files.pythonhosted.org/packages/30/ab/593855356eead019a74e862f21523db09c27f12fd24af72dbc3555b9bfd9/aiohttp-3.13.2-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eeacf451c99b4525f700f078becff32c32ec327b10dcf31306a8a52d78166de7", size = 1562846, upload-time = "2025-10-28T20:56:44.85Z" }, - { url = "https://files.pythonhosted.org/packages/39/0f/9f3d32271aa8dc35036e9668e31870a9d3b9542dd6b3e2c8a30931cb27ae/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8a9b889aeabd7a4e9af0b7f4ab5ad94d42e7ff679aaec6d0db21e3b639ad58d", size = 1699606, upload-time = "2025-10-28T20:56:46.519Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3c/52d2658c5699b6ef7692a3f7128b2d2d4d9775f2a68093f74bca06cf01e1/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fa89cb11bc71a63b69568d5b8a25c3ca25b6d54c15f907ca1c130d72f320b76b", size = 1720663, upload-time = "2025-10-28T20:56:48.528Z" }, - { url = "https://files.pythonhosted.org/packages/9b/d4/8f8f3ff1fb7fb9e3f04fcad4e89d8a1cd8fc7d05de67e3de5b15b33008ff/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8aa7c807df234f693fed0ecd507192fc97692e61fee5702cdc11155d2e5cadc8", size = 1737939, upload-time = "2025-10-28T20:56:50.77Z" }, - { url = "https://files.pythonhosted.org/packages/03/d3/ddd348f8a27a634daae39a1b8e291ff19c77867af438af844bf8b7e3231b/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9eb3e33fdbe43f88c3c75fa608c25e7c47bbd80f48d012763cb67c47f39a7e16", size = 1555132, upload-time = "2025-10-28T20:56:52.568Z" }, - { url = "https://files.pythonhosted.org/packages/39/b8/46790692dc46218406f94374903ba47552f2f9f90dad554eed61bfb7b64c/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9434bc0d80076138ea986833156c5a48c9c7a8abb0c96039ddbb4afc93184169", size = 1764802, upload-time = "2025-10-28T20:56:54.292Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e4/19ce547b58ab2a385e5f0b8aa3db38674785085abcf79b6e0edd1632b12f/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ff15c147b2ad66da1f2cbb0622313f2242d8e6e8f9b79b5206c84523a4473248", size = 1719512, upload-time = "2025-10-28T20:56:56.428Z" }, - { url = "https://files.pythonhosted.org/packages/70/30/6355a737fed29dcb6dfdd48682d5790cb5eab050f7b4e01f49b121d3acad/aiohttp-3.13.2-cp312-cp312-win32.whl", hash = "sha256:27e569eb9d9e95dbd55c0fc3ec3a9335defbf1d8bc1d20171a49f3c4c607b93e", size = 426690, upload-time = "2025-10-28T20:56:58.736Z" }, - { url = "https://files.pythonhosted.org/packages/0a/0d/b10ac09069973d112de6ef980c1f6bb31cb7dcd0bc363acbdad58f927873/aiohttp-3.13.2-cp312-cp312-win_amd64.whl", hash = "sha256:8709a0f05d59a71f33fd05c17fc11fcb8c30140506e13c2f5e8ee1b8964e1b45", size = 453465, upload-time = "2025-10-28T20:57:00.795Z" }, - { url = "https://files.pythonhosted.org/packages/bf/78/7e90ca79e5aa39f9694dcfd74f4720782d3c6828113bb1f3197f7e7c4a56/aiohttp-3.13.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7519bdc7dfc1940d201651b52bf5e03f5503bda45ad6eacf64dda98be5b2b6be", size = 732139, upload-time = "2025-10-28T20:57:02.455Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/1f59215ab6853fbaa5c8495fa6cbc39edfc93553426152b75d82a5f32b76/aiohttp-3.13.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:088912a78b4d4f547a1f19c099d5a506df17eacec3c6f4375e2831ec1d995742", size = 490082, upload-time = "2025-10-28T20:57:04.784Z" }, - { url = "https://files.pythonhosted.org/packages/68/7b/fe0fe0f5e05e13629d893c760465173a15ad0039c0a5b0d0040995c8075e/aiohttp-3.13.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5276807b9de9092af38ed23ce120539ab0ac955547b38563a9ba4f5b07b95293", size = 489035, upload-time = "2025-10-28T20:57:06.894Z" }, - { url = "https://files.pythonhosted.org/packages/d2/04/db5279e38471b7ac801d7d36a57d1230feeee130bbe2a74f72731b23c2b1/aiohttp-3.13.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1237c1375eaef0db4dcd7c2559f42e8af7b87ea7d295b118c60c36a6e61cb811", size = 1720387, upload-time = "2025-10-28T20:57:08.685Z" }, - { url = "https://files.pythonhosted.org/packages/31/07/8ea4326bd7dae2bd59828f69d7fdc6e04523caa55e4a70f4a8725a7e4ed2/aiohttp-3.13.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:96581619c57419c3d7d78703d5b78c1e5e5fc0172d60f555bdebaced82ded19a", size = 1688314, upload-time = "2025-10-28T20:57:10.693Z" }, - { url = "https://files.pythonhosted.org/packages/48/ab/3d98007b5b87ffd519d065225438cc3b668b2f245572a8cb53da5dd2b1bc/aiohttp-3.13.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a2713a95b47374169409d18103366de1050fe0ea73db358fc7a7acb2880422d4", size = 1756317, upload-time = "2025-10-28T20:57:12.563Z" }, - { url = "https://files.pythonhosted.org/packages/97/3d/801ca172b3d857fafb7b50c7c03f91b72b867a13abca982ed6b3081774ef/aiohttp-3.13.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:228a1cd556b3caca590e9511a89444925da87d35219a49ab5da0c36d2d943a6a", size = 1858539, upload-time = "2025-10-28T20:57:14.623Z" }, - { url = "https://files.pythonhosted.org/packages/f7/0d/4764669bdf47bd472899b3d3db91fffbe925c8e3038ec591a2fd2ad6a14d/aiohttp-3.13.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac6cde5fba8d7d8c6ac963dbb0256a9854e9fafff52fbcc58fdf819357892c3e", size = 1739597, upload-time = "2025-10-28T20:57:16.399Z" }, - { url = "https://files.pythonhosted.org/packages/c4/52/7bd3c6693da58ba16e657eb904a5b6decfc48ecd06e9ac098591653b1566/aiohttp-3.13.2-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f2bef8237544f4e42878c61cef4e2839fee6346dc60f5739f876a9c50be7fcdb", size = 1555006, upload-time = "2025-10-28T20:57:18.288Z" }, - { url = "https://files.pythonhosted.org/packages/48/30/9586667acec5993b6f41d2ebcf96e97a1255a85f62f3c653110a5de4d346/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:16f15a4eac3bc2d76c45f7ebdd48a65d41b242eb6c31c2245463b40b34584ded", size = 1683220, upload-time = "2025-10-28T20:57:20.241Z" }, - { url = "https://files.pythonhosted.org/packages/71/01/3afe4c96854cfd7b30d78333852e8e851dceaec1c40fd00fec90c6402dd2/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:bb7fb776645af5cc58ab804c58d7eba545a97e047254a52ce89c157b5af6cd0b", size = 1712570, upload-time = "2025-10-28T20:57:22.253Z" }, - { url = "https://files.pythonhosted.org/packages/11/2c/22799d8e720f4697a9e66fd9c02479e40a49de3de2f0bbe7f9f78a987808/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e1b4951125ec10c70802f2cb09736c895861cd39fd9dcb35107b4dc8ae6220b8", size = 1733407, upload-time = "2025-10-28T20:57:24.37Z" }, - { url = "https://files.pythonhosted.org/packages/34/cb/90f15dd029f07cebbd91f8238a8b363978b530cd128488085b5703683594/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:550bf765101ae721ee1d37d8095f47b1f220650f85fe1af37a90ce75bab89d04", size = 1550093, upload-time = "2025-10-28T20:57:26.257Z" }, - { url = "https://files.pythonhosted.org/packages/69/46/12dce9be9d3303ecbf4d30ad45a7683dc63d90733c2d9fe512be6716cd40/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fe91b87fc295973096251e2d25a811388e7d8adf3bd2b97ef6ae78bc4ac6c476", size = 1758084, upload-time = "2025-10-28T20:57:28.349Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c8/0932b558da0c302ffd639fc6362a313b98fdf235dc417bc2493da8394df7/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e0c8e31cfcc4592cb200160344b2fb6ae0f9e4effe06c644b5a125d4ae5ebe23", size = 1716987, upload-time = "2025-10-28T20:57:30.233Z" }, - { url = "https://files.pythonhosted.org/packages/5d/8b/f5bd1a75003daed099baec373aed678f2e9b34f2ad40d85baa1368556396/aiohttp-3.13.2-cp313-cp313-win32.whl", hash = "sha256:0740f31a60848d6edb296a0df827473eede90c689b8f9f2a4cdde74889eb2254", size = 425859, upload-time = "2025-10-28T20:57:32.105Z" }, - { url = "https://files.pythonhosted.org/packages/5d/28/a8a9fc6957b2cee8902414e41816b5ab5536ecf43c3b1843c10e82c559b2/aiohttp-3.13.2-cp313-cp313-win_amd64.whl", hash = "sha256:a88d13e7ca367394908f8a276b89d04a3652044612b9a408a0bb22a5ed976a1a", size = 452192, upload-time = "2025-10-28T20:57:34.166Z" }, - { url = "https://files.pythonhosted.org/packages/9b/36/e2abae1bd815f01c957cbf7be817b3043304e1c87bad526292a0410fdcf9/aiohttp-3.13.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:2475391c29230e063ef53a66669b7b691c9bfc3f1426a0f7bcdf1216bdbac38b", size = 735234, upload-time = "2025-10-28T20:57:36.415Z" }, - { url = "https://files.pythonhosted.org/packages/ca/e3/1ee62dde9b335e4ed41db6bba02613295a0d5b41f74a783c142745a12763/aiohttp-3.13.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:f33c8748abef4d8717bb20e8fb1b3e07c6adacb7fd6beaae971a764cf5f30d61", size = 490733, upload-time = "2025-10-28T20:57:38.205Z" }, - { url = "https://files.pythonhosted.org/packages/1a/aa/7a451b1d6a04e8d15a362af3e9b897de71d86feac3babf8894545d08d537/aiohttp-3.13.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ae32f24bbfb7dbb485a24b30b1149e2f200be94777232aeadba3eecece4d0aa4", size = 491303, upload-time = "2025-10-28T20:57:40.122Z" }, - { url = "https://files.pythonhosted.org/packages/57/1e/209958dbb9b01174870f6a7538cd1f3f28274fdbc88a750c238e2c456295/aiohttp-3.13.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d7f02042c1f009ffb70067326ef183a047425bb2ff3bc434ead4dd4a4a66a2b", size = 1717965, upload-time = "2025-10-28T20:57:42.28Z" }, - { url = "https://files.pythonhosted.org/packages/08/aa/6a01848d6432f241416bc4866cae8dc03f05a5a884d2311280f6a09c73d6/aiohttp-3.13.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:93655083005d71cd6c072cdab54c886e6570ad2c4592139c3fb967bfc19e4694", size = 1667221, upload-time = "2025-10-28T20:57:44.869Z" }, - { url = "https://files.pythonhosted.org/packages/87/4f/36c1992432d31bbc789fa0b93c768d2e9047ec8c7177e5cd84ea85155f36/aiohttp-3.13.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0db1e24b852f5f664cd728db140cf11ea0e82450471232a394b3d1a540b0f906", size = 1757178, upload-time = "2025-10-28T20:57:47.216Z" }, - { url = "https://files.pythonhosted.org/packages/ac/b4/8e940dfb03b7e0f68a82b88fd182b9be0a65cb3f35612fe38c038c3112cf/aiohttp-3.13.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b009194665bcd128e23eaddef362e745601afa4641930848af4c8559e88f18f9", size = 1838001, upload-time = "2025-10-28T20:57:49.337Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ef/39f3448795499c440ab66084a9db7d20ca7662e94305f175a80f5b7e0072/aiohttp-3.13.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c038a8fdc8103cd51dbd986ecdce141473ffd9775a7a8057a6ed9c3653478011", size = 1716325, upload-time = "2025-10-28T20:57:51.327Z" }, - { url = "https://files.pythonhosted.org/packages/d7/51/b311500ffc860b181c05d91c59a1313bdd05c82960fdd4035a15740d431e/aiohttp-3.13.2-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:66bac29b95a00db411cd758fea0e4b9bdba6d549dfe333f9a945430f5f2cc5a6", size = 1547978, upload-time = "2025-10-28T20:57:53.554Z" }, - { url = "https://files.pythonhosted.org/packages/31/64/b9d733296ef79815226dab8c586ff9e3df41c6aff2e16c06697b2d2e6775/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4ebf9cfc9ba24a74cf0718f04aac2a3bbe745902cc7c5ebc55c0f3b5777ef213", size = 1682042, upload-time = "2025-10-28T20:57:55.617Z" }, - { url = "https://files.pythonhosted.org/packages/3f/30/43d3e0f9d6473a6db7d472104c4eff4417b1e9df01774cb930338806d36b/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a4b88ebe35ce54205c7074f7302bd08a4cb83256a3e0870c72d6f68a3aaf8e49", size = 1680085, upload-time = "2025-10-28T20:57:57.59Z" }, - { url = "https://files.pythonhosted.org/packages/16/51/c709f352c911b1864cfd1087577760ced64b3e5bee2aa88b8c0c8e2e4972/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:98c4fb90bb82b70a4ed79ca35f656f4281885be076f3f970ce315402b53099ae", size = 1728238, upload-time = "2025-10-28T20:57:59.525Z" }, - { url = "https://files.pythonhosted.org/packages/19/e2/19bd4c547092b773caeb48ff5ae4b1ae86756a0ee76c16727fcfd281404b/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:ec7534e63ae0f3759df3a1ed4fa6bc8f75082a924b590619c0dd2f76d7043caa", size = 1544395, upload-time = "2025-10-28T20:58:01.914Z" }, - { url = "https://files.pythonhosted.org/packages/cf/87/860f2803b27dfc5ed7be532832a3498e4919da61299b4a1f8eb89b8ff44d/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5b927cf9b935a13e33644cbed6c8c4b2d0f25b713d838743f8fe7191b33829c4", size = 1742965, upload-time = "2025-10-28T20:58:03.972Z" }, - { url = "https://files.pythonhosted.org/packages/67/7f/db2fc7618925e8c7a601094d5cbe539f732df4fb570740be88ed9e40e99a/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:88d6c017966a78c5265d996c19cdb79235be5e6412268d7e2ce7dee339471b7a", size = 1697585, upload-time = "2025-10-28T20:58:06.189Z" }, - { url = "https://files.pythonhosted.org/packages/0c/07/9127916cb09bb38284db5036036042b7b2c514c8ebaeee79da550c43a6d6/aiohttp-3.13.2-cp314-cp314-win32.whl", hash = "sha256:f7c183e786e299b5d6c49fb43a769f8eb8e04a2726a2bd5887b98b5cc2d67940", size = 431621, upload-time = "2025-10-28T20:58:08.636Z" }, - { url = "https://files.pythonhosted.org/packages/fb/41/554a8a380df6d3a2bba8a7726429a23f4ac62aaf38de43bb6d6cde7b4d4d/aiohttp-3.13.2-cp314-cp314-win_amd64.whl", hash = "sha256:fe242cd381e0fb65758faf5ad96c2e460df6ee5b2de1072fe97e4127927e00b4", size = 457627, upload-time = "2025-10-28T20:58:11Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8e/3824ef98c039d3951cb65b9205a96dd2b20f22241ee17d89c5701557c826/aiohttp-3.13.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:f10d9c0b0188fe85398c61147bbd2a657d616c876863bfeff43376e0e3134673", size = 767360, upload-time = "2025-10-28T20:58:13.358Z" }, - { url = "https://files.pythonhosted.org/packages/a4/0f/6a03e3fc7595421274fa34122c973bde2d89344f8a881b728fa8c774e4f1/aiohttp-3.13.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e7c952aefdf2460f4ae55c5e9c3e80aa72f706a6317e06020f80e96253b1accd", size = 504616, upload-time = "2025-10-28T20:58:15.339Z" }, - { url = "https://files.pythonhosted.org/packages/c6/aa/ed341b670f1bc8a6f2c6a718353d13b9546e2cef3544f573c6a1ff0da711/aiohttp-3.13.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c20423ce14771d98353d2e25e83591fa75dfa90a3c1848f3d7c68243b4fbded3", size = 509131, upload-time = "2025-10-28T20:58:17.693Z" }, - { url = "https://files.pythonhosted.org/packages/7f/f0/c68dac234189dae5c4bbccc0f96ce0cc16b76632cfc3a08fff180045cfa4/aiohttp-3.13.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e96eb1a34396e9430c19d8338d2ec33015e4a87ef2b4449db94c22412e25ccdf", size = 1864168, upload-time = "2025-10-28T20:58:20.113Z" }, - { url = "https://files.pythonhosted.org/packages/8f/65/75a9a76db8364b5d0e52a0c20eabc5d52297385d9af9c35335b924fafdee/aiohttp-3.13.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:23fb0783bc1a33640036465019d3bba069942616a6a2353c6907d7fe1ccdaf4e", size = 1719200, upload-time = "2025-10-28T20:58:22.583Z" }, - { url = "https://files.pythonhosted.org/packages/f5/55/8df2ed78d7f41d232f6bd3ff866b6f617026551aa1d07e2f03458f964575/aiohttp-3.13.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e1a9bea6244a1d05a4e57c295d69e159a5c50d8ef16aa390948ee873478d9a5", size = 1843497, upload-time = "2025-10-28T20:58:24.672Z" }, - { url = "https://files.pythonhosted.org/packages/e9/e0/94d7215e405c5a02ccb6a35c7a3a6cfff242f457a00196496935f700cde5/aiohttp-3.13.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0a3d54e822688b56e9f6b5816fb3de3a3a64660efac64e4c2dc435230ad23bad", size = 1935703, upload-time = "2025-10-28T20:58:26.758Z" }, - { url = "https://files.pythonhosted.org/packages/0b/78/1eeb63c3f9b2d1015a4c02788fb543141aad0a03ae3f7a7b669b2483f8d4/aiohttp-3.13.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7a653d872afe9f33497215745da7a943d1dc15b728a9c8da1c3ac423af35178e", size = 1792738, upload-time = "2025-10-28T20:58:29.787Z" }, - { url = "https://files.pythonhosted.org/packages/41/75/aaf1eea4c188e51538c04cc568040e3082db263a57086ea74a7d38c39e42/aiohttp-3.13.2-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:56d36e80d2003fa3fc0207fac644216d8532e9504a785ef9a8fd013f84a42c61", size = 1624061, upload-time = "2025-10-28T20:58:32.529Z" }, - { url = "https://files.pythonhosted.org/packages/9b/c2/3b6034de81fbcc43de8aeb209073a2286dfb50b86e927b4efd81cf848197/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:78cd586d8331fb8e241c2dd6b2f4061778cc69e150514b39a9e28dd050475661", size = 1789201, upload-time = "2025-10-28T20:58:34.618Z" }, - { url = "https://files.pythonhosted.org/packages/c9/38/c15dcf6d4d890217dae79d7213988f4e5fe6183d43893a9cf2fe9e84ca8d/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:20b10bbfbff766294fe99987f7bb3b74fdd2f1a2905f2562132641ad434dcf98", size = 1776868, upload-time = "2025-10-28T20:58:38.835Z" }, - { url = "https://files.pythonhosted.org/packages/04/75/f74fd178ac81adf4f283a74847807ade5150e48feda6aef024403716c30c/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9ec49dff7e2b3c85cdeaa412e9d438f0ecd71676fde61ec57027dd392f00c693", size = 1790660, upload-time = "2025-10-28T20:58:41.507Z" }, - { url = "https://files.pythonhosted.org/packages/e7/80/7368bd0d06b16b3aba358c16b919e9c46cf11587dc572091031b0e9e3ef0/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:94f05348c4406450f9d73d38efb41d669ad6cd90c7ee194810d0eefbfa875a7a", size = 1617548, upload-time = "2025-10-28T20:58:43.674Z" }, - { url = "https://files.pythonhosted.org/packages/7d/4b/a6212790c50483cb3212e507378fbe26b5086d73941e1ec4b56a30439688/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:fa4dcb605c6f82a80c7f95713c2b11c3b8e9893b3ebd2bc9bde93165ed6107be", size = 1817240, upload-time = "2025-10-28T20:58:45.787Z" }, - { url = "https://files.pythonhosted.org/packages/ff/f7/ba5f0ba4ea8d8f3c32850912944532b933acbf0f3a75546b89269b9b7dde/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf00e5db968c3f67eccd2778574cf64d8b27d95b237770aa32400bd7a1ca4f6c", size = 1762334, upload-time = "2025-10-28T20:58:47.936Z" }, - { url = "https://files.pythonhosted.org/packages/7e/83/1a5a1856574588b1cad63609ea9ad75b32a8353ac995d830bf5da9357364/aiohttp-3.13.2-cp314-cp314t-win32.whl", hash = "sha256:d23b5fe492b0805a50d3371e8a728a9134d8de5447dce4c885f5587294750734", size = 464685, upload-time = "2025-10-28T20:58:50.642Z" }, - { url = "https://files.pythonhosted.org/packages/9f/4d/d22668674122c08f4d56972297c51a624e64b3ed1efaa40187607a7cb66e/aiohttp-3.13.2-cp314-cp314t-win_amd64.whl", hash = "sha256:ff0a7b0a82a7ab905cbda74006318d1b12e37c797eb1b0d4eb3e316cf47f658f", size = 498093, upload-time = "2025-10-28T20:58:52.782Z" }, - { url = "https://files.pythonhosted.org/packages/04/4a/3da532fdf51b5e58fffa1a86d6569184cb1bf4bf81cd4434b6541a8d14fd/aiohttp-3.13.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7fbdf5ad6084f1940ce88933de34b62358d0f4a0b6ec097362dcd3e5a65a4989", size = 739009, upload-time = "2025-10-28T20:58:55.682Z" }, - { url = "https://files.pythonhosted.org/packages/89/74/fefa6f7939cdc1d77e5cad712004e675a8847dccc589dcc3abca7feaed73/aiohttp-3.13.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7c3a50345635a02db61792c85bb86daffac05330f6473d524f1a4e3ef9d0046d", size = 495308, upload-time = "2025-10-28T20:58:58.408Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b4/a0638ae1f12d09a0dc558870968a2f19a1eba1b10ad0a85ef142ddb40b50/aiohttp-3.13.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e87dff73f46e969af38ab3f7cb75316a7c944e2e574ff7c933bc01b10def7f5", size = 490624, upload-time = "2025-10-28T20:59:00.479Z" }, - { url = "https://files.pythonhosted.org/packages/02/73/361cd4cac9d98a5a4183d1f26faf7b777330f8dba838c5aae2412862bdd0/aiohttp-3.13.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2adebd4577724dcae085665f294cc57c8701ddd4d26140504db622b8d566d7aa", size = 1662968, upload-time = "2025-10-28T20:59:03.105Z" }, - { url = "https://files.pythonhosted.org/packages/9e/93/ce2ca7584555a6c7dd78f2e6b539a96c5172d88815e13a05a576e14a5a22/aiohttp-3.13.2-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e036a3a645fe92309ec34b918394bb377950cbb43039a97edae6c08db64b23e2", size = 1627117, upload-time = "2025-10-28T20:59:05.274Z" }, - { url = "https://files.pythonhosted.org/packages/a6/42/7ee0e699111f5fc20a69b3203e8f5d5da0b681f270b90bc088d15e339980/aiohttp-3.13.2-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:23ad365e30108c422d0b4428cf271156dd56790f6dd50d770b8e360e6c5ab2e6", size = 1724037, upload-time = "2025-10-28T20:59:07.522Z" }, - { url = "https://files.pythonhosted.org/packages/66/88/67ad5ff11dd61dd1d7882cda39f085d5fca31cf7e2143f5173429d8a591e/aiohttp-3.13.2-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1f9b2c2d4b9d958b1f9ae0c984ec1dd6b6689e15c75045be8ccb4011426268ca", size = 1812899, upload-time = "2025-10-28T20:59:11.698Z" }, - { url = "https://files.pythonhosted.org/packages/60/1b/a46f6e1c2a347b9c7a789292279c159b327fadecbf8340f3b05fffff1151/aiohttp-3.13.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a92cf4b9bea33e15ecbaa5c59921be0f23222608143d025c989924f7e3e0c07", size = 1660961, upload-time = "2025-10-28T20:59:14.425Z" }, - { url = "https://files.pythonhosted.org/packages/44/cc/1af9e466eafd9b5d8922238c69aaf95b656137add4c5db65f63ee129bf3c/aiohttp-3.13.2-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:070599407f4954021509193404c4ac53153525a19531051661440644728ba9a7", size = 1553851, upload-time = "2025-10-28T20:59:17.044Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d1/9e5f4f40f9d0ee5668e9b5e7ebfb0eaf371cc09da03785decdc5da56f4b3/aiohttp-3.13.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:29562998ec66f988d49fb83c9b01694fa927186b781463f376c5845c121e4e0b", size = 1634260, upload-time = "2025-10-28T20:59:19.378Z" }, - { url = "https://files.pythonhosted.org/packages/83/2e/5d065091c4ae8b55a153f458f19308191bad3b62a89496aa081385486338/aiohttp-3.13.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4dd3db9d0f4ebca1d887d76f7cdbcd1116ac0d05a9221b9dad82c64a62578c4d", size = 1639499, upload-time = "2025-10-28T20:59:22.013Z" }, - { url = "https://files.pythonhosted.org/packages/a3/de/58ae6dc73691a51ff16f69a94d13657bf417456fa0fdfed2b59dd6b4c293/aiohttp-3.13.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d7bc4b7f9c4921eba72677cd9fedd2308f4a4ca3e12fab58935295ad9ea98700", size = 1694087, upload-time = "2025-10-28T20:59:24.773Z" }, - { url = "https://files.pythonhosted.org/packages/45/fe/4d9df516268867d83041b6c073ee15cd532dbea58b82d675a7e1cf2ec24c/aiohttp-3.13.2-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:dacd50501cd017f8cccb328da0c90823511d70d24a323196826d923aad865901", size = 1540532, upload-time = "2025-10-28T20:59:27.982Z" }, - { url = "https://files.pythonhosted.org/packages/24/e7/a802619308232499482bf30b3530efb5d141481cfd61850368350fb1acb5/aiohttp-3.13.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8b2f1414f6a1e0683f212ec80e813f4abef94c739fd090b66c9adf9d2a05feac", size = 1710369, upload-time = "2025-10-28T20:59:30.363Z" }, - { url = "https://files.pythonhosted.org/packages/62/08/e8593f39f025efe96ef59550d17cf097222d84f6f84798bedac5bf037fce/aiohttp-3.13.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04c3971421576ed24c191f610052bcb2f059e395bc2489dd99e397f9bc466329", size = 1649296, upload-time = "2025-10-28T20:59:33.285Z" }, - { url = "https://files.pythonhosted.org/packages/e5/fd/ffbc1b6aa46fc6c284af4a438b2c7eab79af1c8ac4b6d2ced185c17f403e/aiohttp-3.13.2-cp39-cp39-win32.whl", hash = "sha256:9f377d0a924e5cc94dc620bc6366fc3e889586a7f18b748901cf016c916e2084", size = 432980, upload-time = "2025-10-28T20:59:35.515Z" }, - { url = "https://files.pythonhosted.org/packages/ad/a9/d47e7873175a4d8aed425f2cdea2df700b2dd44fac024ffbd83455a69a50/aiohttp-3.13.2-cp39-cp39-win_amd64.whl", hash = "sha256:9c705601e16c03466cb72011bd1af55d68fa65b045356d8f96c216e5f6db0fa5", size = 456021, upload-time = "2025-10-28T20:59:37.659Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/d6/5aec9313ee6ea9c7cde8b891b69f4ff4001416867104580670a31daeba5b/aiohttp-3.13.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a372fd5afd301b3a89582817fdcdb6c34124787c70dbcc616f259013e7eef7", size = 738950, upload-time = "2026-01-03T17:29:13.002Z" }, + { url = "https://files.pythonhosted.org/packages/68/03/8fa90a7e6d11ff20a18837a8e2b5dd23db01aabc475aa9271c8ad33299f5/aiohttp-3.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:147e422fd1223005c22b4fe080f5d93ced44460f5f9c105406b753612b587821", size = 496099, upload-time = "2026-01-03T17:29:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/d2/23/b81f744d402510a8366b74eb420fc0cc1170d0c43daca12d10814df85f10/aiohttp-3.13.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:859bd3f2156e81dd01432f5849fc73e2243d4a487c4fd26609b1299534ee1845", size = 491072, upload-time = "2026-01-03T17:29:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e1/56d1d1c0dd334cd203dd97706ce004c1aa24b34a813b0b8daf3383039706/aiohttp-3.13.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dca68018bf48c251ba17c72ed479f4dafe9dbd5a73707ad8d28a38d11f3d42af", size = 1671588, upload-time = "2026-01-03T17:29:18.539Z" }, + { url = "https://files.pythonhosted.org/packages/5f/34/8d7f962604f4bc2b4e39eb1220dac7d4e4cba91fb9ba0474b4ecd67db165/aiohttp-3.13.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fee0c6bc7db1de362252affec009707a17478a00ec69f797d23ca256e36d5940", size = 1640334, upload-time = "2026-01-03T17:29:21.028Z" }, + { url = "https://files.pythonhosted.org/packages/94/1d/fcccf2c668d87337ddeef9881537baee13c58d8f01f12ba8a24215f2b804/aiohttp-3.13.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c048058117fd649334d81b4b526e94bde3ccaddb20463a815ced6ecbb7d11160", size = 1722656, upload-time = "2026-01-03T17:29:22.531Z" }, + { url = "https://files.pythonhosted.org/packages/aa/98/c6f3b081c4c606bc1e5f2ec102e87d6411c73a9ef3616fea6f2d5c98c062/aiohttp-3.13.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:215a685b6fbbfcf71dfe96e3eba7a6f58f10da1dfdf4889c7dd856abe430dca7", size = 1817625, upload-time = "2026-01-03T17:29:24.276Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c0/cfcc3d2e11b477f86e1af2863f3858c8850d751ce8dc39c4058a072c9e54/aiohttp-3.13.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2c184bb1fe2cbd2cefba613e9db29a5ab559323f994b6737e370d3da0ac455", size = 1672604, upload-time = "2026-01-03T17:29:26.099Z" }, + { url = "https://files.pythonhosted.org/packages/1e/77/6b4ffcbcac4c6a5d041343a756f34a6dd26174ae07f977a64fe028dda5b0/aiohttp-3.13.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75ca857eba4e20ce9f546cd59c7007b33906a4cd48f2ff6ccf1ccfc3b646f279", size = 1554370, upload-time = "2026-01-03T17:29:28.121Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f0/e3ddfa93f17d689dbe014ba048f18e0c9f9b456033b70e94349a2e9048be/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81e97251d9298386c2b7dbeb490d3d1badbdc69107fb8c9299dd04eb39bddc0e", size = 1642023, upload-time = "2026-01-03T17:29:30.002Z" }, + { url = "https://files.pythonhosted.org/packages/eb/45/c14019c9ec60a8e243d06d601b33dcc4fd92379424bde3021725859d7f99/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c0e2d366af265797506f0283487223146af57815b388623f0357ef7eac9b209d", size = 1649680, upload-time = "2026-01-03T17:29:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fd/09c9451dae5aa5c5ed756df95ff9ef549d45d4be663bafd1e4954fd836f0/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4e239d501f73d6db1522599e14b9b321a7e3b1de66ce33d53a765d975e9f4808", size = 1692407, upload-time = "2026-01-03T17:29:33.392Z" }, + { url = "https://files.pythonhosted.org/packages/a6/81/938bc2ec33c10efd6637ccb3d22f9f3160d08e8f3aa2587a2c2d5ab578eb/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0db318f7a6f065d84cb1e02662c526294450b314a02bd9e2a8e67f0d8564ce40", size = 1543047, upload-time = "2026-01-03T17:29:34.855Z" }, + { url = "https://files.pythonhosted.org/packages/f7/23/80488ee21c8d567c83045e412e1d9b7077d27171591a4eb7822586e8c06a/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:bfc1cc2fe31a6026a8a88e4ecfb98d7f6b1fec150cfd708adbfd1d2f42257c29", size = 1715264, upload-time = "2026-01-03T17:29:36.389Z" }, + { url = "https://files.pythonhosted.org/packages/e2/83/259a8da6683182768200b368120ab3deff5370bed93880fb9a3a86299f34/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af71fff7bac6bb7508956696dce8f6eec2bbb045eceb40343944b1ae62b5ef11", size = 1657275, upload-time = "2026-01-03T17:29:38.162Z" }, + { url = "https://files.pythonhosted.org/packages/3f/4f/2c41f800a0b560785c10fb316216ac058c105f9be50bdc6a285de88db625/aiohttp-3.13.3-cp310-cp310-win32.whl", hash = "sha256:37da61e244d1749798c151421602884db5270faf479cf0ef03af0ff68954c9dd", size = 434053, upload-time = "2026-01-03T17:29:40.074Z" }, + { url = "https://files.pythonhosted.org/packages/80/df/29cd63c7ecfdb65ccc12f7d808cac4fa2a19544660c06c61a4a48462de0c/aiohttp-3.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:7e63f210bc1b57ef699035f2b4b6d9ce096b5914414a49b0997c839b2bd2223c", size = 456687, upload-time = "2026-01-03T17:29:41.819Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4c/a164164834f03924d9a29dc3acd9e7ee58f95857e0b467f6d04298594ebb/aiohttp-3.13.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b6073099fb654e0a068ae678b10feff95c5cae95bbfcbfa7af669d361a8aa6b", size = 746051, upload-time = "2026-01-03T17:29:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/82/71/d5c31390d18d4f58115037c432b7e0348c60f6f53b727cad33172144a112/aiohttp-3.13.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cb93e166e6c28716c8c6aeb5f99dfb6d5ccf482d29fe9bf9a794110e6d0ab64", size = 499234, upload-time = "2026-01-03T17:29:44.822Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c9/741f8ac91e14b1d2e7100690425a5b2b919a87a5075406582991fb7de920/aiohttp-3.13.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e027cf2f6b641693a09f631759b4d9ce9165099d2b5d92af9bd4e197690eea", size = 494979, upload-time = "2026-01-03T17:29:46.405Z" }, + { url = "https://files.pythonhosted.org/packages/75/b5/31d4d2e802dfd59f74ed47eba48869c1c21552c586d5e81a9d0d5c2ad640/aiohttp-3.13.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3b61b7169ababd7802f9568ed96142616a9118dd2be0d1866e920e77ec8fa92a", size = 1748297, upload-time = "2026-01-03T17:29:48.083Z" }, + { url = "https://files.pythonhosted.org/packages/1a/3e/eefad0ad42959f226bb79664826883f2687d602a9ae2941a18e0484a74d3/aiohttp-3.13.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:80dd4c21b0f6237676449c6baaa1039abae86b91636b6c91a7f8e61c87f89540", size = 1707172, upload-time = "2026-01-03T17:29:49.648Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3a/54a64299fac2891c346cdcf2aa6803f994a2e4beeaf2e5a09dcc54acc842/aiohttp-3.13.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:65d2ccb7eabee90ce0503c17716fc77226be026dcc3e65cce859a30db715025b", size = 1805405, upload-time = "2026-01-03T17:29:51.244Z" }, + { url = "https://files.pythonhosted.org/packages/6c/70/ddc1b7169cf64075e864f64595a14b147a895a868394a48f6a8031979038/aiohttp-3.13.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5b179331a481cb5529fca8b432d8d3c7001cb217513c94cd72d668d1248688a3", size = 1899449, upload-time = "2026-01-03T17:29:53.938Z" }, + { url = "https://files.pythonhosted.org/packages/a1/7e/6815aab7d3a56610891c76ef79095677b8b5be6646aaf00f69b221765021/aiohttp-3.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d4c940f02f49483b18b079d1c27ab948721852b281f8b015c058100e9421dd1", size = 1748444, upload-time = "2026-01-03T17:29:55.484Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f2/073b145c4100da5511f457dc0f7558e99b2987cf72600d42b559db856fbc/aiohttp-3.13.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f9444f105664c4ce47a2a7171a2418bce5b7bae45fb610f4e2c36045d85911d3", size = 1606038, upload-time = "2026-01-03T17:29:57.179Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c1/778d011920cae03ae01424ec202c513dc69243cf2db303965615b81deeea/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:694976222c711d1d00ba131904beb60534f93966562f64440d0c9d41b8cdb440", size = 1724156, upload-time = "2026-01-03T17:29:58.914Z" }, + { url = "https://files.pythonhosted.org/packages/0e/cb/3419eabf4ec1e9ec6f242c32b689248365a1cf621891f6f0386632525494/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f33ed1a2bf1997a36661874b017f5c4b760f41266341af36febaf271d179f6d7", size = 1722340, upload-time = "2026-01-03T17:30:01.962Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e5/76cf77bdbc435bf233c1f114edad39ed4177ccbfab7c329482b179cff4f4/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e636b3c5f61da31a92bf0d91da83e58fdfa96f178ba682f11d24f31944cdd28c", size = 1783041, upload-time = "2026-01-03T17:30:03.609Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d4/dd1ca234c794fd29c057ce8c0566b8ef7fd6a51069de5f06fa84b9a1971c/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5d2d94f1f5fcbe40838ac51a6ab5704a6f9ea42e72ceda48de5e6b898521da51", size = 1596024, upload-time = "2026-01-03T17:30:05.132Z" }, + { url = "https://files.pythonhosted.org/packages/55/58/4345b5f26661a6180afa686c473620c30a66afdf120ed3dd545bbc809e85/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2be0e9ccf23e8a94f6f0650ce06042cefc6ac703d0d7ab6c7a917289f2539ad4", size = 1804590, upload-time = "2026-01-03T17:30:07.135Z" }, + { url = "https://files.pythonhosted.org/packages/7b/06/05950619af6c2df7e0a431d889ba2813c9f0129cec76f663e547a5ad56f2/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9af5e68ee47d6534d36791bbe9b646d2a7c7deb6fc24d7943628edfbb3581f29", size = 1740355, upload-time = "2026-01-03T17:30:09.083Z" }, + { url = "https://files.pythonhosted.org/packages/3e/80/958f16de79ba0422d7c1e284b2abd0c84bc03394fbe631d0a39ffa10e1eb/aiohttp-3.13.3-cp311-cp311-win32.whl", hash = "sha256:a2212ad43c0833a873d0fb3c63fa1bacedd4cf6af2fee62bf4b739ceec3ab239", size = 433701, upload-time = "2026-01-03T17:30:10.869Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f2/27cdf04c9851712d6c1b99df6821a6623c3c9e55956d4b1e318c337b5a48/aiohttp-3.13.3-cp311-cp311-win_amd64.whl", hash = "sha256:642f752c3eb117b105acbd87e2c143de710987e09860d674e068c4c2c441034f", size = 457678, upload-time = "2026-01-03T17:30:12.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, + { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, + { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, + { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, + { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, + { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, + { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, + { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, + { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, + { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, + { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, + { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, + { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, + { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, + { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, + { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, + { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, + { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, + { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, + { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, + { url = "https://files.pythonhosted.org/packages/bf/79/446655656861d3e7e2c32bfcf160c7aa9e9dc63776a691b124dba65cdd77/aiohttp-3.13.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:31a83ea4aead760dfcb6962efb1d861db48c34379f2ff72db9ddddd4cda9ea2e", size = 741433, upload-time = "2026-01-03T17:32:26.453Z" }, + { url = "https://files.pythonhosted.org/packages/cb/49/773c4b310b5140d2fb5e79bb0bf40b7b41dad80a288ca1a8759f5f72bda9/aiohttp-3.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:988a8c5e317544fdf0d39871559e67b6341065b87fceac641108c2096d5506b7", size = 497332, upload-time = "2026-01-03T17:32:28.37Z" }, + { url = "https://files.pythonhosted.org/packages/bc/31/1dcbc4b83a4e6f76a0ad883f07f21ffbfe29750c89db97381701508c9f45/aiohttp-3.13.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b174f267b5cfb9a7dba9ee6859cecd234e9a681841eb85068059bc867fb8f02", size = 492365, upload-time = "2026-01-03T17:32:30.234Z" }, + { url = "https://files.pythonhosted.org/packages/5a/b5/b50657496c8754482cd7964e50aaf3aa84b3db61ed45daec4c1aec5b94b4/aiohttp-3.13.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:947c26539750deeaee933b000fb6517cc770bbd064bad6033f1cff4803881e43", size = 1660440, upload-time = "2026-01-03T17:32:32.586Z" }, + { url = "https://files.pythonhosted.org/packages/2a/73/9b69e5139d89d75127569298931444ad78ea86a5befd5599780b1e9a6880/aiohttp-3.13.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9ebf57d09e131f5323464bd347135a88622d1c0976e88ce15b670e7ad57e4bd6", size = 1632740, upload-time = "2026-01-03T17:32:34.793Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fe/3ea9b5af694b4e3aec0d0613a806132ca744747146fca68e96bf056f61a7/aiohttp-3.13.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4ae5b5a0e1926e504c81c5b84353e7a5516d8778fbbff00429fe7b05bb25cbce", size = 1719782, upload-time = "2026-01-03T17:32:37.737Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c2/46b3b06e60851cbb71efb0f79a3267279cbef7b12c58e68a1e897f269cca/aiohttp-3.13.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2ba0eea45eb5cc3172dbfc497c066f19c41bac70963ea1a67d51fc92e4cf9a80", size = 1813527, upload-time = "2026-01-03T17:32:39.973Z" }, + { url = "https://files.pythonhosted.org/packages/36/23/71ceb78c769ed65fe4c697692de232b63dab399210678d2b00961ccb0619/aiohttp-3.13.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bae5c2ed2eae26cc382020edad80d01f36cb8e746da40b292e68fec40421dc6a", size = 1661268, upload-time = "2026-01-03T17:32:42.082Z" }, + { url = "https://files.pythonhosted.org/packages/c4/8d/86e929523d955e85ebab7c0e2b9e0cb63604cfc27dc3280e10d0063cf682/aiohttp-3.13.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8a60e60746623925eab7d25823329941aee7242d559baa119ca2b253c88a7bd6", size = 1552742, upload-time = "2026-01-03T17:32:44.622Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/3f5987cba1bab6bd151f0d97aa60f0ce04d3c83316692a6bb6ba2fb69f92/aiohttp-3.13.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e50a2e1404f063427c9d027378472316201a2290959a295169bcf25992d04558", size = 1632918, upload-time = "2026-01-03T17:32:46.749Z" }, + { url = "https://files.pythonhosted.org/packages/be/2c/7e1e85121f2e31ee938cb83a8f32dfafd4908530c10fabd6d46761c12ac7/aiohttp-3.13.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:9a9dc347e5a3dc7dfdbc1f82da0ef29e388ddb2ed281bfce9dd8248a313e62b7", size = 1644446, upload-time = "2026-01-03T17:32:49.063Z" }, + { url = "https://files.pythonhosted.org/packages/5d/35/ce6133d423ad0e8ca976a7c848f7146bca3520eea4ccf6b95e2d077c9d20/aiohttp-3.13.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:b46020d11d23fe16551466c77823df9cc2f2c1e63cc965daf67fa5eec6ca1877", size = 1689487, upload-time = "2026-01-03T17:32:51.113Z" }, + { url = "https://files.pythonhosted.org/packages/50/f7/ff7a27c15603d460fd1366b3c22054f7ae4fa9310aca40b43bde35867fcd/aiohttp-3.13.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:69c56fbc1993fa17043e24a546959c0178fe2b5782405ad4559e6c13975c15e3", size = 1540715, upload-time = "2026-01-03T17:32:53.38Z" }, + { url = "https://files.pythonhosted.org/packages/17/02/053f11346e5b962e6d8a1c4f8c70c29d5970a1b4b8e7894c68e12c27a57f/aiohttp-3.13.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b99281b0704c103d4e11e72a76f1b543d4946fea7dd10767e7e1b5f00d4e5704", size = 1711835, upload-time = "2026-01-03T17:32:56.088Z" }, + { url = "https://files.pythonhosted.org/packages/fb/71/9b9761ddf276fd6708d13720197cbac19b8d67ecfa9116777924056cfcaa/aiohttp-3.13.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:40c5e40ecc29ba010656c18052b877a1c28f84344825efa106705e835c28530f", size = 1649593, upload-time = "2026-01-03T17:32:58.181Z" }, + { url = "https://files.pythonhosted.org/packages/ae/72/5d817e9ea218acae12a5e3b9ad1178cf0c12fc3570c0b47eea2daf95f9ea/aiohttp-3.13.3-cp39-cp39-win32.whl", hash = "sha256:56339a36b9f1fc708260c76c87e593e2afb30d26de9ae1eb445b5e051b98a7a1", size = 434831, upload-time = "2026-01-03T17:33:00.577Z" }, + { url = "https://files.pythonhosted.org/packages/39/cb/22659d9bf3149b7a2927bc2769cc9c8f8f5a80eba098398e03c199a43a85/aiohttp-3.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:c6b8568a3bb5819a0ad087f16d40e5a3fb6099f39ea1d5625a3edc1e923fc538", size = 457697, upload-time = "2026-01-03T17:33:03.167Z" }, ] [[package]] @@ -253,7 +253,7 @@ wheels = [ [[package]] name = "aws-sam-translator" -version = "1.105.0" +version = "1.103.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, @@ -261,9 +261,9 @@ dependencies = [ { name = "pydantic" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/7e/f6bcee1f5ae7032ac66a4f1bd42bef7810504484c36004d22e81484adb0f/aws_sam_translator-1.105.0.tar.gz", hash = "sha256:472829abf114e7c47112d88f9b3c27585e9c9b44f9d090d1ab9bc4d235bc12b7", size = 355465, upload-time = "2025-12-02T17:24:25.343Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/e3/82cc7240504b1c0d2d7ed7028b05ccceedb02932b8638c61a8372a5d875f/aws_sam_translator-1.103.0.tar.gz", hash = "sha256:8317b72ef412db581dc7846932a44dfc1729adea578d9307a3e6ece46a7882ca", size = 344881, upload-time = "2025-11-21T19:50:51.818Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/10/1a6e54f42b671aae531d765351ad3c39bfa7e0bbbd0b309741421deadf82/aws_sam_translator-1.105.0-py3-none-any.whl", hash = "sha256:395930e3caa0a67e2432bf09199fa5a60edb71c2b8f05ab4b03a6f6b3fb758b7", size = 415401, upload-time = "2025-12-02T17:24:23.799Z" }, + { url = "https://files.pythonhosted.org/packages/ce/86/6414c215ff0a10b33bf89622951e7d4413106320657535d2ba0e4f634661/aws_sam_translator-1.103.0-py3-none-any.whl", hash = "sha256:d4eb4a1efa62f00b253ee5f8c0084bd4b7687186c6a12338f900ebe07ff74dad", size = 403100, upload-time = "2025-11-21T19:50:50.528Z" }, ] [[package]] @@ -388,7 +388,7 @@ dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "urllib3", version = "2.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/90/22/7fe08c726a2e3b11a0aef8bf177e83891c9cb2dc1809d35c9ed91a9e60e6/botocore-1.41.5.tar.gz", hash = "sha256:0367622b811597d183bfcaab4a350f0d3ede712031ce792ef183cabdee80d3bf", size = 14668152, upload-time = "2025-11-26T20:27:38.026Z" } wheels = [ @@ -397,11 +397,11 @@ wheels = [ [[package]] name = "certifi" -version = "2025.11.12" +version = "2026.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +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/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, + { 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]] @@ -526,7 +526,7 @@ wheels = [ [[package]] name = "cfn-lint" -version = "1.42.1" +version = "1.41.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aws-sam-translator" }, @@ -537,9 +537,9 @@ dependencies = [ { name = "sympy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/29/7ae9e6715a1c72ec9581761bfa6c18bdbe3842c32aeb797170f1dcecb8ba/cfn_lint-1.42.1.tar.gz", hash = "sha256:1963f419f297f2992f20b65487cad005d8bbe6f46f078adc9074f0e5c7d37270", size = 3728837, upload-time = "2025-12-09T15:38:56.929Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/b5/436c192cdf8dbddd8e09a591384f126c5a47937c14953d87b1dacacd0543/cfn_lint-1.41.0.tar.gz", hash = "sha256:6feca1cf57f9ed2833bab68d9b1d38c8033611e571fa792e45ab4a39e2b8ab57", size = 3408534, upload-time = "2025-11-18T20:03:33.431Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/59/72225c393e2940dabd0487f54406bec11cd1664be0cd7665022dbd04f128/cfn_lint-1.42.1-py3-none-any.whl", hash = "sha256:f2e5d6036124758b8361858ac1e174f299923b9e6943a1c3519e2e18b23bcb51", size = 6091167, upload-time = "2025-12-09T15:38:54.622Z" }, + { url = "https://files.pythonhosted.org/packages/cf/5e/81ef8f87894543210d783a495c8880cfb0b5baa0ee3bcc6d852f1b343863/cfn_lint-1.41.0-py3-none-any.whl", hash = "sha256:cd43f76f59a664b2bad580840827849fac0d56a3b80e9a41315d8ab5ff6b563a", size = 5674429, upload-time = "2025-11-18T20:03:31.083Z" }, ] [[package]] @@ -697,6 +697,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] +[[package]] +name = "common-data-format-validator" +version = "0.0.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonlines" }, + { name = "jsonschema" }, + { name = "jsonschema-specifications" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/ec/84f246e2802651eb37dd1f4a4c41b9da2ce6d878159a966fe2f24590819d/common_data_format_validator-0.0.13.tar.gz", hash = "sha256:281fa692a769f0e23303d107fffb2aadd5f39b2acf2979c489b418c65da1a0a3", size = 52588, upload-time = "2025-12-16T07:56:37.499Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/72/a68c9d5ddbdecea42a365b2e23881fd3a6b2062c397ab63020e803576fc5/common_data_format_validator-0.0.13-py3-none-any.whl", hash = "sha256:44255e68c8264b56f5844e8c420ec1236b9330eecda1b08b138e6dae7f264cd6", size = 79741, upload-time = "2025-12-16T07:56:36.058Z" }, +] + [[package]] name = "contourpy" version = "1.3.0" @@ -854,7 +869,7 @@ resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ @@ -1007,35 +1022,35 @@ wheels = [ [[package]] name = "debugpy" -version = "1.8.18" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/62/1a/7cb5531840d7ba5d9329644109e62adee41f2f0083d9f8a4039f01de58cf/debugpy-1.8.18.tar.gz", hash = "sha256:02551b1b84a91faadd2db9bc4948873f2398190c95b3cc6f97dc706f43e8c433", size = 1644467, upload-time = "2025-12-10T19:48:07.236Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/38/0136815d2425fda176b30f0ec0b0f299d7316db46b36420e48399eca42e2/debugpy-1.8.18-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:d44e9c531f2519ec4b856ddde8f536615918f5b7886c658a81bf200c90315f77", size = 2098460, upload-time = "2025-12-10T19:48:08.924Z" }, - { url = "https://files.pythonhosted.org/packages/bc/d9/2f00867bea3e50fee298b37602ac7aec9915bdb7227756d4cef889671c4a/debugpy-1.8.18-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:a69ef7d6050e5d26cf8e0081c6b591a41383dc18db734c4acafdd49568bb7a6f", size = 3087841, upload-time = "2025-12-10T19:48:10.326Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c1/54e50f376d394e0d3d355149d3d85b575e861d57ec0d0ff409c4bd51f531/debugpy-1.8.18-cp310-cp310-win32.whl", hash = "sha256:971965e264faed48ae961ff1e1ad2ce32d8e0cc550a4baa7643a25f1782b7125", size = 5233663, upload-time = "2025-12-10T19:48:12.668Z" }, - { url = "https://files.pythonhosted.org/packages/14/84/1142d16ee87f9bf4db5857b0b38468af602815eb73a9927436c79619beed/debugpy-1.8.18-cp310-cp310-win_amd64.whl", hash = "sha256:0701d83c4c1a74ed2c9abdabce102b1daf24cf81e1802421980871c9ee41f371", size = 5265361, upload-time = "2025-12-10T19:48:14.071Z" }, - { url = "https://files.pythonhosted.org/packages/ac/72/93167809b44a8e6971a1ff0b3e956cca4832fd7e8e47ce7b2b16be95795a/debugpy-1.8.18-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:3dae1d65e581406a4d7c1bb44391f47e621b8c87c5639b6607e6007a5d823205", size = 2207588, upload-time = "2025-12-10T19:48:15.44Z" }, - { url = "https://files.pythonhosted.org/packages/05/8b/0f5a54b239dac880ccc16e0b29fdecfb444635f2495cc3705548e24938ab/debugpy-1.8.18-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:8804d1288e6006629a87d53eb44b7b66e695d428ac529ffd75bfc7d730a9c821", size = 3170762, upload-time = "2025-12-10T19:48:17.192Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e4/7631d0ecd102085aa1cf5eb38f50e00036dec2c4571f236d2189ed842ee3/debugpy-1.8.18-cp311-cp311-win32.whl", hash = "sha256:ded8a5a413bd0a249b3c0be9f43128f437755180ac431222a6354c7d76a76a54", size = 5158530, upload-time = "2025-12-10T19:48:18.701Z" }, - { url = "https://files.pythonhosted.org/packages/c0/51/97674a4af4dc960a4eb0882b6c41c111e6a0a79c6b275df202f392e751cb/debugpy-1.8.18-cp311-cp311-win_amd64.whl", hash = "sha256:df6c1243dedcb6bf9a5dc1c5668009e2b5508b8525f27d9821be91da57827743", size = 5182452, upload-time = "2025-12-10T19:48:20.328Z" }, - { url = "https://files.pythonhosted.org/packages/83/01/439626e3572a33ac543f25bc1dac1e80bc01c7ce83f3c24dc4441302ca13/debugpy-1.8.18-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:530c38114725505a7e4ea95328dbc24aabb9be708c6570623c8163412e6d1d6b", size = 2549961, upload-time = "2025-12-10T19:48:21.73Z" }, - { url = "https://files.pythonhosted.org/packages/cd/73/1eeaa15c20a2b627be57a65bc1ebf2edd8d896950eac323588b127d776f2/debugpy-1.8.18-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:a114865099283cbed4c9330cb0c9cb7a04cfa92e803577843657302d526141ec", size = 4309855, upload-time = "2025-12-10T19:48:23.41Z" }, - { url = "https://files.pythonhosted.org/packages/e4/6f/2da8ded21ae55df7067e57bd7f67ffed7e08b634f29bdba30c03d3f19918/debugpy-1.8.18-cp312-cp312-win32.whl", hash = "sha256:4d26736dfabf404e9f3032015ec7b0189e7396d0664e29e5bdbe7ac453043c95", size = 5280577, upload-time = "2025-12-10T19:48:25.386Z" }, - { url = "https://files.pythonhosted.org/packages/f5/8e/ebe887218c5b84f9421de7eb7bb7cdf196e84535c3f504a562219297d755/debugpy-1.8.18-cp312-cp312-win_amd64.whl", hash = "sha256:7e68ba950acbcf95ee862210133681f408cbb78d1c9badbb515230ec55ed6487", size = 5322458, upload-time = "2025-12-10T19:48:28.049Z" }, - { url = "https://files.pythonhosted.org/packages/fe/3f/45af037e91e308274a092eb6a86282865fb1f11148cdb7616e811aae33d7/debugpy-1.8.18-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:75d14dd04b617ee38e46786394ec0dd5e1ac5e3d10ffb034fd6c7b72111174c2", size = 2538826, upload-time = "2025-12-10T19:48:29.434Z" }, - { url = "https://files.pythonhosted.org/packages/cc/f4/2de6bf624de05134d1bbe0a8750d484363cd212c3ade3d04f5c77d47d0ce/debugpy-1.8.18-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:1b224887af5121fa702f9f542968170d104e3f9cac827d85fdefe89702dc235c", size = 4292542, upload-time = "2025-12-10T19:48:30.836Z" }, - { url = "https://files.pythonhosted.org/packages/93/54/89de7ef84d5ac39fc64a773feaedd902536cc5295814cd22d19c6d9dea35/debugpy-1.8.18-cp313-cp313-win32.whl", hash = "sha256:636a5445a3336e4aba323a3545ca2bb373b04b0bc14084a4eb20c989db44429f", size = 5280460, upload-time = "2025-12-10T19:48:32.696Z" }, - { url = "https://files.pythonhosted.org/packages/4f/59/651329e618406229edbef6508a5aa05e43cd027f042740c5b27e46854b23/debugpy-1.8.18-cp313-cp313-win_amd64.whl", hash = "sha256:6da217ac8c1152d698b9809484d50c75bef9cc02fd6886a893a6df81ec952ff8", size = 5322399, upload-time = "2025-12-10T19:48:35.057Z" }, - { url = "https://files.pythonhosted.org/packages/36/59/5e8bf46a66ca9dfcd0ce4f35c07085aeb60d99bf5c52135973a4e197ed41/debugpy-1.8.18-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:be7f622d250fe3429571e84572eb771023f1da22c754f28d2c60a10d74a4cc1b", size = 2537336, upload-time = "2025-12-10T19:48:36.463Z" }, - { url = "https://files.pythonhosted.org/packages/a1/5a/3b37cc266a69da83a4febaa4267bb2062d4bec5287036e2f23d9a30a788c/debugpy-1.8.18-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:df8bf7cd78019d5d155213bf5a1818b36403d0c3758d669e76827d4db026b840", size = 4268696, upload-time = "2025-12-10T19:48:37.855Z" }, - { url = "https://files.pythonhosted.org/packages/de/4b/1e13586444440e5754b70055449b70afa187aaa167fa4c20c0c05d9c3b80/debugpy-1.8.18-cp314-cp314-win32.whl", hash = "sha256:32dd56d50fe15c47d0f930a7f0b9d3e5eb8ed04770bc6c313fba6d226f87e1e8", size = 5280624, upload-time = "2025-12-10T19:48:39.28Z" }, - { url = "https://files.pythonhosted.org/packages/7a/21/f8c12baa16212859269dc4c3e4b413778ec1154d332896d3c4cca96ac660/debugpy-1.8.18-cp314-cp314-win_amd64.whl", hash = "sha256:714b61d753cfe3ed5e7bf0aad131506d750e271726ac86e3e265fd7eeebbe765", size = 5321982, upload-time = "2025-12-10T19:48:41.086Z" }, - { url = "https://files.pythonhosted.org/packages/bb/48/3cf2a034108c30ae523bf764370155ec4eee8979e5c05ad6c412a346876f/debugpy-1.8.18-cp39-cp39-macosx_15_0_x86_64.whl", hash = "sha256:63424eb602ccb2c158fbd40437404d29ce0da5f9552e8bab53fb265e19e686ee", size = 2099749, upload-time = "2025-12-10T19:48:49.788Z" }, - { url = "https://files.pythonhosted.org/packages/90/e3/7ae3155d319417a04ccc2dcba8d8a3da4166e24a2decf4b7b3c055dd6528/debugpy-1.8.18-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:46e4aa316f9c16fa7145f192bf0fd1c5c43effca13b8767270a99e7e7ac464f5", size = 3080539, upload-time = "2025-12-10T19:48:51.261Z" }, - { url = "https://files.pythonhosted.org/packages/25/d5/6b6485f23047ac5902c206abb22eda0ecab1783ad7b3be6fd589cf9a5719/debugpy-1.8.18-cp39-cp39-win32.whl", hash = "sha256:2721237f9456394943f75c4b6f7cf2aed6ab9c59b7beca4bf553621d37000115", size = 5234457, upload-time = "2025-12-10T19:48:52.779Z" }, - { url = "https://files.pythonhosted.org/packages/15/36/7d70aab85671e0af154faf1d70b39bcee42d7ed9cbada5d42bfd186a19fb/debugpy-1.8.18-cp39-cp39-win_amd64.whl", hash = "sha256:cab3abf0ee2328269c380f7a8a1c41ea1d80d6507404db9b005c8432bc6224a1", size = 5266103, upload-time = "2025-12-10T19:48:54.291Z" }, - { url = "https://files.pythonhosted.org/packages/dc/0d/bf7ac329c132436c57124202b5b5ccd6366e5d8e75eeb184cf078c826e8d/debugpy-1.8.18-py2.py3-none-any.whl", hash = "sha256:ab8cf0abe0fe2dfe1f7e65abc04b1db8740f9be80c1274acb625855c5c3ece6e", size = 5286576, upload-time = "2025-12-10T19:48:56.071Z" }, +version = "1.8.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/75/9e12d4d42349b817cd545b89247696c67917aab907012ae5b64bbfea3199/debugpy-1.8.19.tar.gz", hash = "sha256:eea7e5987445ab0b5ed258093722d5ecb8bb72217c5c9b1e21f64efe23ddebdb", size = 1644590, upload-time = "2025-12-15T21:53:28.044Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/98/d57054371887f37d3c959a7a8dc3c76b763acb65f5e78d849d7db7cadc5b/debugpy-1.8.19-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:fce6da15d73be5935b4438435c53adb512326a3e11e4f90793ea87cd9f018254", size = 2098493, upload-time = "2025-12-15T21:53:30.149Z" }, + { url = "https://files.pythonhosted.org/packages/ee/dd/c517b9aa3500157a30e4f4c4f5149f880026bd039d2b940acd2383a85d8e/debugpy-1.8.19-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:e24b1652a1df1ab04d81e7ead446a91c226de704ff5dde6bd0a0dbaab07aa3f2", size = 3087875, upload-time = "2025-12-15T21:53:31.511Z" }, + { url = "https://files.pythonhosted.org/packages/d8/57/3d5a5b0da9b63445253107ead151eff29190c6ad7440c68d1a59d56613aa/debugpy-1.8.19-cp310-cp310-win32.whl", hash = "sha256:327cb28c3ad9e17bc925efc7f7018195fd4787c2fe4b7af1eec11f1d19bdec62", size = 5239378, upload-time = "2025-12-15T21:53:32.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/36/7f9053c4c549160c87ae7e43800138f2695578c8b65947114c97250983b6/debugpy-1.8.19-cp310-cp310-win_amd64.whl", hash = "sha256:b7dd275cf2c99e53adb9654f5ae015f70415bbe2bacbe24cfee30d54b6aa03c5", size = 5271129, upload-time = "2025-12-15T21:53:35.085Z" }, + { url = "https://files.pythonhosted.org/packages/80/e2/48531a609b5a2aa94c6b6853afdfec8da05630ab9aaa96f1349e772119e9/debugpy-1.8.19-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:c5dcfa21de1f735a4f7ced4556339a109aa0f618d366ede9da0a3600f2516d8b", size = 2207620, upload-time = "2025-12-15T21:53:37.1Z" }, + { url = "https://files.pythonhosted.org/packages/1b/d4/97775c01d56071969f57d93928899e5616a4cfbbf4c8cc75390d3a51c4a4/debugpy-1.8.19-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:806d6800246244004625d5222d7765874ab2d22f3ba5f615416cf1342d61c488", size = 3170796, upload-time = "2025-12-15T21:53:38.513Z" }, + { url = "https://files.pythonhosted.org/packages/8d/7e/8c7681bdb05be9ec972bbb1245eb7c4c7b0679bb6a9e6408d808bc876d3d/debugpy-1.8.19-cp311-cp311-win32.whl", hash = "sha256:783a519e6dfb1f3cd773a9bda592f4887a65040cb0c7bd38dde410f4e53c40d4", size = 5164287, upload-time = "2025-12-15T21:53:40.857Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a8/aaac7ff12ddf5d68a39e13a423a8490426f5f661384f5ad8d9062761bd8e/debugpy-1.8.19-cp311-cp311-win_amd64.whl", hash = "sha256:14035cbdbb1fe4b642babcdcb5935c2da3b1067ac211c5c5a8fdc0bb31adbcaa", size = 5188269, upload-time = "2025-12-15T21:53:42.359Z" }, + { url = "https://files.pythonhosted.org/packages/4a/15/d762e5263d9e25b763b78be72dc084c7a32113a0bac119e2f7acae7700ed/debugpy-1.8.19-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:bccb1540a49cde77edc7ce7d9d075c1dbeb2414751bc0048c7a11e1b597a4c2e", size = 2549995, upload-time = "2025-12-15T21:53:43.773Z" }, + { url = "https://files.pythonhosted.org/packages/a7/88/f7d25c68b18873b7c53d7c156ca7a7ffd8e77073aa0eac170a9b679cf786/debugpy-1.8.19-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:e9c68d9a382ec754dc05ed1d1b4ed5bd824b9f7c1a8cd1083adb84b3c93501de", size = 4309891, upload-time = "2025-12-15T21:53:45.26Z" }, + { url = "https://files.pythonhosted.org/packages/c5/4f/a65e973aba3865794da65f71971dca01ae66666132c7b2647182d5be0c5f/debugpy-1.8.19-cp312-cp312-win32.whl", hash = "sha256:6599cab8a783d1496ae9984c52cb13b7c4a3bd06a8e6c33446832a5d97ce0bee", size = 5286355, upload-time = "2025-12-15T21:53:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/d8/3a/d3d8b48fec96e3d824e404bf428276fb8419dfa766f78f10b08da1cb2986/debugpy-1.8.19-cp312-cp312-win_amd64.whl", hash = "sha256:66e3d2fd8f2035a8f111eb127fa508469dfa40928a89b460b41fd988684dc83d", size = 5328239, upload-time = "2025-12-15T21:53:48.868Z" }, + { url = "https://files.pythonhosted.org/packages/71/3d/388035a31a59c26f1ecc8d86af607d0c42e20ef80074147cd07b180c4349/debugpy-1.8.19-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:91e35db2672a0abaf325f4868fcac9c1674a0d9ad9bb8a8c849c03a5ebba3e6d", size = 2538859, upload-time = "2025-12-15T21:53:50.478Z" }, + { url = "https://files.pythonhosted.org/packages/4a/19/c93a0772d0962294f083dbdb113af1a7427bb632d36e5314297068f55db7/debugpy-1.8.19-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:85016a73ab84dea1c1f1dcd88ec692993bcbe4532d1b49ecb5f3c688ae50c606", size = 4292575, upload-time = "2025-12-15T21:53:51.821Z" }, + { url = "https://files.pythonhosted.org/packages/5c/56/09e48ab796b0a77e3d7dc250f95251832b8bf6838c9632f6100c98bdf426/debugpy-1.8.19-cp313-cp313-win32.whl", hash = "sha256:b605f17e89ba0ecee994391194285fada89cee111cfcd29d6f2ee11cbdc40976", size = 5286209, upload-time = "2025-12-15T21:53:53.602Z" }, + { url = "https://files.pythonhosted.org/packages/fb/4e/931480b9552c7d0feebe40c73725dd7703dcc578ba9efc14fe0e6d31cfd1/debugpy-1.8.19-cp313-cp313-win_amd64.whl", hash = "sha256:c30639998a9f9cd9699b4b621942c0179a6527f083c72351f95c6ab1728d5b73", size = 5328206, upload-time = "2025-12-15T21:53:55.433Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b9/cbec520c3a00508327476c7fce26fbafef98f412707e511eb9d19a2ef467/debugpy-1.8.19-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:1e8c4d1bd230067bf1bbcdbd6032e5a57068638eb28b9153d008ecde288152af", size = 2537372, upload-time = "2025-12-15T21:53:57.318Z" }, + { url = "https://files.pythonhosted.org/packages/88/5e/cf4e4dc712a141e10d58405c58c8268554aec3c35c09cdcda7535ff13f76/debugpy-1.8.19-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d40c016c1f538dbf1762936e3aeb43a89b965069d9f60f9e39d35d9d25e6b809", size = 4268729, upload-time = "2025-12-15T21:53:58.712Z" }, + { url = "https://files.pythonhosted.org/packages/82/a3/c91a087ab21f1047db328c1d3eb5d1ff0e52de9e74f9f6f6fa14cdd93d58/debugpy-1.8.19-cp314-cp314-win32.whl", hash = "sha256:0601708223fe1cd0e27c6cce67a899d92c7d68e73690211e6788a4b0e1903f5b", size = 5286388, upload-time = "2025-12-15T21:54:00.687Z" }, + { url = "https://files.pythonhosted.org/packages/17/b8/bfdc30b6e94f1eff09f2dc9cc1f9cd1c6cde3d996bcbd36ce2d9a4956e99/debugpy-1.8.19-cp314-cp314-win_amd64.whl", hash = "sha256:8e19a725f5d486f20e53a1dde2ab8bb2c9607c40c00a42ab646def962b41125f", size = 5327741, upload-time = "2025-12-15T21:54:02.148Z" }, + { url = "https://files.pythonhosted.org/packages/0b/27/9e6223367eef0bc98299418768b4e885ce3c14bb6fd03473a1b8729b1163/debugpy-1.8.19-cp39-cp39-macosx_15_0_x86_64.whl", hash = "sha256:c047177ab2d286451f242b855b650d313198c4a987140d4b35218b2855a64a4a", size = 2099782, upload-time = "2025-12-15T21:54:09.768Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ab/7f3dccc256a18b535c915a84501925e50f95f0e4bc8b85779932a952b71f/debugpy-1.8.19-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:4468de0c30012d367944f0eab4ecb8371736e8ef9522a465f61214f344c11183", size = 3080573, upload-time = "2025-12-15T21:54:11.575Z" }, + { url = "https://files.pythonhosted.org/packages/a7/78/00581bffa724a0d4ddfd7172863c48afe3776c72110289f40c06baec6d23/debugpy-1.8.19-cp39-cp39-win32.whl", hash = "sha256:7b62c0f015120ede25e5124a5f9d8a424e1208e3d96a36c89958f046ee21fff6", size = 5240246, upload-time = "2025-12-15T21:54:13.086Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a7/5731bea7b69070ee8a97b5a6fbe5d6e5dff66bdce347c97fa286cbc04119/debugpy-1.8.19-cp39-cp39-win_amd64.whl", hash = "sha256:76f566baaf7f3e06adbe67ffedccd2ee911d1e486f55931939ce3f0fe1090774", size = 5271902, upload-time = "2025-12-15T21:54:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/25/3e/e27078370414ef35fafad2c06d182110073daaeb5d3bf734b0b1eeefe452/debugpy-1.8.19-py2.py3-none-any.whl", hash = "sha256:360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38", size = 5292321, upload-time = "2025-12-15T21:54:16.024Z" }, ] [[package]] @@ -1073,7 +1088,7 @@ dependencies = [ { name = "pywin32", marker = "sys_platform == 'win32'" }, { name = "requests" }, { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "urllib3", version = "2.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } wheels = [ @@ -1124,16 +1139,16 @@ wheels = [ [[package]] name = "filelock" -version = "3.20.0" +version = "3.20.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", "python_full_version == '3.10.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/e0/a75dbe4bca1e7d41307323dad5ea2efdd95408f74ab2de8bd7dba9b51a1a/filelock-3.20.2.tar.gz", hash = "sha256:a2241ff4ddde2a7cebddf78e39832509cb045d18ec1a09d7248d6bfc6bfbbe64", size = 19510, upload-time = "2026-01-02T15:33:32.582Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" }, + { url = "https://files.pythonhosted.org/packages/9a/30/ab407e2ec752aa541704ed8f93c11e2a5d92c168b8a755d818b74a3c5c2d/filelock-3.20.2-py3-none-any.whl", hash = "sha256:fbba7237d6ea277175a32c54bb71ef814a8546d8601269e1bfc388de333974e8", size = 16697, upload-time = "2026-01-02T15:33:31.133Z" }, ] [[package]] @@ -1157,15 +1172,15 @@ wheels = [ [[package]] name = "flask-cors" -version = "6.0.1" +version = "6.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "flask" }, { name = "werkzeug" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/37/bcfa6c7d5eec777c4c7cf45ce6b27631cebe5230caf88d85eadd63edd37a/flask_cors-6.0.1.tar.gz", hash = "sha256:d81bcb31f07b0985be7f48406247e9243aced229b7747219160a0559edd678db", size = 13463, upload-time = "2025-06-11T01:32:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/74/0fc0fa68d62f21daef41017dafab19ef4b36551521260987eb3a5394c7ba/flask_cors-6.0.2.tar.gz", hash = "sha256:6e118f3698249ae33e429760db98ce032a8bf9913638d085ca0f4c5534ad2423", size = 13472, upload-time = "2025-12-12T20:31:42.861Z" } 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" }, + { url = "https://files.pythonhosted.org/packages/4f/af/72ad54402e599152de6d067324c46fe6a4f531c7c65baf7e96c63db55eaf/flask_cors-6.0.2-py3-none-any.whl", hash = "sha256:e57544d415dfd7da89a9564e1e3a9e515042df76e12130641ca6f3f2f03b699a", size = 13257, upload-time = "2025-12-12T20:31:41.3Z" }, ] [[package]] @@ -1238,64 +1253,64 @@ wheels = [ [[package]] name = "fonttools" -version = "4.61.0" +version = "4.61.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", "python_full_version == '3.10.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/33/f9/0e84d593c0e12244150280a630999835a64f2852276161b62a0f98318de0/fonttools-4.61.0.tar.gz", hash = "sha256:ec520a1f0c7758d7a858a00f090c1745f6cde6a7c5e76fb70ea4044a15f712e7", size = 3561884, upload-time = "2025-11-28T17:05:49.491Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/f3/91bba2721fb173fc68e09d15b6ccf3ad4f83d127fbff579be7e5984888a6/fonttools-4.61.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dc25a4a9c1225653e4431a9413d0381b1c62317b0f543bdcec24e1991f612f33", size = 2850151, upload-time = "2025-11-28T17:04:14.214Z" }, - { url = "https://files.pythonhosted.org/packages/f5/8c/a1691dec01038ac7e7bb3ab83300dcc5087b11d8f48640928c02a873eb92/fonttools-4.61.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b493c32d2555e9944ec1b911ea649ff8f01a649ad9cba6c118d6798e932b3f0", size = 2389769, upload-time = "2025-11-28T17:04:16.443Z" }, - { url = "https://files.pythonhosted.org/packages/2d/dd/5bb369a44319d92ba25612511eb8ed2a6fa75239979e0388907525626902/fonttools-4.61.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ad751319dc532a79bdf628b8439af167181b4210a0cd28a8935ca615d9fdd727", size = 4893189, upload-time = "2025-11-28T17:04:18.398Z" }, - { url = "https://files.pythonhosted.org/packages/5e/02/51373fa8846bd22bb54e5efb30a824b417b058083f775a194a432f21a45f/fonttools-4.61.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2de14557d113faa5fb519f7f29c3abe4d69c17fe6a5a2595cc8cda7338029219", size = 4854415, upload-time = "2025-11-28T17:04:20.421Z" }, - { url = "https://files.pythonhosted.org/packages/8b/64/9cdbbb804577a7e6191448851c57e6a36eb02aa4bf6a9668b528c968e44e/fonttools-4.61.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:59587bbe455dbdf75354a9dbca1697a35a8903e01fab4248d6b98a17032cee52", size = 4870927, upload-time = "2025-11-28T17:04:22.625Z" }, - { url = "https://files.pythonhosted.org/packages/92/68/e40b22919dc96dc30a70b58fec609ab85112de950bdecfadf8dd478c5a88/fonttools-4.61.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:46cb3d9279f758ac0cf671dc3482da877104b65682679f01b246515db03dbb72", size = 4988674, upload-time = "2025-11-28T17:04:24.675Z" }, - { url = "https://files.pythonhosted.org/packages/9b/5c/e857349ce8aedb2451b9448282e86544b2b7f1c8b10ea0fe49b7cb369b72/fonttools-4.61.0-cp310-cp310-win32.whl", hash = "sha256:58b4f1b78dfbfe855bb8a6801b31b8cdcca0e2847ec769ad8e0b0b692832dd3b", size = 1497663, upload-time = "2025-11-28T17:04:26.598Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0c/62961d5fe6f764d6cbc387ef2c001f5f610808c7aded837409836c0b3e7c/fonttools-4.61.0-cp310-cp310-win_amd64.whl", hash = "sha256:68704a8bbe0b61976262b255e90cde593dc0fe3676542d9b4d846bad2a890a76", size = 1546143, upload-time = "2025-11-28T17:04:28.432Z" }, - { url = "https://files.pythonhosted.org/packages/fd/be/5aa89cdddf2863d8afbdc19eb8ec5d8d35d40eeeb8e6cf52c5ff1c2dbd33/fonttools-4.61.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a32a16951cbf113d38f1dd8551b277b6e06e0f6f776fece0f99f746d739e1be3", size = 2847553, upload-time = "2025-11-28T17:04:30.539Z" }, - { url = "https://files.pythonhosted.org/packages/0d/3e/6ff643b07cead1236a534f51291ae2981721cf419135af5b740c002a66dd/fonttools-4.61.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:328a9c227984bebaf69f3ac9062265f8f6acc7ddf2e4e344c63358579af0aa3d", size = 2388298, upload-time = "2025-11-28T17:04:32.161Z" }, - { url = "https://files.pythonhosted.org/packages/c3/15/fca8dfbe7b482e6f240b1aad0ed7c6e2e75e7a28efa3d3a03b570617b5e5/fonttools-4.61.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2f0bafc8a3b3749c69cc610e5aa3da832d39c2a37a68f03d18ec9a02ecaac04a", size = 5054133, upload-time = "2025-11-28T17:04:34.035Z" }, - { url = "https://files.pythonhosted.org/packages/6a/a2/821c61c691b21fd09e07528a9a499cc2b075ac83ddb644aa16c9875a64bc/fonttools-4.61.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b5ca59b7417d149cf24e4c1933c9f44b2957424fc03536f132346d5242e0ebe5", size = 5031410, upload-time = "2025-11-28T17:04:36.141Z" }, - { url = "https://files.pythonhosted.org/packages/e8/f6/8b16339e93d03c732c8a23edefe3061b17a5f9107ddc47a3215ecd054cac/fonttools-4.61.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:df8cbce85cf482eb01f4551edca978c719f099c623277bda8332e5dbe7dba09d", size = 5030005, upload-time = "2025-11-28T17:04:38.314Z" }, - { url = "https://files.pythonhosted.org/packages/ac/eb/d4e150427bdaa147755239c931bbce829a88149ade5bfd8a327afe565567/fonttools-4.61.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7fb5b84f48a6a733ca3d7f41aa9551908ccabe8669ffe79586560abcc00a9cfd", size = 5154026, upload-time = "2025-11-28T17:04:40.34Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5f/3dd00ce0dba6759943c707b1830af8c0bcf6f8f1a9fe46cb82e7ac2aaa74/fonttools-4.61.0-cp311-cp311-win32.whl", hash = "sha256:787ef9dfd1ea9fe49573c272412ae5f479d78e671981819538143bec65863865", size = 2276035, upload-time = "2025-11-28T17:04:42.59Z" }, - { url = "https://files.pythonhosted.org/packages/4e/44/798c472f096ddf12955eddb98f4f7c906e7497695d04ce073ddf7161d134/fonttools-4.61.0-cp311-cp311-win_amd64.whl", hash = "sha256:14fafda386377b6131d9e448af42d0926bad47e038de0e5ba1d58c25d621f028", size = 2327290, upload-time = "2025-11-28T17:04:44.57Z" }, - { url = "https://files.pythonhosted.org/packages/00/5d/19e5939f773c7cb05480fe2e881d63870b63ee2b4bdb9a77d55b1d36c7b9/fonttools-4.61.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e24a1565c4e57111ec7f4915f8981ecbb61adf66a55f378fdc00e206059fcfef", size = 2846930, upload-time = "2025-11-28T17:04:46.639Z" }, - { url = "https://files.pythonhosted.org/packages/25/b2/0658faf66f705293bd7e739a4f038302d188d424926be9c59bdad945664b/fonttools-4.61.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2bfacb5351303cae9f072ccf3fc6ecb437a6f359c0606bae4b1ab6715201d87", size = 2383016, upload-time = "2025-11-28T17:04:48.525Z" }, - { url = "https://files.pythonhosted.org/packages/29/a3/1fa90b95b690f0d7541f48850adc40e9019374d896c1b8148d15012b2458/fonttools-4.61.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0bdcf2e29d65c26299cc3d502f4612365e8b90a939f46cd92d037b6cb7bb544a", size = 4949425, upload-time = "2025-11-28T17:04:50.482Z" }, - { url = "https://files.pythonhosted.org/packages/af/00/acf18c00f6c501bd6e05ee930f926186f8a8e268265407065688820f1c94/fonttools-4.61.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e6cd0d9051b8ddaf7385f99dd82ec2a058e2b46cf1f1961e68e1ff20fcbb61af", size = 4999632, upload-time = "2025-11-28T17:04:52.508Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e0/19a2b86e54109b1d2ee8743c96a1d297238ae03243897bc5345c0365f34d/fonttools-4.61.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e074bc07c31406f45c418e17c1722e83560f181d122c412fa9e815df0ff74810", size = 4939438, upload-time = "2025-11-28T17:04:54.437Z" }, - { url = "https://files.pythonhosted.org/packages/04/35/7b57a5f57d46286360355eff8d6b88c64ab6331107f37a273a71c803798d/fonttools-4.61.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a9b78da5d5faa17e63b2404b77feeae105c1b7e75f26020ab7a27b76e02039f", size = 5088960, upload-time = "2025-11-28T17:04:56.348Z" }, - { url = "https://files.pythonhosted.org/packages/3e/0e/6c5023eb2e0fe5d1ababc7e221e44acd3ff668781489cc1937a6f83d620a/fonttools-4.61.0-cp312-cp312-win32.whl", hash = "sha256:9821ed77bb676736b88fa87a737c97b6af06e8109667e625a4f00158540ce044", size = 2264404, upload-time = "2025-11-28T17:04:58.149Z" }, - { url = "https://files.pythonhosted.org/packages/36/0b/63273128c7c5df19b1e4cd92e0a1e6ea5bb74a400c4905054c96ad60a675/fonttools-4.61.0-cp312-cp312-win_amd64.whl", hash = "sha256:0011d640afa61053bc6590f9a3394bd222de7cfde19346588beabac374e9d8ac", size = 2314427, upload-time = "2025-11-28T17:04:59.812Z" }, - { url = "https://files.pythonhosted.org/packages/17/45/334f0d7f181e5473cfb757e1b60f4e60e7fc64f28d406e5d364a952718c0/fonttools-4.61.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba774b8cbd8754f54b8eb58124e8bd45f736b2743325ab1a5229698942b9b433", size = 2841801, upload-time = "2025-11-28T17:05:01.621Z" }, - { url = "https://files.pythonhosted.org/packages/cc/63/97b9c78e1f79bc741d4efe6e51f13872d8edb2b36e1b9fb2bab0d4491bb7/fonttools-4.61.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c84b430616ed73ce46e9cafd0bf0800e366a3e02fb7e1ad7c1e214dbe3862b1f", size = 2379024, upload-time = "2025-11-28T17:05:03.668Z" }, - { url = "https://files.pythonhosted.org/packages/4e/80/c87bc524a90dbeb2a390eea23eae448286983da59b7e02c67fa0ca96a8c5/fonttools-4.61.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b2b734d8391afe3c682320840c8191de9bd24e7eb85768dd4dc06ed1b63dbb1b", size = 4923706, upload-time = "2025-11-28T17:05:05.494Z" }, - { url = "https://files.pythonhosted.org/packages/6d/f6/a3b0374811a1de8c3f9207ec88f61ad1bb96f938ed89babae26c065c2e46/fonttools-4.61.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5c5fff72bf31b0e558ed085e4fd7ed96eb85881404ecc39ed2a779e7cf724eb", size = 4979751, upload-time = "2025-11-28T17:05:07.665Z" }, - { url = "https://files.pythonhosted.org/packages/a5/3b/30f63b4308b449091573285f9d27619563a84f399946bca3eadc9554afbe/fonttools-4.61.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:14a290c5c93fcab76b7f451e6a4b7721b712d90b3b5ed6908f1abcf794e90d6d", size = 4921113, upload-time = "2025-11-28T17:05:09.551Z" }, - { url = "https://files.pythonhosted.org/packages/41/6c/58e6e9b7d9d8bf2d7010bd7bb493060b39b02a12d1cda64a8bfb116ce760/fonttools-4.61.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:13e3e20a5463bfeb77b3557d04b30bd6a96a6bb5c15c7b2e7908903e69d437a0", size = 5063183, upload-time = "2025-11-28T17:05:11.677Z" }, - { url = "https://files.pythonhosted.org/packages/3f/e3/52c790ab2b07492df059947a1fd7778e105aac5848c0473029a4d20481a2/fonttools-4.61.0-cp313-cp313-win32.whl", hash = "sha256:6781e7a4bb010be1cd69a29927b0305c86b843395f2613bdabe115f7d6ea7f34", size = 2263159, upload-time = "2025-11-28T17:05:13.292Z" }, - { url = "https://files.pythonhosted.org/packages/e9/1f/116013b200fbeba871046554d5d2a45fefa69a05c40e9cdfd0d4fff53edc/fonttools-4.61.0-cp313-cp313-win_amd64.whl", hash = "sha256:c53b47834ae41e8e4829171cc44fec0fdf125545a15f6da41776b926b9645a9a", size = 2313530, upload-time = "2025-11-28T17:05:14.848Z" }, - { url = "https://files.pythonhosted.org/packages/d3/99/59b1e25987787cb714aa9457cee4c9301b7c2153f0b673e2b8679d37669d/fonttools-4.61.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:96dfc9bc1f2302224e48e6ee37e656eddbab810b724b52e9d9c13a57a6abad01", size = 2841429, upload-time = "2025-11-28T17:05:16.671Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/4c1911d4332c8a144bb3b44416e274ccca0e297157c971ea1b3fbb855590/fonttools-4.61.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3b2065d94e5d63aafc2591c8b6ccbdb511001d9619f1bca8ad39b745ebeb5efa", size = 2378987, upload-time = "2025-11-28T17:05:18.69Z" }, - { url = "https://files.pythonhosted.org/packages/24/b0/f442e90fde5d2af2ae0cb54008ab6411edc557ee33b824e13e1d04925ac9/fonttools-4.61.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e0d87e81e4d869549585ba0beb3f033718501c1095004f5e6aef598d13ebc216", size = 4873270, upload-time = "2025-11-28T17:05:20.625Z" }, - { url = "https://files.pythonhosted.org/packages/bb/04/f5d5990e33053c8a59b90b1d7e10ad9b97a73f42c745304da0e709635fab/fonttools-4.61.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1cfa2eb9bae650e58f0e8ad53c49d19a844d6034d6b259f30f197238abc1ccee", size = 4968270, upload-time = "2025-11-28T17:05:22.515Z" }, - { url = "https://files.pythonhosted.org/packages/94/9f/2091402e0d27c9c8c4bab5de0e5cd146d9609a2d7d1c666bbb75c0011c1a/fonttools-4.61.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4238120002e68296d55e091411c09eab94e111c8ce64716d17df53fd0eb3bb3d", size = 4919799, upload-time = "2025-11-28T17:05:24.437Z" }, - { url = "https://files.pythonhosted.org/packages/a8/72/86adab22fde710b829f8ffbc8f264df01928e5b7a8f6177fa29979ebf256/fonttools-4.61.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b6ceac262cc62bec01b3bb59abccf41b24ef6580869e306a4e88b7e56bb4bdda", size = 5030966, upload-time = "2025-11-28T17:05:26.115Z" }, - { url = "https://files.pythonhosted.org/packages/e8/a7/7c8e31b003349e845b853f5e0a67b95ff6b052fa4f5224f8b72624f5ac69/fonttools-4.61.0-cp314-cp314-win32.whl", hash = "sha256:adbb4ecee1a779469a77377bbe490565effe8fce6fb2e6f95f064de58f8bac85", size = 2267243, upload-time = "2025-11-28T17:05:27.807Z" }, - { url = "https://files.pythonhosted.org/packages/20/ee/f434fe7749360497c52b7dcbcfdbccdaab0a71c59f19d572576066717122/fonttools-4.61.0-cp314-cp314-win_amd64.whl", hash = "sha256:02bdf8e04d1a70476564b8640380f04bb4ac74edc1fc71f1bacb840b3e398ee9", size = 2318822, upload-time = "2025-11-28T17:05:29.882Z" }, - { url = "https://files.pythonhosted.org/packages/33/b3/c16255320255e5c1863ca2b2599bb61a46e2f566db0bbb9948615a8fe692/fonttools-4.61.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:627216062d90ab0d98215176d8b9562c4dd5b61271d35f130bcd30f6a8aaa33a", size = 2924917, upload-time = "2025-11-28T17:05:31.46Z" }, - { url = "https://files.pythonhosted.org/packages/e2/b8/08067ae21de705a817777c02ef36ab0b953cbe91d8adf134f9c2da75ed6d/fonttools-4.61.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7b446623c9cd5f14a59493818eaa80255eec2468c27d2c01b56e05357c263195", size = 2413576, upload-time = "2025-11-28T17:05:33.343Z" }, - { url = "https://files.pythonhosted.org/packages/42/f1/96ff43f92addce2356780fdc203f2966206f3d22ea20e242c27826fd7442/fonttools-4.61.0-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:70e2a0c0182ee75e493ef33061bfebf140ea57e035481d2f95aa03b66c7a0e05", size = 4877447, upload-time = "2025-11-28T17:05:35.278Z" }, - { url = "https://files.pythonhosted.org/packages/d0/1e/a3d8e51ed9ccfd7385e239ae374b78d258a0fb82d82cab99160a014a45d1/fonttools-4.61.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9064b0f55b947e929ac669af5311ab1f26f750214db6dd9a0c97e091e918f486", size = 5095681, upload-time = "2025-11-28T17:05:37.142Z" }, - { url = "https://files.pythonhosted.org/packages/eb/f6/d256bd6c1065c146a0bdddf1c62f542e08ae5b3405dbf3fcc52be272f674/fonttools-4.61.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2cb5e45a824ce14b90510024d0d39dae51bd4fbb54c42a9334ea8c8cf4d95cbe", size = 4974140, upload-time = "2025-11-28T17:05:39.5Z" }, - { url = "https://files.pythonhosted.org/packages/5d/0c/96633eb4b26f138cc48561c6e0c44b4ea48acea56b20b507d6b14f8e80ce/fonttools-4.61.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6e5ca8c62efdec7972dfdfd454415c4db49b89aeaefaaacada432f3b7eea9866", size = 5001741, upload-time = "2025-11-28T17:05:41.424Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/3b536bad3be4f26186f296e749ff17bad3e6d57232c104d752d24b2e265b/fonttools-4.61.0-cp314-cp314t-win32.whl", hash = "sha256:63c7125d31abe3e61d7bb917329b5543c5b3448db95f24081a13aaf064360fc8", size = 2330707, upload-time = "2025-11-28T17:05:43.548Z" }, - { url = "https://files.pythonhosted.org/packages/18/ea/e6b9ac610451ee9f04477c311ad126de971f6112cb579fa391d2a8edb00b/fonttools-4.61.0-cp314-cp314t-win_amd64.whl", hash = "sha256:67d841aa272be5500de7f447c40d1d8452783af33b4c3599899319f6ef9ad3c1", size = 2395950, upload-time = "2025-11-28T17:05:45.638Z" }, - { url = "https://files.pythonhosted.org/packages/0c/14/634f7daea5ffe6a5f7a0322ba8e1a0e23c9257b80aa91458107896d1dfc7/fonttools-4.61.0-py3-none-any.whl", hash = "sha256:276f14c560e6f98d24ef7f5f44438e55ff5a67f78fa85236b218462c9f5d0635", size = 1144485, upload-time = "2025-11-28T17:05:47.573Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/94/8a28707adb00bed1bf22dac16ccafe60faf2ade353dcb32c3617ee917307/fonttools-4.61.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c7db70d57e5e1089a274cbb2b1fd635c9a24de809a231b154965d415d6c6d24", size = 2854799, upload-time = "2025-12-12T17:29:27.5Z" }, + { url = "https://files.pythonhosted.org/packages/94/93/c2e682faaa5ee92034818d8f8a8145ae73eb83619600495dcf8503fa7771/fonttools-4.61.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5fe9fd43882620017add5eabb781ebfbc6998ee49b35bd7f8f79af1f9f99a958", size = 2403032, upload-time = "2025-12-12T17:29:30.115Z" }, + { url = "https://files.pythonhosted.org/packages/f1/62/1748f7e7e1ee41aa52279fd2e3a6d0733dc42a673b16932bad8e5d0c8b28/fonttools-4.61.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8db08051fc9e7d8bc622f2112511b8107d8f27cd89e2f64ec45e9825e8288da", size = 4897863, upload-time = "2025-12-12T17:29:32.535Z" }, + { url = "https://files.pythonhosted.org/packages/69/69/4ca02ee367d2c98edcaeb83fc278d20972502ee071214ad9d8ca85e06080/fonttools-4.61.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a76d4cb80f41ba94a6691264be76435e5f72f2cb3cab0b092a6212855f71c2f6", size = 4859076, upload-time = "2025-12-12T17:29:34.907Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f5/660f9e3cefa078861a7f099107c6d203b568a6227eef163dd173bfc56bdc/fonttools-4.61.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a13fc8aeb24bad755eea8f7f9d409438eb94e82cf86b08fe77a03fbc8f6a96b1", size = 4875623, upload-time = "2025-12-12T17:29:37.33Z" }, + { url = "https://files.pythonhosted.org/packages/63/d1/9d7c5091d2276ed47795c131c1bf9316c3c1ab2789c22e2f59e0572ccd38/fonttools-4.61.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b846a1fcf8beadeb9ea4f44ec5bdde393e2f1569e17d700bfc49cd69bde75881", size = 4993327, upload-time = "2025-12-12T17:29:39.781Z" }, + { url = "https://files.pythonhosted.org/packages/6f/2d/28def73837885ae32260d07660a052b99f0aa00454867d33745dfe49dbf0/fonttools-4.61.1-cp310-cp310-win32.whl", hash = "sha256:78a7d3ab09dc47ac1a363a493e6112d8cabed7ba7caad5f54dbe2f08676d1b47", size = 1502180, upload-time = "2025-12-12T17:29:42.217Z" }, + { url = "https://files.pythonhosted.org/packages/63/fa/bfdc98abb4dd2bd491033e85e3ba69a2313c850e759a6daa014bc9433b0f/fonttools-4.61.1-cp310-cp310-win_amd64.whl", hash = "sha256:eff1ac3cc66c2ac7cda1e64b4e2f3ffef474b7335f92fc3833fc632d595fcee6", size = 1550654, upload-time = "2025-12-12T17:29:44.564Z" }, + { url = "https://files.pythonhosted.org/packages/69/12/bf9f4eaa2fad039356cc627587e30ed008c03f1cebd3034376b5ee8d1d44/fonttools-4.61.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c6604b735bb12fef8e0efd5578c9fb5d3d8532d5001ea13a19cddf295673ee09", size = 2852213, upload-time = "2025-12-12T17:29:46.675Z" }, + { url = "https://files.pythonhosted.org/packages/ac/49/4138d1acb6261499bedde1c07f8c2605d1d8f9d77a151e5507fd3ef084b6/fonttools-4.61.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5ce02f38a754f207f2f06557523cd39a06438ba3aafc0639c477ac409fc64e37", size = 2401689, upload-time = "2025-12-12T17:29:48.769Z" }, + { url = "https://files.pythonhosted.org/packages/e5/fe/e6ce0fe20a40e03aef906af60aa87668696f9e4802fa283627d0b5ed777f/fonttools-4.61.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77efb033d8d7ff233385f30c62c7c79271c8885d5c9657d967ede124671bbdfb", size = 5058809, upload-time = "2025-12-12T17:29:51.701Z" }, + { url = "https://files.pythonhosted.org/packages/79/61/1ca198af22f7dd22c17ab86e9024ed3c06299cfdb08170640e9996d501a0/fonttools-4.61.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:75c1a6dfac6abd407634420c93864a1e274ebc1c7531346d9254c0d8f6ca00f9", size = 5036039, upload-time = "2025-12-12T17:29:53.659Z" }, + { url = "https://files.pythonhosted.org/packages/99/cc/fa1801e408586b5fce4da9f5455af8d770f4fc57391cd5da7256bb364d38/fonttools-4.61.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0de30bfe7745c0d1ffa2b0b7048fb7123ad0d71107e10ee090fa0b16b9452e87", size = 5034714, upload-time = "2025-12-12T17:29:55.592Z" }, + { url = "https://files.pythonhosted.org/packages/bf/aa/b7aeafe65adb1b0a925f8f25725e09f078c635bc22754f3fecb7456955b0/fonttools-4.61.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58b0ee0ab5b1fc9921eccfe11d1435added19d6494dde14e323f25ad2bc30c56", size = 5158648, upload-time = "2025-12-12T17:29:57.861Z" }, + { url = "https://files.pythonhosted.org/packages/99/f9/08ea7a38663328881384c6e7777bbefc46fd7d282adfd87a7d2b84ec9d50/fonttools-4.61.1-cp311-cp311-win32.whl", hash = "sha256:f79b168428351d11e10c5aeb61a74e1851ec221081299f4cf56036a95431c43a", size = 2280681, upload-time = "2025-12-12T17:29:59.943Z" }, + { url = "https://files.pythonhosted.org/packages/07/ad/37dd1ae5fa6e01612a1fbb954f0927681f282925a86e86198ccd7b15d515/fonttools-4.61.1-cp311-cp311-win_amd64.whl", hash = "sha256:fe2efccb324948a11dd09d22136fe2ac8a97d6c1347cf0b58a911dcd529f66b7", size = 2331951, upload-time = "2025-12-12T17:30:02.254Z" }, + { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, + { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, + { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, + { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, + { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, + { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, + { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, ] [[package]] @@ -1576,14 +1591,14 @@ wheels = [ [[package]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, ] [[package]] @@ -1633,8 +1648,8 @@ dependencies = [ { name = "comm" }, { name = "debugpy" }, { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "ipython", version = "9.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "ipython", version = "8.38.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "ipython", version = "9.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "jupyter-client", version = "8.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "jupyter-client", version = "8.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "jupyter-core", version = "5.8.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -1679,7 +1694,7 @@ wheels = [ [[package]] name = "ipython" -version = "8.37.0" +version = "8.38.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version == '3.10.*'", @@ -1697,14 +1712,14 @@ dependencies = [ { name = "traitlets", marker = "python_full_version == '3.10.*'" }, { name = "typing-extensions", marker = "python_full_version == '3.10.*'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz", hash = "sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size = 5606088, upload-time = "2025-05-31T16:39:09.613Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/61/1810830e8b93c72dcd3c0f150c80a00c3deb229562d9423807ec92c3a539/ipython-8.38.0.tar.gz", hash = "sha256:9cfea8c903ce0867cc2f23199ed8545eb741f3a69420bfcf3743ad1cec856d39", size = 5513996, upload-time = "2026-01-05T10:59:06.901Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/d0/274fbf7b0b12643cbbc001ce13e6a5b1607ac4929d1b11c72460152c9fc3/ipython-8.37.0-py3-none-any.whl", hash = "sha256:ed87326596b878932dbcb171e3e698845434d8c61b8d8cd474bf663041a9dcf2", size = 831864, upload-time = "2025-05-31T16:39:06.38Z" }, + { url = "https://files.pythonhosted.org/packages/9f/df/db59624f4c71b39717c423409950ac3f2c8b2ce4b0aac843112c7fb3f721/ipython-8.38.0-py3-none-any.whl", hash = "sha256:750162629d800ac65bb3b543a14e7a74b0e88063eac9b92124d4b2aa3f6d8e86", size = 831813, upload-time = "2026-01-05T10:59:04.239Z" }, ] [[package]] name = "ipython" -version = "9.8.0" +version = "9.9.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", @@ -1723,9 +1738,9 @@ dependencies = [ { name = "traitlets", marker = "python_full_version >= '3.11'" }, { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/12/51/a703c030f4928646d390b4971af4938a1b10c9dfce694f0d99a0bb073cb2/ipython-9.8.0.tar.gz", hash = "sha256:8e4ce129a627eb9dd221c41b1d2cdaed4ef7c9da8c17c63f6f578fe231141f83", size = 4424940, upload-time = "2025-12-03T10:18:24.353Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/dd/fb08d22ec0c27e73c8bc8f71810709870d51cadaf27b7ddd3f011236c100/ipython-9.9.0.tar.gz", hash = "sha256:48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220", size = 4425043, upload-time = "2026-01-05T12:36:46.233Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl", hash = "sha256:ebe6d1d58d7d988fbf23ff8ff6d8e1622cfdb194daf4b7b73b792c4ec3b85385", size = 621374, upload-time = "2025-12-03T10:18:22.335Z" }, + { url = "https://files.pythonhosted.org/packages/86/92/162cfaee4ccf370465c5af1ce36a9eacec1becb552f2033bb3584e6f640a/ipython-9.9.0-py3-none-any.whl", hash = "sha256:b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b", size = 621431, upload-time = "2026-01-05T12:36:44.669Z" }, ] [[package]] @@ -1784,14 +1799,26 @@ wheels = [ [[package]] name = "joserfc" -version = "1.5.0" +version = "1.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ec/b4/d49b4ec64feb3332f9255a1deefd8b6ffcbe6c332c205fa86eb33cf48c3a/joserfc-1.5.0.tar.gz", hash = "sha256:4e88d757cf08ec1d370561a15dd6dda8452ad4e335066a9aeb1b426bffe91c56", size = 213086, upload-time = "2025-11-30T06:01:52.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/3d/82375487dcc2bcdf136a68e1a8543165feccbbc8833dfc451f87a5f83b81/joserfc-1.6.1.tar.gz", hash = "sha256:7759a14d732d93503317468c0dd258510c4f64b30759cf42e96016c97b38c4b7", size = 226277, upload-time = "2025-12-30T08:45:07.289Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/01/9674cc6d478406ae61d910cb16ca8b5699a8a9e6a2019987ebe5a5957d1d/joserfc-1.6.1-py3-none-any.whl", hash = "sha256:74d158c9d56be54c710cdcb2a0741372254b682ad2101a0f72e5bd0e925695f0", size = 70349, upload-time = "2025-12-30T08:45:05.573Z" }, +] + +[[package]] +name = "jsonlines" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload-time = "2023-09-01T12:34:44.187Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/6a/71937d4760bf6f3beabc640cf18578683b5247845db5ee4dbd8c66898def/joserfc-1.5.0-py3-none-any.whl", hash = "sha256:eaaded4f4c6717a761baa41b4067307d0c246b9d5e38acd44e80a332f5ddaf24", size = 68388, upload-time = "2025-11-30T06:01:50.43Z" }, + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload-time = "2023-09-01T12:34:42.563Z" }, ] [[package]] @@ -1829,45 +1856,47 @@ wheels = [ [[package]] name = "jsonschema" -version = "4.25.1" +version = "4.23.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "jsonschema-specifications" }, - { name = "referencing" }, + { name = "referencing", version = "0.36.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "referencing", version = "0.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "rpds-py", version = "0.27.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, ] [[package]] -name = "jsonschema-path" -version = "0.3.4" +name = "jsonschema-spec" +version = "0.1.3" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "jsonschema" }, { name = "pathable" }, { name = "pyyaml" }, - { name = "referencing" }, - { name = "requests" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6e/45/41ebc679c2a4fced6a722f624c18d658dee42612b83ea24c1caf7c0eb3a8/jsonschema_path-0.3.4.tar.gz", hash = "sha256:8365356039f16cc65fddffafda5f58766e34bebab7d6d105616ab52bc4297001", size = 11159, upload-time = "2025-01-24T14:33:16.547Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/41/a345820b5d426d6a6c37749607aa034691d945ec1d3c948d559a6b4d7e56/jsonschema_spec-0.1.3.tar.gz", hash = "sha256:8d8db7c255e524fab1016a952a9143e5b6e3c074f4ed25d1878f8e97806caec0", size = 10590, upload-time = "2023-02-01T05:12:20.38Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/58/3485da8cb93d2f393bce453adeef16896751f14ba3e2024bc21dc9597646/jsonschema_path-0.3.4-py3-none-any.whl", hash = "sha256:f502191fdc2b22050f9a81c9237be9d27145b9001c55842bece5e94e382e52f8", size = 14810, upload-time = "2025-01-24T14:33:14.652Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9c/9d42976ba3a39e9ad9c8d6cb526bf496d6def9d1eae1ce055f6ceea748cc/jsonschema_spec-0.1.3-py3-none-any.whl", hash = "sha256:b3cde007ad65c2e631e2f8653cf187124a2c714d02d9fafbab68ad64bf5745d6", size = 12622, upload-time = "2023-02-01T05:12:18.834Z" }, ] [[package]] name = "jsonschema-specifications" -version = "2025.9.1" +version = "2024.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "referencing" }, + { name = "referencing", version = "0.36.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "referencing", version = "0.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561, upload-time = "2024-10-08T12:29:32.068Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459, upload-time = "2024-10-08T12:29:30.439Z" }, ] [[package]] @@ -2225,9 +2254,10 @@ s3 = [ [package.dev-dependencies] dev = [ + { name = "common-data-format-validator" }, { name = "moto", extra = ["s3", "server"] }, { name = "pre-commit", version = "4.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "pre-commit", version = "4.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pre-commit", version = "4.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "pytest" }, { name = "pytest-httpserver" }, { name = "pytest-lazy-fixture" }, @@ -2270,6 +2300,7 @@ provides-extras = ["query", "s3", "pandas", "polars", "pyarrow"] [package.metadata.requires-dev] dev = [ + { name = "common-data-format-validator", specifier = "==0.0.13" }, { name = "moto", extras = ["s3", "server"] }, { name = "pre-commit", specifier = ">=4.2.0" }, { name = "pytest", specifier = ">=6.2.5,<8" }, @@ -2759,12 +2790,12 @@ dependencies = [ { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "cycler", marker = "python_full_version >= '3.10'" }, - { name = "fonttools", version = "4.61.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "fonttools", version = "4.61.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "kiwisolver", version = "1.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "packaging", marker = "python_full_version >= '3.10'" }, - { name = "pillow", version = "12.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "pyparsing", marker = "python_full_version >= '3.10'" }, { name = "python-dateutil", marker = "python_full_version >= '3.10'" }, ] @@ -2890,14 +2921,14 @@ wheels = [ [[package]] name = "mistune" -version = "3.1.4" +version = "3.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588, upload-time = "2025-08-29T07:20:43.594Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/55/d01f0c4b45ade6536c51170b9043db8b2ec6ddf4a35c7ea3f5f559ac935b/mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a", size = 95467, upload-time = "2025-12-23T11:36:34.994Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481, upload-time = "2025-08-29T07:20:42.218Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1", size = 53598, upload-time = "2025-12-23T11:36:33.211Z" }, ] [[package]] @@ -2998,7 +3029,7 @@ dependencies = [ { name = "requests" }, { name = "super-collections" }, { name = "termcolor", version = "3.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "termcolor", version = "3.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "termcolor", version = "3.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/92/15/e6a44839841ebc9c5872fa0e6fad1c3757424e4fe026093b68e9f386d136/mkdocs_macros_plugin-1.5.0.tar.gz", hash = "sha256:12aa45ce7ecb7a445c66b9f649f3dd05e9b92e8af6bc65e4acd91d26f878c01f", size = 37730, upload-time = "2025-11-13T08:08:55.545Z" } wheels = [ @@ -3007,7 +3038,7 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.7.0" +version = "9.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, @@ -3023,9 +3054,9 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/3b/111b84cd6ff28d9e955b5f799ef217a17bc1684ac346af333e6100e413cb/mkdocs_material-9.7.0.tar.gz", hash = "sha256:602b359844e906ee402b7ed9640340cf8a474420d02d8891451733b6b02314ec", size = 4094546, upload-time = "2025-11-11T08:49:09.73Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/e2/2ffc356cd72f1473d07c7719d82a8f2cbd261666828614ecb95b12169f41/mkdocs_material-9.7.1.tar.gz", hash = "sha256:89601b8f2c3e6c6ee0a918cc3566cb201d40bf37c3cd3c2067e26fadb8cce2b8", size = 4094392, upload-time = "2025-12-18T09:49:00.308Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl", hash = "sha256:da2866ea53601125ff5baa8aa06404c6e07af3c5ce3d5de95e3b52b80b442887", size = 9283770, upload-time = "2025-11-11T08:49:06.26Z" }, + { url = "https://files.pythonhosted.org/packages/3e/32/ed071cb721aca8c227718cffcf7bd539620e9799bbf2619e90c757bfd030/mkdocs_material-9.7.1-py3-none-any.whl", hash = "sha256:3f6100937d7d731f87f1e3e3b021c97f7239666b9ba1151ab476cabb96c60d5c", size = 9297166, upload-time = "2025-12-18T09:48:56.664Z" }, ] [[package]] @@ -3078,7 +3109,7 @@ wheels = [ [[package]] name = "moto" -version = "5.1.18" +version = "5.1.19" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, @@ -3091,9 +3122,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e3/6a/a73bef67261bfab55714390f07c7df97531d00cea730b7c0ace4d0ad7669/moto-5.1.18.tar.gz", hash = "sha256:45298ef7b88561b839f6fe3e9da2a6e2ecd10283c7bf3daf43a07a97465885f9", size = 8271655, upload-time = "2025-11-30T22:03:59.58Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/eb/100a04d1b49859d05a9c701815117cd31bc436c3d9e959d399d9d2ff7e9c/moto-5.1.19.tar.gz", hash = "sha256:a13423e402366b6affab07ed28e1df5f3fcc54ef68fc8d83dc9f824da7a4024e", size = 8361592, upload-time = "2025-12-28T20:14:57.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/83/d4/6991df072b34741a0c115e8d21dc2fe142e4b497319d762e957f6677f001/moto-5.1.18-py3-none-any.whl", hash = "sha256:b65aa8fc9032c5c574415451e14fd7da4e43fd50b8bdcb5f10289ad382c25bcf", size = 6357278, upload-time = "2025-11-30T22:03:56.831Z" }, + { url = "https://files.pythonhosted.org/packages/89/07/5ca7ba79615b88ee2325224894667f263b992d266a52b83d215c4b3caa39/moto-5.1.19-py3-none-any.whl", hash = "sha256:7adb0caacf0e2d0dbb09550bcb49a7f158ee7c460a09cb54d4599a9a94cfef70", size = 6451569, upload-time = "2025-12-28T20:14:54.701Z" }, ] [package.optional-dependencies] @@ -3103,6 +3134,7 @@ s3 = [ ] server = [ { name = "antlr4-python3-runtime" }, + { name = "aws-sam-translator" }, { name = "aws-xray-sdk" }, { name = "cfn-lint" }, { name = "docker" }, @@ -3113,6 +3145,7 @@ server = [ { name = "jsonpath-ng" }, { name = "openapi-spec-validator" }, { name = "py-partiql-parser" }, + { name = "pydantic" }, { name = "pyparsing" }, { name = "pyyaml" }, { name = "setuptools" }, @@ -3127,10 +3160,10 @@ dependencies = [ { name = "matplotlib", version = "3.10.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pandas" }, { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "pillow", version = "12.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "requests" }, { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, @@ -3311,19 +3344,40 @@ wheels = [ name = "nbclient" version = "0.10.2" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] dependencies = [ { name = "jupyter-client", version = "8.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "jupyter-client", version = "8.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "jupyter-core", version = "5.8.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "jupyter-core", version = "5.9.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "nbformat" }, - { name = "traitlets" }, + { name = "nbformat", marker = "python_full_version < '3.10'" }, + { name = "traitlets", marker = "python_full_version < '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, ] +[[package]] +name = "nbclient" +version = "0.10.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "jupyter-client", version = "8.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "jupyter-core", version = "5.9.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "nbformat", marker = "python_full_version >= '3.10'" }, + { name = "traitlets", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9", size = 62554, upload-time = "2025-12-23T07:45:46.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440", size = 25465, upload-time = "2025-12-23T07:45:44.51Z" }, +] + [[package]] name = "nbconvert" version = "7.16.6" @@ -3340,7 +3394,8 @@ dependencies = [ { name = "jupyterlab-pygments" }, { name = "markupsafe" }, { name = "mistune" }, - { name = "nbclient" }, + { name = "nbclient", version = "0.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "nbclient", version = "0.10.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "nbformat" }, { name = "packaging" }, { name = "pandocfilters" }, @@ -3388,11 +3443,11 @@ wheels = [ [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, ] [[package]] @@ -3517,116 +3572,113 @@ wheels = [ [[package]] name = "numpy" -version = "2.3.5" +version = "2.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/77/84dd1d2e34d7e2792a236ba180b5e8fcc1e3e414e761ce0253f63d7f572e/numpy-2.3.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10", size = 17034641, upload-time = "2025-11-16T22:49:19.336Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ea/25e26fa5837106cde46ae7d0b667e20f69cbbc0efd64cba8221411ab26ae/numpy-2.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218", size = 12528324, upload-time = "2025-11-16T22:49:22.582Z" }, - { url = "https://files.pythonhosted.org/packages/4d/1a/e85f0eea4cf03d6a0228f5c0256b53f2df4bc794706e7df019fc622e47f1/numpy-2.3.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d", size = 5356872, upload-time = "2025-11-16T22:49:25.408Z" }, - { url = "https://files.pythonhosted.org/packages/5c/bb/35ef04afd567f4c989c2060cde39211e4ac5357155c1833bcd1166055c61/numpy-2.3.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5", size = 6893148, upload-time = "2025-11-16T22:49:27.549Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2b/05bbeb06e2dff5eab512dfc678b1cc5ee94d8ac5956a0885c64b6b26252b/numpy-2.3.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7", size = 14557282, upload-time = "2025-11-16T22:49:30.964Z" }, - { url = "https://files.pythonhosted.org/packages/65/fb/2b23769462b34398d9326081fad5655198fcf18966fcb1f1e49db44fbf31/numpy-2.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4", size = 16897903, upload-time = "2025-11-16T22:49:34.191Z" }, - { url = "https://files.pythonhosted.org/packages/ac/14/085f4cf05fc3f1e8aa95e85404e984ffca9b2275a5dc2b1aae18a67538b8/numpy-2.3.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e", size = 16341672, upload-time = "2025-11-16T22:49:37.2Z" }, - { url = "https://files.pythonhosted.org/packages/6f/3b/1f73994904142b2aa290449b3bb99772477b5fd94d787093e4f24f5af763/numpy-2.3.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748", size = 18838896, upload-time = "2025-11-16T22:49:39.727Z" }, - { url = "https://files.pythonhosted.org/packages/cd/b9/cf6649b2124f288309ffc353070792caf42ad69047dcc60da85ee85fea58/numpy-2.3.5-cp311-cp311-win32.whl", hash = "sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c", size = 6563608, upload-time = "2025-11-16T22:49:42.079Z" }, - { url = "https://files.pythonhosted.org/packages/aa/44/9fe81ae1dcc29c531843852e2874080dc441338574ccc4306b39e2ff6e59/numpy-2.3.5-cp311-cp311-win_amd64.whl", hash = "sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c", size = 13078442, upload-time = "2025-11-16T22:49:43.99Z" }, - { url = "https://files.pythonhosted.org/packages/6d/a7/f99a41553d2da82a20a2f22e93c94f928e4490bb447c9ff3c4ff230581d3/numpy-2.3.5-cp311-cp311-win_arm64.whl", hash = "sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa", size = 10458555, upload-time = "2025-11-16T22:49:47.092Z" }, - { url = "https://files.pythonhosted.org/packages/44/37/e669fe6cbb2b96c62f6bbedc6a81c0f3b7362f6a59230b23caa673a85721/numpy-2.3.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", size = 16733873, upload-time = "2025-11-16T22:49:49.84Z" }, - { url = "https://files.pythonhosted.org/packages/c5/65/df0db6c097892c9380851ab9e44b52d4f7ba576b833996e0080181c0c439/numpy-2.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", size = 12259838, upload-time = "2025-11-16T22:49:52.863Z" }, - { url = "https://files.pythonhosted.org/packages/5b/e1/1ee06e70eb2136797abe847d386e7c0e830b67ad1d43f364dd04fa50d338/numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", size = 5088378, upload-time = "2025-11-16T22:49:55.055Z" }, - { url = "https://files.pythonhosted.org/packages/6d/9c/1ca85fb86708724275103b81ec4cf1ac1d08f465368acfc8da7ab545bdae/numpy-2.3.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", size = 6628559, upload-time = "2025-11-16T22:49:57.371Z" }, - { url = "https://files.pythonhosted.org/packages/74/78/fcd41e5a0ce4f3f7b003da85825acddae6d7ecb60cf25194741b036ca7d6/numpy-2.3.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", size = 14250702, upload-time = "2025-11-16T22:49:59.632Z" }, - { url = "https://files.pythonhosted.org/packages/b6/23/2a1b231b8ff672b4c450dac27164a8b2ca7d9b7144f9c02d2396518352eb/numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", size = 16606086, upload-time = "2025-11-16T22:50:02.127Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c5/5ad26fbfbe2012e190cc7d5003e4d874b88bb18861d0829edc140a713021/numpy-2.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", size = 16025985, upload-time = "2025-11-16T22:50:04.536Z" }, - { url = "https://files.pythonhosted.org/packages/d2/fa/dd48e225c46c819288148d9d060b047fd2a6fb1eb37eae25112ee4cb4453/numpy-2.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", size = 18542976, upload-time = "2025-11-16T22:50:07.557Z" }, - { url = "https://files.pythonhosted.org/packages/05/79/ccbd23a75862d95af03d28b5c6901a1b7da4803181513d52f3b86ed9446e/numpy-2.3.5-cp312-cp312-win32.whl", hash = "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", size = 6285274, upload-time = "2025-11-16T22:50:10.746Z" }, - { url = "https://files.pythonhosted.org/packages/2d/57/8aeaf160312f7f489dea47ab61e430b5cb051f59a98ae68b7133ce8fa06a/numpy-2.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", size = 12782922, upload-time = "2025-11-16T22:50:12.811Z" }, - { url = "https://files.pythonhosted.org/packages/78/a6/aae5cc2ca78c45e64b9ef22f089141d661516856cf7c8a54ba434576900d/numpy-2.3.5-cp312-cp312-win_arm64.whl", hash = "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", size = 10194667, upload-time = "2025-11-16T22:50:16.16Z" }, - { url = "https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", size = 16728251, upload-time = "2025-11-16T22:50:19.013Z" }, - { url = "https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", size = 12254652, upload-time = "2025-11-16T22:50:21.487Z" }, - { url = "https://files.pythonhosted.org/packages/78/da/8c7738060ca9c31b30e9301ee0cf6c5ffdbf889d9593285a1cead337f9a5/numpy-2.3.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", size = 5083172, upload-time = "2025-11-16T22:50:24.562Z" }, - { url = "https://files.pythonhosted.org/packages/a4/b4/ee5bb2537fb9430fd2ef30a616c3672b991a4129bb1c7dcc42aa0abbe5d7/numpy-2.3.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", size = 6622990, upload-time = "2025-11-16T22:50:26.47Z" }, - { url = "https://files.pythonhosted.org/packages/95/03/dc0723a013c7d7c19de5ef29e932c3081df1c14ba582b8b86b5de9db7f0f/numpy-2.3.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", size = 14248902, upload-time = "2025-11-16T22:50:28.861Z" }, - { url = "https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", size = 16597430, upload-time = "2025-11-16T22:50:31.56Z" }, - { url = "https://files.pythonhosted.org/packages/2a/51/c1e29be863588db58175175f057286900b4b3327a1351e706d5e0f8dd679/numpy-2.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", size = 16024551, upload-time = "2025-11-16T22:50:34.242Z" }, - { url = "https://files.pythonhosted.org/packages/83/68/8236589d4dbb87253d28259d04d9b814ec0ecce7cb1c7fed29729f4c3a78/numpy-2.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", size = 18533275, upload-time = "2025-11-16T22:50:37.651Z" }, - { url = "https://files.pythonhosted.org/packages/40/56/2932d75b6f13465239e3b7b7e511be27f1b8161ca2510854f0b6e521c395/numpy-2.3.5-cp313-cp313-win32.whl", hash = "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", size = 6277637, upload-time = "2025-11-16T22:50:40.11Z" }, - { url = "https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", size = 12779090, upload-time = "2025-11-16T22:50:42.503Z" }, - { url = "https://files.pythonhosted.org/packages/8f/88/3f41e13a44ebd4034ee17baa384acac29ba6a4fcc2aca95f6f08ca0447d1/numpy-2.3.5-cp313-cp313-win_arm64.whl", hash = "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", size = 10194710, upload-time = "2025-11-16T22:50:44.971Z" }, - { url = "https://files.pythonhosted.org/packages/13/cb/71744144e13389d577f867f745b7df2d8489463654a918eea2eeb166dfc9/numpy-2.3.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", size = 16827292, upload-time = "2025-11-16T22:50:47.715Z" }, - { url = "https://files.pythonhosted.org/packages/71/80/ba9dc6f2a4398e7f42b708a7fdc841bb638d353be255655498edbf9a15a8/numpy-2.3.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", size = 12378897, upload-time = "2025-11-16T22:50:51.327Z" }, - { url = "https://files.pythonhosted.org/packages/2e/6d/db2151b9f64264bcceccd51741aa39b50150de9b602d98ecfe7e0c4bff39/numpy-2.3.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", size = 5207391, upload-time = "2025-11-16T22:50:54.542Z" }, - { url = "https://files.pythonhosted.org/packages/80/ae/429bacace5ccad48a14c4ae5332f6aa8ab9f69524193511d60ccdfdc65fa/numpy-2.3.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", size = 6721275, upload-time = "2025-11-16T22:50:56.794Z" }, - { url = "https://files.pythonhosted.org/packages/74/5b/1919abf32d8722646a38cd527bc3771eb229a32724ee6ba340ead9b92249/numpy-2.3.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", size = 14306855, upload-time = "2025-11-16T22:50:59.208Z" }, - { url = "https://files.pythonhosted.org/packages/a5/87/6831980559434973bebc30cd9c1f21e541a0f2b0c280d43d3afd909b66d0/numpy-2.3.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", size = 16657359, upload-time = "2025-11-16T22:51:01.991Z" }, - { url = "https://files.pythonhosted.org/packages/dd/91/c797f544491ee99fd00495f12ebb7802c440c1915811d72ac5b4479a3356/numpy-2.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", size = 16093374, upload-time = "2025-11-16T22:51:05.291Z" }, - { url = "https://files.pythonhosted.org/packages/74/a6/54da03253afcbe7a72785ec4da9c69fb7a17710141ff9ac5fcb2e32dbe64/numpy-2.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", size = 18594587, upload-time = "2025-11-16T22:51:08.585Z" }, - { url = "https://files.pythonhosted.org/packages/80/e9/aff53abbdd41b0ecca94285f325aff42357c6b5abc482a3fcb4994290b18/numpy-2.3.5-cp313-cp313t-win32.whl", hash = "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", size = 6405940, upload-time = "2025-11-16T22:51:11.541Z" }, - { url = "https://files.pythonhosted.org/packages/d5/81/50613fec9d4de5480de18d4f8ef59ad7e344d497edbef3cfd80f24f98461/numpy-2.3.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", size = 12920341, upload-time = "2025-11-16T22:51:14.312Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ab/08fd63b9a74303947f34f0bd7c5903b9c5532c2d287bead5bdf4c556c486/numpy-2.3.5-cp313-cp313t-win_arm64.whl", hash = "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", size = 10262507, upload-time = "2025-11-16T22:51:16.846Z" }, - { url = "https://files.pythonhosted.org/packages/ba/97/1a914559c19e32d6b2e233cf9a6a114e67c856d35b1d6babca571a3e880f/numpy-2.3.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82", size = 16735706, upload-time = "2025-11-16T22:51:19.558Z" }, - { url = "https://files.pythonhosted.org/packages/57/d4/51233b1c1b13ecd796311216ae417796b88b0616cfd8a33ae4536330748a/numpy-2.3.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0", size = 12264507, upload-time = "2025-11-16T22:51:22.492Z" }, - { url = "https://files.pythonhosted.org/packages/45/98/2fe46c5c2675b8306d0b4a3ec3494273e93e1226a490f766e84298576956/numpy-2.3.5-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63", size = 5093049, upload-time = "2025-11-16T22:51:25.171Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0e/0698378989bb0ac5f1660c81c78ab1fe5476c1a521ca9ee9d0710ce54099/numpy-2.3.5-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9", size = 6626603, upload-time = "2025-11-16T22:51:27Z" }, - { url = "https://files.pythonhosted.org/packages/5e/a6/9ca0eecc489640615642a6cbc0ca9e10df70df38c4d43f5a928ff18d8827/numpy-2.3.5-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b", size = 14262696, upload-time = "2025-11-16T22:51:29.402Z" }, - { url = "https://files.pythonhosted.org/packages/c8/f6/07ec185b90ec9d7217a00eeeed7383b73d7e709dae2a9a021b051542a708/numpy-2.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520", size = 16597350, upload-time = "2025-11-16T22:51:32.167Z" }, - { url = "https://files.pythonhosted.org/packages/75/37/164071d1dde6a1a84c9b8e5b414fa127981bad47adf3a6b7e23917e52190/numpy-2.3.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c", size = 16040190, upload-time = "2025-11-16T22:51:35.403Z" }, - { url = "https://files.pythonhosted.org/packages/08/3c/f18b82a406b04859eb026d204e4e1773eb41c5be58410f41ffa511d114ae/numpy-2.3.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8", size = 18536749, upload-time = "2025-11-16T22:51:39.698Z" }, - { url = "https://files.pythonhosted.org/packages/40/79/f82f572bf44cf0023a2fe8588768e23e1592585020d638999f15158609e1/numpy-2.3.5-cp314-cp314-win32.whl", hash = "sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248", size = 6335432, upload-time = "2025-11-16T22:51:42.476Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2e/235b4d96619931192c91660805e5e49242389742a7a82c27665021db690c/numpy-2.3.5-cp314-cp314-win_amd64.whl", hash = "sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e", size = 12919388, upload-time = "2025-11-16T22:51:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/07/2b/29fd75ce45d22a39c61aad74f3d718e7ab67ccf839ca8b60866054eb15f8/numpy-2.3.5-cp314-cp314-win_arm64.whl", hash = "sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2", size = 10476651, upload-time = "2025-11-16T22:51:47.749Z" }, - { url = "https://files.pythonhosted.org/packages/17/e1/f6a721234ebd4d87084cfa68d081bcba2f5cfe1974f7de4e0e8b9b2a2ba1/numpy-2.3.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41", size = 16834503, upload-time = "2025-11-16T22:51:50.443Z" }, - { url = "https://files.pythonhosted.org/packages/5c/1c/baf7ffdc3af9c356e1c135e57ab7cf8d247931b9554f55c467efe2c69eff/numpy-2.3.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad", size = 12381612, upload-time = "2025-11-16T22:51:53.609Z" }, - { url = "https://files.pythonhosted.org/packages/74/91/f7f0295151407ddc9ba34e699013c32c3c91944f9b35fcf9281163dc1468/numpy-2.3.5-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39", size = 5210042, upload-time = "2025-11-16T22:51:56.213Z" }, - { url = "https://files.pythonhosted.org/packages/2e/3b/78aebf345104ec50dd50a4d06ddeb46a9ff5261c33bcc58b1c4f12f85ec2/numpy-2.3.5-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20", size = 6724502, upload-time = "2025-11-16T22:51:58.584Z" }, - { url = "https://files.pythonhosted.org/packages/02/c6/7c34b528740512e57ef1b7c8337ab0b4f0bddf34c723b8996c675bc2bc91/numpy-2.3.5-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52", size = 14308962, upload-time = "2025-11-16T22:52:01.698Z" }, - { url = "https://files.pythonhosted.org/packages/80/35/09d433c5262bc32d725bafc619e095b6a6651caf94027a03da624146f655/numpy-2.3.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b", size = 16655054, upload-time = "2025-11-16T22:52:04.267Z" }, - { url = "https://files.pythonhosted.org/packages/7a/ab/6a7b259703c09a88804fa2430b43d6457b692378f6b74b356155283566ac/numpy-2.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3", size = 16091613, upload-time = "2025-11-16T22:52:08.651Z" }, - { url = "https://files.pythonhosted.org/packages/c2/88/330da2071e8771e60d1038166ff9d73f29da37b01ec3eb43cb1427464e10/numpy-2.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227", size = 18591147, upload-time = "2025-11-16T22:52:11.453Z" }, - { url = "https://files.pythonhosted.org/packages/51/41/851c4b4082402d9ea860c3626db5d5df47164a712cb23b54be028b184c1c/numpy-2.3.5-cp314-cp314t-win32.whl", hash = "sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5", size = 6479806, upload-time = "2025-11-16T22:52:14.641Z" }, - { url = "https://files.pythonhosted.org/packages/90/30/d48bde1dfd93332fa557cff1972fbc039e055a52021fbef4c2c4b1eefd17/numpy-2.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf", size = 13105760, upload-time = "2025-11-16T22:52:17.975Z" }, - { url = "https://files.pythonhosted.org/packages/2d/fd/4b5eb0b3e888d86aee4d198c23acec7d214baaf17ea93c1adec94c9518b9/numpy-2.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42", size = 10545459, upload-time = "2025-11-16T22:52:20.55Z" }, - { url = "https://files.pythonhosted.org/packages/c6/65/f9dea8e109371ade9c782b4e4756a82edf9d3366bca495d84d79859a0b79/numpy-2.3.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310", size = 16910689, upload-time = "2025-11-16T22:52:23.247Z" }, - { url = "https://files.pythonhosted.org/packages/00/4f/edb00032a8fb92ec0a679d3830368355da91a69cab6f3e9c21b64d0bb986/numpy-2.3.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c", size = 12457053, upload-time = "2025-11-16T22:52:26.367Z" }, - { url = "https://files.pythonhosted.org/packages/16/a4/e8a53b5abd500a63836a29ebe145fc1ab1f2eefe1cfe59276020373ae0aa/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18", size = 5285635, upload-time = "2025-11-16T22:52:29.266Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2f/37eeb9014d9c8b3e9c55bc599c68263ca44fdbc12a93e45a21d1d56df737/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff", size = 6801770, upload-time = "2025-11-16T22:52:31.421Z" }, - { url = "https://files.pythonhosted.org/packages/7d/e4/68d2f474df2cb671b2b6c2986a02e520671295647dad82484cde80ca427b/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb", size = 14391768, upload-time = "2025-11-16T22:52:33.593Z" }, - { url = "https://files.pythonhosted.org/packages/b8/50/94ccd8a2b141cb50651fddd4f6a48874acb3c91c8f0842b08a6afc4b0b21/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", size = 16729263, upload-time = "2025-11-16T22:52:36.369Z" }, - { url = "https://files.pythonhosted.org/packages/2d/ee/346fa473e666fe14c52fcdd19ec2424157290a032d4c41f98127bfb31ac7/numpy-2.3.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425", size = 12967213, upload-time = "2025-11-16T22:52:39.38Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a4/7a/6a3d14e205d292b738db449d0de649b373a59edb0d0b4493821d0a3e8718/numpy-2.4.0.tar.gz", hash = "sha256:6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934", size = 20685720, upload-time = "2025-12-20T16:18:19.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/7e/7bae7cbcc2f8132271967aa03e03954fc1e48aa1f3bf32b29ca95fbef352/numpy-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:316b2f2584682318539f0bcaca5a496ce9ca78c88066579ebd11fd06f8e4741e", size = 16940166, upload-time = "2025-12-20T16:15:43.434Z" }, + { url = "https://files.pythonhosted.org/packages/0f/27/6c13f5b46776d6246ec884ac5817452672156a506d08a1f2abb39961930a/numpy-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2718c1de8504121714234b6f8241d0019450353276c88b9453c9c3d92e101db", size = 12641781, upload-time = "2025-12-20T16:15:45.701Z" }, + { url = "https://files.pythonhosted.org/packages/14/1c/83b4998d4860d15283241d9e5215f28b40ac31f497c04b12fa7f428ff370/numpy-2.4.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:21555da4ec4a0c942520ead42c3b0dc9477441e085c42b0fbdd6a084869a6f6b", size = 5470247, upload-time = "2025-12-20T16:15:47.943Z" }, + { url = "https://files.pythonhosted.org/packages/54/08/cbce72c835d937795571b0464b52069f869c9e78b0c076d416c5269d2718/numpy-2.4.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:413aa561266a4be2d06cd2b9665e89d9f54c543f418773076a76adcf2af08bc7", size = 6799807, upload-time = "2025-12-20T16:15:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/ff/be/2e647961cd8c980591d75cdcd9e8f647d69fbe05e2a25613dc0a2ea5fb1a/numpy-2.4.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0feafc9e03128074689183031181fac0897ff169692d8492066e949041096548", size = 14701992, upload-time = "2025-12-20T16:15:51.615Z" }, + { url = "https://files.pythonhosted.org/packages/a2/fb/e1652fb8b6fd91ce6ed429143fe2e01ce714711e03e5b762615e7b36172c/numpy-2.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8fdfed3deaf1928fb7667d96e0567cdf58c2b370ea2ee7e586aa383ec2cb346", size = 16646871, upload-time = "2025-12-20T16:15:54.129Z" }, + { url = "https://files.pythonhosted.org/packages/62/23/d841207e63c4322842f7cd042ae981cffe715c73376dcad8235fb31debf1/numpy-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e06a922a469cae9a57100864caf4f8a97a1026513793969f8ba5b63137a35d25", size = 16487190, upload-time = "2025-12-20T16:15:56.147Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a0/6a842c8421ebfdec0a230e65f61e0dabda6edbef443d999d79b87c273965/numpy-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:927ccf5cd17c48f801f4ed43a7e5673a2724bd2171460be3e3894e6e332ef83a", size = 18580762, upload-time = "2025-12-20T16:15:58.524Z" }, + { url = "https://files.pythonhosted.org/packages/0a/d1/c79e0046641186f2134dde05e6181825b911f8bdcef31b19ddd16e232847/numpy-2.4.0-cp311-cp311-win32.whl", hash = "sha256:882567b7ae57c1b1a0250208cc21a7976d8cbcc49d5a322e607e6f09c9e0bd53", size = 6233359, upload-time = "2025-12-20T16:16:00.938Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f0/74965001d231f28184d6305b8cdc1b6fcd4bf23033f6cb039cfe76c9fca7/numpy-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:8b986403023c8f3bf8f487c2e6186afda156174d31c175f747d8934dfddf3479", size = 12601132, upload-time = "2025-12-20T16:16:02.484Z" }, + { url = "https://files.pythonhosted.org/packages/65/32/55408d0f46dfebce38017f5bd931affa7256ad6beac1a92a012e1fbc67a7/numpy-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:3f3096405acc48887458bbf9f6814d43785ac7ba2a57ea6442b581dedbc60ce6", size = 10573977, upload-time = "2025-12-20T16:16:04.77Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ff/f6400ffec95de41c74b8e73df32e3fff1830633193a7b1e409be7fb1bb8c/numpy-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2a8b6bb8369abefb8bd1801b054ad50e02b3275c8614dc6e5b0373c305291037", size = 16653117, upload-time = "2025-12-20T16:16:06.709Z" }, + { url = "https://files.pythonhosted.org/packages/fd/28/6c23e97450035072e8d830a3c411bf1abd1f42c611ff9d29e3d8f55c6252/numpy-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e284ca13d5a8367e43734148622caf0b261b275673823593e3e3634a6490f83", size = 12369711, upload-time = "2025-12-20T16:16:08.758Z" }, + { url = "https://files.pythonhosted.org/packages/bc/af/acbef97b630ab1bb45e6a7d01d1452e4251aa88ce680ac36e56c272120ec/numpy-2.4.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:49ff32b09f5aa0cd30a20c2b39db3e669c845589f2b7fc910365210887e39344", size = 5198355, upload-time = "2025-12-20T16:16:10.902Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c8/4e0d436b66b826f2e53330adaa6311f5cac9871a5b5c31ad773b27f25a74/numpy-2.4.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:36cbfb13c152b1c7c184ddac43765db8ad672567e7bafff2cc755a09917ed2e6", size = 6545298, upload-time = "2025-12-20T16:16:12.607Z" }, + { url = "https://files.pythonhosted.org/packages/ef/27/e1f5d144ab54eac34875e79037011d511ac57b21b220063310cb96c80fbc/numpy-2.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35ddc8f4914466e6fc954c76527aa91aa763682a4f6d73249ef20b418fe6effb", size = 14398387, upload-time = "2025-12-20T16:16:14.257Z" }, + { url = "https://files.pythonhosted.org/packages/67/64/4cb909dd5ab09a9a5d086eff9586e69e827b88a5585517386879474f4cf7/numpy-2.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc578891de1db95b2a35001b695451767b580bb45753717498213c5ff3c41d63", size = 16363091, upload-time = "2025-12-20T16:16:17.32Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9c/8efe24577523ec6809261859737cf117b0eb6fdb655abdfdc81b2e468ce4/numpy-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98e81648e0b36e325ab67e46b5400a7a6d4a22b8a7c8e8bbfe20e7db7906bf95", size = 16176394, upload-time = "2025-12-20T16:16:19.524Z" }, + { url = "https://files.pythonhosted.org/packages/61/f0/1687441ece7b47a62e45a1f82015352c240765c707928edd8aef875d5951/numpy-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d57b5046c120561ba8fa8e4030fbb8b822f3063910fa901ffadf16e2b7128ad6", size = 18287378, upload-time = "2025-12-20T16:16:22.866Z" }, + { url = "https://files.pythonhosted.org/packages/d3/6f/f868765d44e6fc466467ed810ba9d8d6db1add7d4a748abfa2a4c99a3194/numpy-2.4.0-cp312-cp312-win32.whl", hash = "sha256:92190db305a6f48734d3982f2c60fa30d6b5ee9bff10f2887b930d7b40119f4c", size = 5955432, upload-time = "2025-12-20T16:16:25.06Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b5/94c1e79fcbab38d1ca15e13777477b2914dd2d559b410f96949d6637b085/numpy-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:680060061adb2d74ce352628cb798cfdec399068aa7f07ba9fb818b2b3305f98", size = 12306201, upload-time = "2025-12-20T16:16:26.979Z" }, + { url = "https://files.pythonhosted.org/packages/70/09/c39dadf0b13bb0768cd29d6a3aaff1fb7c6905ac40e9aaeca26b1c086e06/numpy-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:39699233bc72dd482da1415dcb06076e32f60eddc796a796c5fb6c5efce94667", size = 10308234, upload-time = "2025-12-20T16:16:29.417Z" }, + { url = "https://files.pythonhosted.org/packages/a7/0d/853fd96372eda07c824d24adf02e8bc92bb3731b43a9b2a39161c3667cc4/numpy-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a152d86a3ae00ba5f47b3acf3b827509fd0b6cb7d3259665e63dafbad22a75ea", size = 16649088, upload-time = "2025-12-20T16:16:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/e3/37/cc636f1f2a9f585434e20a3e6e63422f70bfe4f7f6698e941db52ea1ac9a/numpy-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:39b19251dec4de8ff8496cd0806cbe27bf0684f765abb1f4809554de93785f2d", size = 12364065, upload-time = "2025-12-20T16:16:33.491Z" }, + { url = "https://files.pythonhosted.org/packages/ed/69/0b78f37ca3690969beee54103ce5f6021709134e8020767e93ba691a72f1/numpy-2.4.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:009bd0ea12d3c784b6639a8457537016ce5172109e585338e11334f6a7bb88ee", size = 5192640, upload-time = "2025-12-20T16:16:35.636Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2a/08569f8252abf590294dbb09a430543ec8f8cc710383abfb3e75cc73aeda/numpy-2.4.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5fe44e277225fd3dff6882d86d3d447205d43532c3627313d17e754fb3905a0e", size = 6541556, upload-time = "2025-12-20T16:16:37.276Z" }, + { url = "https://files.pythonhosted.org/packages/93/e9/a949885a4e177493d61519377952186b6cbfdf1d6002764c664ba28349b5/numpy-2.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f935c4493eda9069851058fa0d9e39dbf6286be690066509305e52912714dbb2", size = 14396562, upload-time = "2025-12-20T16:16:38.953Z" }, + { url = "https://files.pythonhosted.org/packages/99/98/9d4ad53b0e9ef901c2ef1d550d2136f5ac42d3fd2988390a6def32e23e48/numpy-2.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cfa5f29a695cb7438965e6c3e8d06e0416060cf0d709c1b1c1653a939bf5c2a", size = 16351719, upload-time = "2025-12-20T16:16:41.503Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/5f3711a38341d6e8dd619f6353251a0cdd07f3d6d101a8fd46f4ef87f895/numpy-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba0cb30acd3ef11c94dc27fbfba68940652492bc107075e7ffe23057f9425681", size = 16176053, upload-time = "2025-12-20T16:16:44.552Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5b/2a3753dc43916501b4183532e7ace862e13211042bceafa253afb5c71272/numpy-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60e8c196cd82cbbd4f130b5290007e13e6de3eca79f0d4d38014769d96a7c475", size = 18277859, upload-time = "2025-12-20T16:16:47.174Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c5/a18bcdd07a941db3076ef489d036ab16d2bfc2eae0cf27e5a26e29189434/numpy-2.4.0-cp313-cp313-win32.whl", hash = "sha256:5f48cb3e88fbc294dc90e215d86fbaf1c852c63dbdb6c3a3e63f45c4b57f7344", size = 5953849, upload-time = "2025-12-20T16:16:49.554Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f1/719010ff8061da6e8a26e1980cf090412d4f5f8060b31f0c45d77dd67a01/numpy-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:a899699294f28f7be8992853c0c60741f16ff199205e2e6cdca155762cbaa59d", size = 12302840, upload-time = "2025-12-20T16:16:51.227Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5a/b3d259083ed8b4d335270c76966cb6cf14a5d1b69e1a608994ac57a659e6/numpy-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:9198f447e1dc5647d07c9a6bbe2063cc0132728cc7175b39dbc796da5b54920d", size = 10308509, upload-time = "2025-12-20T16:16:53.313Z" }, + { url = "https://files.pythonhosted.org/packages/31/01/95edcffd1bb6c0633df4e808130545c4f07383ab629ac7e316fb44fff677/numpy-2.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74623f2ab5cc3f7c886add4f735d1031a1d2be4a4ae63c0546cfd74e7a31ddf6", size = 12491815, upload-time = "2025-12-20T16:16:55.496Z" }, + { url = "https://files.pythonhosted.org/packages/59/ea/5644b8baa92cc1c7163b4b4458c8679852733fa74ca49c942cfa82ded4e0/numpy-2.4.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:0804a8e4ab070d1d35496e65ffd3cf8114c136a2b81f61dfab0de4b218aacfd5", size = 5320321, upload-time = "2025-12-20T16:16:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/26/4e/e10938106d70bc21319bd6a86ae726da37edc802ce35a3a71ecdf1fdfe7f/numpy-2.4.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:02a2038eb27f9443a8b266a66911e926566b5a6ffd1a689b588f7f35b81e7dc3", size = 6641635, upload-time = "2025-12-20T16:16:59.379Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8d/a8828e3eaf5c0b4ab116924df82f24ce3416fa38d0674d8f708ddc6c8aac/numpy-2.4.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1889b3a3f47a7b5bee16bc25a2145bd7cb91897f815ce3499db64c7458b6d91d", size = 14456053, upload-time = "2025-12-20T16:17:01.768Z" }, + { url = "https://files.pythonhosted.org/packages/68/a1/17d97609d87d4520aa5ae2dcfb32305654550ac6a35effb946d303e594ce/numpy-2.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85eef4cb5625c47ee6425c58a3502555e10f45ee973da878ac8248ad58c136f3", size = 16401702, upload-time = "2025-12-20T16:17:04.235Z" }, + { url = "https://files.pythonhosted.org/packages/18/32/0f13c1b2d22bea1118356b8b963195446f3af124ed7a5adfa8fdecb1b6ca/numpy-2.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6dc8b7e2f4eb184b37655195f421836cfae6f58197b67e3ffc501f1333d993fa", size = 16242493, upload-time = "2025-12-20T16:17:06.856Z" }, + { url = "https://files.pythonhosted.org/packages/ae/23/48f21e3d309fbc137c068a1475358cbd3a901b3987dcfc97a029ab3068e2/numpy-2.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:44aba2f0cafd287871a495fb3163408b0bd25bbce135c6f621534a07f4f7875c", size = 18324222, upload-time = "2025-12-20T16:17:09.392Z" }, + { url = "https://files.pythonhosted.org/packages/ac/52/41f3d71296a3dcaa4f456aaa3c6fc8e745b43d0552b6bde56571bb4b4a0f/numpy-2.4.0-cp313-cp313t-win32.whl", hash = "sha256:20c115517513831860c573996e395707aa9fb691eb179200125c250e895fcd93", size = 6076216, upload-time = "2025-12-20T16:17:11.437Z" }, + { url = "https://files.pythonhosted.org/packages/35/ff/46fbfe60ab0710d2a2b16995f708750307d30eccbb4c38371ea9e986866e/numpy-2.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b48e35f4ab6f6a7597c46e301126ceba4c44cd3280e3750f85db48b082624fa4", size = 12444263, upload-time = "2025-12-20T16:17:13.182Z" }, + { url = "https://files.pythonhosted.org/packages/a3/e3/9189ab319c01d2ed556c932ccf55064c5d75bb5850d1df7a482ce0badead/numpy-2.4.0-cp313-cp313t-win_arm64.whl", hash = "sha256:4d1cfce39e511069b11e67cd0bd78ceff31443b7c9e5c04db73c7a19f572967c", size = 10378265, upload-time = "2025-12-20T16:17:15.211Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ed/52eac27de39d5e5a6c9aadabe672bc06f55e24a3d9010cd1183948055d76/numpy-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c95eb6db2884917d86cde0b4d4cf31adf485c8ec36bf8696dd66fa70de96f36b", size = 16647476, upload-time = "2025-12-20T16:17:17.671Z" }, + { url = "https://files.pythonhosted.org/packages/77/c0/990ce1b7fcd4e09aeaa574e2a0a839589e4b08b2ca68070f1acb1fea6736/numpy-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:65167da969cd1ec3a1df31cb221ca3a19a8aaa25370ecb17d428415e93c1935e", size = 12374563, upload-time = "2025-12-20T16:17:20.216Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/8c5e389c6ae8f5fd2277a988600d79e9625db3fff011a2d87ac80b881a4c/numpy-2.4.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3de19cfecd1465d0dcf8a5b5ea8b3155b42ed0b639dba4b71e323d74f2a3be5e", size = 5203107, upload-time = "2025-12-20T16:17:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/e6/94/ca5b3bd6a8a70a5eec9a0b8dd7f980c1eff4b8a54970a9a7fef248ef564f/numpy-2.4.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:6c05483c3136ac4c91b4e81903cb53a8707d316f488124d0398499a4f8e8ef51", size = 6538067, upload-time = "2025-12-20T16:17:24.001Z" }, + { url = "https://files.pythonhosted.org/packages/79/43/993eb7bb5be6761dde2b3a3a594d689cec83398e3f58f4758010f3b85727/numpy-2.4.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36667db4d6c1cea79c8930ab72fadfb4060feb4bfe724141cd4bd064d2e5f8ce", size = 14411926, upload-time = "2025-12-20T16:17:25.822Z" }, + { url = "https://files.pythonhosted.org/packages/03/75/d4c43b61de473912496317a854dac54f1efec3eeb158438da6884b70bb90/numpy-2.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9a818668b674047fd88c4cddada7ab8f1c298812783e8328e956b78dc4807f9f", size = 16354295, upload-time = "2025-12-20T16:17:28.308Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0a/b54615b47ee8736a6461a4bb6749128dd3435c5a759d5663f11f0e9af4ac/numpy-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1ee32359fb7543b7b7bd0b2f46294db27e29e7bbdf70541e81b190836cd83ded", size = 16190242, upload-time = "2025-12-20T16:17:30.993Z" }, + { url = "https://files.pythonhosted.org/packages/98/ce/ea207769aacad6246525ec6c6bbd66a2bf56c72443dc10e2f90feed29290/numpy-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e493962256a38f58283de033d8af176c5c91c084ea30f15834f7545451c42059", size = 18280875, upload-time = "2025-12-20T16:17:33.327Z" }, + { url = "https://files.pythonhosted.org/packages/17/ef/ec409437aa962ea372ed601c519a2b141701683ff028f894b7466f0ab42b/numpy-2.4.0-cp314-cp314-win32.whl", hash = "sha256:6bbaebf0d11567fa8926215ae731e1d58e6ec28a8a25235b8a47405d301332db", size = 6002530, upload-time = "2025-12-20T16:17:35.729Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4a/5cb94c787a3ed1ac65e1271b968686521169a7b3ec0b6544bb3ca32960b0/numpy-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:3d857f55e7fdf7c38ab96c4558c95b97d1c685be6b05c249f5fdafcbd6f9899e", size = 12435890, upload-time = "2025-12-20T16:17:37.599Z" }, + { url = "https://files.pythonhosted.org/packages/48/a0/04b89db963af9de1104975e2544f30de89adbf75b9e75f7dd2599be12c79/numpy-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:bb50ce5fb202a26fd5404620e7ef820ad1ab3558b444cb0b55beb7ef66cd2d63", size = 10591892, upload-time = "2025-12-20T16:17:39.649Z" }, + { url = "https://files.pythonhosted.org/packages/53/e5/d74b5ccf6712c06c7a545025a6a71bfa03bdc7e0568b405b0d655232fd92/numpy-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:355354388cba60f2132df297e2d53053d4063f79077b67b481d21276d61fc4df", size = 12494312, upload-time = "2025-12-20T16:17:41.714Z" }, + { url = "https://files.pythonhosted.org/packages/c2/08/3ca9cc2ddf54dfee7ae9a6479c071092a228c68aef08252aa08dac2af002/numpy-2.4.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:1d8f9fde5f6dc1b6fc34df8162f3b3079365468703fee7f31d4e0cc8c63baed9", size = 5322862, upload-time = "2025-12-20T16:17:44.145Z" }, + { url = "https://files.pythonhosted.org/packages/87/74/0bb63a68394c0c1e52670cfff2e309afa41edbe11b3327d9af29e4383f34/numpy-2.4.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e0434aa22c821f44eeb4c650b81c7fbdd8c0122c6c4b5a576a76d5a35625ecd9", size = 6644986, upload-time = "2025-12-20T16:17:46.203Z" }, + { url = "https://files.pythonhosted.org/packages/06/8f/9264d9bdbcf8236af2823623fe2f3981d740fc3461e2787e231d97c38c28/numpy-2.4.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40483b2f2d3ba7aad426443767ff5632ec3156ef09742b96913787d13c336471", size = 14457958, upload-time = "2025-12-20T16:17:48.017Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d9/f9a69ae564bbc7236a35aa883319364ef5fd41f72aa320cc1cbe66148fe2/numpy-2.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6a7664ddd9746e20b7325351fe1a8408d0a2bf9c63b5e898290ddc8f09544", size = 16398394, upload-time = "2025-12-20T16:17:50.409Z" }, + { url = "https://files.pythonhosted.org/packages/34/c7/39241501408dde7f885d241a98caba5421061a2c6d2b2197ac5e3aa842d8/numpy-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ecb0019d44f4cdb50b676c5d0cb4b1eae8e15d1ed3d3e6639f986fc92b2ec52c", size = 16241044, upload-time = "2025-12-20T16:17:52.661Z" }, + { url = "https://files.pythonhosted.org/packages/7c/95/cae7effd90e065a95e59fe710eeee05d7328ed169776dfdd9f789e032125/numpy-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d0ffd9e2e4441c96a9c91ec1783285d80bf835b677853fc2770a89d50c1e48ac", size = 18321772, upload-time = "2025-12-20T16:17:54.947Z" }, + { url = "https://files.pythonhosted.org/packages/96/df/3c6c279accd2bfb968a76298e5b276310bd55d243df4fa8ac5816d79347d/numpy-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:77f0d13fa87036d7553bf81f0e1fe3ce68d14c9976c9851744e4d3e91127e95f", size = 6148320, upload-time = "2025-12-20T16:17:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/92/8d/f23033cce252e7a75cae853d17f582e86534c46404dea1c8ee094a9d6d84/numpy-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b1f5b45829ac1848893f0ddf5cb326110604d6df96cdc255b0bf9edd154104d4", size = 12623460, upload-time = "2025-12-20T16:17:58.963Z" }, + { url = "https://files.pythonhosted.org/packages/a4/4f/1f8475907d1a7c4ef9020edf7f39ea2422ec896849245f00688e4b268a71/numpy-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:23a3e9d1a6f360267e8fbb38ba5db355a6a7e9be71d7fce7ab3125e88bb646c8", size = 10661799, upload-time = "2025-12-20T16:18:01.078Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ef/088e7c7342f300aaf3ee5f2c821c4b9996a1bef2aaf6a49cc8ab4883758e/numpy-2.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b54c83f1c0c0f1d748dca0af516062b8829d53d1f0c402be24b4257a9c48ada6", size = 16819003, upload-time = "2025-12-20T16:18:03.41Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ce/a53017b5443b4b84517182d463fc7bcc2adb4faa8b20813f8e5f5aeb5faa/numpy-2.4.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:aabb081ca0ec5d39591fc33018cd4b3f96e1a2dd6756282029986d00a785fba4", size = 12567105, upload-time = "2025-12-20T16:18:05.594Z" }, + { url = "https://files.pythonhosted.org/packages/77/58/5ff91b161f2ec650c88a626c3905d938c89aaadabd0431e6d9c1330c83e2/numpy-2.4.0-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:8eafe7c36c8430b7794edeab3087dec7bf31d634d92f2af9949434b9d1964cba", size = 5395590, upload-time = "2025-12-20T16:18:08.031Z" }, + { url = "https://files.pythonhosted.org/packages/1d/4e/f1a084106df8c2df8132fc437e56987308e0524836aa7733721c8429d4fe/numpy-2.4.0-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2f585f52b2baf07ff3356158d9268ea095e221371f1074fadea2f42544d58b4d", size = 6709947, upload-time = "2025-12-20T16:18:09.836Z" }, + { url = "https://files.pythonhosted.org/packages/63/09/3d8aeb809c0332c3f642da812ac2e3d74fc9252b3021f8c30c82e99e3f3d/numpy-2.4.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32ed06d0fe9cae27d8fb5f400c63ccee72370599c75e683a6358dd3a4fb50aaf", size = 14535119, upload-time = "2025-12-20T16:18:12.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/7f/68f0fc43a2cbdc6bb239160c754d87c922f60fbaa0fa3cd3d312b8a7f5ee/numpy-2.4.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:57c540ed8fb1f05cb997c6761cd56db72395b0d6985e90571ff660452ade4f98", size = 16475815, upload-time = "2025-12-20T16:18:14.433Z" }, + { url = "https://files.pythonhosted.org/packages/11/73/edeacba3167b1ca66d51b1a5a14697c2c40098b5ffa01811c67b1785a5ab/numpy-2.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a39fb973a726e63223287adc6dafe444ce75af952d711e400f3bf2b36ef55a7b", size = 12489376, upload-time = "2025-12-20T16:18:16.524Z" }, ] [[package]] name = "openapi-schema-validator" -version = "0.6.3" +version = "0.4.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema" }, - { name = "jsonschema-specifications" }, { name = "rfc3339-validator" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/f3/5507ad3325169347cd8ced61c232ff3df70e2b250c49f0fe140edb4973c6/openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee", size = 11550, upload-time = "2025-01-10T18:08:22.268Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/4e/e024ba8579ac1a88aac90bebb9eec9c0e62a4122cc8ad11b1ec92890ff26/openapi_schema_validator-0.4.3.tar.gz", hash = "sha256:6940dba9f4906c97078fea6fd9d5a3a3384207db368c4e32f6af6abd7c5c560b", size = 9735, upload-time = "2023-02-03T08:10:29.091Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/c6/ad0fba32775ae749016829dace42ed80f4407b171da41313d1a3a5f102e4/openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3", size = 8755, upload-time = "2025-01-10T18:08:19.758Z" }, + { url = "https://files.pythonhosted.org/packages/54/47/2137d826dc99edf035a0ad462c3fe70ea0ccd96c1c11d06d07c29d793428/openapi_schema_validator-0.4.3-py3-none-any.whl", hash = "sha256:f1eff2a7936546a3ce62b88a17d09de93c9bd229cbc43cb696c988a61a382548", size = 9421, upload-time = "2023-02-03T08:10:27.333Z" }, ] [[package]] name = "openapi-spec-validator" -version = "0.7.2" +version = "0.5.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema" }, - { name = "jsonschema-path" }, + { name = "jsonschema-spec" }, { name = "lazy-object-proxy" }, { name = "openapi-schema-validator" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/af/fe2d7618d6eae6fb3a82766a44ed87cd8d6d82b4564ed1c7cfb0f6378e91/openapi_spec_validator-0.7.2.tar.gz", hash = "sha256:cc029309b5c5dbc7859df0372d55e9d1ff43e96d678b9ba087f7c56fc586f734", size = 36855, upload-time = "2025-06-07T14:48:56.299Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/d8/5a291b895e79bdab621398a66cbd1af27ed957c016b7f8b0667fbf62569f/openapi_spec_validator-0.5.5.tar.gz", hash = "sha256:3010df5237748e25d7fac2b2aaf13457c1afd02735b2bd6f008a10079c8f443a", size = 28040, upload-time = "2023-02-06T05:56:57.311Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/dd/b3fd642260cb17532f66cc1e8250f3507d1e580483e209dc1e9d13bd980d/openapi_spec_validator-0.7.2-py3-none-any.whl", hash = "sha256:4bbdc0894ec85f1d1bea1d6d9c8b2c3c8d7ccaa13577ef40da9c006c9fd0eb60", size = 39713, upload-time = "2025-06-07T14:48:54.077Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d0/a9bb1909fe66ebf700931b6542cef46707342086390930117a1289a4530c/openapi_spec_validator-0.5.5-py3-none-any.whl", hash = "sha256:93ba247f585e1447214b4207728a7cce3726d148238217be69e6b8725c118fbe", size = 32076, upload-time = "2023-02-06T05:56:55.532Z" }, ] [[package]] @@ -3654,7 +3706,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "python-dateutil" }, { name = "pytz" }, { name = "tzdata" }, @@ -3752,11 +3804,11 @@ wheels = [ [[package]] name = "pathspec" -version = "0.12.1" +version = "1.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/b9/6eb731b52f132181a9144bbe77ff82117f6b2d2fbfba49aaab2c014c4760/pathspec-1.0.2.tar.gz", hash = "sha256:fa32b1eb775ed9ba8d599b22c5f906dc098113989da2c00bf8b210078ca7fb92", size = 130502, upload-time = "2026-01-08T04:33:27.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/78/6b/14fc9049d78435fd29e82846c777bd7ed9c470013dc8d0260fff3ff1c11e/pathspec-1.0.2-py3-none-any.whl", hash = "sha256:62f8558917908d237d399b9b338ef455a814801a4688bc41074b25feefd93472", size = 54844, upload-time = "2026-01-08T04:33:26.4Z" }, ] [[package]] @@ -3889,105 +3941,105 @@ wheels = [ [[package]] name = "pillow" -version = "12.0.0" +version = "12.1.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", "python_full_version == '3.10.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/26e68b6b5da219c2a2cb7b563af008b53bb8e6b6fcb3fa40715fcdb2523a/pillow-12.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:3adfb466bbc544b926d50fe8f4a4e6abd8c6bffd28a26177594e6e9b2b76572b", size = 5289809, upload-time = "2025-10-15T18:21:27.791Z" }, - { url = "https://files.pythonhosted.org/packages/cb/e9/4e58fb097fb74c7b4758a680aacd558810a417d1edaa7000142976ef9d2f/pillow-12.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ac11e8ea4f611c3c0147424eae514028b5e9077dd99ab91e1bd7bc33ff145e1", size = 4650606, upload-time = "2025-10-15T18:21:29.823Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e0/1fa492aa9f77b3bc6d471c468e62bfea1823056bf7e5e4f1914d7ab2565e/pillow-12.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d49e2314c373f4c2b39446fb1a45ed333c850e09d0c59ac79b72eb3b95397363", size = 6221023, upload-time = "2025-10-15T18:21:31.415Z" }, - { url = "https://files.pythonhosted.org/packages/c1/09/4de7cd03e33734ccd0c876f0251401f1314e819cbfd89a0fcb6e77927cc6/pillow-12.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c7b2a63fd6d5246349f3d3f37b14430d73ee7e8173154461785e43036ffa96ca", size = 8024937, upload-time = "2025-10-15T18:21:33.453Z" }, - { url = "https://files.pythonhosted.org/packages/2e/69/0688e7c1390666592876d9d474f5e135abb4acb39dcb583c4dc5490f1aff/pillow-12.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d64317d2587c70324b79861babb9c09f71fbb780bad212018874b2c013d8600e", size = 6334139, upload-time = "2025-10-15T18:21:35.395Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1c/880921e98f525b9b44ce747ad1ea8f73fd7e992bafe3ca5e5644bf433dea/pillow-12.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d77153e14b709fd8b8af6f66a3afbb9ed6e9fc5ccf0b6b7e1ced7b036a228782", size = 7026074, upload-time = "2025-10-15T18:21:37.219Z" }, - { url = "https://files.pythonhosted.org/packages/28/03/96f718331b19b355610ef4ebdbbde3557c726513030665071fd025745671/pillow-12.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:32ed80ea8a90ee3e6fa08c21e2e091bba6eda8eccc83dbc34c95169507a91f10", size = 6448852, upload-time = "2025-10-15T18:21:39.168Z" }, - { url = "https://files.pythonhosted.org/packages/3a/a0/6a193b3f0cc9437b122978d2c5cbce59510ccf9a5b48825096ed7472da2f/pillow-12.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c828a1ae702fc712978bda0320ba1b9893d99be0badf2647f693cc01cf0f04fa", size = 7117058, upload-time = "2025-10-15T18:21:40.997Z" }, - { url = "https://files.pythonhosted.org/packages/a7/c4/043192375eaa4463254e8e61f0e2ec9a846b983929a8d0a7122e0a6d6fff/pillow-12.0.0-cp310-cp310-win32.whl", hash = "sha256:bd87e140e45399c818fac4247880b9ce719e4783d767e030a883a970be632275", size = 6295431, upload-time = "2025-10-15T18:21:42.518Z" }, - { url = "https://files.pythonhosted.org/packages/92/c6/c2f2fc7e56301c21827e689bb8b0b465f1b52878b57471a070678c0c33cd/pillow-12.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:455247ac8a4cfb7b9bc45b7e432d10421aea9fc2e74d285ba4072688a74c2e9d", size = 7000412, upload-time = "2025-10-15T18:21:44.404Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d2/5f675067ba82da7a1c238a73b32e3fd78d67f9d9f80fbadd33a40b9c0481/pillow-12.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6ace95230bfb7cd79ef66caa064bbe2f2a1e63d93471c3a2e1f1348d9f22d6b7", size = 2435903, upload-time = "2025-10-15T18:21:46.29Z" }, - { url = "https://files.pythonhosted.org/packages/0e/5a/a2f6773b64edb921a756eb0729068acad9fc5208a53f4a349396e9436721/pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc", size = 5289798, upload-time = "2025-10-15T18:21:47.763Z" }, - { url = "https://files.pythonhosted.org/packages/2e/05/069b1f8a2e4b5a37493da6c5868531c3f77b85e716ad7a590ef87d58730d/pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257", size = 4650589, upload-time = "2025-10-15T18:21:49.515Z" }, - { url = "https://files.pythonhosted.org/packages/61/e3/2c820d6e9a36432503ead175ae294f96861b07600a7156154a086ba7111a/pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642", size = 6230472, upload-time = "2025-10-15T18:21:51.052Z" }, - { url = "https://files.pythonhosted.org/packages/4f/89/63427f51c64209c5e23d4d52071c8d0f21024d3a8a487737caaf614a5795/pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3", size = 8033887, upload-time = "2025-10-15T18:21:52.604Z" }, - { url = "https://files.pythonhosted.org/packages/f6/1b/c9711318d4901093c15840f268ad649459cd81984c9ec9887756cca049a5/pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c", size = 6343964, upload-time = "2025-10-15T18:21:54.619Z" }, - { url = "https://files.pythonhosted.org/packages/41/1e/db9470f2d030b4995083044cd8738cdd1bf773106819f6d8ba12597d5352/pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227", size = 7034756, upload-time = "2025-10-15T18:21:56.151Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b0/6177a8bdd5ee4ed87cba2de5a3cc1db55ffbbec6176784ce5bb75aa96798/pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b", size = 6458075, upload-time = "2025-10-15T18:21:57.759Z" }, - { url = "https://files.pythonhosted.org/packages/bc/5e/61537aa6fa977922c6a03253a0e727e6e4a72381a80d63ad8eec350684f2/pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e", size = 7125955, upload-time = "2025-10-15T18:21:59.372Z" }, - { url = "https://files.pythonhosted.org/packages/1f/3d/d5033539344ee3cbd9a4d69e12e63ca3a44a739eb2d4c8da350a3d38edd7/pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739", size = 6298440, upload-time = "2025-10-15T18:22:00.982Z" }, - { url = "https://files.pythonhosted.org/packages/4d/42/aaca386de5cc8bd8a0254516957c1f265e3521c91515b16e286c662854c4/pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e", size = 6999256, upload-time = "2025-10-15T18:22:02.617Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f1/9197c9c2d5708b785f631a6dfbfa8eb3fb9672837cb92ae9af812c13b4ed/pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d", size = 2436025, upload-time = "2025-10-15T18:22:04.598Z" }, - { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, - { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, - { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, - { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, - { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, - { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, - { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, - { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, - { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, - { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, - { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, - { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, - { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, - { url = "https://files.pythonhosted.org/packages/a4/a4/a0a31467e3f83b94d37568294b01d22b43ae3c5d85f2811769b9c66389dd/pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", size = 5249132, upload-time = "2025-10-15T18:22:30.641Z" }, - { url = "https://files.pythonhosted.org/packages/83/06/48eab21dd561de2914242711434c0c0eb992ed08ff3f6107a5f44527f5e9/pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", size = 4650099, upload-time = "2025-10-15T18:22:32.73Z" }, - { url = "https://files.pythonhosted.org/packages/fc/bd/69ed99fd46a8dba7c1887156d3572fe4484e3f031405fcc5a92e31c04035/pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", size = 6230808, upload-time = "2025-10-15T18:22:34.337Z" }, - { url = "https://files.pythonhosted.org/packages/ea/94/8fad659bcdbf86ed70099cb60ae40be6acca434bbc8c4c0d4ef356d7e0de/pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", size = 8037804, upload-time = "2025-10-15T18:22:36.402Z" }, - { url = "https://files.pythonhosted.org/packages/20/39/c685d05c06deecfd4e2d1950e9a908aa2ca8bc4e6c3b12d93b9cafbd7837/pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", size = 6345553, upload-time = "2025-10-15T18:22:38.066Z" }, - { url = "https://files.pythonhosted.org/packages/38/57/755dbd06530a27a5ed74f8cb0a7a44a21722ebf318edbe67ddbd7fb28f88/pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", size = 7037729, upload-time = "2025-10-15T18:22:39.769Z" }, - { url = "https://files.pythonhosted.org/packages/ca/b6/7e94f4c41d238615674d06ed677c14883103dce1c52e4af16f000338cfd7/pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", size = 6459789, upload-time = "2025-10-15T18:22:41.437Z" }, - { url = "https://files.pythonhosted.org/packages/9c/14/4448bb0b5e0f22dd865290536d20ec8a23b64e2d04280b89139f09a36bb6/pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", size = 7130917, upload-time = "2025-10-15T18:22:43.152Z" }, - { url = "https://files.pythonhosted.org/packages/dd/ca/16c6926cc1c015845745d5c16c9358e24282f1e588237a4c36d2b30f182f/pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", size = 6302391, upload-time = "2025-10-15T18:22:44.753Z" }, - { url = "https://files.pythonhosted.org/packages/6d/2a/dd43dcfd6dae9b6a49ee28a8eedb98c7d5ff2de94a5d834565164667b97b/pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", size = 7007477, upload-time = "2025-10-15T18:22:46.838Z" }, - { url = "https://files.pythonhosted.org/packages/77/f0/72ea067f4b5ae5ead653053212af05ce3705807906ba3f3e8f58ddf617e6/pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", size = 2435918, upload-time = "2025-10-15T18:22:48.399Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5e/9046b423735c21f0487ea6cb5b10f89ea8f8dfbe32576fe052b5ba9d4e5b/pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", size = 5251406, upload-time = "2025-10-15T18:22:49.905Z" }, - { url = "https://files.pythonhosted.org/packages/12/66/982ceebcdb13c97270ef7a56c3969635b4ee7cd45227fa707c94719229c5/pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", size = 4653218, upload-time = "2025-10-15T18:22:51.587Z" }, - { url = "https://files.pythonhosted.org/packages/16/b3/81e625524688c31859450119bf12674619429cab3119eec0e30a7a1029cb/pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", size = 6266564, upload-time = "2025-10-15T18:22:53.215Z" }, - { url = "https://files.pythonhosted.org/packages/98/59/dfb38f2a41240d2408096e1a76c671d0a105a4a8471b1871c6902719450c/pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", size = 8069260, upload-time = "2025-10-15T18:22:54.933Z" }, - { url = "https://files.pythonhosted.org/packages/dc/3d/378dbea5cd1874b94c312425ca77b0f47776c78e0df2df751b820c8c1d6c/pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", size = 6379248, upload-time = "2025-10-15T18:22:56.605Z" }, - { url = "https://files.pythonhosted.org/packages/84/b0/d525ef47d71590f1621510327acec75ae58c721dc071b17d8d652ca494d8/pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", size = 7066043, upload-time = "2025-10-15T18:22:58.53Z" }, - { url = "https://files.pythonhosted.org/packages/61/2c/aced60e9cf9d0cde341d54bf7932c9ffc33ddb4a1595798b3a5150c7ec4e/pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", size = 6490915, upload-time = "2025-10-15T18:23:00.582Z" }, - { url = "https://files.pythonhosted.org/packages/ef/26/69dcb9b91f4e59f8f34b2332a4a0a951b44f547c4ed39d3e4dcfcff48f89/pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", size = 7157998, upload-time = "2025-10-15T18:23:02.627Z" }, - { url = "https://files.pythonhosted.org/packages/61/2b/726235842220ca95fa441ddf55dd2382b52ab5b8d9c0596fe6b3f23dafe8/pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", size = 6306201, upload-time = "2025-10-15T18:23:04.709Z" }, - { url = "https://files.pythonhosted.org/packages/c0/3d/2afaf4e840b2df71344ababf2f8edd75a705ce500e5dc1e7227808312ae1/pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", size = 7013165, upload-time = "2025-10-15T18:23:06.46Z" }, - { url = "https://files.pythonhosted.org/packages/6f/75/3fa09aa5cf6ed04bee3fa575798ddf1ce0bace8edb47249c798077a81f7f/pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", size = 2437834, upload-time = "2025-10-15T18:23:08.194Z" }, - { url = "https://files.pythonhosted.org/packages/54/2a/9a8c6ba2c2c07b71bec92cf63e03370ca5e5f5c5b119b742bcc0cde3f9c5/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9", size = 4045531, upload-time = "2025-10-15T18:23:10.121Z" }, - { url = "https://files.pythonhosted.org/packages/84/54/836fdbf1bfb3d66a59f0189ff0b9f5f666cee09c6188309300df04ad71fa/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2", size = 4120554, upload-time = "2025-10-15T18:23:12.14Z" }, - { url = "https://files.pythonhosted.org/packages/0d/cd/16aec9f0da4793e98e6b54778a5fbce4f375c6646fe662e80600b8797379/pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a", size = 3576812, upload-time = "2025-10-15T18:23:13.962Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b7/13957fda356dc46339298b351cae0d327704986337c3c69bb54628c88155/pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b", size = 5252689, upload-time = "2025-10-15T18:23:15.562Z" }, - { url = "https://files.pythonhosted.org/packages/fc/f5/eae31a306341d8f331f43edb2e9122c7661b975433de5e447939ae61c5da/pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad", size = 4650186, upload-time = "2025-10-15T18:23:17.379Z" }, - { url = "https://files.pythonhosted.org/packages/86/62/2a88339aa40c4c77e79108facbd307d6091e2c0eb5b8d3cf4977cfca2fe6/pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01", size = 6230308, upload-time = "2025-10-15T18:23:18.971Z" }, - { url = "https://files.pythonhosted.org/packages/c7/33/5425a8992bcb32d1cb9fa3dd39a89e613d09a22f2c8083b7bf43c455f760/pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c", size = 8039222, upload-time = "2025-10-15T18:23:20.909Z" }, - { url = "https://files.pythonhosted.org/packages/d8/61/3f5d3b35c5728f37953d3eec5b5f3e77111949523bd2dd7f31a851e50690/pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e", size = 6346657, upload-time = "2025-10-15T18:23:23.077Z" }, - { url = "https://files.pythonhosted.org/packages/3a/be/ee90a3d79271227e0f0a33c453531efd6ed14b2e708596ba5dd9be948da3/pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e", size = 7038482, upload-time = "2025-10-15T18:23:25.005Z" }, - { url = "https://files.pythonhosted.org/packages/44/34/a16b6a4d1ad727de390e9bd9f19f5f669e079e5826ec0f329010ddea492f/pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9", size = 6461416, upload-time = "2025-10-15T18:23:27.009Z" }, - { url = "https://files.pythonhosted.org/packages/b6/39/1aa5850d2ade7d7ba9f54e4e4c17077244ff7a2d9e25998c38a29749eb3f/pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab", size = 7131584, upload-time = "2025-10-15T18:23:29.752Z" }, - { url = "https://files.pythonhosted.org/packages/bf/db/4fae862f8fad0167073a7733973bfa955f47e2cac3dc3e3e6257d10fab4a/pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b", size = 6400621, upload-time = "2025-10-15T18:23:32.06Z" }, - { url = "https://files.pythonhosted.org/packages/2b/24/b350c31543fb0107ab2599464d7e28e6f856027aadda995022e695313d94/pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b", size = 7142916, upload-time = "2025-10-15T18:23:34.71Z" }, - { url = "https://files.pythonhosted.org/packages/0f/9b/0ba5a6fd9351793996ef7487c4fdbde8d3f5f75dbedc093bb598648fddf0/pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0", size = 2523836, upload-time = "2025-10-15T18:23:36.967Z" }, - { url = "https://files.pythonhosted.org/packages/f5/7a/ceee0840aebc579af529b523d530840338ecf63992395842e54edc805987/pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6", size = 5255092, upload-time = "2025-10-15T18:23:38.573Z" }, - { url = "https://files.pythonhosted.org/packages/44/76/20776057b4bfd1aef4eeca992ebde0f53a4dce874f3ae693d0ec90a4f79b/pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6", size = 4653158, upload-time = "2025-10-15T18:23:40.238Z" }, - { url = "https://files.pythonhosted.org/packages/82/3f/d9ff92ace07be8836b4e7e87e6a4c7a8318d47c2f1463ffcf121fc57d9cb/pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1", size = 6267882, upload-time = "2025-10-15T18:23:42.434Z" }, - { url = "https://files.pythonhosted.org/packages/9f/7a/4f7ff87f00d3ad33ba21af78bfcd2f032107710baf8280e3722ceec28cda/pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e", size = 8071001, upload-time = "2025-10-15T18:23:44.29Z" }, - { url = "https://files.pythonhosted.org/packages/75/87/fcea108944a52dad8cca0715ae6247e271eb80459364a98518f1e4f480c1/pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca", size = 6380146, upload-time = "2025-10-15T18:23:46.065Z" }, - { url = "https://files.pythonhosted.org/packages/91/52/0d31b5e571ef5fd111d2978b84603fce26aba1b6092f28e941cb46570745/pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925", size = 7067344, upload-time = "2025-10-15T18:23:47.898Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f4/2dd3d721f875f928d48e83bb30a434dee75a2531bca839bb996bb0aa5a91/pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8", size = 6491864, upload-time = "2025-10-15T18:23:49.607Z" }, - { url = "https://files.pythonhosted.org/packages/30/4b/667dfcf3d61fc309ba5a15b141845cece5915e39b99c1ceab0f34bf1d124/pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4", size = 7158911, upload-time = "2025-10-15T18:23:51.351Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2f/16cabcc6426c32218ace36bf0d55955e813f2958afddbf1d391849fee9d1/pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52", size = 6408045, upload-time = "2025-10-15T18:23:53.177Z" }, - { url = "https://files.pythonhosted.org/packages/35/73/e29aa0c9c666cf787628d3f0dcf379f4791fba79f4936d02f8b37165bdf8/pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a", size = 7148282, upload-time = "2025-10-15T18:23:55.316Z" }, - { url = "https://files.pythonhosted.org/packages/c1/70/6b41bdcddf541b437bbb9f47f94d2db5d9ddef6c37ccab8c9107743748a4/pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7", size = 2525630, upload-time = "2025-10-15T18:23:57.149Z" }, - { url = "https://files.pythonhosted.org/packages/1d/b3/582327e6c9f86d037b63beebe981425d6811104cb443e8193824ef1a2f27/pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8", size = 5215068, upload-time = "2025-10-15T18:23:59.594Z" }, - { url = "https://files.pythonhosted.org/packages/fd/d6/67748211d119f3b6540baf90f92fae73ae51d5217b171b0e8b5f7e5d558f/pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a", size = 4614994, upload-time = "2025-10-15T18:24:01.669Z" }, - { url = "https://files.pythonhosted.org/packages/2d/e1/f8281e5d844c41872b273b9f2c34a4bf64ca08905668c8ae730eedc7c9fa/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197", size = 5246639, upload-time = "2025-10-15T18:24:03.403Z" }, - { url = "https://files.pythonhosted.org/packages/94/5a/0d8ab8ffe8a102ff5df60d0de5af309015163bf710c7bb3e8311dd3b3ad0/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c", size = 6986839, upload-time = "2025-10-15T18:24:05.344Z" }, - { url = "https://files.pythonhosted.org/packages/20/2e/3434380e8110b76cd9eb00a363c484b050f949b4bbe84ba770bb8508a02c/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e", size = 5313505, upload-time = "2025-10-15T18:24:07.137Z" }, - { url = "https://files.pythonhosted.org/packages/57/ca/5a9d38900d9d74785141d6580950fe705de68af735ff6e727cb911b64740/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76", size = 5963654, upload-time = "2025-10-15T18:24:09.579Z" }, - { url = "https://files.pythonhosted.org/packages/95/7e/f896623c3c635a90537ac093c6a618ebe1a90d87206e42309cb5d98a1b9e/pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5", size = 6997850, upload-time = "2025-10-15T18:24:11.495Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/41/f73d92b6b883a579e79600d391f2e21cb0df767b2714ecbd2952315dfeef/pillow-12.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:fb125d860738a09d363a88daa0f59c4533529a90e564785e20fe875b200b6dbd", size = 5304089, upload-time = "2026-01-02T09:10:24.953Z" }, + { url = "https://files.pythonhosted.org/packages/94/55/7aca2891560188656e4a91ed9adba305e914a4496800da6b5c0a15f09edf/pillow-12.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cad302dc10fac357d3467a74a9561c90609768a6f73a1923b0fd851b6486f8b0", size = 4657815, upload-time = "2026-01-02T09:10:27.063Z" }, + { url = "https://files.pythonhosted.org/packages/e9/d2/b28221abaa7b4c40b7dba948f0f6a708bd7342c4d47ce342f0ea39643974/pillow-12.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a40905599d8079e09f25027423aed94f2823adaf2868940de991e53a449e14a8", size = 6222593, upload-time = "2026-01-02T09:10:29.115Z" }, + { url = "https://files.pythonhosted.org/packages/71/b8/7a61fb234df6a9b0b479f69e66901209d89ff72a435b49933f9122f94cac/pillow-12.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a7fe4225365c5e3a8e598982269c6d6698d3e783b3b1ae979e7819f9cd55c1", size = 8027579, upload-time = "2026-01-02T09:10:31.182Z" }, + { url = "https://files.pythonhosted.org/packages/ea/51/55c751a57cc524a15a0e3db20e5cde517582359508d62305a627e77fd295/pillow-12.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f10c98f49227ed8383d28174ee95155a675c4ed7f85e2e573b04414f7e371bda", size = 6335760, upload-time = "2026-01-02T09:10:33.02Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7c/60e3e6f5e5891a1a06b4c910f742ac862377a6fe842f7184df4a274ce7bf/pillow-12.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8637e29d13f478bc4f153d8daa9ffb16455f0a6cb287da1b432fdad2bfbd66c7", size = 7027127, upload-time = "2026-01-02T09:10:35.009Z" }, + { url = "https://files.pythonhosted.org/packages/06/37/49d47266ba50b00c27ba63a7c898f1bb41a29627ced8c09e25f19ebec0ff/pillow-12.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:21e686a21078b0f9cb8c8a961d99e6a4ddb88e0fc5ea6e130172ddddc2e5221a", size = 6449896, upload-time = "2026-01-02T09:10:36.793Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/67fd87d2913902462cd9b79c6211c25bfe95fcf5783d06e1367d6d9a741f/pillow-12.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2415373395a831f53933c23ce051021e79c8cd7979822d8cc478547a3f4da8ef", size = 7151345, upload-time = "2026-01-02T09:10:39.064Z" }, + { url = "https://files.pythonhosted.org/packages/bd/15/f8c7abf82af68b29f50d77c227e7a1f87ce02fdc66ded9bf603bc3b41180/pillow-12.1.0-cp310-cp310-win32.whl", hash = "sha256:e75d3dba8fc1ddfec0cd752108f93b83b4f8d6ab40e524a95d35f016b9683b09", size = 6325568, upload-time = "2026-01-02T09:10:41.035Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/7d1c0e160b6b5ac2605ef7d8be537e28753c0db5363d035948073f5513d7/pillow-12.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:64efdf00c09e31efd754448a383ea241f55a994fd079866b92d2bbff598aad91", size = 7032367, upload-time = "2026-01-02T09:10:43.09Z" }, + { url = "https://files.pythonhosted.org/packages/f4/03/41c038f0d7a06099254c60f618d0ec7be11e79620fc23b8e85e5b31d9a44/pillow-12.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f188028b5af6b8fb2e9a76ac0f841a575bd1bd396e46ef0840d9b88a48fdbcea", size = 2452345, upload-time = "2026-01-02T09:10:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/43/c4/bf8328039de6cc22182c3ef007a2abfbbdab153661c0a9aa78af8d706391/pillow-12.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3", size = 5304057, upload-time = "2026-01-02T09:10:46.627Z" }, + { url = "https://files.pythonhosted.org/packages/43/06/7264c0597e676104cc22ca73ee48f752767cd4b1fe084662620b17e10120/pillow-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0", size = 4657811, upload-time = "2026-01-02T09:10:49.548Z" }, + { url = "https://files.pythonhosted.org/packages/72/64/f9189e44474610daf83da31145fa56710b627b5c4c0b9c235e34058f6b31/pillow-12.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451", size = 6232243, upload-time = "2026-01-02T09:10:51.62Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/0df458009be6a4caca4ca2c52975e6275c387d4e5c95544e34138b41dc86/pillow-12.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e", size = 8037872, upload-time = "2026-01-02T09:10:53.446Z" }, + { url = "https://files.pythonhosted.org/packages/e4/86/95845d4eda4f4f9557e25381d70876aa213560243ac1a6d619c46caaedd9/pillow-12.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84", size = 6345398, upload-time = "2026-01-02T09:10:55.426Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1f/8e66ab9be3aaf1435bc03edd1ebdf58ffcd17f7349c1d970cafe87af27d9/pillow-12.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0", size = 7034667, upload-time = "2026-01-02T09:10:57.11Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f6/683b83cb9b1db1fb52b87951b1c0b99bdcfceaa75febf11406c19f82cb5e/pillow-12.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b", size = 6458743, upload-time = "2026-01-02T09:10:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/de833d63622538c1d58ce5395e7c6cb7e7dce80decdd8bde4a484e095d9f/pillow-12.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18", size = 7159342, upload-time = "2026-01-02T09:11:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/8c/40/50d86571c9e5868c42b81fe7da0c76ca26373f3b95a8dd675425f4a92ec1/pillow-12.1.0-cp311-cp311-win32.whl", hash = "sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64", size = 6328655, upload-time = "2026-01-02T09:11:04.556Z" }, + { url = "https://files.pythonhosted.org/packages/6c/af/b1d7e301c4cd26cd45d4af884d9ee9b6fab893b0ad2450d4746d74a6968c/pillow-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75", size = 7031469, upload-time = "2026-01-02T09:11:06.538Z" }, + { url = "https://files.pythonhosted.org/packages/48/36/d5716586d887fb2a810a4a61518a327a1e21c8b7134c89283af272efe84b/pillow-12.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304", size = 2452515, upload-time = "2026-01-02T09:11:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, + { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, + { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, + { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, + { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, + { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, + { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, + { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, + { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, + { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, + { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, + { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, + { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, + { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, + { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, + { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, + { url = "https://files.pythonhosted.org/packages/8b/bc/224b1d98cffd7164b14707c91aac83c07b047fbd8f58eba4066a3e53746a/pillow-12.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377", size = 5228605, upload-time = "2026-01-02T09:13:14.084Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ca/49ca7769c4550107de049ed85208240ba0f330b3f2e316f24534795702ce/pillow-12.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72", size = 4622245, upload-time = "2026-01-02T09:13:15.964Z" }, + { url = "https://files.pythonhosted.org/packages/73/48/fac807ce82e5955bcc2718642b94b1bd22a82a6d452aea31cbb678cddf12/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c", size = 5247593, upload-time = "2026-01-02T09:13:17.913Z" }, + { url = "https://files.pythonhosted.org/packages/d2/95/3e0742fe358c4664aed4fd05d5f5373dcdad0b27af52aa0972568541e3f4/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd", size = 6989008, upload-time = "2026-01-02T09:13:20.083Z" }, + { url = "https://files.pythonhosted.org/packages/5a/74/fe2ac378e4e202e56d50540d92e1ef4ff34ed687f3c60f6a121bcf99437e/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc", size = 5313824, upload-time = "2026-01-02T09:13:22.405Z" }, + { url = "https://files.pythonhosted.org/packages/f3/77/2a60dee1adee4e2655ac328dd05c02a955c1cd683b9f1b82ec3feb44727c/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a", size = 5963278, upload-time = "2026-01-02T09:13:24.706Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/64e9b1c7f04ae0027f788a248e6297d7fcc29571371fe7d45495a78172c0/pillow-12.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19", size = 7029809, upload-time = "2026-01-02T09:13:26.541Z" }, ] [[package]] @@ -4081,7 +4133,7 @@ wheels = [ [[package]] name = "pre-commit" -version = "4.5.0" +version = "4.5.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", @@ -4095,9 +4147,9 @@ dependencies = [ { name = "pyyaml", marker = "python_full_version >= '3.10'" }, { name = "virtualenv", marker = "python_full_version >= '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/9b/6a4ffb4ed980519da959e1cf3122fc6cb41211daa58dbae1c73c0e519a37/pre_commit-4.5.0.tar.gz", hash = "sha256:dc5a065e932b19fc1d4c653c6939068fe54325af8e741e74e88db4d28a4dd66b", size = 198428, upload-time = "2025-11-22T21:02:42.304Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/f1/6d86a29246dfd2e9b6237f0b5823717f60cad94d47ddc26afa916d21f525/pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61", size = 198232, upload-time = "2025-12-16T21:14:33.552Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl", hash = "sha256:25e2ce09595174d9c97860a95609f9f852c0614ba602de3561e267547f2335e1", size = 226429, upload-time = "2025-11-22T21:02:40.836Z" }, + { url = "https://files.pythonhosted.org/packages/5d/19/fd3ef348460c80af7bb4669ea7926651d1f95c23ff2df18b9d24bab4f3fa/pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77", size = 226437, upload-time = "2025-12-16T21:14:32.409Z" }, ] [[package]] @@ -4243,28 +4295,30 @@ wheels = [ [[package]] name = "psutil" -version = "7.1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74", size = 489059, upload-time = "2025-11-02T12:25:54.619Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc", size = 239751, upload-time = "2025-11-02T12:25:58.161Z" }, - { url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0", size = 240368, upload-time = "2025-11-02T12:26:00.491Z" }, - { url = "https://files.pythonhosted.org/packages/62/61/23fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4/psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7", size = 287134, upload-time = "2025-11-02T12:26:02.613Z" }, - { url = "https://files.pythonhosted.org/packages/30/1c/f921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6/psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251", size = 289904, upload-time = "2025-11-02T12:26:05.207Z" }, - { url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa", size = 249642, upload-time = "2025-11-02T12:26:07.447Z" }, - { url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl", hash = "sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee", size = 245518, upload-time = "2025-11-02T12:26:09.719Z" }, - { url = "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353", size = 239843, upload-time = "2025-11-02T12:26:11.968Z" }, - { url = "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b", size = 240369, upload-time = "2025-11-02T12:26:14.358Z" }, - { url = "https://files.pythonhosted.org/packages/41/bd/313aba97cb5bfb26916dc29cf0646cbe4dd6a89ca69e8c6edce654876d39/psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9", size = 288210, upload-time = "2025-11-02T12:26:16.699Z" }, - { url = "https://files.pythonhosted.org/packages/c2/fa/76e3c06e760927a0cfb5705eb38164254de34e9bd86db656d4dbaa228b04/psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f", size = 291182, upload-time = "2025-11-02T12:26:18.848Z" }, - { url = "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl", hash = "sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7", size = 250466, upload-time = "2025-11-02T12:26:21.183Z" }, - { url = "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl", hash = "sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264", size = 245756, upload-time = "2025-11-02T12:26:23.148Z" }, - { url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab", size = 238359, upload-time = "2025-11-02T12:26:25.284Z" }, - { url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880", size = 239171, upload-time = "2025-11-02T12:26:27.23Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b1/5f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f/psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3", size = 263261, upload-time = "2025-11-02T12:26:29.48Z" }, - { url = "https://files.pythonhosted.org/packages/e0/95/992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395/psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b", size = 264635, upload-time = "2025-11-02T12:26:31.74Z" }, - { url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd", size = 247633, upload-time = "2025-11-02T12:26:33.887Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl", hash = "sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1", size = 244608, upload-time = "2025-11-02T12:26:36.136Z" }, +version = "7.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/cb/09e5184fb5fc0358d110fc3ca7f6b1d033800734d34cac10f4136cfac10e/psutil-7.2.1.tar.gz", hash = "sha256:f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3", size = 490253, upload-time = "2025-12-29T08:26:00.169Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/8e/f0c242053a368c2aa89584ecd1b054a18683f13d6e5a318fc9ec36582c94/psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d", size = 129624, upload-time = "2025-12-29T08:26:04.255Z" }, + { url = "https://files.pythonhosted.org/packages/26/97/a58a4968f8990617decee234258a2b4fc7cd9e35668387646c1963e69f26/psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49", size = 130132, upload-time = "2025-12-29T08:26:06.228Z" }, + { url = "https://files.pythonhosted.org/packages/db/6d/ed44901e830739af5f72a85fa7ec5ff1edea7f81bfbf4875e409007149bd/psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc", size = 180612, upload-time = "2025-12-29T08:26:08.276Z" }, + { url = "https://files.pythonhosted.org/packages/c7/65/b628f8459bca4efbfae50d4bf3feaab803de9a160b9d5f3bd9295a33f0c2/psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf", size = 183201, upload-time = "2025-12-29T08:26:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/fb/23/851cadc9764edcc18f0effe7d0bf69f727d4cf2442deb4a9f78d4e4f30f2/psutil-7.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f", size = 139081, upload-time = "2025-12-29T08:26:12.483Z" }, + { url = "https://files.pythonhosted.org/packages/59/82/d63e8494ec5758029f31c6cb06d7d161175d8281e91d011a4a441c8a43b5/psutil-7.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672", size = 134767, upload-time = "2025-12-29T08:26:14.528Z" }, + { url = "https://files.pythonhosted.org/packages/05/c2/5fb764bd61e40e1fe756a44bd4c21827228394c17414ade348e28f83cd79/psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679", size = 129716, upload-time = "2025-12-29T08:26:16.017Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d2/935039c20e06f615d9ca6ca0ab756cf8408a19d298ffaa08666bc18dc805/psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f", size = 130133, upload-time = "2025-12-29T08:26:18.009Z" }, + { url = "https://files.pythonhosted.org/packages/77/69/19f1eb0e01d24c2b3eacbc2f78d3b5add8a89bf0bb69465bc8d563cc33de/psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129", size = 181518, upload-time = "2025-12-29T08:26:20.241Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6d/7e18b1b4fa13ad370787626c95887b027656ad4829c156bb6569d02f3262/psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a", size = 184348, upload-time = "2025-12-29T08:26:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/60/1672114392dd879586d60dd97896325df47d9a130ac7401318005aab28ec/psutil-7.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79", size = 140400, upload-time = "2025-12-29T08:26:23.993Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7b/d0e9d4513c46e46897b46bcfc410d51fc65735837ea57a25170f298326e6/psutil-7.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266", size = 135430, upload-time = "2025-12-29T08:26:25.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/cf/5180eb8c8bdf6a503c6919f1da28328bd1e6b3b1b5b9d5b01ae64f019616/psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42", size = 128137, upload-time = "2025-12-29T08:26:27.759Z" }, + { url = "https://files.pythonhosted.org/packages/c5/2c/78e4a789306a92ade5000da4f5de3255202c534acdadc3aac7b5458fadef/psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1", size = 128947, upload-time = "2025-12-29T08:26:29.548Z" }, + { url = "https://files.pythonhosted.org/packages/29/f8/40e01c350ad9a2b3cb4e6adbcc8a83b17ee50dd5792102b6142385937db5/psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8", size = 154694, upload-time = "2025-12-29T08:26:32.147Z" }, + { url = "https://files.pythonhosted.org/packages/06/e4/b751cdf839c011a9714a783f120e6a86b7494eb70044d7d81a25a5cd295f/psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6", size = 156136, upload-time = "2025-12-29T08:26:34.079Z" }, + { url = "https://files.pythonhosted.org/packages/44/ad/bbf6595a8134ee1e94a4487af3f132cef7fce43aef4a93b49912a48c3af7/psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8", size = 148108, upload-time = "2025-12-29T08:26:36.225Z" }, + { url = "https://files.pythonhosted.org/packages/1c/15/dd6fd869753ce82ff64dcbc18356093471a5a5adf4f77ed1f805d473d859/psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67", size = 147402, upload-time = "2025-12-29T08:26:39.21Z" }, + { url = "https://files.pythonhosted.org/packages/34/68/d9317542e3f2b180c4306e3f45d3c922d7e86d8ce39f941bb9e2e9d8599e/psutil-7.2.1-cp37-abi3-win_amd64.whl", hash = "sha256:b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17", size = 136938, upload-time = "2025-12-29T08:26:41.036Z" }, + { url = "https://files.pythonhosted.org/packages/3e/73/2ce007f4198c80fcf2cb24c169884f833fe93fbc03d55d302627b094ee91/psutil-7.2.1-cp37-abi3-win_arm64.whl", hash = "sha256:0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442", size = 133836, upload-time = "2025-12-29T08:26:43.086Z" }, ] [[package]] @@ -4420,7 +4474,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.12.5" +version = "2.12.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -4428,9 +4482,9 @@ dependencies = [ { 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" } +sdist = { url = "https://files.pythonhosted.org/packages/96/ad/a17bc283d7d81837c061c49e3eaa27a45991759a1b7eae1031921c6bd924/pydantic-2.12.4.tar.gz", hash = "sha256:0f8cb9555000a4b5b617f66bfd2566264c4984b27589d3b845685983e8ea85ac", size = 821038, upload-time = "2025-11-05T10:50:08.59Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/82/2f/e68750da9b04856e2a7ec56fc6f034a5a79775e9b9a81882252789873798/pydantic-2.12.4-py3-none-any.whl", hash = "sha256:92d3d202a745d46f9be6df459ac5a064fdaa3c1c4cd8adcfa332ccf3c05f871e", size = 463400, upload-time = "2025-11-05T10:50:06.732Z" }, ] [[package]] @@ -4587,25 +4641,25 @@ wheels = [ [[package]] name = "pymdown-extensions" -version = "10.19" +version = "10.20" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown", version = "3.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "markdown", version = "3.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1f/4e/e73e88f4f2d0b26cbd2e100074107470984f0a6055869805fc181b847ac7/pymdown_extensions-10.19.tar.gz", hash = "sha256:01bb917ea231f9ce14456fa9092cdb95ac3e5bd32202a3ee61dbd5ad2dd9ef9b", size = 847701, upload-time = "2025-12-11T18:20:46.093Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/35/e3814a5b7df295df69d035cfb8aab78b2967cdf11fcfae7faed726b66664/pymdown_extensions-10.20.tar.gz", hash = "sha256:5c73566ab0cf38c6ba084cb7c5ea64a119ae0500cce754ccb682761dfea13a52", size = 852774, upload-time = "2025-12-31T19:59:42.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/56/fa9edaceb3805e03ac9faf68ca1ddc660a75b49aee5accb493511005fef5/pymdown_extensions-10.19-py3-none-any.whl", hash = "sha256:dc5f249fc3a1b6d8a6de4634ba8336b88d0942cee75e92b18ac79eaf3503bf7c", size = 266670, upload-time = "2025-12-11T18:20:44.736Z" }, + { url = "https://files.pythonhosted.org/packages/ea/10/47caf89cbb52e5bb764696fd52a8c591a2f0e851a93270c05a17f36000b5/pymdown_extensions-10.20-py3-none-any.whl", hash = "sha256:ea9e62add865da80a271d00bfa1c0fa085b20d133fb3fc97afdc88e682f60b2f", size = 268733, upload-time = "2025-12-31T19:59:40.652Z" }, ] [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/c1/1d9de9aeaa1b89b0186e5fe23294ff6517fce1bc69149185577cd31016b2/pyparsing-3.3.1.tar.gz", hash = "sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c", size = 1550512, upload-time = "2025-12-23T03:14:04.391Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, + { url = "https://files.pythonhosted.org/packages/8b/40/2614036cdd416452f5bf98ec037f38a1afb17f327cb8e6b652d4729e0af8/pyparsing-3.3.1-py3-none-any.whl", hash = "sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82", size = 121793, upload-time = "2025-12-23T03:14:02.103Z" }, ] [[package]] @@ -4873,17 +4927,38 @@ wheels = [ name = "referencing" version = "0.36.2" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] dependencies = [ - { name = "attrs" }, + { name = "attrs", marker = "python_full_version < '3.10'" }, { name = "rpds-py", version = "0.27.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, ] +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "attrs", marker = "python_full_version >= '3.10'" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.10' and python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + [[package]] name = "regex" version = "2025.11.3" @@ -5008,18 +5083,18 @@ wheels = [ [[package]] name = "requests" -version = "2.32.5" +version = "2.32.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "charset-normalizer" }, { name = "idna" }, { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "urllib3", version = "2.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -5030,7 +5105,7 @@ dependencies = [ { name = "pyyaml" }, { name = "requests" }, { name = "urllib3", version = "1.26.20", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "urllib3", version = "2.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0e/95/89c054ad70bfef6da605338b009b2e283485835351a9935c7bfbfaca7ffc/responses-0.25.8.tar.gz", hash = "sha256:9374d047a575c8f781b94454db5cab590b6029505f488d12899ddb10a4af1cf4", size = 79320, upload-time = "2025-08-08T19:01:46.709Z" } wheels = [ @@ -5343,28 +5418,28 @@ wheels = [ [[package]] name = "ruff" -version = "0.14.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/1b/ab712a9d5044435be8e9a2beb17cbfa4c241aa9b5e4413febac2a8b79ef2/ruff-0.14.9.tar.gz", hash = "sha256:35f85b25dd586381c0cc053f48826109384c81c00ad7ef1bd977bfcc28119d5b", size = 5809165, upload-time = "2025-12-11T21:39:47.381Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/1c/d1b1bba22cffec02351c78ab9ed4f7d7391876e12720298448b29b7229c1/ruff-0.14.9-py3-none-linux_armv6l.whl", hash = "sha256:f1ec5de1ce150ca6e43691f4a9ef5c04574ad9ca35c8b3b0e18877314aba7e75", size = 13576541, upload-time = "2025-12-11T21:39:14.806Z" }, - { url = "https://files.pythonhosted.org/packages/94/ab/ffe580e6ea1fca67f6337b0af59fc7e683344a43642d2d55d251ff83ceae/ruff-0.14.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ed9d7417a299fc6030b4f26333bf1117ed82a61ea91238558c0268c14e00d0c2", size = 13779363, upload-time = "2025-12-11T21:39:20.29Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f8/2be49047f929d6965401855461e697ab185e1a6a683d914c5c19c7962d9e/ruff-0.14.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d5dc3473c3f0e4a1008d0ef1d75cee24a48e254c8bed3a7afdd2b4392657ed2c", size = 12925292, upload-time = "2025-12-11T21:39:38.757Z" }, - { url = "https://files.pythonhosted.org/packages/9e/e9/08840ff5127916bb989c86f18924fd568938b06f58b60e206176f327c0fe/ruff-0.14.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84bf7c698fc8f3cb8278830fb6b5a47f9bcc1ed8cb4f689b9dd02698fa840697", size = 13362894, upload-time = "2025-12-11T21:39:02.524Z" }, - { url = "https://files.pythonhosted.org/packages/31/1c/5b4e8e7750613ef43390bb58658eaf1d862c0cc3352d139cd718a2cea164/ruff-0.14.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa733093d1f9d88a5d98988d8834ef5d6f9828d03743bf5e338bf980a19fce27", size = 13311482, upload-time = "2025-12-11T21:39:17.51Z" }, - { url = "https://files.pythonhosted.org/packages/5b/3a/459dce7a8cb35ba1ea3e9c88f19077667a7977234f3b5ab197fad240b404/ruff-0.14.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a1cfb04eda979b20c8c19550c8b5f498df64ff8da151283311ce3199e8b3648", size = 14016100, upload-time = "2025-12-11T21:39:41.948Z" }, - { url = "https://files.pythonhosted.org/packages/a6/31/f064f4ec32524f9956a0890fc6a944e5cf06c63c554e39957d208c0ffc45/ruff-0.14.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1e5cb521e5ccf0008bd74d5595a4580313844a42b9103b7388eca5a12c970743", size = 15477729, upload-time = "2025-12-11T21:39:23.279Z" }, - { url = "https://files.pythonhosted.org/packages/7a/6d/f364252aad36ccd443494bc5f02e41bf677f964b58902a17c0b16c53d890/ruff-0.14.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd429a8926be6bba4befa8cdcf3f4dd2591c413ea5066b1e99155ed245ae42bb", size = 15122386, upload-time = "2025-12-11T21:39:33.125Z" }, - { url = "https://files.pythonhosted.org/packages/20/02/e848787912d16209aba2799a4d5a1775660b6a3d0ab3944a4ccc13e64a02/ruff-0.14.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab208c1b7a492e37caeaf290b1378148f75e13c2225af5d44628b95fd7834273", size = 14497124, upload-time = "2025-12-11T21:38:59.33Z" }, - { url = "https://files.pythonhosted.org/packages/f3/51/0489a6a5595b7760b5dbac0dd82852b510326e7d88d51dbffcd2e07e3ff3/ruff-0.14.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72034534e5b11e8a593f517b2f2f2b273eb68a30978c6a2d40473ad0aaa4cb4a", size = 14195343, upload-time = "2025-12-11T21:39:44.866Z" }, - { url = "https://files.pythonhosted.org/packages/f6/53/3bb8d2fa73e4c2f80acc65213ee0830fa0c49c6479313f7a68a00f39e208/ruff-0.14.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:712ff04f44663f1b90a1195f51525836e3413c8a773574a7b7775554269c30ed", size = 14346425, upload-time = "2025-12-11T21:39:05.927Z" }, - { url = "https://files.pythonhosted.org/packages/ad/04/bdb1d0ab876372da3e983896481760867fc84f969c5c09d428e8f01b557f/ruff-0.14.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a111fee1db6f1d5d5810245295527cda1d367c5aa8f42e0fca9a78ede9b4498b", size = 13258768, upload-time = "2025-12-11T21:39:08.691Z" }, - { url = "https://files.pythonhosted.org/packages/40/d9/8bf8e1e41a311afd2abc8ad12be1b6c6c8b925506d9069b67bb5e9a04af3/ruff-0.14.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8769efc71558fecc25eb295ddec7d1030d41a51e9dcf127cbd63ec517f22d567", size = 13326939, upload-time = "2025-12-11T21:39:53.842Z" }, - { url = "https://files.pythonhosted.org/packages/f4/56/a213fa9edb6dd849f1cfbc236206ead10913693c72a67fb7ddc1833bf95d/ruff-0.14.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:347e3bf16197e8a2de17940cd75fd6491e25c0aa7edf7d61aa03f146a1aa885a", size = 13578888, upload-time = "2025-12-11T21:39:35.988Z" }, - { url = "https://files.pythonhosted.org/packages/33/09/6a4a67ffa4abae6bf44c972a4521337ffce9cbc7808faadede754ef7a79c/ruff-0.14.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7715d14e5bccf5b660f54516558aa94781d3eb0838f8e706fb60e3ff6eff03a8", size = 14314473, upload-time = "2025-12-11T21:39:50.78Z" }, - { url = "https://files.pythonhosted.org/packages/12/0d/15cc82da5d83f27a3c6b04f3a232d61bc8c50d38a6cd8da79228e5f8b8d6/ruff-0.14.9-py3-none-win32.whl", hash = "sha256:df0937f30aaabe83da172adaf8937003ff28172f59ca9f17883b4213783df197", size = 13202651, upload-time = "2025-12-11T21:39:26.628Z" }, - { url = "https://files.pythonhosted.org/packages/32/f7/c78b060388eefe0304d9d42e68fab8cffd049128ec466456cef9b8d4f06f/ruff-0.14.9-py3-none-win_amd64.whl", hash = "sha256:c0b53a10e61df15a42ed711ec0bda0c582039cf6c754c49c020084c55b5b0bc2", size = 14702079, upload-time = "2025-12-11T21:39:11.954Z" }, - { url = "https://files.pythonhosted.org/packages/26/09/7a9520315decd2334afa65ed258fed438f070e31f05a2e43dd480a5e5911/ruff-0.14.9-py3-none-win_arm64.whl", hash = "sha256:8e821c366517a074046d92f0e9213ed1c13dbc5b37a7fc20b07f79b64d62cc84", size = 13744730, upload-time = "2025-12-11T21:39:29.659Z" }, +version = "0.14.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" }, + { url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" }, + { url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" }, + { url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" }, + { url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" }, + { url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" }, + { url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" }, + { url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" }, + { url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" }, + { url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" }, + { url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" }, + { url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" }, + { url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" }, + { url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" }, ] [[package]] @@ -5521,7 +5596,7 @@ resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0a/ca/d8ace4f98322d01abcd52d381134344bf7b431eba7ed8b42bdea5a3c2ac9/scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb", size = 30597883, upload-time = "2025-10-28T17:38:54.068Z" } wheels = [ @@ -5596,7 +5671,7 @@ dependencies = [ { name = "matplotlib", version = "3.10.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pandas" }, ] sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload-time = "2024-01-25T13:21:52.551Z" } @@ -5633,11 +5708,11 @@ wheels = [ [[package]] name = "soupsieve" -version = "2.8" +version = "2.8.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" } +sdist = { url = "https://files.pythonhosted.org/packages/89/23/adf3796d740536d63a6fbda113d07e60c734b6ed5d3058d1e47fc0495e47/soupsieve-2.8.1.tar.gz", hash = "sha256:4cf733bc50fa805f5df4b8ef4740fc0e0fa6218cf3006269afd3f9d6d80fd350", size = 117856, upload-time = "2025-12-18T13:50:34.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" }, + { url = "https://files.pythonhosted.org/packages/48/f3/b67d6ea49ca9154453b6d70b34ea22f3996b9fa55da105a79d8732227adc/soupsieve-2.8.1-py3-none-any.whl", hash = "sha256:a11fe2a6f3d76ab3cf2de04eb339c1be5b506a8a47f2ceb6d139803177f85434", size = 36710, upload-time = "2025-12-18T13:50:33.267Z" }, ] [[package]] @@ -5701,16 +5776,16 @@ wheels = [ [[package]] name = "termcolor" -version = "3.2.0" +version = "3.3.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", "python_full_version == '3.10.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/87/56/ab275c2b56a5e2342568838f0d5e3e66a32354adcc159b495e374cda43f5/termcolor-3.2.0.tar.gz", hash = "sha256:610e6456feec42c4bcd28934a8c87a06c3fa28b01561d46aa09a9881b8622c58", size = 14423, upload-time = "2025-10-25T19:11:42.586Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/79/cf31d7a93a8fdc6aa0fbb665be84426a8c5a557d9240b6239e9e11e35fc5/termcolor-3.3.0.tar.gz", hash = "sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5", size = 14434, upload-time = "2025-12-29T12:55:21.882Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/d5/141f53d7c1eb2a80e6d3e9a390228c3222c27705cbe7f048d3623053f3ca/termcolor-3.2.0-py3-none-any.whl", hash = "sha256:a10343879eba4da819353c55cb8049b0933890c2ebf9ad5d3ecd2bb32ea96ea6", size = 7698, upload-time = "2025-10-25T19:11:41.536Z" }, + { url = "https://files.pythonhosted.org/packages/33/d1/8bb87d21e9aeb323cc03034f5eaf2c8f69841e40e4853c2627edf8111ed3/termcolor-3.3.0-py3-none-any.whl", hash = "sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5", size = 7734, upload-time = "2025-12-29T12:55:20.718Z" }, ] [[package]] @@ -5776,21 +5851,21 @@ wheels = [ [[package]] name = "tornado" -version = "6.5.3" +version = "6.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/2e/3d22d478f27cb4b41edd4db7f10cd7846d0a28ea443342de3dba97035166/tornado-6.5.3.tar.gz", hash = "sha256:16abdeb0211796ffc73765bc0a20119712d68afeeaf93d1a3f2edf6b3aee8d5a", size = 513348, upload-time = "2025-12-11T04:16:42.225Z" } +sdist = { url = "https://files.pythonhosted.org/packages/37/1d/0a336abf618272d53f62ebe274f712e213f5a03c0b2339575430b8362ef2/tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7", size = 513632, upload-time = "2025-12-15T19:21:03.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/e9/bf22f66e1d5d112c0617974b5ce86666683b32c09b355dfcd59f8d5c8ef6/tornado-6.5.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2dd7d7e8d3e4635447a8afd4987951e3d4e8d1fb9ad1908c54c4002aabab0520", size = 443860, upload-time = "2025-12-11T04:16:26.638Z" }, - { url = "https://files.pythonhosted.org/packages/ca/9c/594b631f0b8dc5977080c7093d1e96f1377c10552577d2c31bb0208c9362/tornado-6.5.3-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5977a396f83496657779f59a48c38096ef01edfe4f42f1c0634b791dde8165d0", size = 442118, upload-time = "2025-12-11T04:16:28.32Z" }, - { url = "https://files.pythonhosted.org/packages/78/f6/685b869f5b5b9d9547571be838c6106172082751696355b60fc32a4988ed/tornado-6.5.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f72ac800be2ac73ddc1504f7aa21069a4137e8d70c387172c063d363d04f2208", size = 445700, upload-time = "2025-12-11T04:16:29.64Z" }, - { url = "https://files.pythonhosted.org/packages/91/4c/f0d19edf24912b7f21ae5e941f7798d132ad4d9b71441c1e70917a297265/tornado-6.5.3-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c43c4fc4f5419c6561cfb8b884a8f6db7b142787d47821e1a0e1296253458265", size = 445041, upload-time = "2025-12-11T04:16:30.799Z" }, - { url = "https://files.pythonhosted.org/packages/eb/2b/e02da94f4a4aef2bb3b923c838ef284a77548a5f06bac2a8682b36b4eead/tornado-6.5.3-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de8b3fed4b3afb65d542d7702ac8767b567e240f6a43020be8eaef59328f117b", size = 445270, upload-time = "2025-12-11T04:16:32.316Z" }, - { url = "https://files.pythonhosted.org/packages/58/e2/7a7535d23133443552719dba526dacbb7415f980157da9f14950ddb88ad6/tornado-6.5.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dbc4b4c32245b952566e17a20d5c1648fbed0e16aec3fc7e19f3974b36e0e47c", size = 445957, upload-time = "2025-12-11T04:16:33.913Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1f/9ff92eca81ff17a86286ec440dcd5eab0400326eb81761aa9a4eecb1ffb9/tornado-6.5.3-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:db238e8a174b4bfd0d0238b8cfcff1c14aebb4e2fcdafbf0ea5da3b81caceb4c", size = 445371, upload-time = "2025-12-11T04:16:35.093Z" }, - { url = "https://files.pythonhosted.org/packages/70/b1/1d03ae4526a393b0b839472a844397337f03c7f3a1e6b5c82241f0e18281/tornado-6.5.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:892595c100cd9b53a768cbfc109dfc55dec884afe2de5290611a566078d9692d", size = 445348, upload-time = "2025-12-11T04:16:36.679Z" }, - { url = "https://files.pythonhosted.org/packages/4b/7d/7c181feadc8941f418d0d26c3790ee34ffa4bd0a294bc5201d44ebd19c1e/tornado-6.5.3-cp39-abi3-win32.whl", hash = "sha256:88141456525fe291e47bbe1ba3ffb7982549329f09b4299a56813923af2bd197", size = 446433, upload-time = "2025-12-11T04:16:38.332Z" }, - { url = "https://files.pythonhosted.org/packages/34/98/4f7f938606e21d0baea8c6c39a7c8e95bdf8e50b0595b1bb6f0de2af7a6e/tornado-6.5.3-cp39-abi3-win_amd64.whl", hash = "sha256:ba4b513d221cc7f795a532c1e296f36bcf6a60e54b15efd3f092889458c69af1", size = 446842, upload-time = "2025-12-11T04:16:39.867Z" }, - { url = "https://files.pythonhosted.org/packages/7a/27/0e3fca4c4edf33fb6ee079e784c63961cd816971a45e5e4cacebe794158d/tornado-6.5.3-cp39-abi3-win_arm64.whl", hash = "sha256:278c54d262911365075dd45e0b6314308c74badd6ff9a54490e7daccdd5ed0ea", size = 445863, upload-time = "2025-12-11T04:16:41.099Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a9/e94a9d5224107d7ce3cc1fab8d5dc97f5ea351ccc6322ee4fb661da94e35/tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9", size = 443909, upload-time = "2025-12-15T19:20:48.382Z" }, + { url = "https://files.pythonhosted.org/packages/db/7e/f7b8d8c4453f305a51f80dbb49014257bb7d28ccb4bbb8dd328ea995ecad/tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843", size = 442163, upload-time = "2025-12-15T19:20:49.791Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b5/206f82d51e1bfa940ba366a8d2f83904b15942c45a78dd978b599870ab44/tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17", size = 445746, upload-time = "2025-12-15T19:20:51.491Z" }, + { url = "https://files.pythonhosted.org/packages/8e/9d/1a3338e0bd30ada6ad4356c13a0a6c35fbc859063fa7eddb309183364ac1/tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335", size = 445083, upload-time = "2025-12-15T19:20:52.778Z" }, + { url = "https://files.pythonhosted.org/packages/50/d4/e51d52047e7eb9a582da59f32125d17c0482d065afd5d3bc435ff2120dc5/tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f", size = 445315, upload-time = "2025-12-15T19:20:53.996Z" }, + { url = "https://files.pythonhosted.org/packages/27/07/2273972f69ca63dbc139694a3fc4684edec3ea3f9efabf77ed32483b875c/tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84", size = 446003, upload-time = "2025-12-15T19:20:56.101Z" }, + { url = "https://files.pythonhosted.org/packages/d1/83/41c52e47502bf7260044413b6770d1a48dda2f0246f95ee1384a3cd9c44a/tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f", size = 445412, upload-time = "2025-12-15T19:20:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/10/c7/bc96917f06cbee182d44735d4ecde9c432e25b84f4c2086143013e7b9e52/tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8", size = 445392, upload-time = "2025-12-15T19:20:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1a/d7592328d037d36f2d2462f4bc1fbb383eec9278bc786c1b111cbbd44cfa/tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1", size = 446481, upload-time = "2025-12-15T19:21:00.008Z" }, + { url = "https://files.pythonhosted.org/packages/d6/6d/c69be695a0a64fd37a97db12355a035a6d90f79067a3cf936ec2b1dc38cd/tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc", size = 446886, upload-time = "2025-12-15T19:21:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/8dc3fd90902f70084bd2cd059d576ddb4f8bb44c2c7c0e33a11422acb17e/tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1", size = 445910, upload-time = "2025-12-15T19:21:02.571Z" }, ] [[package]] @@ -5825,11 +5900,11 @@ wheels = [ [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] [[package]] @@ -5846,33 +5921,33 @@ wheels = [ [[package]] name = "urllib3" -version = "2.6.2" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", "python_full_version == '3.10.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] name = "virtualenv" -version = "20.35.4" +version = "20.36.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock", version = "3.19.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "filelock", version = "3.20.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "filelock", version = "3.20.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "platformdirs", version = "4.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/28/e6f1a6f655d620846bd9df527390ecc26b3805a0c5989048c210e22c5ca9/virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", size = 6028799, upload-time = "2025-10-29T06:57:40.511Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/49/87e23d8f742f10f965bce5d6b285fc88a4f436b11daf6b6225d4d66f8492/virtualenv-20.36.0.tar.gz", hash = "sha256:a3601f540b515a7983508113f14e78993841adc3d83710fa70f0ac50f43b23ed", size = 6032237, upload-time = "2026-01-07T17:20:04.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b", size = 6005095, upload-time = "2025-10-29T06:57:37.598Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6a/0af36875e0023a1f2d0b66b4051721fc26740e947696922df1665b75e5d3/virtualenv-20.36.0-py3-none-any.whl", hash = "sha256:e7ded577f3af534fd0886d4ca03277f5542053bedb98a70a989d3c22cfa5c9ac", size = 6008261, upload-time = "2026-01-07T17:20:02.87Z" }, ] [[package]]