From a60e88a5a35e67e9eeb31eda20a94b0c55aa2607 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Tue, 13 Jan 2026 02:17:33 -0800 Subject: [PATCH 01/18] initial work on iter method, need to split deinit from stop - iterators are ending and that shouldn't break running lol. --- src/noob/network/message.py | 12 +++- src/noob/runner/zmq.py | 104 ++++++++++++++++++++++++++--- tests/test_pipelines/test_basic.py | 9 +-- 3 files changed, 111 insertions(+), 14 deletions(-) diff --git a/src/noob/network/message.py b/src/noob/network/message.py index 420047ee..535fab42 100644 --- a/src/noob/network/message.py +++ b/src/noob/network/message.py @@ -33,6 +33,7 @@ class MessageType(StrEnum): announce = "announce" identify = "identify" process = "process" + init = "init" start = "start" status = "status" stop = "stop" @@ -119,13 +120,19 @@ class ProcessMsg(Message): """Any process-scoped input passed to the `process` call""" +class InitMsg(Message): + """Initialize nodes within node runners""" + + type_: Literal[MessageType.init] = Field(MessageType.init, alias="type") + value: None = None + + class StartMsg(Message): - """Start free running nodes""" + """Start free-running nodes""" type_: Literal[MessageType.start] = Field(MessageType.start, alias="type") value: None = None - class StatusMsg(Message): """Node updating its current status""" @@ -196,6 +203,7 @@ def _type_discriminator(v: dict | Message) -> str: A[AnnounceMsg, Tag("announce")] | A[IdentifyMsg, Tag("identify")] | A[ProcessMsg, Tag("process")] + | A[InitMsg, Tag("init")] | A[StartMsg, Tag("start")] | A[StatusMsg, Tag("status")] | A[StopMsg, Tag("stop")] diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index b54d2564..00aa30c2 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -64,6 +64,7 @@ MessageType, NodeStatus, ProcessMsg, + StartMsg, StatusMsg, StopMsg, ) @@ -131,7 +132,7 @@ def router_address(self) -> str: else: raise NotImplementedError() - def start(self) -> None: + def init(self) -> None: self.logger.debug("Starting command runner") self.start_loop() self._init_sockets() @@ -181,6 +182,13 @@ def announce(self) -> None: ) self._outbox.send_multipart([b"announce", msg.to_bytes()]) + def start(self) -> None: + """ + Start running in free-run mode + """ + self._outbox.send_multipart([b"start", StartMsg(node_id="command").to_bytes()]) + self.logger.debug("Sent start message") + def process(self, epoch: int, input: dict | None = None) -> None: """Emit a ProcessMsg to process a single round through the graph""" # no empty dicts @@ -560,6 +568,9 @@ def on_inbox(self, msg: list[bytes]) -> None: elif message.type_ == MessageType.process: message = cast(ProcessMsg, message) self.on_process(message) + elif message.type_ == MessageType.start: + message = cast(StartMsg, message) + self.on_start(message) elif message.type_ == MessageType.stop: message = cast(StopMsg, message) self.on_stop(message) @@ -604,6 +615,13 @@ def on_event(self, msg: EventMsg) -> None: self.scheduler.update(events) + def on_start(self, msg: StartMsg) -> None: + """ + Start running in free mode + """ + self._freerun.set() + self._process_one.set() + def on_process(self, msg: ProcessMsg) -> None: """ Process a single graph iteration @@ -674,17 +692,24 @@ class ZMQRunner(TubeRunner): """time in seconds to wait after calling deinit to wait before killing runner processes""" store: EventStore = field(default_factory=EventStore) + _initialized: EventType = field(default_factory=mp.Event) _running: EventType = field(default_factory=mp.Event) - _return_node: Return | None = None _init_lock: threading.Lock = field(default_factory=threading.Lock) + _running_lock: threading.Lock = field(default_factory=threading.Lock) + _return_node: Return | None = None _to_throw: ErrorValue | None = None _current_epoch: int | None = None @property def running(self) -> bool: - with self._init_lock: + with self._running_lock: return self._running.is_set() + @property + def initialized(self) -> bool: + with self._init_lock: + return self._initialized.is_set() + def init(self) -> None: if self.running: return @@ -693,7 +718,7 @@ def init(self) -> None: self.command = CommandNode(runner_id=self.runner_id) self.command.add_callback("inbox", self.on_event) self.command.add_callback("router", self.on_router) - self.command.start() + self.command.init() self._logger.debug("Command node initialized") for node_id, node in self.tube.nodes.items(): @@ -718,10 +743,10 @@ def init(self) -> None: [k for k, v in self.tube.nodes.items() if not isinstance(v, Return)] ) self._logger.debug("Nodes ready") - self._running.set() + self._initialized.set() def deinit(self) -> None: - if not self.running: + if not self.initialized: return with self._init_lock: @@ -746,12 +771,16 @@ def deinit(self) -> None: proc.close() self.command.clear_callbacks() self.tube.scheduler.clear() - self._running.clear() + self._initialized.clear() def process(self, **kwargs: Any) -> ReturnNodeType: - if not self.running: + if not self.initialized: self._logger.info("Runner called process without calling `init`, initializing now.") self.init() + if self.running: + raise RuntimeError( + "Runner is already running in free run mode! use iter to gather results" + ) input = self.tube.input_collection.validate_input(InputScope.process, kwargs) self._current_epoch = self.tube.scheduler.add_epoch() @@ -768,6 +797,65 @@ def process(self, **kwargs: Any) -> ReturnNodeType: self._logger.debug("collecting return") return self.collect_return(self._current_epoch) + def iter(self, n: int | None = None) -> Generator[ReturnNodeType, None, None]: + """ + Iterate over results as they are available. + + Tube runs in free-run mode for n iterations, + This method is usually only useful for tubes with :class:`.Return` nodes. + This method yields only when return is available: + the tube will run more than n ``process`` calls if there are e.g. gather nodes + that cause the return value to be empty. + + To call the tube a specific number of times and do something with the events + other than returning a value, use callbacks and :meth:`.run` ! + + Note that backpressure control is not yet implemented!!! + If the outer iter method is slow, or there is a bottleneck in your tube, + you might incur some serious memory usage! + Backpressure and observability is a WIP! + + If you need a version of this method that *always* makes a fixed number of process calls, + raise an issue! + """ + if not self.initialized: + raise RuntimeError( + "ZMQRunner must be explicitly initialized and deinitialized, " + "use the runner as a contextmanager or call `init()` and `deinit()`" + ) + # TODO: after #125 is merged, raise error if tube required process scoped inputs + if self.running: + raise RuntimeError("Already Running!") + + epoch = self._current_epoch + # start running without a limit - we'll check as we go. + self.command.start() + self._running.set() + current_iter = 0 + try: + while n is None or current_iter < n: + ret = None + loop = 0 + while ret is None: + self._logger.debug("Awaiting epoch %s", epoch) + self.tube.scheduler.await_epoch(epoch) + epoch += 1 + ret = self.collect_return(epoch) + if ret: + self._logger.debug("Returning value from epoch %s", epoch) + else: + self._logger.debug("No return value for %s", epoch) + if loop > self.max_iter_loops: + raise RuntimeError("Reached maximum process calls per iteration") + + yield ret + current_iter += 1 + + finally: + # FIXME: Separate stopping and deinit so we can pause running more cheaply. + self._running.clear() + self.deinit() + def on_event(self, msg: Message) -> None: self._logger.debug("EVENT received: %s", msg) if msg.type_ != MessageType.event: diff --git a/tests/test_pipelines/test_basic.py b/tests/test_pipelines/test_basic.py index 4a8219ba..d74cbb77 100644 --- a/tests/test_pipelines/test_basic.py +++ b/tests/test_pipelines/test_basic.py @@ -102,7 +102,8 @@ def test_multi_signal(loaded_tube: Tube, sync_runner_cls): tube = Tube.from_specification("testing-multi-signal") runner = sync_runner_cls(tube) - for value in runner.iter(n=5): - assert isinstance(value, dict) - assert isinstance(value["word"], str) - assert value["count_sum"] == sum(value["counts"]) + with runner: + for value in runner.iter(n=5): + assert isinstance(value, dict) + assert isinstance(value["word"], str) + assert value["count_sum"] == sum(value["counts"]) From 8b5c653bdc222cd72698275543d59da2eb26235b Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 15 Jan 2026 23:46:58 -0800 Subject: [PATCH 02/18] run and iter methods --- src/noob/network/message.py | 12 +- src/noob/runner/base.py | 15 ++- src/noob/runner/zmq.py | 197 +++++++++++++++++++++++------ src/noob/scheduler.py | 6 +- src/noob/store.py | 8 ++ src/noob/testing/nodes.py | 2 +- tests/test_pipelines/test_basic.py | 2 +- tests/test_runners/test_zmq.py | 94 ++++++++++++++ tests/test_scheduler.py | 4 +- tests/test_store.py | 10 ++ 10 files changed, 304 insertions(+), 46 deletions(-) diff --git a/src/noob/network/message.py b/src/noob/network/message.py index 535fab42..c603b594 100644 --- a/src/noob/network/message.py +++ b/src/noob/network/message.py @@ -34,6 +34,7 @@ class MessageType(StrEnum): identify = "identify" process = "process" init = "init" + deinit = "deinit" start = "start" status = "status" stop = "stop" @@ -127,11 +128,19 @@ class InitMsg(Message): value: None = None +class DeinitMsg(Message): + """Deinitializes nodes within node runners""" + + type_: Literal[MessageType.deinit] = Field(MessageType.deinit, alias="type") + value: None = None + + class StartMsg(Message): """Start free-running nodes""" type_: Literal[MessageType.start] = Field(MessageType.start, alias="type") - value: None = None + value: int | None = None + class StatusMsg(Message): """Node updating its current status""" @@ -204,6 +213,7 @@ def _type_discriminator(v: dict | Message) -> str: | A[IdentifyMsg, Tag("identify")] | A[ProcessMsg, Tag("process")] | A[InitMsg, Tag("init")] + | A[DeinitMsg, Tag("deinit")] | A[StartMsg, Tag("start")] | A[StatusMsg, Tag("status")] | A[StopMsg, Tag("stop")] diff --git a/src/noob/runner/base.py b/src/noob/runner/base.py index a84bdcf0..49b5bb37 100644 --- a/src/noob/runner/base.py +++ b/src/noob/runner/base.py @@ -13,7 +13,7 @@ from datetime import UTC, datetime from functools import partial from logging import Logger -from typing import TYPE_CHECKING, Any, ParamSpec, Self, TypeVar +from typing import TYPE_CHECKING, Any, ParamSpec, Self, TypeVar, overload from noob import Tube, init_logger from noob.asset import AssetScope @@ -180,7 +180,20 @@ def iter(self, n: int | None = None) -> Generator[ReturnNodeType, None, None]: finally: self.deinit() + @overload + def run(self, n: int) -> list[ReturnNodeType]: ... + + @overload + def run(self, n: None) -> None: ... + def run(self, n: int | None = None) -> None | list[ReturnNodeType]: + """ + Run the tube infinitely or for a fixed number of iterations in a row. + + Returns results if ``n`` is not ``None`` - + If ``n`` is ``None`` , we assume we are going to be running for a very long time, + and don't want to have an infinitely-growing collection in memory. + """ try: _ = self.tube.input_collection.validate_input(InputScope.process, {}) except InputMissingError as e: diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index 00aa30c2..13226fe2 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -22,6 +22,7 @@ """ +import math import multiprocessing as mp import os import signal @@ -34,7 +35,7 @@ from multiprocessing.synchronize import Event as EventType from time import time from types import FrameType -from typing import TYPE_CHECKING, Any, Literal, cast +from typing import TYPE_CHECKING, Any, Literal, cast, overload from noob.network.loop import EventloopMixin @@ -49,12 +50,14 @@ from zmq.eventloop.zmqstream import ZMQStream from noob.config import config -from noob.event import Event +from noob.event import Event, MetaSignal +from noob.exceptions import InputMissingError from noob.input import InputCollection, InputScope from noob.logging import init_logger from noob.network.message import ( AnnounceMsg, AnnounceValue, + DeinitMsg, ErrorMsg, ErrorValue, EventMsg, @@ -138,11 +141,18 @@ def init(self) -> None: self._init_sockets() self.logger.debug("Command runner started") + def deinit(self) -> None: + """Close the eventloop, stop processing messages, reset state""" + self.logger.debug("Deinitializing") + msg = DeinitMsg(node_id="command") + self._outbox.send_multipart([b"deinit", msg.to_bytes()]) + self.stop_loop() + self.logger.debug("Deinitialized") + def stop(self) -> None: self.logger.debug("Stopping command runner") msg = StopMsg(node_id="command") self._outbox.send_multipart([b"stop", msg.to_bytes()]) - self.stop_loop() self.logger.debug("Command runner stopped") def _init_sockets(self) -> None: @@ -182,11 +192,11 @@ def announce(self) -> None: ) self._outbox.send_multipart([b"announce", msg.to_bytes()]) - def start(self) -> None: + def start(self, n: int | None = None) -> None: """ Start running in free-run mode """ - self._outbox.send_multipart([b"start", StartMsg(node_id="command").to_bytes()]) + self._outbox.send_multipart([b"start", StartMsg(node_id="command", value=n).to_bytes()]) self.logger.debug("Sent start message") def process(self, epoch: int, input: dict | None = None) -> None: @@ -375,6 +385,7 @@ def run(cls, spec: NodeSpecification, **kwargs: Any) -> None: try: def _handler(sig: int, frame: FrameType | None = None) -> None: + signal.signal(signal.SIGTERM, signal.SIG_DFL) raise KeyboardInterrupt() signal.signal(signal.SIGTERM, _handler) @@ -574,6 +585,9 @@ def on_inbox(self, msg: list[bytes]) -> None: elif message.type_ == MessageType.stop: message = cast(StopMsg, message) self.on_stop(message) + elif message.type_ == MessageType.deinit: + message = cast(DeinitMsg, message) + self.on_deinit(message) else: # log but don't throw - other nodes shouldn't be able to crash us self.logger.error(f"{message.type_} not implemented!") @@ -619,7 +633,10 @@ def on_start(self, msg: StartMsg) -> None: """ Start running in free mode """ - self._freerun.set() + if msg.value is None: + self._freerun.set() + else: + self._to_process += msg.value self._process_one.set() def on_process(self, msg: ProcessMsg) -> None: @@ -654,7 +671,19 @@ def on_process(self, msg: ProcessMsg) -> None: self._process_one.set() def on_stop(self, msg: StopMsg) -> None: - """Stop processing!""" + """Stop processing (but stay responsive)""" + self._process_one.clear() + self._to_process = 0 + self._freerun.clear() + self.update_status(NodeStatus.stopped) + self.logger.debug("Stopped") + + def on_deinit(self, msg: DeinitMsg) -> None: + """ + Deinitialize the node, close networking thread. + + Cause the main loop to end, which calls deinit + """ self._process_quitting.set() pid = mp.current_process().pid if pid is None: @@ -698,7 +727,7 @@ class ZMQRunner(TubeRunner): _running_lock: threading.Lock = field(default_factory=threading.Lock) _return_node: Return | None = None _to_throw: ErrorValue | None = None - _current_epoch: int | None = None + _current_epoch: int = 0 @property def running(self) -> bool: @@ -768,8 +797,15 @@ def deinit(self) -> None: f"NodeRunner {proc.name} was still alive after timeout expired, killing it" ) proc.kill() - proc.close() + try: + proc.close() + except ValueError: + self._logger.info( + f"NodeRunner {proc.name} still not closed! making an unclean exit." + ) + self.command.clear_callbacks() + self.command.deinit() self.tube.scheduler.clear() self._initialized.clear() @@ -782,20 +818,25 @@ def process(self, **kwargs: Any) -> ReturnNodeType: "Runner is already running in free run mode! use iter to gather results" ) input = self.tube.input_collection.validate_input(InputScope.process, kwargs) - - self._current_epoch = self.tube.scheduler.add_epoch() - # we want to mark 'input' as done if it's in the topo graph, - # but input can be present and only used as a param, so we can't check presence of inputs - if "input" in self.tube.scheduler._epochs[self._current_epoch].ready_nodes: - self.tube.scheduler.done(self._current_epoch, "input") - self.command = cast(CommandNode, self.command) - self.command.process(self._current_epoch, input) - self._logger.debug("awaiting epoch %s", self._current_epoch) - self.tube.scheduler.await_epoch(self._current_epoch) - if self._to_throw: - self._throw_error() - self._logger.debug("collecting return") - return self.collect_return(self._current_epoch) + self._running.set() + try: + self._current_epoch = self.tube.scheduler.add_epoch() + # we want to mark 'input' as done if it's in the topo graph, + # but input can be present and only used as a param, + # so we can't check presence of inputs in the input collection + if "input" in self.tube.scheduler._epochs[self._current_epoch].ready_nodes: + self.tube.scheduler.done(self._current_epoch, "input") + self.command = cast(CommandNode, self.command) + self.command.process(self._current_epoch, input) + self._logger.debug("awaiting epoch %s", self._current_epoch) + self.tube.scheduler.await_epoch(self._current_epoch) + if self._to_throw: + self._throw_error() + self._logger.debug("collecting return") + + return self.collect_return(self._current_epoch) + finally: + self._running.clear() def iter(self, n: int | None = None) -> Generator[ReturnNodeType, None, None]: """ @@ -823,38 +864,115 @@ def iter(self, n: int | None = None) -> Generator[ReturnNodeType, None, None]: "ZMQRunner must be explicitly initialized and deinitialized, " "use the runner as a contextmanager or call `init()` and `deinit()`" ) - # TODO: after #125 is merged, raise error if tube required process scoped inputs + try: + _ = self.tube.input_collection.validate_input(InputScope.process, {}) + except InputMissingError as e: + raise InputMissingError( + "Can't use the `iter` method with tubes with process-scoped input " + "that was not provided when instantiating the tube! " + "Use `process()` directly, providing required inputs to each call." + ) from e if self.running: raise RuntimeError("Already Running!") + self.command = cast(CommandNode, self.command) epoch = self._current_epoch + start_epoch = epoch + stop_epoch = epoch + n if n is not None else epoch # start running without a limit - we'll check as we go. - self.command.start() + self.command.start(n) self._running.set() current_iter = 0 try: while n is None or current_iter < n: - ret = None + ret = MetaSignal.NoEvent loop = 0 - while ret is None: + while ret is MetaSignal.NoEvent: self._logger.debug("Awaiting epoch %s", epoch) self.tube.scheduler.await_epoch(epoch) - epoch += 1 ret = self.collect_return(epoch) - if ret: - self._logger.debug("Returning value from epoch %s", epoch) - else: - self._logger.debug("No return value for %s", epoch) + self.store.clear(epoch) + epoch += 1 + self._current_epoch = epoch if loop > self.max_iter_loops: raise RuntimeError("Reached maximum process calls per iteration") - - yield ret + # if we have run out of epochs to run, request some more with a cheap heuristic + if n is not None and epoch >= stop_epoch: + # if we get one return value every 5 epochs, + # and we ran 5 epochs to get 1 result, + # then we need to run 20 more to get the other 4, + # or, (n remaining) * (epochs per result) + # so... + divisor = current_iter if current_iter > 0 else 1 + get_more = (n - current_iter) * math.ceil( + (stop_epoch - start_epoch) / divisor + ) + stop_epoch += get_more + self.command.start(get_more) + + # stop here in case we don't exhaust the iterator + if n is not None and current_iter >= n: + self.command.stop() current_iter += 1 + yield ret finally: - # FIXME: Separate stopping and deinit so we can pause running more cheaply. - self._running.clear() - self.deinit() + self.stop() + + @overload + def run(self, n: int) -> list[ReturnNodeType]: ... + + @overload + def run(self, n: None = None) -> None: ... + + def run(self, n: int | None = None) -> None | list[ReturnNodeType]: + """ + Run the tube in freerun mode - every node runs as soon as its dependencies are satisfied, + not waiting for epochs to complete before starting the next epoch. + + Blocks when ``n`` is not None - + This is for consistency with the synchronous/asyncio runners, + but may change in the future. + + If ``n`` is None, does not block. + stop processing by calling :meth:`.stop` or deinitializing + (exiting the contextmanager, or calling :meth:`.deinit`) + """ + if not self.initialized: + raise RuntimeError( + "ZMQRunner must be explicitly initialized and deinitialized, " + "use the runner as a contextmanager or call `init()` and `deinit()`" + ) + if self.running: + raise RuntimeError("Already Running!") + try: + _ = self.tube.input_collection.validate_input(InputScope.process, {}) + except InputMissingError as e: + raise InputMissingError( + "Can't use the `iter` method with tubes with process-scoped input " + "that was not provided when instantiating the tube! " + "Use `process()` directly, providing required inputs to each call." + ) from e + self.command = cast(CommandNode, self.command) + + if n is None: + self.command.start() + self._running.set() + return None + + else: + results = [] + for res in self.iter(n): + results.append(res) + return results + + def stop(self) -> None: + """ + Stop running the tube. + """ + self.command = cast(CommandNode, self.command) + self.command.stop() + self._running.clear() def on_event(self, msg: Message) -> None: self._logger.debug("EVENT received: %s", msg) @@ -891,10 +1009,11 @@ def collect_return(self, epoch: int | None = None) -> Any: else: events = self.store.collect(self._return_node.edges, epoch) if events is None: - return None + return MetaSignal.NoEvent args, kwargs = self.store.split_args_kwargs(events) self._return_node.process(*args, **kwargs) - return self._return_node.get(keep=False) + ret = self._return_node.get(keep=False) + return ret def _handle_error(self, msg: ErrorMsg) -> None: """Cancel current epoch, stash error for process method to throw""" diff --git a/src/noob/scheduler.py b/src/noob/scheduler.py index 5bf26236..8c2efffa 100644 --- a/src/noob/scheduler.py +++ b/src/noob/scheduler.py @@ -66,7 +66,7 @@ def add_epoch(self, epoch: int | None = None) -> int: Add another epoch with a prepared graph to the scheduler. """ with self._ready_condition: - if epoch: + if epoch is not None: this_epoch = epoch # ensure that the next iteration of the clock will return the next number # if we create epochs out of order @@ -316,7 +316,9 @@ def epoch_completed(self, epoch: int) -> bool: """ with self._epoch_condition: previously_completed = ( - len(self._epoch_log) > 0 and epoch not in self._epochs and epoch in self._epoch_log + len(self._epoch_log) > 0 + and epoch not in self._epochs + and (epoch in self._epoch_log or epoch < min(self._epoch_log)) ) active_completed = epoch in self._epochs and not self._epochs[epoch].is_active() return previously_completed or active_completed diff --git a/src/noob/store.py b/src/noob/store.py index 56aa6595..37f9473e 100644 --- a/src/noob/store.py +++ b/src/noob/store.py @@ -3,6 +3,7 @@ """ from collections import defaultdict +from collections.abc import Generator from dataclasses import dataclass, field from datetime import UTC, datetime from itertools import count @@ -231,3 +232,10 @@ def split_args_kwargs(inputs: dict) -> tuple[tuple, dict]: # cast to tuple since `*args` is a tuple args_tuple = tuple(item[1] for item in sorted(args, key=lambda x: x[0])) return args_tuple, kwargs + + def iter(self) -> Generator[Event, None, None]: + """Iterate through all events""" + for nodes in self.events.values(): + for signals in nodes.values(): + for events in signals.values(): + yield from events diff --git a/src/noob/testing/nodes.py b/src/noob/testing/nodes.py index b24962b2..9c9e6cad 100644 --- a/src/noob/testing/nodes.py +++ b/src/noob/testing/nodes.py @@ -157,7 +157,7 @@ def input_party( def long_add(value: float) -> float: - sleep(0.5) + sleep(0.25) return value + 1 diff --git a/tests/test_pipelines/test_basic.py b/tests/test_pipelines/test_basic.py index d74cbb77..b2a93932 100644 --- a/tests/test_pipelines/test_basic.py +++ b/tests/test_pipelines/test_basic.py @@ -15,7 +15,7 @@ def test_basic_process(loaded_tube: Tube, runner: TubeRunner): @pytest.mark.parametrize("loaded_tube", ["testing-basic"], indirect=True) -def test_basic(loaded_tube: Tube, runner: TubeRunner): +def test_basic_run(loaded_tube: Tube, runner: TubeRunner): """The most basic tube! We can process a fixed number of events""" outputs = runner.run(n=5) assert len(outputs) == 5 diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index 5606e847..c42cf1a7 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -191,3 +191,97 @@ def _event_cb(event: Message) -> None: assert runner.store.events[2]["a"]["value"][0]["value"] == 7 * 2 assert runner.store.events[2]["b"]["value"][0]["value"] == 7 assert runner.store.events[2]["d"]["value"][0]["value"] == 7 * 3 * 3 + + +@pytest.mark.asyncio +async def test_run_freeruns(): + """ + When `run` is called, the zmq runner should "freerun" - + allow nodes to execute as quickly as they can, whenever their deps are satisfied. + """ + tube = Tube.from_specification("testing-long-add") + runner = ZMQRunner(tube) + + # events = [] + # + # def _event_cb(event: Message) -> None: + # nonlocal events + # events.append(event) + + with runner: + runner.run() + assert runner.running + await sleep(0.5) + runner.stop() + + # main thing we're testing here is whether we freerun - + # i.e. that nodes don't wait for an epoch to complete before running, if they're ready. + # so we should have way more events from the source node than from the long_add nodes, + # which sleep and take a long time on purpose. + # since there are way more long_add nodes than the single count node, + # if we ran epoch by epoch, we would expect there to be more non-count events. + count_events = [] + non_count_events = [] + for event in runner.store.iter(): + if event["node_id"] == "count": + count_events.append(event) + else: + non_count_events.append(event) + + assert len(count_events) > 0 + assert len(non_count_events) > 0 + assert len(count_events) > len(non_count_events) + # we should theoretically get only 2 epochs from the long add nodes, + # but allow up to 5 in the case of network latency, this is not that important + assert len(set(e["epoch"] for e in non_count_events)) < 5 + # it should be in the hundreds, but all we care about is that it's more than 1 greater + # 10 is a good number. + assert len(set(e["epoch"] for e in count_events)) > 10 + + +@pytest.mark.xfail() +def test_start_stop(): + """ + The runner can be started and stopped without deinitializing + """ + raise NotImplementedError() + + +@pytest.mark.xfail() +def test_iter_gather(): + """ + itering over gather should heuristically request more iterations as we go + """ + raise NotImplementedError() + + +@pytest.mark.xfail() +def test_noderunner_stores_clear(): + """ + Stores in the noderunners should clear after they use the events from an epoch + """ + raise NotImplementedError() + + +@pytest.mark.xfail() +def test_zmqrunner_stores_clear_process(): + """ + ZMQRunner stores clear after returning values from process + """ + raise NotImplementedError() + + +@pytest.mark.xfail() +def test_zmqrunner_stores_clear_iter(): + """ + ZMQRunner stores clear after returning values while iterating + """ + raise NotImplementedError() + + +@pytest.mark.xfail() +def test_zmqrunner_stores_clear_freerun(): + """ + ZMQRunner doesn't store events while freerunning. + """ + raise NotImplementedError() diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py index 407b6a65..c839f31e 100644 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -6,6 +6,7 @@ from noob import SynchronousRunner, Tube from noob.event import Event, MetaEventType +from noob.exceptions import EpochCompletedError from noob.toposort import TopoSorter @@ -178,8 +179,9 @@ def test_clear_ended_epochs(): assert len(scheduler._epochs) == 2 else: assert scheduler[1] - with pytest.raises(KeyError): + with pytest.raises(EpochCompletedError): _ = scheduler[0] + assert len(scheduler._epochs) == 1 @pytest.mark.xfail(raises=Empty) diff --git a/tests/test_store.py b/tests/test_store.py index 5c78c466..d806e1ba 100644 --- a/tests/test_store.py +++ b/tests/test_store.py @@ -1,5 +1,7 @@ from datetime import UTC, datetime +import pytest + from noob.event import Event from noob.store import EventStore @@ -22,3 +24,11 @@ def test_store_get_by_epoch(): event = store.get(node_id="a", signal="b", epoch=-1) assert event assert event["epoch"] == 4 + + +@pytest.mark.xfail() +def test_store_iter(): + """ + Store can iterate over all events in its nested dictionary + """ + raise NotImplementedError() From 60e0fb6bff78eb559ef8389e9dc80674f65e2e85 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 18:51:06 -0800 Subject: [PATCH 03/18] deconflict logging handlers between processes --- src/noob/logging.py | 65 ++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/src/noob/logging.py b/src/noob/logging.py index 98d17016..1eb33f65 100644 --- a/src/noob/logging.py +++ b/src/noob/logging.py @@ -8,7 +8,7 @@ from pathlib import Path from typing import Any, Literal -from rich import get_console +from rich.console import Console from rich.logging import RichHandler from noob.config import LOG_LEVELS, config @@ -85,30 +85,6 @@ def init_logger( logger = logging.getLogger(name) logger.setLevel(min_level) - # if run from a forked process, need to add different handlers to not collide - if mp.parent_process() is not None: - handler_name = f"{name}_{mp.current_process().pid}" - if log_dir is not False and not any([h.name == handler_name for h in logger.handlers]): - logger.addHandler( - _file_handler( - name=f"{name}_{mp.current_process().pid}", - file_level=file_level, - log_dir=log_dir, - log_file_n=log_file_n, - log_file_size=log_file_size, - ) - ) - - if not any( - [ - handler_name in h.keywords - for h in logger.handlers - if isinstance(h, RichHandler) and h.keywords is not None - ] - ): - logger.addHandler(_rich_handler(level, keywords=[handler_name], width=width)) - logger.propagate = False - return logger @@ -121,6 +97,18 @@ def _init_root( width: int | None = None, ) -> None: root_logger = logging.getLogger("noob") + + # ensure each root logger has fresh handlers in subprocesses + if mp.parent_process() is not None: + current_pid = mp.current_process().pid + file_name = f"noob_{current_pid}" + rich_name = f"{file_name}_rich" + else: + file_name = "noob" + rich_name = "noob_rich" + + root_logger.handlers = [h for h in root_logger.handlers if h.name in (rich_name, file_name)] + file_handlers = [ handler for handler in root_logger.handlers if isinstance(handler, RotatingFileHandler) ] @@ -131,7 +119,7 @@ def _init_root( if log_dir is not False and not file_handlers: root_logger.addHandler( _file_handler( - "noob", + file_name, file_level, log_dir, log_file_n, @@ -143,7 +131,7 @@ def _init_root( file_handler.setLevel(file_level) if not stream_handlers: - root_logger.addHandler(_rich_handler(stdout_level, width=width)) + root_logger.addHandler(_rich_handler(stdout_level, name=rich_name, width=width)) else: for stream_handler in stream_handlers: stream_handler.setLevel(stdout_level) @@ -165,18 +153,22 @@ def _file_handler( file_handler = RotatingFileHandler( str(filename), mode="a", maxBytes=log_file_size, backupCount=log_file_n ) + file_handler._pid = mp.current_process().pid file_formatter = logging.Formatter("[%(asctime)s] %(levelname)s [%(name)s]: %(message)s") file_handler.setLevel(file_level) file_handler.setFormatter(file_formatter) return file_handler -def _rich_handler(level: LOG_LEVELS, width: int | None = None, **kwargs: Any) -> RichHandler: - console = get_console() +def _rich_handler( + level: LOG_LEVELS, name: str, width: int | None = None, **kwargs: Any +) -> RichHandler: + console = _get_console() if width: console.width = width - rich_handler = RichHandler(rich_tracebacks=True, markup=True, **kwargs) + rich_handler = RichHandler(console=console, rich_tracebacks=True, markup=True, **kwargs) + rich_handler.name = name rich_formatter = logging.Formatter( r"[bold green]\[%(name)s][/bold green] %(message)s", datefmt="[%y-%m-%dT%H:%M:%S]", @@ -184,3 +176,16 @@ def _rich_handler(level: LOG_LEVELS, width: int | None = None, **kwargs: Any) -> rich_handler.setFormatter(rich_formatter) rich_handler.setLevel(level) return rich_handler + + +_console_by_pid: dict[int, Console] = {} + + +def _get_console() -> Console: + """get a console that was spawned in this process""" + global _console_by_pid + current_pid = mp.current_process().pid + console = _console_by_pid.get(current_pid) + if console is None: + _console_by_pid[current_pid] = console = Console() + return console From 39e80683978b8f8538d7b88f05deef39d9191388 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 19:21:18 -0800 Subject: [PATCH 04/18] ping for status and timeout --- src/noob/network/message.py | 8 ++++++ src/noob/runner/zmq.py | 53 ++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/noob/network/message.py b/src/noob/network/message.py index c603b594..dad8d5c0 100644 --- a/src/noob/network/message.py +++ b/src/noob/network/message.py @@ -35,6 +35,7 @@ class MessageType(StrEnum): process = "process" init = "init" deinit = "deinit" + ping = "ping" start = "start" status = "status" stop = "stop" @@ -113,6 +114,13 @@ class IdentifyMsg(Message): value: IdentifyValue +class PingMsg(Message): + """Request other nodes to identify themselves and report their status""" + + type_: Literal[MessageType.ping] = Field(MessageType.ping, alias="type") + value: None = None + + class ProcessMsg(Message): """Process a single iteration of the graph""" diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index 13226fe2..633bce01 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -66,6 +66,7 @@ Message, MessageType, NodeStatus, + PingMsg, ProcessMsg, StartMsg, StatusMsg, @@ -192,6 +193,11 @@ def announce(self) -> None: ) self._outbox.send_multipart([b"announce", msg.to_bytes()]) + def ping(self) -> None: + """Send a ping message asking everyone to identify themselves""" + msg = PingMsg(node_id="command") + self._outbox.send_multipart([b"ping", msg.to_bytes()]) + def start(self, n: int | None = None) -> None: """ Start running in free-run mode @@ -222,27 +228,40 @@ def add_callback(self, type_: Literal["inbox", "router"], cb: Callable[[Message] def clear_callbacks(self) -> None: self._callbacks = defaultdict(list) - def await_ready(self, node_ids: list[NodeID]) -> None: + def await_ready(self, node_ids: list[NodeID], timeout: float = 5) -> None: """ Wait until all the node_ids have announced themselves """ - with self._ready_condition: - if set(node_ids) == set(self._nodes): - return - def _is_ready() -> bool: - ready_nodes = { - node_id for node_id, state in self._nodes.items() if state["status"] == "ready" - } - waiting_for = set(node_ids) - self.logger.debug( - "Checking if ready, ready nodes are: %s, waiting for %s", - ready_nodes, - waiting_for, - ) - return waiting_for == ready_nodes + def _ready_nodes() -> set[str]: + return {node_id for node_id, state in self._nodes.items() if state["status"] == "ready"} - self._ready_condition.wait_for(_is_ready) + def _is_ready() -> bool: + ready_nodes = _ready_nodes() + waiting_for = set(node_ids) + self.logger.debug( + "Checking if ready, ready nodes are: %s, waiting for %s", + ready_nodes, + waiting_for, + ) + return waiting_for.issubset(ready_nodes) + + with self._ready_condition: + # ping periodically for identifications in case we have slow subscribers + start_time = time() + ready = False + while time() < start_time + timeout and not ready: + ready = self._ready_condition.wait_for(_is_ready, timeout=1) + if not ready: + self.ping() + + # if still not ready, timeout + if not ready: + raise TimeoutError( + f"Nodes were not ready after the timeout. " + f"Waiting for: {set(node_ids)}, " + f"ready: {_ready_nodes()}" + ) def on_router(self, msg: list[bytes]) -> None: try: @@ -588,6 +607,8 @@ def on_inbox(self, msg: list[bytes]) -> None: elif message.type_ == MessageType.deinit: message = cast(DeinitMsg, message) self.on_deinit(message) + elif message.type_ == MessageType.ping: + self.identify() else: # log but don't throw - other nodes shouldn't be able to crash us self.logger.error(f"{message.type_} not implemented!") From 5c4ef571e8acf9f63e08812be31300a543c73279 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 19:23:58 -0800 Subject: [PATCH 05/18] ping message in the discriminator --- src/noob/network/message.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/noob/network/message.py b/src/noob/network/message.py index dad8d5c0..339986ec 100644 --- a/src/noob/network/message.py +++ b/src/noob/network/message.py @@ -222,6 +222,7 @@ def _type_discriminator(v: dict | Message) -> str: | A[ProcessMsg, Tag("process")] | A[InitMsg, Tag("init")] | A[DeinitMsg, Tag("deinit")] + | A[PingMsg, Tag("ping")] | A[StartMsg, Tag("start")] | A[StatusMsg, Tag("status")] | A[StopMsg, Tag("stop")] From ee830535e3c6da2043838ce439ea149b8603422e Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 19:26:47 -0800 Subject: [PATCH 06/18] mypy --- src/noob/logging.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/noob/logging.py b/src/noob/logging.py index 1eb33f65..255b71cc 100644 --- a/src/noob/logging.py +++ b/src/noob/logging.py @@ -153,7 +153,6 @@ def _file_handler( file_handler = RotatingFileHandler( str(filename), mode="a", maxBytes=log_file_size, backupCount=log_file_n ) - file_handler._pid = mp.current_process().pid file_formatter = logging.Formatter("[%(asctime)s] %(levelname)s [%(name)s]: %(message)s") file_handler.setLevel(file_level) file_handler.setFormatter(file_formatter) @@ -178,7 +177,7 @@ def _rich_handler( return rich_handler -_console_by_pid: dict[int, Console] = {} +_console_by_pid: dict[int | None, Console] = {} def _get_console() -> Console: From b37b79c85798c0dabdf5df68f3cac493cd981c6d Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 19:48:31 -0800 Subject: [PATCH 07/18] more logging, quitting zmqrunner on timeout in command node --- src/noob/runner/zmq.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index 633bce01..c595f90b 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -502,6 +502,8 @@ def identify(self) -> None: "Node was not initialized by the time we tried to " "identify ourselves to the command node." ) + + self.logger.debug("Identifying") with self._status_lock: ann = IdentifyMsg( node_id=self.spec.id, @@ -520,10 +522,12 @@ def identify(self) -> None: def update_status(self, status: NodeStatus) -> None: """Update our internal status and announce it to the command node""" + self.logger.debug("Updating status as %s", status) with self._status_lock: self.status = status msg = StatusMsg(node_id=self.spec.id, value=status) self._dealer.send_multipart([msg.to_bytes()]) + self.logger.debug("Updated status") def start_sockets(self) -> None: self.start_loop() @@ -619,12 +623,16 @@ def on_announce(self, msg: AnnounceMsg) -> None: Store map, connect to the nodes we depend on """ self._node = cast(Node, self._node) + self.logger.debug("Processing announce") with self._status_lock: depended_nodes = {edge.source_node for edge in self._node.edges} + if depended_nodes: + self.logger.debug("Should subscribe to %s", depended_nodes) for node_id in msg.value["nodes"]: if node_id in depended_nodes and node_id not in self._nodes: # TODO: a way to check if we're already connected, without storing it locally? outbox = msg.value["nodes"][node_id]["outbox"] + self.logger.debug("Subscribing to %s at %s", node_id, outbox) self._inbox.connect(outbox) self.logger.debug("Subscribed to %s at %s", node_id, outbox) self._nodes = msg.value["nodes"] @@ -744,7 +752,7 @@ class ZMQRunner(TubeRunner): _initialized: EventType = field(default_factory=mp.Event) _running: EventType = field(default_factory=mp.Event) - _init_lock: threading.Lock = field(default_factory=threading.Lock) + _init_lock: threading.Lock = field(default_factory=threading.RLock) _running_lock: threading.Lock = field(default_factory=threading.Lock) _return_node: Return | None = None _to_throw: ErrorValue | None = None @@ -789,9 +797,17 @@ def init(self) -> None: ) self.node_procs[node_id].start() self._logger.debug("Started node processes, awaiting ready") - self.command.await_ready( - [k for k, v in self.tube.nodes.items() if not isinstance(v, Return)] - ) + try: + self.command.await_ready( + [k for k, v in self.tube.nodes.items() if not isinstance(v, Return)] + ) + except TimeoutError as e: + self._logger.debug("Timeouterror, deinitializing before throwing") + self._initialized.set() + self.deinit() + self._logger.exception(e) + raise + self._logger.debug("Nodes ready") self._initialized.set() From 4bf6723efd9cdb2de5648c8b0b302d175d1c3bfb Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 20:05:00 -0800 Subject: [PATCH 08/18] releasing thread in async from sync --- src/noob/runner/base.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/noob/runner/base.py b/src/noob/runner/base.py index 49b5bb37..876dd65c 100644 --- a/src/noob/runner/base.py +++ b/src/noob/runner/base.py @@ -553,25 +553,33 @@ def call_async_from_sync( result_future: asyncio.Future[_TReturn] = asyncio.Future() work_ready = threading.Condition() + finished = False # Closures because this code should never escape the containment tomb of this crime against god async def _wrap(call_result: asyncio.Future[_TReturn], fn: Coroutine) -> None: + nonlocal finished try: result = await fn call_result.set_result(result) except Exception as e: call_result.set_exception(e) + finally: + finished = True def _done(_: ConcurrentFuture) -> None: + nonlocal finished + + finished = True with work_ready: work_ready.notify_all() future_inner = executor.submit(asyncio.run, _wrap(result_future, coro)) future_inner.add_done_callback(_done) - with work_ready: - work_ready.wait() try: + while not finished and not future_inner.done(): + with work_ready: + work_ready.wait(timeout=1) res = result_future.result() return res finally: From a71cd8521ecf8cd7228cda94ee0707dcd22afcc6 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 20:19:49 -0800 Subject: [PATCH 09/18] can we not debug log always pretty please --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index b0dbf590..44350224 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -32,7 +32,7 @@ def _config_sources(cls: type[ConfigYAMLMixin]) -> list[Path]: def patch_env_config(monkeypatch_session: MonkeyPatch) -> None: """Patch env settings, e.g. setting log levels and etc.""" - monkeypatch_session.setenv("NOOB_LOGS__LEVEL", "DEBUG") + # monkeypatch_session.setenv("NOOB_LOGS__LEVEL", "DEBUG") def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item]) -> None: From eb9de9e1b3d3543df5a29a0e17f0ac47479c8c66 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Thu, 22 Jan 2026 20:24:59 -0800 Subject: [PATCH 10/18] mypy --- src/noob/runner/zmq.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index c595f90b..b2bfa5f0 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -752,7 +752,7 @@ class ZMQRunner(TubeRunner): _initialized: EventType = field(default_factory=mp.Event) _running: EventType = field(default_factory=mp.Event) - _init_lock: threading.Lock = field(default_factory=threading.RLock) + _init_lock: threading.RLock = field(default_factory=threading.RLock) _running_lock: threading.Lock = field(default_factory=threading.Lock) _return_node: Return | None = None _to_throw: ErrorValue | None = None From abada36386c1c030abe1e2f22a104f91b7a09fe7 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 15:50:01 -0800 Subject: [PATCH 11/18] completing tests for zmq freerun, stores clear by default --- pylock.toml | 851 +++++++++--------- pyproject.toml | 1 + src/noob/node/base.py | 10 +- src/noob/runner/zmq.py | 72 +- src/noob/store.py | 4 +- src/noob/testing/__init__.py | 2 + src/noob/testing/nodes.py | 20 + tests/data/pipelines/special/count_inits.yaml | 7 + tests/test_runners/test_zmq.py | 182 +++- 9 files changed, 689 insertions(+), 460 deletions(-) create mode 100644 tests/data/pipelines/special/count_inits.yaml diff --git a/pylock.toml b/pylock.toml index cd949d6b..a2129172 100644 --- a/pylock.toml +++ b/pylock.toml @@ -12,17 +12,52 @@ created-by = "pdm" [[packages]] name = "faker" -version = "40.1.2" +version = "39.0.0" requires-python = ">=3.10" -sdist = {name = "faker-40.1.2.tar.gz", url = "https://files.pythonhosted.org/packages/5e/77/1c3ff07b6739b9a1d23ca01ec0a90a309a33b78e345a3eb52f9ce9240e36/faker-40.1.2.tar.gz", hashes = {sha256 = "b76a68163aa5f171d260fc24827a8349bc1db672f6a665359e8d0095e8135d30"}} +sdist = {name = "faker-39.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/30/b9/0897fb5888ddda099dc0f314a8a9afb5faa7e52eaf6865c00686dfb394db/faker-39.0.0.tar.gz", hashes = {sha256 = "ddae46d3b27e01cea7894651d687b33bcbe19a45ef044042c721ceac6d3da0ff"}} wheels = [ - {name = "faker-40.1.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/46/ec/91a434c8a53d40c3598966621dea9c50512bec6ce8e76fa1751015e74cef/faker-40.1.2-py3-none-any.whl",hashes = {sha256 = "93503165c165d330260e4379fd6dc07c94da90c611ed3191a0174d2ab9966a42"}}, + {name = "faker-39.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/eb/5a/26cdb1b10a55ac6eb11a738cea14865fa753606c4897d7be0f5dc230df00/faker-39.0.0-py3-none-any.whl",hashes = {sha256 = "c72f1fca8f1a24b8da10fcaa45739135a19772218ddd61b86b7ea1b8c790dce7"}}, ] marker = "\"dev\" in extras or \"docs\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [ - "tzdata; platform_system == \"Windows\"", + "tzdata", +] + +[[packages]] +name = "autodoc-pydantic" +version = "2.2.0" +requires-python = "<4.0.0,>=3.8.1" +wheels = [ + {name = "autodoc_pydantic-2.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7b/df/87120e2195f08d760bc5cf8a31cfa2381a6887517aa89453b23f1ae3354f/autodoc_pydantic-2.2.0-py3-none-any.whl",hashes = {sha256 = "8c6a36fbf6ed2700ea9c6d21ea76ad541b621fbdf16b5a80ee04673548af4d95"}}, +] +marker = "\"dev\" in extras or \"docs\" in extras" + +[packages.tool.pdm] +dependencies = [ + "Sphinx>=4.0", + "importlib-metadata>1; python_version <= \"3.8\"", + "pydantic<3.0.0,>=2.0", + "pydantic-settings<3.0.0,>=2.0", +] + +[[packages]] +name = "pydantic" +version = "2.12.5" +requires-python = ">=3.9" +sdist = {name = "pydantic-2.12.5.tar.gz", url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hashes = {sha256 = "4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}} +wheels = [ + {name = "pydantic-2.12.5-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl",hashes = {sha256 = "e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}}, +] +marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras" + +[packages.tool.pdm] +dependencies = [ + "annotated-types>=0.6.0", + "pydantic-core==2.41.5", + "typing-extensions>=4.14.1", + "typing-inspection>=0.4.2", ] [[packages]] @@ -57,54 +92,87 @@ dependencies = [ ] [[packages]] -name = "autodoc-pydantic" -version = "2.2.0" -requires-python = "<4.0.0,>=3.8.1" +name = "typing-extensions" +version = "4.15.0" +requires-python = ">=3.9" +sdist = {name = "typing_extensions-4.15.0.tar.gz", url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hashes = {sha256 = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}} wheels = [ - {name = "autodoc_pydantic-2.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7b/df/87120e2195f08d760bc5cf8a31cfa2381a6887517aa89453b23f1ae3354f/autodoc_pydantic-2.2.0-py3-none-any.whl",hashes = {sha256 = "8c6a36fbf6ed2700ea9c6d21ea76ad541b621fbdf16b5a80ee04673548af4d95"}}, + {name = "typing_extensions-4.15.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl",hashes = {sha256 = "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}}, ] -marker = "\"dev\" in extras or \"docs\" in extras" +marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras or \"mypy\" in extras or \"tests\" in extras" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "black" +version = "25.12.0" +requires-python = ">=3.10" +sdist = {name = "black-25.12.0.tar.gz", url = "https://files.pythonhosted.org/packages/c4/d9/07b458a3f1c525ac392b5edc6b191ff140b596f9d77092429417a54e249d/black-25.12.0.tar.gz", hashes = {sha256 = "8d3dd9cea14bff7ddc0eb243c811cdb1a011ebb4800a5f0335a01a68654796a7"}} +wheels = [ + {name = "black-25.12.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/35/46/1d8f2542210c502e2ae1060b2e09e47af6a5e5963cb78e22ec1a11170b28/black-25.12.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "0a0953b134f9335c2434864a643c842c44fba562155c738a2a37a4d61f00cad5"}}, + {name = "black-25.12.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/41/37/68accadf977672beb8e2c64e080f568c74159c1aaa6414b4cd2aef2d7906/black-25.12.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "2355bbb6c3b76062870942d8cc450d4f8ac71f9c93c40122762c8784df49543f"}}, + {name = "black-25.12.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ac/76/03608a9d8f0faad47a3af3a3c8c53af3367f6c0dd2d23a84710456c7ac56/black-25.12.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9678bd991cc793e81d19aeeae57966ee02909877cb65838ccffef24c3ebac08f"}}, + {name = "black-25.12.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/06/99/b2a4bd7dfaea7964974f947e1c76d6886d65fe5d24f687df2d85406b2609/black-25.12.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "97596189949a8aad13ad12fcbb4ae89330039b96ad6742e6f6b45e75ad5cfd83"}}, + {name = "black-25.12.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/b2/7c/d9825de75ae5dd7795d007681b752275ea85a1c5d83269b4b9c754c2aaab/black-25.12.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "778285d9ea197f34704e3791ea9404cd6d07595745907dd2ce3da7a13627b29b"}}, + {name = "black-25.12.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/c8/52/c551e36bc95495d2aa1a37d50566267aa47608c81a53f91daa809e03293f/black-25.12.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "a05ddeb656534c3e27a05a29196c962877c83fa5503db89e68857d1161ad08a5"}}, + {name = "black-25.12.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a0/f7/aac9b014140ee56d247e707af8db0aae2e9efc28d4a8aba92d0abd7ae9d1/black-25.12.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "9ec77439ef3e34896995503865a85732c94396edcc739f302c5673a2315e1e7f"}}, + {name = "black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/74/98/38aaa018b2ab06a863974c12b14a6266badc192b20603a81b738c47e902e/black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "0e509c858adf63aa61d908061b52e580c40eae0dfa72415fa47ac01b12e29baf"}}, + {name = "black-25.12.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/16/3a/a8ac542125f61574a3f015b521ca83b47321ed19bb63fe6d7560f348bfe1/black-25.12.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "252678f07f5bac4ff0d0e9b261fbb029fa530cfa206d0a636a34ab445ef8ca9d"}}, + {name = "black-25.12.0-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/e6/2d/bdc466a3db9145e946762d52cd55b1385509d9f9004fec1c97bdc8debbfb/black-25.12.0-cp313-cp313-win_arm64.whl",hashes = {sha256 = "bc5b1c09fe3c931ddd20ee548511c64ebf964ada7e6f0763d443947fd1c603ce"}}, + {name = "black-25.12.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/d1/bd/26083f805115db17fda9877b3c7321d08c647df39d0df4c4ca8f8450593e/black-25.12.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "31f96b7c98c1ddaeb07dc0f56c652e25bdedaac76d5b68a059d998b57c55594a"}}, + {name = "black-25.12.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/89/6b/ea00d6651561e2bdd9231c4177f4f2ae19cc13a0b0574f47602a7519b6ca/black-25.12.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "05dd459a19e218078a1f98178c13f861fe6a9a5f88fc969ca4d9b49eb1809783"}}, + {name = "black-25.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/6d/f3/360fa4182e36e9875fabcf3a9717db9d27a8d11870f21cff97725c54f35b/black-25.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "c1f68c5eff61f226934be6b5b80296cf6939e5d2f0c2f7d543ea08b204bfaf59"}}, + {name = "black-25.12.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f8/08/2c64830cb6616278067e040acca21d4f79727b23077633953081c9445d61/black-25.12.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "274f940c147ddab4442d316b27f9e332ca586d39c85ecf59ebdea82cc9ee8892"}}, + {name = "black-25.12.0-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/d4/60/a93f55fd9b9816b7432cf6842f0e3000fdd5b7869492a04b9011a133ee37/black-25.12.0-cp312-cp312-win_arm64.whl",hashes = {sha256 = "169506ba91ef21e2e0591563deda7f00030cb466e747c4b09cb0a9dae5db2f43"}}, + {name = "black-25.12.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/60/ad/7ac0d0e1e0612788dbc48e62aef8a8e8feffac7eb3d787db4e43b8462fa8/black-25.12.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "d0cfa263e85caea2cff57d8f917f9f51adae8e20b610e2b23de35b5b11ce691a"}}, + {name = "black-25.12.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/e8/dd/a237e9f565f3617a88b49284b59cbca2a4f56ebe68676c1aad0ce36a54a7/black-25.12.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "1a2f578ae20c19c50a382286ba78bfbeafdf788579b053d8e4980afb079ab9be"}}, + {name = "black-25.12.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/12/80/e187079df1ea4c12a0c63282ddd8b81d5107db6d642f7d7b75a6bcd6fc21/black-25.12.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d3e1b65634b0e471d07ff86ec338819e2ef860689859ef4501ab7ac290431f9b"}}, + {name = "black-25.12.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/93/b5/3096ccee4f29dc2c3aac57274326c4d2d929a77e629f695f544e159bfae4/black-25.12.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "a3fa71e3b8dd9f7c6ac4d818345237dfb4175ed3bf37cd5a581dbc4c034f1ec5"}}, + {name = "black-25.12.0-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/7e/39/f81c0ffbc25ffbe61c7d0385bf277e62ffc3e52f5ee668d7369d9854fadf/black-25.12.0-cp311-cp311-win_arm64.whl",hashes = {sha256 = "51e267458f7e650afed8445dc7edb3187143003d52a1b710c7321aef22aa9655"}}, + {name = "black-25.12.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/68/11/21331aed19145a952ad28fca2756a1433ee9308079bd03bd898e903a2e53/black-25.12.0-py3-none-any.whl",hashes = {sha256 = "48ceb36c16dbc84062740049eef990bb2ce07598272e673c17d1a7720c71c828"}}, +] +marker = "\"dev\" in extras" [packages.tool.pdm] dependencies = [ - "Sphinx>=4.0", - "importlib-metadata>1; python_version <= \"3.8\"", - "pydantic<3.0.0,>=2.0", - "pydantic-settings<3.0.0,>=2.0", + "click>=8.0.0", + "mypy-extensions>=0.4.3", + "packaging>=22.0", + "pathspec>=0.9.0", + "platformdirs>=2", + "pytokens>=0.3.0", + "tomli>=1.1.0; python_version < \"3.11\"", + "typing-extensions>=4.0.1; python_version < \"3.11\"", ] [[packages]] -name = "pydantic" -version = "2.12.5" -requires-python = ">=3.9" -sdist = {name = "pydantic-2.12.5.tar.gz", url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hashes = {sha256 = "4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}} +name = "platformdirs" +version = "4.5.1" +requires-python = ">=3.10" +sdist = {name = "platformdirs-4.5.1.tar.gz", url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hashes = {sha256 = "61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"}} wheels = [ - {name = "pydantic-2.12.5-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl",hashes = {sha256 = "e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}}, + {name = "platformdirs-4.5.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl",hashes = {sha256 = "d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"}}, ] marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] -dependencies = [ - "annotated-types>=0.6.0", - "pydantic-core==2.41.5", - "typing-extensions>=4.14.1", - "typing-inspection>=0.4.2", -] +dependencies = [] [[packages]] name = "furo" -version = "2025.12.19" +version = "2025.9.25" requires-python = ">=3.8" -sdist = {name = "furo-2025.12.19.tar.gz", url = "https://files.pythonhosted.org/packages/ec/20/5f5ad4da6a5a27c80f2ed2ee9aee3f9e36c66e56e21c00fde467b2f8f88f/furo-2025.12.19.tar.gz", hashes = {sha256 = "188d1f942037d8b37cd3985b955839fea62baa1730087dc29d157677c857e2a7"}} +sdist = {name = "furo-2025.9.25.tar.gz", url = "https://files.pythonhosted.org/packages/4e/29/ff3b83a1ffce74676043ab3e7540d398e0b1ce7660917a00d7c4958b93da/furo-2025.9.25.tar.gz", hashes = {sha256 = "3eac05582768fdbbc2bdfa1cdbcdd5d33cfc8b4bd2051729ff4e026a1d7e0a98"}} wheels = [ - {name = "furo-2025.12.19-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/f4/b2/50e9b292b5cac13e9e81272c7171301abc753a60460d21505b606e15cf21/furo-2025.12.19-py3-none-any.whl",hashes = {sha256 = "bb0ead5309f9500130665a26bee87693c41ce4dbdff864dbfb6b0dae4673d24f"}}, + {name = "furo-2025.9.25-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/ba/69/964b55f389c289e16ba2a5dfe587c3c462aac09e24123f09ddf703889584/furo-2025.9.25-py3-none-any.whl",hashes = {sha256 = "2937f68e823b8e37b410c972c371bc2b1d88026709534927158e0cb3fac95afe"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ "beautifulsoup4", - "sphinx<10.0,>=7.0", + "sphinx<9.0,>=6.0", "sphinx-basic-ng>=1.0.0.beta2", "pygments>=2.7", "accessible-pygments>=0.0.5", @@ -153,19 +221,6 @@ dependencies = [ "librt>=0.6.2; platform_python_implementation != \"PyPy\"", ] -[[packages]] -name = "typing-extensions" -version = "4.15.0" -requires-python = ">=3.9" -sdist = {name = "typing_extensions-4.15.0.tar.gz", url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hashes = {sha256 = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}} -wheels = [ - {name = "typing_extensions-4.15.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl",hashes = {sha256 = "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}}, -] -marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras or \"mypy\" in extras or \"tests\" in extras" - -[packages.tool.pdm] -dependencies = [] - [[packages]] name = "myst-nb" version = "1.3.0" @@ -192,22 +247,22 @@ dependencies = [ [[packages]] name = "myst-parser" -version = "5.0.0" -requires-python = ">=3.11" -sdist = {name = "myst_parser-5.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/33/fa/7b45eef11b7971f0beb29d27b7bfe0d747d063aa29e170d9edd004733c8a/myst_parser-5.0.0.tar.gz", hashes = {sha256 = "f6f231452c56e8baa662cc352c548158f6a16fcbd6e3800fc594978002b94f3a"}} +version = "4.0.1" +requires-python = ">=3.10" +sdist = {name = "myst_parser-4.0.1.tar.gz", url = "https://files.pythonhosted.org/packages/66/a5/9626ba4f73555b3735ad86247a8077d4603aa8628537687c839ab08bfe44/myst_parser-4.0.1.tar.gz", hashes = {sha256 = "5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4"}} wheels = [ - {name = "myst_parser-5.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d3/ac/686789b9145413f1a61878c407210e41bfdb097976864e0913078b24098c/myst_parser-5.0.0-py3-none-any.whl",hashes = {sha256 = "ab31e516024918296e169139072b81592336f2fef55b8986aa31c9f04b5f7211"}}, + {name = "myst_parser-4.0.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl",hashes = {sha256 = "9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ - "docutils<0.23,>=0.20", + "docutils<0.22,>=0.19", "jinja2", - "markdown-it-py~=4.0", - "mdit-py-plugins~=0.5", + "markdown-it-py~=3.0", + "mdit-py-plugins>=0.4.1,~=0.4", "pyyaml", - "sphinx<10,>=8", + "sphinx<9,>=7", ] [[packages]] @@ -276,6 +331,22 @@ dependencies = [ "importlib-metadata>=8.5.0; python_version < \"3.10\"", ] +[[packages]] +name = "rich" +version = "14.2.0" +requires-python = ">=3.8.0" +sdist = {name = "rich-14.2.0.tar.gz", url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hashes = {sha256 = "73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}} +wheels = [ + {name = "rich-14.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl",hashes = {sha256 = "76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}}, +] +marker = "\"default\" in dependency_groups or \"dev\" in extras or \"tests\" in extras" + +[packages.tool.pdm] +dependencies = [ + "markdown-it-py>=2.2.0", + "pygments<3.0.0,>=2.13.0", +] + [[packages]] name = "pytest-cov" version = "7.0.0" @@ -370,49 +441,110 @@ dependencies = [ ] [[packages]] -name = "rich" -version = "14.2.0" -requires-python = ">=3.8.0" -sdist = {name = "rich-14.2.0.tar.gz", url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hashes = {sha256 = "73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}} +name = "remote-pdb" +version = "2.1.0" +requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +sdist = {name = "remote-pdb-2.1.0.tar.gz", url = "https://files.pythonhosted.org/packages/e4/b5/4944cac06fd9fc4a2e168313ec220aa25ed96ce83947b63eea5b4045b22d/remote-pdb-2.1.0.tar.gz", hashes = {sha256 = "2d70c6f41e0eabf0165e8f1be58f82aa7a605aaeab8f2aefeb9ce246431091c1"}} wheels = [ - {name = "rich-14.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl",hashes = {sha256 = "76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}}, + {name = "remote_pdb-2.1.0-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/71/c5/d208c66344bb785d800adb61aef512290d3473052b9e7697890f0547aff2/remote_pdb-2.1.0-py2.py3-none-any.whl",hashes = {sha256 = "94f73a92ac1248cf16189211011f97096bdada8a7baac8c79372663bbb57b5d0"}}, ] -marker = "\"default\" in dependency_groups or \"dev\" in extras or \"tests\" in extras" +marker = "\"dev\" in extras" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "ruamel-yaml" +version = "0.18.17" +requires-python = ">=3.9" +sdist = {name = "ruamel_yaml-0.18.17.tar.gz", url = "https://files.pythonhosted.org/packages/3a/2b/7a1f1ebcd6b3f14febdc003e658778d81e76b40df2267904ee6b13f0c5c6/ruamel_yaml-0.18.17.tar.gz", hashes = {sha256 = "9091cd6e2d93a3a4b157ddb8fabf348c3de7f1fb1381346d985b6b247dcd8d3c"}} +wheels = [ + {name = "ruamel_yaml-0.18.17-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl",hashes = {sha256 = "9c8ba9eb3e793efdf924b60d521820869d5bf0cb9c6f1b82d82de8295e290b9d"}}, +] +marker = "\"default\" in dependency_groups" [packages.tool.pdm] dependencies = [ - "markdown-it-py>=2.2.0", - "pygments<3.0.0,>=2.13.0", + "ruamel-yaml-clib>=0.2.15; platform_python_implementation == \"CPython\" and python_version < \"3.15\"", ] [[packages]] -name = "sphinx-design" -version = "0.7.0" +name = "ruff" +version = "0.14.10" +requires-python = ">=3.7" +sdist = {name = "ruff-0.14.10.tar.gz", url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hashes = {sha256 = "9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4"}} +wheels = [ + {name = "ruff-0.14.10-py3-none-linux_armv6l.whl",url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl",hashes = {sha256 = "7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49"}}, + {name = "ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl",url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl",hashes = {sha256 = "674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f"}}, + {name = "ruff-0.14.10-py3-none-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl",hashes = {sha256 = "d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",hashes = {sha256 = "16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",hashes = {sha256 = "c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",hashes = {sha256 = "4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",hashes = {sha256 = "f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f"}}, + {name = "ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl",url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl",hashes = {sha256 = "213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f"}}, + {name = "ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl",hashes = {sha256 = "b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d"}}, + {name = "ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl",url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl",hashes = {sha256 = "1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405"}}, + {name = "ruff-0.14.10-py3-none-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl",hashes = {sha256 = "c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60"}}, + {name = "ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830"}}, + {name = "ruff-0.14.10-py3-none-win32.whl",url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl",hashes = {sha256 = "104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6"}}, + {name = "ruff-0.14.10-py3-none-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl",hashes = {sha256 = "466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154"}}, + {name = "ruff-0.14.10-py3-none-win_arm64.whl",url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl",hashes = {sha256 = "e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6"}}, +] +marker = "\"dev\" in extras" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "sphinx-autobuild" +version = "2025.8.25" requires-python = ">=3.11" -sdist = {name = "sphinx_design-0.7.0.tar.gz", url = "https://files.pythonhosted.org/packages/13/7b/804f311da4663a4aecc6cf7abd83443f3d4ded970826d0c958edc77d4527/sphinx_design-0.7.0.tar.gz", hashes = {sha256 = "d2a3f5b19c24b916adb52f97c5f00efab4009ca337812001109084a740ec9b7a"}} +sdist = {name = "sphinx_autobuild-2025.8.25.tar.gz", url = "https://files.pythonhosted.org/packages/e0/3c/a59a3a453d4133777f7ed2e83c80b7dc817d43c74b74298ca0af869662ad/sphinx_autobuild-2025.8.25.tar.gz", hashes = {sha256 = "9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213"}} wheels = [ - {name = "sphinx_design-0.7.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/30/cf/45dd359f6ca0c3762ce0490f681da242f0530c49c81050c035c016bfdd3a/sphinx_design-0.7.0-py3-none-any.whl",hashes = {sha256 = "f82bf179951d58f55dca78ab3706aeafa496b741a91b1911d371441127d64282"}}, + {name = "sphinx_autobuild-2025.8.25-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d7/20/56411b52f917696995f5ad27d2ea7e9492c84a043c5b49a3a3173573cd93/sphinx_autobuild-2025.8.25-py3-none-any.whl",hashes = {sha256 = "b750ac7d5a18603e4665294323fd20f6dcc0a984117026d1986704fa68f0379a"}}, +] +marker = "\"dev\" in extras" + +[packages.tool.pdm] +dependencies = [ + "colorama>=0.4.6", + "Sphinx", + "starlette>=0.35", + "uvicorn>=0.25", + "watchfiles>=0.20", + "websockets>=11", +] + +[[packages]] +name = "sphinx-design" +version = "0.6.1" +requires-python = ">=3.9" +sdist = {name = "sphinx_design-0.6.1.tar.gz", url = "https://files.pythonhosted.org/packages/2b/69/b34e0cb5336f09c6866d53b4a19d76c227cdec1bbc7ac4de63ca7d58c9c7/sphinx_design-0.6.1.tar.gz", hashes = {sha256 = "b44eea3719386d04d765c1a8257caca2b3e6f8421d7b3a5e742c0fd45f84e632"}} +wheels = [ + {name = "sphinx_design-0.6.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/c6/43/65c0acbd8cc6f50195a3a1fc195c404988b15c67090e73c7a41a9f57d6bd/sphinx_design-0.6.1-py3-none-any.whl",hashes = {sha256 = "b11f37db1a802a183d61b159d9a202314d4d2fe29c163437001324fe2f19549c"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ - "sphinx<10,>=7", + "sphinx<9,>=6", ] [[packages]] name = "sphinxcontrib-mermaid" -version = "2.0.0" -requires-python = ">=3.10" -sdist = {name = "sphinxcontrib_mermaid-2.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/96/a5/65a5c439cc14ba80483b9891e9350f11efb80cd3bdccb222f0c738068c78/sphinxcontrib_mermaid-2.0.0.tar.gz", hashes = {sha256 = "cf4f7d453d001132eaba5d1fdf53d42049f02e913213cf8337427483bfca26f4"}} +version = "1.2.3" +requires-python = ">=3.8" +sdist = {name = "sphinxcontrib_mermaid-1.2.3.tar.gz", url = "https://files.pythonhosted.org/packages/f5/49/c6ddfe709a4ab76ac6e5a00e696f73626b2c189dc1e1965a361ec102e6cc/sphinxcontrib_mermaid-1.2.3.tar.gz", hashes = {sha256 = "358699d0ec924ef679b41873d9edd97d0773446daf9760c75e18dc0adfd91371"}} wheels = [ - {name = "sphinxcontrib_mermaid-2.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/f9/de/bd96c69b62e967bffd02c6d89dfca9471b04e761c466725fc39746abf41d/sphinxcontrib_mermaid-2.0.0-py3-none-any.whl",hashes = {sha256 = "59a73249bbee2c74b1a4db036f8e8899ade65982bdda6712cf22b4f4e9874bb5"}}, + {name = "sphinxcontrib_mermaid-1.2.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d1/39/8b54299ffa00e597d3b0b4d042241a0a0b22cb429ad007ccfb9c1745b4d1/sphinxcontrib_mermaid-1.2.3-py3-none-any.whl",hashes = {sha256 = "5be782b27026bef97bfb15ccb2f7868b674a1afc0982b54cb149702cfc25aa02"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ - "jinja2", "sphinx", "pyyaml", ] @@ -467,134 +599,18 @@ marker = "\"dev\" in extras or \"mypy\" in extras" dependencies = [] [[packages]] -name = "black" -version = "26.1.0" -requires-python = ">=3.10" -sdist = {name = "black-26.1.0.tar.gz", url = "https://files.pythonhosted.org/packages/13/88/560b11e521c522440af991d46848a2bde64b5f7202ec14e1f46f9509d328/black-26.1.0.tar.gz", hashes = {sha256 = "d294ac3340eef9c9eb5d29288e96dc719ff269a88e27b396340459dd85da4c58"}} -wheels = [ - {name = "black-26.1.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/6a/83/be35a175aacfce4b05584ac415fd317dd6c24e93a0af2dcedce0f686f5d8/black-26.1.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "9dc8c71656a79ca49b8d3e2ce8103210c9481c57798b48deeb3a8bb02db5f115"}}, - {name = "black-26.1.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a5/f5/d33696c099450b1274d925a42b7a030cd3ea1f56d72e5ca8bbed5f52759c/black-26.1.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "b22b3810451abe359a964cc88121d57f7bce482b53a066de0f1584988ca36e79"}}, - {name = "black-26.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/1b/87/670dd888c537acb53a863bc15abbd85b22b429237d9de1b77c0ed6b79c42/black-26.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "53c62883b3f999f14e5d30b5a79bd437236658ad45b2f853906c7cbe79de00af"}}, - {name = "black-26.1.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fe/9c/cd3deb79bfec5bcf30f9d2100ffeec63eecce826eb63e3961708b9431ff1/black-26.1.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "f016baaadc423dc960cdddf9acae679e71ee02c4c341f78f3179d7e4819c095f"}}, - {name = "black-26.1.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/4e/29/f3be41a1cf502a283506f40f5d27203249d181f7a1a2abce1c6ce188035a/black-26.1.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "66912475200b67ef5a0ab665011964bf924745103f51977a78b4fb92a9fc1bf0"}}, - {name = "black-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/04/fa2f4784f7237279332aa735cdfd5ae2e7730db0072fb2041dadda9ae551/black-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "ba1d768fbfb6930fc93b0ecc32a43d8861ded16f47a40f14afa9bb04ab93d304"}}, - {name = "black-26.1.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/cf/ad/5a131b01acc0e5336740a039628c0ab69d60cf09a2c87a4ec49f5826acda/black-26.1.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "2b807c240b64609cb0e80d2200a35b23c7df82259f80bef1b2c96eb422b4aac9"}}, - {name = "black-26.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/da/7c/b05f22964316a52ab6b4265bcd52c0ad2c30d7ca6bd3d0637e438fc32d6e/black-26.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "1de0f7d01cc894066a1153b738145b194414cc6eeaad8ef4397ac9abacf40f6b"}}, - {name = "black-26.1.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a6/a3/e8d1526bea0446e040193185353920a9506eab60a7d8beb062029129c7d2/black-26.1.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "91a68ae46bf07868963671e4d05611b179c2313301bd756a89ad4e3b3db2325b"}}, - {name = "black-26.1.0-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/c7/5a/d62ebf4d8f5e3a1daa54adaab94c107b57be1b1a2f115a0249b41931e188/black-26.1.0-cp313-cp313-win_arm64.whl",hashes = {sha256 = "be5e2fe860b9bd9edbf676d5b60a9282994c03fbbd40fe8f5e75d194f96064ca"}}, - {name = "black-26.1.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/f5/13/710298938a61f0f54cdb4d1c0baeb672c01ff0358712eddaf29f76d32a0b/black-26.1.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "6eeca41e70b5f5c84f2f913af857cf2ce17410847e1d54642e658e078da6544f"}}, - {name = "black-26.1.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/79/a6/5179beaa57e5dbd2ec9f1c64016214057b4265647c62125aa6aeffb05392/black-26.1.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "dd39eef053e58e60204f2cdf059e2442e2eb08f15989eefe259870f89614c8b6"}}, - {name = "black-26.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/8c/04/c96f79d7b93e8f09d9298b333ca0d31cd9b2ee6c46c274fd0f531de9dc61/black-26.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9459ad0d6cd483eacad4c6566b0f8e42af5e8b583cee917d90ffaa3778420a0a"}}, - {name = "black-26.1.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/49/f9/71c161c4c7aa18bdda3776b66ac2dc07aed62053c7c0ff8bbda8c2624fe2/black-26.1.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "a19915ec61f3a8746e8b10adbac4a577c6ba9851fa4a9e9fbfbcf319887a5791"}}, - {name = "black-26.1.0-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/4a/8b/a7b0f974e473b159d0ac1b6bcefffeb6bec465898a516ee5cc989503cbc7/black-26.1.0-cp312-cp312-win_arm64.whl",hashes = {sha256 = "643d27fb5facc167c0b1b59d0315f2674a6e950341aed0fc05cf307d22bf4954"}}, - {name = "black-26.1.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/30/83/f05f22ff13756e1a8ce7891db517dbc06200796a16326258268f4658a745/black-26.1.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "3cee1487a9e4c640dc7467aaa543d6c0097c391dc8ac74eb313f2fbf9d7a7cb5"}}, - {name = "black-26.1.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7d/f2/b2c570550e39bedc157715e43927360312d6dd677eed2cc149a802577491/black-26.1.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "d62d14ca31c92adf561ebb2e5f2741bf8dea28aef6deb400d49cca011d186c68"}}, - {name = "black-26.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/7a/d7/990d6a94dc9e169f61374b1c3d4f4dd3037e93c2cc12b6f3b12bc663aa7b/black-26.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "fb1dafbbaa3b1ee8b4550a84425aac8874e5f390200f5502cf3aee4a2acb2f14"}}, - {name = "black-26.1.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/36/1c/cbd7bae7dd3cb315dfe6eeca802bb56662cc92b89af272e014d98c1f2286/black-26.1.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "101540cb2a77c680f4f80e628ae98bd2bd8812fb9d72ade4f8995c5ff019e82c"}}, - {name = "black-26.1.0-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/59/b1/9fe6132bb2d0d1f7094613320b56297a108ae19ecf3041d9678aec381b37/black-26.1.0-cp311-cp311-win_arm64.whl",hashes = {sha256 = "6f3977a16e347f1b115662be07daa93137259c711e526402aa444d7a88fdc9d4"}}, - {name = "black-26.1.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/e4/3d/51bdb3ecbfadfaf825ec0c75e1de6077422b4afa2091c6c9ba34fbfc0c2d/black-26.1.0-py3-none-any.whl",hashes = {sha256 = "1054e8e47ebd686e078c0bb0eaf31e6ce69c966058d122f2c0c950311f9f3ede"}}, -] -marker = "\"dev\" in extras" - -[packages.tool.pdm] -dependencies = [ - "click>=8.0.0", - "mypy-extensions>=0.4.3", - "packaging>=22.0", - "pathspec>=1.0.0", - "platformdirs>=2", - "pytokens>=0.3.0", - "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=4.0.1; python_version < \"3.11\"", -] - -[[packages]] -name = "platformdirs" -version = "4.5.1" -requires-python = ">=3.10" -sdist = {name = "platformdirs-4.5.1.tar.gz", url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hashes = {sha256 = "61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"}} -wheels = [ - {name = "platformdirs-4.5.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl",hashes = {sha256 = "d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"}}, -] -marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "remote-pdb" -version = "2.1.0" -requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -sdist = {name = "remote-pdb-2.1.0.tar.gz", url = "https://files.pythonhosted.org/packages/e4/b5/4944cac06fd9fc4a2e168313ec220aa25ed96ce83947b63eea5b4045b22d/remote-pdb-2.1.0.tar.gz", hashes = {sha256 = "2d70c6f41e0eabf0165e8f1be58f82aa7a605aaeab8f2aefeb9ce246431091c1"}} -wheels = [ - {name = "remote_pdb-2.1.0-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/71/c5/d208c66344bb785d800adb61aef512290d3473052b9e7697890f0547aff2/remote_pdb-2.1.0-py2.py3-none-any.whl",hashes = {sha256 = "94f73a92ac1248cf16189211011f97096bdada8a7baac8c79372663bbb57b5d0"}}, -] -marker = "\"dev\" in extras" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "ruamel-yaml" -version = "0.19.1" +name = "pytest-mock" +version = "3.15.1" requires-python = ">=3.9" -sdist = {name = "ruamel_yaml-0.19.1.tar.gz", url = "https://files.pythonhosted.org/packages/c7/3b/ebda527b56beb90cb7652cb1c7e4f91f48649fbcd8d2eb2fb6e77cd3329b/ruamel_yaml-0.19.1.tar.gz", hashes = {sha256 = "53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993"}} +sdist = {name = "pytest_mock-3.15.1.tar.gz", url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hashes = {sha256 = "1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f"}} wheels = [ - {name = "ruamel_yaml-0.19.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl",hashes = {sha256 = "27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93"}}, + {name = "pytest_mock-3.15.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl",hashes = {sha256 = "0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d"}}, ] -marker = "\"default\" in dependency_groups" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "ruff" -version = "0.14.13" -requires-python = ">=3.7" -sdist = {name = "ruff-0.14.13.tar.gz", url = "https://files.pythonhosted.org/packages/50/0a/1914efb7903174b381ee2ffeebb4253e729de57f114e63595114c8ca451f/ruff-0.14.13.tar.gz", hashes = {sha256 = "83cd6c0763190784b99650a20fec7633c59f6ebe41c5cc9d45ee42749563ad47"}} -wheels = [ - {name = "ruff-0.14.13-py3-none-linux_armv6l.whl",url = "https://files.pythonhosted.org/packages/c3/ae/0deefbc65ca74b0ab1fd3917f94dc3b398233346a74b8bbb0a916a1a6bf6/ruff-0.14.13-py3-none-linux_armv6l.whl",hashes = {sha256 = "76f62c62cd37c276cb03a275b198c7c15bd1d60c989f944db08a8c1c2dbec18b"}}, - {name = "ruff-0.14.13-py3-none-macosx_10_12_x86_64.whl",url = "https://files.pythonhosted.org/packages/47/df/5916604faa530a97a3c154c62a81cb6b735c0cb05d1e26d5ad0f0c8ac48a/ruff-0.14.13-py3-none-macosx_10_12_x86_64.whl",hashes = {sha256 = "914a8023ece0528d5cc33f5a684f5f38199bbb566a04815c2c211d8f40b5d0ed"}}, - {name = "ruff-0.14.13-py3-none-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/4c/f3/e0e694dd69163c3a1671e102aa574a50357536f18a33375050334d5cd517/ruff-0.14.13-py3-none-macosx_11_0_arm64.whl",hashes = {sha256 = "d24899478c35ebfa730597a4a775d430ad0d5631b8647a3ab368c29b7e7bd063"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/c3/e8/67f5fcbbaee25e8fc3b56cc33e9892eca7ffe09f773c8e5907757a7e3bdb/ruff-0.14.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "9aaf3870f14d925bbaf18b8a2347ee0ae7d95a2e490e4d4aea6813ed15ebc80e"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",url = "https://files.pythonhosted.org/packages/6b/ce/d2e9cb510870b52a9565d885c0d7668cc050e30fa2c8ac3fb1fda15c083d/ruff-0.14.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",hashes = {sha256 = "ac5b7f63dd3b27cc811850f5ffd8fff845b00ad70e60b043aabf8d6ecc304e09"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/88/00/c38e5da58beebcf4fa32d0ddd993b63dfacefd02ab7922614231330845bf/ruff-0.14.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "78d2b1097750d90ba82ce4ba676e85230a0ed694178ca5e61aa9b459970b3eb9"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",url = "https://files.pythonhosted.org/packages/61/61/cd37c9dd5bd0a3099ba79b2a5899ad417d8f3b04038810b0501a80814fd7/ruff-0.14.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",hashes = {sha256 = "7d0bf87705acbbcb8d4c24b2d77fbb73d40210a95c3903b443cd9e30824a5032"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",url = "https://files.pythonhosted.org/packages/56/8a/85502d7edbf98c2df7b8876f316c0157359165e16cdf98507c65c8d07d3d/ruff-0.14.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",hashes = {sha256 = "a3eb5da8e2c9e9f13431032fdcbe7681de9ceda5835efee3269417c13f1fed5c"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",url = "https://files.pythonhosted.org/packages/7e/2f/de0df127feb2ee8c1e54354dc1179b4a23798f0866019528c938ba439aca/ruff-0.14.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",hashes = {sha256 = "642442b42957093811cd8d2140dfadd19c7417030a7a68cf8d51fcdd5f217427"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/0d/77/9b99686bb9fe07a757c82f6f95e555c7a47801a9305576a9c67e0a31d280/ruff-0.14.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "4acdf009f32b46f6e8864af19cbf6841eaaed8638e65c8dac845aea0d703c841"}}, - {name = "ruff-0.14.13-py3-none-manylinux_2_31_riscv64.whl",url = "https://files.pythonhosted.org/packages/7d/46/2bdcb34a87a179a4d23022d818c1c236cb40e477faf0d7c9afb6813e5876/ruff-0.14.13-py3-none-manylinux_2_31_riscv64.whl",hashes = {sha256 = "591a7f68860ea4e003917d19b5c4f5ac39ff558f162dc753a2c5de897fd5502c"}}, - {name = "ruff-0.14.13-py3-none-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/1a/a9/5c6a4f56a0512c691cf143371bcf60505ed0f0860f24a85da8bd123b2bf1/ruff-0.14.13-py3-none-musllinux_1_2_aarch64.whl",hashes = {sha256 = "774c77e841cc6e046fc3e91623ce0903d1cd07e3a36b1a9fe79b81dab3de506b"}}, - {name = "ruff-0.14.13-py3-none-musllinux_1_2_armv7l.whl",url = "https://files.pythonhosted.org/packages/fe/bb/b920016ece7651fa7fcd335d9d199306665486694d4361547ccb19394c44/ruff-0.14.13-py3-none-musllinux_1_2_armv7l.whl",hashes = {sha256 = "61f4e40077a1248436772bb6512db5fc4457fe4c49e7a94ea7c5088655dd21ae"}}, - {name = "ruff-0.14.13-py3-none-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/7d/b3/0bd909851e5696cd21e32a8fc25727e5f58f1934b3596975503e6e85415c/ruff-0.14.13-py3-none-musllinux_1_2_i686.whl",hashes = {sha256 = "6d02f1428357fae9e98ac7aa94b7e966fd24151088510d32cf6f902d6c09235e"}}, - {name = "ruff-0.14.13-py3-none-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/3b/3b/e2d94cb613f6bbd5155a75cbe072813756363eba46a3f2177a1fcd0cd670/ruff-0.14.13-py3-none-musllinux_1_2_x86_64.whl",hashes = {sha256 = "e399341472ce15237be0c0ae5fbceca4b04cd9bebab1a2b2c979e015455d8f0c"}}, - {name = "ruff-0.14.13-py3-none-win32.whl",url = "https://files.pythonhosted.org/packages/6a/c5/abd840d4132fd51a12f594934af5eba1d5d27298a6f5b5d6c3be45301caf/ruff-0.14.13-py3-none-win32.whl",hashes = {sha256 = "ef720f529aec113968b45dfdb838ac8934e519711da53a0456038a0efecbd680"}}, - {name = "ruff-0.14.13-py3-none-win_amd64.whl",url = "https://files.pythonhosted.org/packages/c2/55/6384b0b8ce731b6e2ade2b5449bf07c0e4c31e8a2e68ea65b3bafadcecc5/ruff-0.14.13-py3-none-win_amd64.whl",hashes = {sha256 = "6070bd026e409734b9257e03e3ef18c6e1a216f0435c6751d7a8ec69cb59abef"}}, - {name = "ruff-0.14.13-py3-none-win_arm64.whl",url = "https://files.pythonhosted.org/packages/4d/e1/7348090988095e4e39560cfc2f7555b1b2a7357deba19167b600fdf5215d/ruff-0.14.13-py3-none-win_arm64.whl",hashes = {sha256 = "7ab819e14f1ad9fe39f246cfcc435880ef7a9390d81a2b6ac7e01039083dd247"}}, -] -marker = "\"dev\" in extras" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "sphinx-autobuild" -version = "2025.8.25" -requires-python = ">=3.11" -sdist = {name = "sphinx_autobuild-2025.8.25.tar.gz", url = "https://files.pythonhosted.org/packages/e0/3c/a59a3a453d4133777f7ed2e83c80b7dc817d43c74b74298ca0af869662ad/sphinx_autobuild-2025.8.25.tar.gz", hashes = {sha256 = "9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213"}} -wheels = [ - {name = "sphinx_autobuild-2025.8.25-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d7/20/56411b52f917696995f5ad27d2ea7e9492c84a043c5b49a3a3173573cd93/sphinx_autobuild-2025.8.25-py3-none-any.whl",hashes = {sha256 = "b750ac7d5a18603e4665294323fd20f6dcc0a984117026d1986704fa68f0379a"}}, -] -marker = "\"dev\" in extras" +marker = "\"dev\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [ - "colorama>=0.4.6", - "Sphinx", - "starlette>=0.35", - "uvicorn>=0.25", - "watchfiles>=0.20", - "websockets>=11", + "pytest>=6.2.5", ] [[packages]] @@ -773,11 +789,11 @@ dependencies = [] [[packages]] name = "markdown-it-py" -version = "4.0.0" -requires-python = ">=3.10" -sdist = {name = "markdown_it_py-4.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hashes = {sha256 = "cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}} +version = "3.0.0" +requires-python = ">=3.8" +sdist = {name = "markdown-it-py-3.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hashes = {sha256 = "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}} wheels = [ - {name = "markdown_it_py-4.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl",hashes = {sha256 = "87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}}, + {name = "markdown_it_py-3.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl",hashes = {sha256 = "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}}, ] marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras or \"tests\" in extras" @@ -786,6 +802,21 @@ dependencies = [ "mdurl~=0.1", ] +[[packages]] +name = "mdit-py-plugins" +version = "0.5.0" +requires-python = ">=3.10" +sdist = {name = "mdit_py_plugins-0.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hashes = {sha256 = "f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6"}} +wheels = [ + {name = "mdit_py_plugins-0.5.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl",hashes = {sha256 = "07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f"}}, +] +marker = "\"dev\" in extras or \"docs\" in extras" + +[packages.tool.pdm] +dependencies = [ + "markdown-it-py<5.0.0,>=2.0.0", +] + [[packages]] name = "mypy-extensions" version = "1.1.0" @@ -801,11 +832,11 @@ dependencies = [] [[packages]] name = "pathspec" -version = "1.0.3" -requires-python = ">=3.9" -sdist = {name = "pathspec-1.0.3.tar.gz", url = "https://files.pythonhosted.org/packages/4c/b2/bb8e495d5262bfec41ab5cb18f522f1012933347fb5d9e62452d446baca2/pathspec-1.0.3.tar.gz", hashes = {sha256 = "bac5cf97ae2c2876e2d25ebb15078eb04d76e4b98921ee31c6f85ade8b59444d"}} +version = "0.12.1" +requires-python = ">=3.8" +sdist = {name = "pathspec-0.12.1.tar.gz", url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hashes = {sha256 = "a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}} wheels = [ - {name = "pathspec-1.0.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl",hashes = {sha256 = "e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c"}}, + {name = "pathspec-0.12.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl",hashes = {sha256 = "a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}}, ] marker = "\"dev\" in extras or \"mypy\" in extras" @@ -1226,65 +1257,65 @@ dependencies = [] [[packages]] name = "librt" -version = "0.7.8" +version = "0.7.4" requires-python = ">=3.9" -sdist = {name = "librt-0.7.8.tar.gz", url = "https://files.pythonhosted.org/packages/e7/24/5f3646ff414285e0f7708fa4e946b9bf538345a41d1c375c439467721a5e/librt-0.7.8.tar.gz", hashes = {sha256 = "1a4ede613941d9c3470b0368be851df6bb78ab218635512d0370b27a277a0862"}} -wheels = [ - {name = "librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/1a/73/fa8814c6ce2d49c3827829cadaa1589b0bf4391660bd4510899393a23ebc/librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl",hashes = {sha256 = "be927c3c94c74b05128089a955fba86501c3b544d1d300282cc1b4bd370cb418"}}, - {name = "librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/53/fe/f6c70956da23ea235fd2e3cc16f4f0b4ebdfd72252b02d1164dd58b4e6c3/librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "7b0803e9008c62a7ef79058233db7ff6f37a9933b8f2573c05b07ddafa226611"}}, - {name = "librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/1f/4d/7a2481444ac5fba63050d9abe823e6bc16896f575bfc9c1e5068d516cdce/librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "79feb4d00b2a4e0e05c9c56df707934f41fcb5fe53fd9efb7549068d0495b758"}}, - {name = "librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/ac/3c/10901d9e18639f8953f57c8986796cfbf4c1c514844a41c9197cf87cb707/librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b9122094e3f24aa759c38f46bd8863433820654927370250f460ae75488b66ea"}}, - {name = "librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/db/01/5cbdde0951a5090a80e5ba44e6357d375048123c572a23eecfb9326993a7/librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "7e03bea66af33c95ce3addf87a9bf1fcad8d33e757bc479957ddbc0e4f7207ac"}}, - {name = "librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/b4/e80528d2f4b7eaf1d437fcbd6fc6ba4cbeb3e2a0cb9ed5a79f47c7318706/librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f1ade7f31675db00b514b98f9ab9a7698c7282dad4be7492589109471852d398"}}, - {name = "librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/c1/ab/938368f8ce31a9787ecd4becb1e795954782e4312095daf8fd22420227c8/librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl",hashes = {sha256 = "a14229ac62adcf1b90a15992f1ab9c69ae8b99ffb23cb64a90878a6e8a2f5b81"}}, - {name = "librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/3c/10/559c310e7a6e4014ac44867d359ef8238465fb499e7eb31b6bfe3e3f86f5/librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5bcaaf624fd24e6a0cb14beac37677f90793a96864c67c064a91458611446e83"}}, - {name = "librt-0.7.8-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/f8/db/a0db7acdb6290c215f343835c6efda5b491bb05c3ddc675af558f50fdba3/librt-0.7.8-cp314-cp314-win32.whl",hashes = {sha256 = "7aa7d5457b6c542ecaed79cec4ad98534373c9757383973e638ccced0f11f46d"}}, - {name = "librt-0.7.8-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/72/e0/4f9bdc2a98a798511e81edcd6b54fe82767a715e05d1921115ac70717f6f/librt-0.7.8-cp314-cp314-win_amd64.whl",hashes = {sha256 = "3d1322800771bee4a91f3b4bd4e49abc7d35e65166821086e5afd1e6c0d9be44"}}, - {name = "librt-0.7.8-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/f9/3d/59c6402e3dec2719655a41ad027a7371f8e2334aa794ed11533ad5f34969/librt-0.7.8-cp314-cp314-win_arm64.whl",hashes = {sha256 = "5363427bc6a8c3b1719f8f3845ea53553d301382928a86e8fab7984426949bce"}}, - {name = "librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/4e/9c/2481d80950b83085fb14ba3c595db56330d21bbc7d88a19f20165f3538db/librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl",hashes = {sha256 = "ca916919793a77e4a98d4a1701e345d337ce53be4a16620f063191f7322ac80f"}}, - {name = "librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/96/79/108df2cfc4e672336765d54e3ff887294c1cc36ea4335c73588875775527/librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "54feb7b4f2f6706bb82325e836a01be805770443e2400f706e824e91f6441dde"}}, - {name = "librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/46/f2/30179898f9994a5637459d6e169b6abdc982012c0a4b2d4c26f50c06f911/librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "39a4c76fee41007070f872b648cc2f711f9abf9a13d0c7162478043377b52c8e"}}, - {name = "librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/b4/da/f7563db55cebdc884f518ba3791ad033becc25ff68eb70902b1747dc0d70/librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "ac9c8a458245c7de80bc1b9765b177055efff5803f08e548dd4bb9ab9a8d789b"}}, - {name = "librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/6c/4289acf076ad371471fa86718c30ae353e690d3de6167f7db36f429272f1/librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "95b67aa7eff150f075fda09d11f6bfb26edffd300f6ab1666759547581e8f666"}}, - {name = "librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/4a/7f/377521ac25b78ac0a5ff44127a0360ee6d5ddd3ce7327949876a30533daa/librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "535929b6eff670c593c34ff435d5440c3096f20fa72d63444608a5aef64dd581"}}, - {name = "librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/c5/b1/e1e96c3e20b23d00cf90f4aad48f0deb4cdfec2f0ed8380d0d85acf98bbf/librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl",hashes = {sha256 = "63937bd0f4d1cb56653dc7ae900d6c52c41f0015e25aaf9902481ee79943b33a"}}, - {name = "librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/43/71/0f5d010e92ed9747e14bef35e91b6580533510f1e36a8a09eb79ee70b2f0/librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "cf243da9e42d914036fd362ac3fa77d80a41cadcd11ad789b1b5eec4daaf67ca"}}, - {name = "librt-0.7.8-cp314-cp314t-win32.whl",url = "https://files.pythonhosted.org/packages/22/f0/07fb6ab5c39a4ca9af3e37554f9d42f25c464829254d72e4ebbd81da351c/librt-0.7.8-cp314-cp314t-win32.whl",hashes = {sha256 = "171ca3a0a06c643bd0a2f62a8944e1902c94aa8e5da4db1ea9a8daf872685365"}}, - {name = "librt-0.7.8-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/24/d4/7e4be20993dc6a782639625bd2f97f3c66125c7aa80c82426956811cfccf/librt-0.7.8-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "445b7304145e24c60288a2f172b5ce2ca35c0f81605f5299f3fa567e189d2e32"}}, - {name = "librt-0.7.8-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/fc/85/69f92b2a7b3c0f88ffe107c86b952b397004b5b8ea5a81da3d9c04c04422/librt-0.7.8-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "8766ece9de08527deabcd7cb1b4f1a967a385d26e33e536d6d8913db6ef74f06"}}, - {name = "librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/a1/fe/b1f9de2829cf7fc7649c1dcd202cfd873837c5cc2fc9e526b0e7f716c3d2/librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "4c3995abbbb60b3c129490fa985dfe6cac11d88fc3c36eeb4fb1449efbbb04fc"}}, - {name = "librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/eb/d4/4a60fbe2e53b825f5d9a77325071d61cd8af8506255067bf0c8527530745/librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "44e0c2cbc9bebd074cf2cdbe472ca185e824be4e74b1c63a8e934cea674bebf2"}}, - {name = "librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/6a/37/61ff80341ba5159afa524445f2d984c30e2821f31f7c73cf166dcafa5564/librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "4d2f1e492cae964b3463a03dc77a7fe8742f7855d7258c7643f0ee32b6651dd3"}}, - {name = "librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/1c/86/13d4f2d6a93f181ebf2fc953868826653ede494559da8268023fe567fca3/librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "451e7ffcef8f785831fdb791bd69211f47e95dc4c6ddff68e589058806f044c6"}}, - {name = "librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/88/26/e24ef01305954fc4d771f1f09f3dd682f9eb610e1bec188ffb719374d26e/librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "3469e1af9f1380e093ae06bedcbdd11e407ac0b303a56bbe9afb1d6824d4982d"}}, - {name = "librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/88/a0/92b6bd060e720d7a31ed474d046a69bd55334ec05e9c446d228c4b806ae3/librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f11b300027ce19a34f6d24ebb0a25fd0e24a9d53353225a5c1e6cadbf2916b2e"}}, - {name = "librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/06/bb/6f4c650253704279c3a214dad188101d1b5ea23be0606628bc6739456624/librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "4adc73614f0d3c97874f02f2c7fd2a27854e7e24ad532ea6b965459c5b757eca"}}, - {name = "librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/dc/00/1c409618248d43240cadf45f3efb866837fa77e9a12a71481912135eb481/librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "60c299e555f87e4c01b2eca085dfccda1dde87f5a604bb45c2906b8305819a93"}}, - {name = "librt-0.7.8-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/d9/83/b2cfe8e76ff5c1c77f8a53da3d5de62d04b5ebf7cf913e37f8bca43b5d07/librt-0.7.8-cp313-cp313-win32.whl",hashes = {sha256 = "b09c52ed43a461994716082ee7d87618096851319bf695d57ec123f2ab708951"}}, - {name = "librt-0.7.8-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a9/0b/c59d45de56a51bd2d3a401fc63449c0ac163e4ef7f523ea8b0c0dee86ec5/librt-0.7.8-cp313-cp313-win_amd64.whl",hashes = {sha256 = "f8f4a901a3fa28969d6e4519deceab56c55a09d691ea7b12ca830e2fa3461e34"}}, - {name = "librt-0.7.8-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/fc/b9/973455cec0a1ec592395250c474164c4a58ebf3e0651ee920fef1a2623f1/librt-0.7.8-cp313-cp313-win_arm64.whl",hashes = {sha256 = "43d4e71b50763fcdcf64725ac680d8cfa1706c928b844794a7aa0fa9ac8e5f09"}}, - {name = "librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/56/04/79d8fcb43cae376c7adbab7b2b9f65e48432c9eced62ac96703bcc16e09b/librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "9b6943885b2d49c48d0cff23b16be830ba46b0152d98f62de49e735c6e655a63"}}, - {name = "librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b4/ba/60b96e93043d3d659da91752689023a73981336446ae82078cddf706249e/librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "46ef1f4b9b6cc364b11eea0ecc0897314447a66029ee1e55859acb3dd8757c93"}}, - {name = "librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/7c/26/5215e4cdcc26e7be7eee21955a7e13cbf1f6d7d7311461a6014544596fac/librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "907ad09cfab21e3c86e8f1f87858f7049d1097f77196959c033612f532b4e592"}}, - {name = "librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/0f/84/e8d1bc86fa0159bfc24f3d798d92cafd3897e84c7fea7fe61b3220915d76/librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "2991b6c3775383752b3ca0204842743256f3ad3deeb1d0adc227d56b78a9a850"}}, - {name = "librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/57/11/d0268c4b94717a18aa91df1100e767b010f87b7ae444dafaa5a2d80f33a6/librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "03679b9856932b8c8f674e87aa3c55ea11c9274301f76ae8dc4d281bda55cf62"}}, - {name = "librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/8d/56/1e8e833b95fe684f80f8894ae4d8b7d36acc9203e60478fcae599120a975/librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "3968762fec1b2ad34ce57458b6de25dbb4142713e9ca6279a0d352fa4e9f452b"}}, - {name = "librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/17/48/f11cf28a2cb6c31f282009e2208312aa84a5ee2732859f7856ee306176d5/librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "bb7a7807523a31f03061288cc4ffc065d684c39db7644c676b47d89553c0d714"}}, - {name = "librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/b8/6a/d7c116c6da561b9155b184354a60a3d5cdbf08fc7f3678d09c95679d13d9/librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "ad64a14b1e56e702e19b24aae108f18ad1bf7777f3af5fcd39f87d0c5a814449"}}, - {name = "librt-0.7.8-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/61/de/1975200bb0285fc921c5981d9978ce6ce11ae6d797df815add94a5a848a3/librt-0.7.8-cp312-cp312-win32.whl",hashes = {sha256 = "0241a6ed65e6666236ea78203a73d800dbed896cf12ae25d026d75dc1fcd1dac"}}, - {name = "librt-0.7.8-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8e/cd/724f2d0b3461426730d4877754b65d39f06a41ac9d0a92d5c6840f72b9ae/librt-0.7.8-cp312-cp312-win_amd64.whl",hashes = {sha256 = "6db5faf064b5bab9675c32a873436b31e01d66ca6984c6f7f92621656033a708"}}, - {name = "librt-0.7.8-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/bd/cf/7e899acd9ee5727ad8160fdcc9994954e79fab371c66535c60e13b968ffc/librt-0.7.8-cp312-cp312-win_arm64.whl",hashes = {sha256 = "57175aa93f804d2c08d2edb7213e09276bd49097611aefc37e3fa38d1fb99ad0"}}, - {name = "librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/1b/a3/87ea9c1049f2c781177496ebee29430e4631f439b8553a4969c88747d5d8/librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "ff3e9c11aa260c31493d4b3197d1e28dd07768594a4f92bec4506849d736248f"}}, - {name = "librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/5e/4a/23bcef149f37f771ad30203d561fcfd45b02bc54947b91f7a9ac34815747/librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "ddb52499d0b3ed4aa88746aaf6f36a08314677d5c346234c3987ddc506404eac"}}, - {name = "librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/22/6e/46eb9b85c1b9761e0f42b6e6311e1cc544843ac897457062b9d5d0b21df4/librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "e9c0afebbe6ce177ae8edba0c7c4d626f2a0fc12c33bb993d163817c41a7a05c"}}, - {name = "librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/7a/3f/aa7c7f6829fb83989feb7ba9aa11c662b34b4bd4bd5b262f2876ba3db58d/librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "631599598e2c76ded400c0a8722dec09217c89ff64dc54b060f598ed68e7d2a8"}}, - {name = "librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/3f/2d/d57d154b40b11f2cb851c4df0d4c4456bacd9b1ccc4ecb593ddec56c1a8b/librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9c1ba843ae20db09b9d5c80475376168feb2640ce91cd9906414f23cc267a1ff"}}, - {name = "librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/59/f9/36c4dad00925c16cd69d744b87f7001792691857d3b79187e7a673e812fb/librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "b5b007bb22ea4b255d3ee39dfd06d12534de2fcc3438567d9f48cdaf67ae1ae3"}}, - {name = "librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/23/9b/8a9889d3df5efb67695a67785028ccd58e661c3018237b73ad081691d0cb/librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "dbd79caaf77a3f590cbe32dc2447f718772d6eea59656a7dcb9311161b10fa75"}}, - {name = "librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/43/64/54d6ef11afca01fef8af78c230726a9394759f2addfbf7afc5e3cc032a45/librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "87808a8d1e0bd62a01cafc41f0fd6818b5a5d0ca0d8a55326a81643cdda8f873"}}, - {name = "librt-0.7.8-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/2d/29/73e7ed2991330b28919387656f54109139b49e19cd72902f466bd44415fd/librt-0.7.8-cp311-cp311-win32.whl",hashes = {sha256 = "31724b93baa91512bd0a376e7cf0b59d8b631ee17923b1218a65456fa9bda2e7"}}, - {name = "librt-0.7.8-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/3f/de/66766ff48ed02b4d78deea30392ae200bcbd99ae61ba2418b49fd50a4831/librt-0.7.8-cp311-cp311-win_amd64.whl",hashes = {sha256 = "978e8b5f13e52cf23a9e80f3286d7546baa70bc4ef35b51d97a709d0b28e537c"}}, - {name = "librt-0.7.8-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/6f/e3/33450438ff3a8c581d4ed7f798a70b07c3206d298cf0b87d3806e72e3ed8/librt-0.7.8-cp311-cp311-win_arm64.whl",hashes = {sha256 = "20e3946863d872f7cabf7f77c6c9d370b8b3d74333d3a32471c50d3a86c0a232"}}, +sdist = {name = "librt-0.7.4.tar.gz", url = "https://files.pythonhosted.org/packages/93/e4/b59bdf1197fdf9888452ea4d2048cdad61aef85eb83e99dc52551d7fdc04/librt-0.7.4.tar.gz", hashes = {sha256 = "3871af56c59864d5fd21d1ac001eb2fb3b140d52ba0454720f2e4a19812404ba"}} +wheels = [ + {name = "librt-0.7.4-cp314-cp314-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/74/81/6921e65c8708eb6636bbf383aa77e6c7dad33a598ed3b50c313306a2da9d/librt-0.7.4-cp314-cp314-macosx_10_13_x86_64.whl",hashes = {sha256 = "4f1ee004942eaaed6e06c087d93ebc1c67e9a293e5f6b9b5da558df6bf23dc5d"}}, + {name = "librt-0.7.4-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/0d/d6/3eb864af8a8de8b39cc8dd2e9ded1823979a27795d72c4eea0afa8c26c9f/librt-0.7.4-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "d854c6dc0f689bad7ed452d2a3ecff58029d80612d336a45b62c35e917f42d23"}}, + {name = "librt-0.7.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/49/bc/b1d4c0711fdf79646225d576faee8747b8528a6ec1ceb6accfd89ade7102/librt-0.7.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "a4f7339d9e445280f23d63dea842c0c77379c4a47471c538fc8feedab9d8d063"}}, + {name = "librt-0.7.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2c/08/61c41cd8f0a6a41fc99ea78a2205b88187e45ba9800792410ed62f033584/librt-0.7.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "39003fc73f925e684f8521b2dbf34f61a5deb8a20a15dcf53e0d823190ce8848"}}, + {name = "librt-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/8b/c7/4ee18b4d57f01444230bc18cf59103aeab8f8c0f45e84e0e540094df1df1/librt-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "6bb15ee29d95875ad697d449fe6071b67f730f15a6961913a2b0205015ca0843"}}, + {name = "librt-0.7.4-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/a1/af/009e8ba3fbf830c936842da048eda1b34b99329f402e49d88fafff6525d1/librt-0.7.4-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "02a69369862099e37d00765583052a99d6a68af7e19b887e1b78fee0146b755a"}}, + {name = "librt-0.7.4-cp314-cp314-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/85/26/51ae25f813656a8b117c27a974f25e8c1e90abcd5a791ac685bf5b489a1b/librt-0.7.4-cp314-cp314-musllinux_1_2_i686.whl",hashes = {sha256 = "ec72342cc4d62f38b25a94e28b9efefce41839aecdecf5e9627473ed04b7be16"}}, + {name = "librt-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/48/93/36d6c71f830305f88996b15c8e017aa8d1e03e2e947b40b55bbf1a34cf24/librt-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "776dbb9bfa0fc5ce64234b446995d8d9f04badf64f544ca036bd6cff6f0732ce"}}, + {name = "librt-0.7.4-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/08/11/8299e70862bb9d704735bf132c6be09c17b00fbc7cda0429a9df222fdc1b/librt-0.7.4-cp314-cp314-win32.whl",hashes = {sha256 = "0f8cac84196d0ffcadf8469d9ded4d4e3a8b1c666095c2a291e22bf58e1e8a9f"}}, + {name = "librt-0.7.4-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/54/d5/656b0126e4e0f8e2725cd2d2a1ec40f71f37f6f03f135a26b663c0e1a737/librt-0.7.4-cp314-cp314-win_amd64.whl",hashes = {sha256 = "037f5cb6fe5abe23f1dc058054d50e9699fcc90d0677eee4e4f74a8677636a1a"}}, + {name = "librt-0.7.4-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/60/86/465ff07b75c1067da8fa7f02913c4ead096ef106cfac97a977f763783bfb/librt-0.7.4-cp314-cp314-win_arm64.whl",hashes = {sha256 = "a5deebb53d7a4d7e2e758a96befcd8edaaca0633ae71857995a0f16033289e44"}}, + {name = "librt-0.7.4-cp314-cp314t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/a0/24941f85960774a80d4b3c2aec651d7d980466da8101cae89e8b032a3e21/librt-0.7.4-cp314-cp314t-macosx_10_13_x86_64.whl",hashes = {sha256 = "b4c25312c7f4e6ab35ab16211bdf819e6e4eddcba3b2ea632fb51c9a2a97e105"}}, + {name = "librt-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/77/a0/ddb259cae86ab415786c1547d0fe1b40f04a7b089f564fd5c0242a3fafb2/librt-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "618b7459bb392bdf373f2327e477597fff8f9e6a1878fffc1b711c013d1b0da4"}}, + {name = "librt-0.7.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/31/11/77823cb530ab8a0c6fac848ac65b745be446f6f301753b8990e8809080c9/librt-0.7.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "1437c3f72a30c7047f16fd3e972ea58b90172c3c6ca309645c1c68984f05526a"}}, + {name = "librt-0.7.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/a4/ce/157db3614cf3034b3f702ae5ba4fefda4686f11eea4b7b96542324a7a0e7/librt-0.7.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "c96cb76f055b33308f6858b9b594618f1b46e147a4d03a4d7f0c449e304b9b95"}}, + {name = "librt-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/30/ef/6ec4c7e3d6490f69a4fd2803516fa5334a848a4173eac26d8ee6507bff6e/librt-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "28f990e6821204f516d09dc39966ef8b84556ffd648d5926c9a3f681e8de8906"}}, + {name = "librt-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/ad/22/750b37bf549f60a4782ab80e9d1e9c44981374ab79a7ea68670159905918/librt-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "bc4aebecc79781a1b77d7d4e7d9fe080385a439e198d993b557b60f9117addaf"}}, + {name = "librt-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/7a/87/2e8a0f584412a93df5faad46c5fa0a6825fdb5eba2ce482074b114877f44/librt-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl",hashes = {sha256 = "022cc673e69283a42621dd453e2407cf1647e77f8bd857d7ad7499901e62376f"}}, + {name = "librt-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/e5/ca/7bf78fa950e43b564b7de52ceeb477fb211a11f5733227efa1591d05a307/librt-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "2b3ca211ae8ea540569e9c513da052699b7b06928dcda61247cb4f318122bdb5"}}, + {name = "librt-0.7.4-cp314-cp314t-win32.whl",url = "https://files.pythonhosted.org/packages/d6/49/3732b0e8424ae35ad5c3166d9dd5bcdae43ce98775e0867a716ff5868064/librt-0.7.4-cp314-cp314t-win32.whl",hashes = {sha256 = "8a461f6456981d8c8e971ff5a55f2e34f4e60871e665d2f5fde23ee74dea4eeb"}}, + {name = "librt-0.7.4-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/35/d6/d8823e01bd069934525fddb343189c008b39828a429b473fb20d67d5cd36/librt-0.7.4-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "721a7b125a817d60bf4924e1eec2a7867bfcf64cfc333045de1df7a0629e4481"}}, + {name = "librt-0.7.4-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/36/e9/a0aa60f5322814dd084a89614e9e31139702e342f8459ad8af1984a18168/librt-0.7.4-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "76b2ba71265c0102d11458879b4d53ccd0b32b0164d14deb8d2b598a018e502f"}}, + {name = "librt-0.7.4-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/fe/4d/46a53ccfbb39fd0b493fd4496eb76f3ebc15bb3e45d8c2e695a27587edf5/librt-0.7.4-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "d44a1b1ba44cbd2fc3cb77992bef6d6fdb1028849824e1dd5e4d746e1f7f7f0b"}}, + {name = "librt-0.7.4-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7f/2b/3ac7f5212b1828bf4f979cf87f547db948d3e28421d7a430d4db23346ce4/librt-0.7.4-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "c9cab4b3de1f55e6c30a84c8cee20e4d3b2476f4d547256694a1b0163da4fe32"}}, + {name = "librt-0.7.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/e8/99/6523509097cbe25f363795f0c0d1c6a3746e30c2994e25b5aefdab119b21/librt-0.7.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "2857c875f1edd1feef3c371fbf830a61b632fb4d1e57160bb1e6a3206e6abe67"}}, + {name = "librt-0.7.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/fe/35/323611e59f8fe032649b4fb7e77f746f96eb7588fcbb31af26bae9630571/librt-0.7.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b370a77be0a16e1ad0270822c12c21462dc40496e891d3b0caf1617c8cc57e20"}}, + {name = "librt-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/41/e6/40fb2bb21616c6e06b6a64022802228066e9a31618f493e03f6b9661548a/librt-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d05acd46b9a52087bfc50c59dfdf96a2c480a601e8898a44821c7fd676598f74"}}, + {name = "librt-0.7.4-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/32/48/1b47c7d5d28b775941e739ed2bfe564b091c49201b9503514d69e4ed96d7/librt-0.7.4-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "70969229cb23d9c1a80e14225838d56e464dc71fa34c8342c954fc50e7516dee"}}, + {name = "librt-0.7.4-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/75/a6/ee135dfb5d3b54d5d9001dbe483806229c6beac3ee2ba1092582b7efeb1b/librt-0.7.4-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "4450c354b89dbb266730893862dbff06006c9ed5b06b6016d529b2bf644fc681"}}, + {name = "librt-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/04/87/d5b84ec997338be26af982bcd6679be0c1db9a32faadab1cf4bb24f9e992/librt-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "adefe0d48ad35b90b6f361f6ff5a1bd95af80c17d18619c093c60a20e7a5b60c"}}, + {name = "librt-0.7.4-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/86/63/ba1333bf48306fe398e3392a7427ce527f81b0b79d0d91618c4610ce9d15/librt-0.7.4-cp313-cp313-win32.whl",hashes = {sha256 = "21ea710e96c1e050635700695095962a22ea420d4b3755a25e4909f2172b4ff2"}}, + {name = "librt-0.7.4-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f9/8a/de2c6df06cdfa9308c080e6b060fe192790b6a48a47320b215e860f0e98c/librt-0.7.4-cp313-cp313-win_amd64.whl",hashes = {sha256 = "772e18696cf5a64afee908662fbcb1f907460ddc851336ee3a848ef7684c8e1e"}}, + {name = "librt-0.7.4-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/31/66/8ee0949efc389691381ed686185e43536c20e7ad880c122dd1f31e65c658/librt-0.7.4-cp313-cp313-win_arm64.whl",hashes = {sha256 = "52e34c6af84e12921748c8354aa6acf1912ca98ba60cdaa6920e34793f1a0788"}}, + {name = "librt-0.7.4-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/f3/e7/b805d868d21f425b7e76a0ea71a2700290f2266a4f3c8357fcf73efc36aa/librt-0.7.4-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "7dd3b5c37e0fb6666c27cf4e2c88ae43da904f2155c4cfc1e5a2fdce3b9fcf92"}}, + {name = "librt-0.7.4-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/59/5e/69a2b02e62a14cfd5bfd9f1e9adea294d5bcfeea219c7555730e5d068ee4/librt-0.7.4-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "a9c5de1928c486201b23ed0cc4ac92e6e07be5cd7f3abc57c88a9cf4f0f32108"}}, + {name = "librt-0.7.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/6e/6b/05dba608aae1272b8ea5ff8ef12c47a4a099a04d1e00e28a94687261d403/librt-0.7.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "078ae52ffb3f036396cc4aed558e5b61faedd504a3c1f62b8ae34bf95ae39d94"}}, + {name = "librt-0.7.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/8f/bc/199533d3fc04a4cda8d7776ee0d79955ab0c64c79ca079366fbc2617e680/librt-0.7.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "ce58420e25097b2fc201aef9b9f6d65df1eb8438e51154e1a7feb8847e4a55ab"}}, + {name = "librt-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/62/ec/09239b912a45a8ed117cb4a6616d9ff508f5d3131bd84329bf2f8d6564f1/librt-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "b719c8730c02a606dc0e8413287e8e94ac2d32a51153b300baf1f62347858fba"}}, + {name = "librt-0.7.4-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/46/2e/e188313d54c02f5b0580dd31476bb4b0177514ff8d2be9f58d4a6dc3a7ba/librt-0.7.4-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "3749ef74c170809e6dee68addec9d2458700a8de703de081c888e92a8b015cf9"}}, + {name = "librt-0.7.4-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/eb/84/f1d568d254518463d879161d3737b784137d236075215e56c7c9be191cee/librt-0.7.4-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "b35c63f557653c05b5b1b6559a074dbabe0afee28ee2a05b6c9ba21ad0d16a74"}}, + {name = "librt-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/5d/43/060bbc1c002f0d757c33a1afe6bf6a565f947a04841139508fc7cef6c08b/librt-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "1ef704e01cb6ad39ad7af668d51677557ca7e5d377663286f0ee1b6b27c28e5f"}}, + {name = "librt-0.7.4-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/ff/7f/708f8f02d8012ee9f366c07ea6a92882f48bd06cc1ff16a35e13d0fbfb08/librt-0.7.4-cp312-cp312-win32.whl",hashes = {sha256 = "c66c2b245926ec15188aead25d395091cb5c9df008d3b3207268cd65557d6286"}}, + {name = "librt-0.7.4-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f1/a5/4e051b061c8b2509be31b2c7ad4682090502c0a8b6406edcf8c6b4fe1ef7/librt-0.7.4-cp312-cp312-win_amd64.whl",hashes = {sha256 = "71a56f4671f7ff723451f26a6131754d7c1809e04e22ebfbac1db8c9e6767a20"}}, + {name = "librt-0.7.4-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/d0/d2/90d84e9f919224a3c1f393af1636d8638f54925fdc6cd5ee47f1548461e5/librt-0.7.4-cp312-cp312-win_arm64.whl",hashes = {sha256 = "419eea245e7ec0fe664eb7e85e7ff97dcdb2513ca4f6b45a8ec4a3346904f95a"}}, + {name = "librt-0.7.4-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/84/64/44089b12d8b4714a7f0e2f33fb19285ba87702d4be0829f20b36ebeeee07/librt-0.7.4-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "3485b9bb7dfa66167d5500ffdafdc35415b45f0da06c75eb7df131f3357b174a"}}, + {name = "librt-0.7.4-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/26/ef/6fa39fb5f37002f7d25e0da4f24d41b457582beea9369eeb7e9e73db5508/librt-0.7.4-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "188b4b1a770f7f95ea035d5bbb9d7367248fc9d12321deef78a269ebf46a5729"}}, + {name = "librt-0.7.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/9d/e4/cbaca170a13bee2469c90df9e47108610b4422c453aea1aec1779ac36c24/librt-0.7.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "1b668b1c840183e4e38ed5a99f62fac44c3a3eef16870f7f17cfdfb8b47550ed"}}, + {name = "librt-0.7.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/d0/32/0b2296f9cc7e693ab0d0835e355863512e5eac90450c412777bd699c76ae/librt-0.7.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0e8f864b521f6cfedb314d171630f827efee08f5c3462bcbc2244ab8e1768cd6"}}, + {name = "librt-0.7.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/d8/33/c70b6d40f7342716e5f1353c8da92d9e32708a18cbfa44897a93ec2bf879/librt-0.7.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4df7c9def4fc619a9c2ab402d73a0c5b53899abe090e0100323b13ccb5a3dd82"}}, + {name = "librt-0.7.4-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/e4/c8/555c405155da210e4c4113a879d378f54f850dbc7b794e847750a8fadd43/librt-0.7.4-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f79bc3595b6ed159a1bf0cdc70ed6ebec393a874565cab7088a219cca14da727"}}, + {name = "librt-0.7.4-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/6b/88/34dc1f1461c5613d1b73f0ecafc5316cc50adcc1b334435985b752ed53e5/librt-0.7.4-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "77772a4b8b5f77d47d883846928c36d730b6e612a6388c74cba33ad9eb149c11"}}, + {name = "librt-0.7.4-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/b6/5a/f3fafe80a221626bcedfa9fe5abbf5f04070989d44782f579b2d5920d6d0/librt-0.7.4-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "064a286e6ab0b4c900e228ab4fa9cb3811b4b83d3e0cc5cd816b2d0f548cb61c"}}, + {name = "librt-0.7.4-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/d8/77/5c048d471ce17f4c3a6e08419be19add4d291e2f7067b877437d482622ac/librt-0.7.4-cp311-cp311-win32.whl",hashes = {sha256 = "42da201c47c77b6cc91fc17e0e2b330154428d35d6024f3278aa2683e7e2daf2"}}, + {name = "librt-0.7.4-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fb/3b/514a86305a12c3d9eac03e424b07cd312c7343a9f8a52719aa079590a552/librt-0.7.4-cp311-cp311-win_amd64.whl",hashes = {sha256 = "d31acb5886c16ae1711741f22504195af46edec8315fe69b77e477682a87a83e"}}, + {name = "librt-0.7.4-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/ba/01/3b7b1914f565926b780a734fac6e9a4d2c7aefe41f4e89357d73697a9457/librt-0.7.4-cp311-cp311-win_arm64.whl",hashes = {sha256 = "114722f35093da080a333b3834fff04ef43147577ed99dd4db574b03a5f7d170"}}, ] marker = "\"dev\" in extras and platform_python_implementation != \"PyPy\" or \"mypy\" in extras and platform_python_implementation != \"PyPy\"" @@ -1369,21 +1400,6 @@ marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [] -[[packages]] -name = "mdit-py-plugins" -version = "0.5.0" -requires-python = ">=3.10" -sdist = {name = "mdit_py_plugins-0.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hashes = {sha256 = "f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6"}} -wheels = [ - {name = "mdit_py_plugins-0.5.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl",hashes = {sha256 = "07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f"}}, -] -marker = "\"dev\" in extras or \"docs\" in extras" - -[packages.tool.pdm] -dependencies = [ - "markdown-it-py<5.0.0,>=2.0.0", -] - [[packages]] name = "mdurl" version = "0.1.2" @@ -1399,11 +1415,11 @@ dependencies = [] [[packages]] name = "nbclient" -version = "0.10.4" -requires-python = ">=3.10.0" -sdist = {name = "nbclient-0.10.4.tar.gz", url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hashes = {sha256 = "1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9"}} +version = "0.10.2" +requires-python = ">=3.9.0" +sdist = {name = "nbclient-0.10.2.tar.gz", url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hashes = {sha256 = "90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}} wheels = [ - {name = "nbclient-0.10.4-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl",hashes = {sha256 = "9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440"}}, + {name = "nbclient-0.10.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl",hashes = {sha256 = "4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1411,7 +1427,7 @@ marker = "\"dev\" in extras or \"docs\" in extras" dependencies = [ "jupyter-client>=6.1.12", "jupyter-core!=5.0.*,>=4.12", - "nbformat>=5.1.3", + "nbformat>=5.1", "traitlets>=5.4", ] @@ -1476,11 +1492,11 @@ dependencies = [] [[packages]] name = "jsonschema" -version = "4.26.0" -requires-python = ">=3.10" -sdist = {name = "jsonschema-4.26.0.tar.gz", url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hashes = {sha256 = "0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"}} +version = "4.25.1" +requires-python = ">=3.9" +sdist = {name = "jsonschema-4.25.1.tar.gz", url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hashes = {sha256 = "e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85"}} wheels = [ - {name = "jsonschema-4.26.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl",hashes = {sha256 = "d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"}}, + {name = "jsonschema-4.25.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl",hashes = {sha256 = "3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1489,7 +1505,7 @@ dependencies = [ "attrs>=22.2.0", "jsonschema-specifications>=2023.03.6", "referencing>=0.28.4", - "rpds-py>=0.25.0", + "rpds-py>=0.7.1", ] [[packages]] @@ -1651,11 +1667,11 @@ dependencies = [] [[packages]] name = "jupyter-client" -version = "8.8.0" +version = "8.7.0" requires-python = ">=3.10" -sdist = {name = "jupyter_client-8.8.0.tar.gz", url = "https://files.pythonhosted.org/packages/05/e4/ba649102a3bc3fbca54e7239fb924fd434c766f855693d86de0b1f2bec81/jupyter_client-8.8.0.tar.gz", hashes = {sha256 = "d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e"}} +sdist = {name = "jupyter_client-8.7.0.tar.gz", url = "https://files.pythonhosted.org/packages/a6/27/d10de45e8ad4ce872372c4a3a37b7b35b6b064f6f023a5c14ffcced4d59d/jupyter_client-8.7.0.tar.gz", hashes = {sha256 = "3357212d9cbe01209e59190f67a3a7e1f387a4f4e88d1e0433ad84d7b262531d"}} wheels = [ - {name = "jupyter_client-8.8.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/2d/0b/ceb7694d864abc0a047649aec263878acb9f792e1fec3e676f22dc9015e3/jupyter_client-8.8.0-py3-none-any.whl",hashes = {sha256 = "f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a"}}, + {name = "jupyter_client-8.7.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/bb/f5/fddaec430367be9d62a7ed125530e133bfd4a1c0350fe221149ee0f2b526/jupyter_client-8.7.0-py3-none-any.whl",hashes = {sha256 = "3671a94fd25e62f5f2f554f5e95389c2294d89822378a5f2dd24353e1494a9e0"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1698,36 +1714,11 @@ dependencies = [] [[packages]] name = "pytokens" -version = "0.4.0" +version = "0.3.0" requires-python = ">=3.8" -sdist = {name = "pytokens-0.4.0.tar.gz", url = "https://files.pythonhosted.org/packages/e5/16/4b9cfd90d55e66ffdb277d7ebe3bc25250c2311336ec3fc73b2673c794d5/pytokens-0.4.0.tar.gz", hashes = {sha256 = "6b0b03e6ea7c9f9d47c5c61164b69ad30f4f0d70a5d9fe7eac4d19f24f77af2d"}} -wheels = [ - {name = "pytokens-0.4.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/5f/f1/d07e6209f18ef378fc2ae9dee8d1dfe91fd2447c2e2dbfa32867b6dd30cf/pytokens-0.4.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "0d7374c917197106d3c4761374718bc55ea2e9ac0fb94171588ef5840ee1f016"}}, - {name = "pytokens-0.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/0a/73/0eb111400abd382a04f253b269819db9fcc748aa40748441cebdcb6d068f/pytokens-0.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0cd3fa1caf9e47a72ee134a29ca6b5bea84712724bba165d6628baa190c6ea5b"}}, - {name = "pytokens-0.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/8d/9e4e2fdb5bcaba679e54afcc304e9f13f488eb4d626e6b613f9553e03dbd/pytokens-0.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9c6986576b7b07fe9791854caa5347923005a80b079d45b63b0be70d50cce5f1"}}, - {name = "pytokens-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/cb/b7/e0a370321af2deb772cff14ff337e1140d1eac2c29a8876bfee995f486f0/pytokens-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "9940f7c2e2f54fb1cb5fe17d0803c54da7a2bf62222704eb4217433664a186a7"}}, - {name = "pytokens-0.4.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/7c/54/4348f916c440d4c3e68b53b4ed0e66b292d119e799fa07afa159566dcc86/pytokens-0.4.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "54691cf8f299e7efabcc25adb4ce715d3cef1491e1c930eaf555182f898ef66a"}}, - {name = "pytokens-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/e8/f8/a693c0cfa9c783a2a8c4500b7b2a8bab420f8ca4f2d496153226bf1c12e3/pytokens-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "94ff5db97a0d3cd7248a5b07ba2167bd3edc1db92f76c6db00137bbaf068ddf8"}}, - {name = "pytokens-0.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/c0/dd/a64eb1e9f3ec277b69b33ef1b40ffbcc8f0a3bafcde120997efc7bdefebf/pytokens-0.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "d0dd6261cd9cc95fae1227b1b6ebee023a5fd4a4b6330b071c73a516f5f59b63"}}, - {name = "pytokens-0.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/df/22/06c1079d93dbc3bca5d013e1795f3d8b9ed6c87290acd6913c1c526a6bb2/pytokens-0.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "0cdca8159df407dbd669145af4171a0d967006e0be25f3b520896bc7068f02c4"}}, - {name = "pytokens-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/8d/de/a6f5e43115b4fbf4b93aa87d6c83c79932cdb084f9711daae04549e1e4ad/pytokens-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "4b5770abeb2a24347380a1164a558f0ebe06e98aedbd54c45f7929527a5fb26e"}}, - {name = "pytokens-0.4.0-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/ab/3d/c136e057cb622e36e0c3ff7a8aaa19ff9720050c4078235691da885fe6ee/pytokens-0.4.0-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "74500d72c561dad14c037a9e86a657afd63e277dd5a3bb7570932ab7a3b12551"}}, - {name = "pytokens-0.4.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/98/63/627b7e71d557383da5a97f473ad50f8d9c2c1f55c7d3c2531a120c796f6e/pytokens-0.4.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "73eff3bdd8ad08da679867992782568db0529b887bed4c85694f84cdf35eafc6"}}, - {name = "pytokens-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/28/d7/16f434c37ec3824eba6bcb6e798e5381a8dc83af7a1eda0f95c16fe3ade5/pytokens-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "d97cc1f91b1a8e8ebccf31c367f28225699bea26592df27141deade771ed0afb"}}, - {name = "pytokens-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ab/96/04102856b9527701ae57d74a6393d1aca5bad18a1b1ca48ccffb3c93b392/pytokens-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "a2c8952c537cb73a1a74369501a83b7f9d208c3cf92c41dd88a17814e68d48ce"}}, - {name = "pytokens-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/0e/ef/0936eb472b89ab2d2c2c24bb81c50417e803fa89c731930d9fb01176fe9f/pytokens-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5dbf56f3c748aed9310b310d5b8b14e2c96d3ad682ad5a943f381bdbbdddf753"}}, - {name = "pytokens-0.4.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/ae/f5/64f3d6f7df4a9e92ebda35ee85061f6260e16eac82df9396020eebbca775/pytokens-0.4.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "e131804513597f2dff2b18f9911d9b6276e21ef3699abeffc1c087c65a3d975e"}}, - {name = "pytokens-0.4.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/3d/65/65460ebbfefd0bc1b160457904370d44f269e6e4582e0a9b6cba7c267b04/pytokens-0.4.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "cd8da894e5a29ba6b6da8be06a4f7589d7220c099b5e363cb0643234b9b38c2a"}}, - {name = "pytokens-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/25/70/a46669ec55876c392036b4da9808b5c3b1c5870bbca3d4cc923bf68bdbc1/pytokens-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "237ba7cfb677dbd3b01b09860810aceb448871150566b93cd24501d5734a04b1"}}, - {name = "pytokens-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/62/0b/c486fc61299c2fc3b7f88ee4e115d4c8b6ffd1a7f88dc94b398b5b1bc4b8/pytokens-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "01d1a61e36812e4e971cfe2c0e4c1f2d66d8311031dac8bf168af8a249fa04dd"}}, - {name = "pytokens-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/92/b036af846707d25feaff7cafbd5280f1bd6a1034c16bb06a7c910209c1ab/pytokens-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "e47e2ef3ec6ee86909e520d79f965f9b23389fda47460303cf715d510a6fe544"}}, - {name = "pytokens-0.4.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/0d/c0/6d011fc00fefa74ce34816c84a923d2dd7c46b8dbc6ee52d13419786834c/pytokens-0.4.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "3d36954aba4557fd5a418a03cf595ecbb1cdcce119f91a49b19ef09d691a22ae"}}, - {name = "pytokens-0.4.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b4/05/3196399a353dd4cd99138a88f662810979ee2f1a1cdb0b417cb2f4507836/pytokens-0.4.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "92eb3ef88f27c22dc9dbab966ace4d61f6826e02ba04dac8e2d65ea31df56c8e"}}, - {name = "pytokens-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/28/1d/c8fc4ed0a1c4f660391b201cda00b1d5bbcc00e2998e8bcd48b15eefd708/pytokens-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "f4b77858a680635ee9904306f54b0ee4781effb89e211ba0a773d76539537165"}}, - {name = "pytokens-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/8e/0e/53e55ba01f3e858d229cd84b02481542f42ba59050483a78bf2447ee1af7/pytokens-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "25cacc20c2ad90acb56f3739d87905473c54ca1fa5967ffcd675463fe965865e"}}, - {name = "pytokens-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/dc/56/2d930d7f899e3f21868ca6e8ec739ac31e8fc532f66e09cbe45d3df0a84f/pytokens-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "628fab535ebc9079e4db35cd63cb401901c7ce8720a9834f9ad44b9eb4e0f1d4"}}, - {name = "pytokens-0.4.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/42/dd/4e7e6920d23deffaf66e6f40d45f7610dcbc132ca5d90ab4faccef22f624/pytokens-0.4.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "4d0f568d7e82b7e96be56d03b5081de40e43c904eb6492bf09aaca47cd55f35b"}}, - {name = "pytokens-0.4.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7c/3c/6941a82f4f130af6e1c68c076b6789069ef10c04559bd4733650f902fd3b/pytokens-0.4.0-py3-none-any.whl",hashes = {sha256 = "0508d11b4de157ee12063901603be87fb0253e8f4cb9305eb168b1202ab92068"}}, +sdist = {name = "pytokens-0.3.0.tar.gz", url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hashes = {sha256 = "2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a"}} +wheels = [ + {name = "pytokens-0.3.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl",hashes = {sha256 = "95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3"}}, ] marker = "\"dev\" in extras" @@ -1903,11 +1894,11 @@ dependencies = [] [[packages]] name = "urllib3" -version = "2.6.3" +version = "2.6.2" requires-python = ">=3.9" -sdist = {name = "urllib3-2.6.3.tar.gz", url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hashes = {sha256 = "1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}} +sdist = {name = "urllib3-2.6.2.tar.gz", url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hashes = {sha256 = "016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797"}} wheels = [ - {name = "urllib3-2.6.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl",hashes = {sha256 = "bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}}, + {name = "urllib3-2.6.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl",hashes = {sha256 = "ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1916,11 +1907,11 @@ dependencies = [] [[packages]] name = "certifi" -version = "2026.1.4" +version = "2025.11.12" requires-python = ">=3.7" -sdist = {name = "certifi-2026.1.4.tar.gz", url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hashes = {sha256 = "ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}} +sdist = {name = "certifi-2025.11.12.tar.gz", url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hashes = {sha256 = "d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316"}} wheels = [ - {name = "certifi-2026.1.4-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl",hashes = {sha256 = "9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}}, + {name = "certifi-2025.11.12-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl",hashes = {sha256 = "97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1955,6 +1946,58 @@ marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [] +[[packages]] +name = "ruamel-yaml-clib" +version = "0.2.15" +requires-python = ">=3.9" +sdist = {name = "ruamel_yaml_clib-0.2.15.tar.gz", url = "https://files.pythonhosted.org/packages/ea/97/60fda20e2fb54b83a61ae14648b0817c8f5d84a3821e40bfbdae1437026a/ruamel_yaml_clib-0.2.15.tar.gz", hashes = {sha256 = "46e4cc8c43ef6a94885f72512094e482114a8a706d3c555a34ed4b0d20200600"}} +wheels = [ + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/3e/bd/ab8459c8bb759c14a146990bf07f632c1cbec0910d4853feeee4be2ab8bb/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "753faf20b3a5906faf1fc50e4ddb8c074cb9b251e00b14c18b28492f933ac8ef"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/69/f2/c4cec0a30f1955510fde498aac451d2e52b24afdbcb00204d3a951b772c3/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "480894aee0b29752560a9de46c0e5f84a82602f2bc5c6cde8db9a345319acfdf"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/82/c7/2480d062281385a2ea4f7cc9476712446e0c548cd74090bff92b4b49e898/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "4d3b58ab2454b4747442ac76fab66739c72b1e2bb9bd173d7694b9f9dbc9c000"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/75/08/e365ee305367559f57ba6179d836ecc3d31c7d3fdff2a40ebf6c32823a1f/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "bfd309b316228acecfa30670c3887dcedf9b7a44ea39e2101e75d2654522acd4"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/a1/5c/8b56b08db91e569d0a4fbfa3e492ed2026081bdd7e892f63ba1c88a2f548/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "2812ff359ec1f30129b62372e5f22a52936fac13d5d21e70373dbca5d64bb97c"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/1d/70dbda370bd0e1a92942754c873bd28f513da6198127d1736fa98bb2a16f/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "7e74ea87307303ba91073b63e67f2c667e93f05a8c63079ee5b7a5c8d0d7b043"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/5b/87/822d95874216922e1120afb9d3fafa795a18fdd0c444f5c4c382f6dac761/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_i686.whl",hashes = {sha256 = "713cd68af9dfbe0bb588e144a61aad8dcc00ef92a82d2e87183ca662d242f524"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/b9/17/4e01a602693b572149f92c983c1f25bd608df02c3f5cf50fd1f94e124a59/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "542d77b72786a35563f97069b9379ce762944e67055bea293480f7734b2c7e5e"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/9f/17/7999399081d39ebb79e807314de6b611e1d1374458924eb2a489c01fc5ad/ruamel_yaml_clib-0.2.15-cp314-cp314-win32.whl",hashes = {sha256 = "424ead8cef3939d690c4b5c85ef5b52155a231ff8b252961b6516ed7cf05f6aa"}}, + {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/d2/67/be582a7370fdc9e6846c5be4888a530dcadd055eef5b932e0e85c33c7d73/ruamel_yaml_clib-0.2.15-cp314-cp314-win_amd64.whl",hashes = {sha256 = "ac9b8d5fa4bb7fd2917ab5027f60d4234345fd366fe39aa711d5dca090aa1467"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/17/5e/2f970ce4c573dc30c2f95825f2691c96d55560268ddc67603dc6ea2dd08e/ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "4dcec721fddbb62e60c2801ba08c87010bd6b700054a09998c4d09c08147b8fb"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/d6/03/a1baa5b94f71383913f21b96172fb3a2eb5576a4637729adbf7cd9f797f8/ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "65f48245279f9bb301d1276f9679b82e4c080a1ae25e679f682ac62446fac471"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/dc/19/40d676802390f85784235a05788fd28940923382e3f8b943d25febbb98b7/ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "46895c17ead5e22bea5e576f1db7e41cb273e8d062c04a6a49013d9f60996c25"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/ce/bb/6ef5abfa43b48dd55c30d53e997f8f978722f02add61efba31380d73e42e/ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "3eb199178b08956e5be6288ee0b05b2fb0b5c1f309725ad25d9c6ea7e27f962a"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ff/5d/e4f84c9c448613e12bd62e90b23aa127ea4c46b697f3d760acc32cb94f25/ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4d1032919280ebc04a80e4fb1e93f7a738129857eaec9448310e638c8bccefcf"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/de/4b/e98086e88f76c00c88a6bcf15eae27a1454f661a9eb72b111e6bbb69024d/ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "ab0df0648d86a7ecbd9c632e8f8d6b21bb21b5fc9d9e095c796cacf32a728d2d"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/0c/5c/5964fcd1fd9acc53b7a3a5d9a05ea4f95ead9495d980003a557deb9769c7/ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "331fb180858dd8534f0e61aa243b944f25e73a4dae9962bd44c46d1761126bbf"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/07/1e/99660f5a30fceb58494598e7d15df883a07292346ef5696f0c0ae5dee8c6/ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "fd4c928ddf6bce586285daa6d90680b9c291cfd045fc40aad34e445d57b1bf51"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/36/2f/fa0344a9327b58b54970e56a27b32416ffbcfe4dcc0700605516708579b2/ruamel_yaml_clib-0.2.15-cp313-cp313-win32.whl",hashes = {sha256 = "bf0846d629e160223805db9fe8cc7aec16aaa11a07310c50c8c7164efa440aec"}}, + {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/06/c4/c124fbcef0684fcf3c9b72374c2a8c35c94464d8694c50f37eef27f5a145/ruamel_yaml_clib-0.2.15-cp313-cp313-win_amd64.whl",hashes = {sha256 = "45702dfbea1420ba3450bb3dd9a80b33f0badd57539c6aac09f42584303e0db6"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/72/4b/5fde11a0722d676e469d3d6f78c6a17591b9c7e0072ca359801c4bd17eee/ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "cb15a2e2a90c8475df45c0949793af1ff413acfb0a716b8b94e488ea95ce7cff"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/85/82/4d08ac65ecf0ef3b046421985e66301a242804eb9a62c93ca3437dc94ee0/ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "64da03cbe93c1e91af133f5bec37fd24d0d4ba2418eaf970d7166b0a26a148a2"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/b9/cb/22366d68b280e281a932403b76da7a988108287adff2bfa5ce881200107a/ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "f6d3655e95a80325b84c4e14c080b2470fe4f33b6846f288379ce36154993fb1"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/71/73/81230babf8c9e33770d43ed9056f603f6f5f9665aea4177a2c30ae48e3f3/ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "71845d377c7a47afc6592aacfea738cc8a7e876d586dfba814501d8c53c1ba60"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/61/62/150c841f24cda9e30f588ef396ed83f64cfdc13b92d2f925bb96df337ba9/ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "11e5499db1ccbc7f4b41f0565e4f799d863ea720e01d3e99fa0b7b5fcd7802c9"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/30/93/e79bd9cbecc3267499d9ead919bd61f7ddf55d793fb5ef2b1d7d92444f35/ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "4b293a37dc97e2b1e8a1aec62792d1e52027087c8eea4fc7b5abd2bdafdd6642"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/8d/06/1eb640065c3a27ce92d76157f8efddb184bd484ed2639b712396a20d6dce/ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "512571ad41bba04eac7268fe33f7f4742210ca26a81fe0c75357fa682636c690"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/a5/21/ee353e882350beab65fcc47a91b6bdc512cace4358ee327af2962892ff16/ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "e5e9f630c73a490b758bf14d859a39f375e6999aea5ddd2e2e9da89b9953486a"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/57/34/cc1b94057aa867c963ecf9ea92ac59198ec2ee3a8d22a126af0b4d4be712/ruamel_yaml_clib-0.2.15-cp312-cp312-win32.whl",hashes = {sha256 = "f4421ab780c37210a07d138e56dd4b51f8642187cdfb433eb687fe8c11de0144"}}, + {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/b3/e5/8925a4208f131b218f9a7e459c0d6fcac8324ae35da269cb437894576366/ruamel_yaml_clib-0.2.15-cp312-cp312-win_amd64.whl",hashes = {sha256 = "2b216904750889133d9222b7b873c199d48ecbb12912aca78970f84a5aa1a4bc"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/2c/80/8ce7b9af532aa94dd83360f01ce4716264db73de6bc8efd22c32341f6658/ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "c583229f336682b7212a43d2fa32c30e643d3076178fb9f7a6a14dde85a2d8bd"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/53/09/de9d3f6b6701ced5f276d082ad0f980edf08ca67114523d1b9264cd5e2e0/ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "56ea19c157ed8c74b6be51b5fa1c3aff6e289a041575f0556f66e5fb848bb137"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/0e/f7/73a9b517571e214fe5c246698ff3ed232f1ef863c8ae1667486625ec688a/ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "5fea0932358e18293407feb921d4f4457db837b67ec1837f87074667449f9401"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/9b/a2/0dc0013169800f1c331a6f55b1282c1f4492a6d32660a0cf7b89e6684919/ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "ef71831bd61fbdb7aa0399d5c4da06bea37107ab5c79ff884cc07f2450910262"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/aa/ed/3fb20a1a96b8dc645d88c4072df481fe06e0289e4d528ebbdcc044ebc8b3/ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "617d35dc765715fa86f8c3ccdae1e4229055832c452d4ec20856136acc75053f"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/60/50/6842f4628bc98b7aa4733ab2378346e1441e150935ad3b9f3c3c429d9408/ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "1b45498cc81a4724a2d42273d6cfc243c0547ad7c6b87b4f774cb7bcc131c98d"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/d3/b0/128ae8e19a7d794c2e36130a72b3bb650ce1dd13fb7def6cf10656437dcf/ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "def5663361f6771b18646620fca12968aae730132e104688766cf8a3b1d65922"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/75/05/91130633602d6ba7ce3e07f8fc865b40d2a09efd4751c740df89eed5caf9/ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "014181cdec565c8745b7cbc4de3bf2cc8ced05183d986e6d1200168e5bb59490"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/fd/4b/fd4542e7f33d7d1bc64cc9ac9ba574ce8cf145569d21f5f20133336cdc8c/ruamel_yaml_clib-0.2.15-cp311-cp311-win32.whl",hashes = {sha256 = "d290eda8f6ada19e1771b54e5706b8f9807e6bb08e873900d5ba114ced13e02c"}}, + {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/bb/eb/00ff6032c19c7537371e3119287999570867a0eafb0154fccc80e74bf57a/ruamel_yaml_clib-0.2.15-cp311-cp311-win_amd64.whl",hashes = {sha256 = "bdc06ad71173b915167702f55d0f3f027fc61abd975bd308a0968c02db4a4c3e"}}, +] +marker = "platform_python_implementation == \"CPython\" and python_version < \"3.15\" and \"default\" in dependency_groups" + +[packages.tool.pdm] +dependencies = [] + [[packages]] name = "six" version = "1.17.0" @@ -2076,11 +2119,11 @@ dependencies = [] [[packages]] name = "starlette" -version = "0.52.1" +version = "0.50.0" requires-python = ">=3.10" -sdist = {name = "starlette-0.52.1.tar.gz", url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hashes = {sha256 = "834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933"}} +sdist = {name = "starlette-0.50.0.tar.gz", url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hashes = {sha256 = "a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca"}} wheels = [ - {name = "starlette-0.52.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl",hashes = {sha256 = "0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74"}}, + {name = "starlette-0.50.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl",hashes = {sha256 = "9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca"}}, ] marker = "\"dev\" in extras" @@ -2092,11 +2135,11 @@ dependencies = [ [[packages]] name = "anyio" -version = "4.12.1" +version = "4.12.0" requires-python = ">=3.9" -sdist = {name = "anyio-4.12.1.tar.gz", url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hashes = {sha256 = "41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"}} +sdist = {name = "anyio-4.12.0.tar.gz", url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hashes = {sha256 = "73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0"}} wheels = [ - {name = "anyio-4.12.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl",hashes = {sha256 = "d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"}}, + {name = "anyio-4.12.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl",hashes = {sha256 = "dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb"}}, ] marker = "\"dev\" in extras" @@ -2229,61 +2272,44 @@ dependencies = [ [[packages]] name = "websockets" -version = "16.0" -requires-python = ">=3.10" -sdist = {name = "websockets-16.0.tar.gz", url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hashes = {sha256 = "5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5"}} -wheels = [ - {name = "websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0"}}, - {name = "websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904"}}, - {name = "websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4"}}, - {name = "websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e"}}, - {name = "websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4"}}, - {name = "websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1"}}, - {name = "websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3"}}, - {name = "websockets-16.0-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl",hashes = {sha256 = "a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8"}}, - {name = "websockets-16.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d"}}, - {name = "websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl",hashes = {sha256 = "a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244"}}, - {name = "websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl",hashes = {sha256 = "b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e"}}, - {name = "websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641"}}, - {name = "websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8"}}, - {name = "websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e"}}, - {name = "websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944"}}, - {name = "websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206"}}, - {name = "websockets-16.0-cp314-cp314t-win32.whl",url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl",hashes = {sha256 = "5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6"}}, - {name = "websockets-16.0-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd"}}, - {name = "websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9"}}, - {name = "websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230"}}, - {name = "websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c"}}, - {name = "websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5"}}, - {name = "websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82"}}, - {name = "websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8"}}, - {name = "websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f"}}, - {name = "websockets-16.0-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl",hashes = {sha256 = "abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a"}}, - {name = "websockets-16.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156"}}, - {name = "websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00"}}, - {name = "websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79"}}, - {name = "websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39"}}, - {name = "websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c"}}, - {name = "websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f"}}, - {name = "websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1"}}, - {name = "websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2"}}, - {name = "websockets-16.0-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl",hashes = {sha256 = "eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89"}}, - {name = "websockets-16.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea"}}, - {name = "websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8"}}, - {name = "websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad"}}, - {name = "websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d"}}, - {name = "websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe"}}, - {name = "websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b"}}, - {name = "websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5"}}, - {name = "websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64"}}, - {name = "websockets-16.0-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl",hashes = {sha256 = "5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6"}}, - {name = "websockets-16.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac"}}, - {name = "websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl",hashes = {sha256 = "349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d"}}, - {name = "websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl",hashes = {sha256 = "4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03"}}, - {name = "websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da"}}, - {name = "websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c"}}, - {name = "websockets-16.0-pp311-pypy311_pp73-win_amd64.whl",url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl",hashes = {sha256 = "a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767"}}, - {name = "websockets-16.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl",hashes = {sha256 = "1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec"}}, +version = "15.0.1" +requires-python = ">=3.9" +sdist = {name = "websockets-15.0.1.tar.gz", url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hashes = {sha256 = "82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}} +wheels = [ + {name = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}}, + {name = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}}, + {name = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}}, + {name = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}}, + {name = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}}, + {name = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}}, + {name = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}}, + {name = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}}, + {name = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}}, + {name = "websockets-15.0.1-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl",hashes = {sha256 = "ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}}, + {name = "websockets-15.0.1-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl",hashes = {sha256 = "e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}}, + {name = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}}, + {name = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}}, + {name = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}}, + {name = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}}, + {name = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}}, + {name = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}}, + {name = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}}, + {name = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}}, + {name = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}}, + {name = "websockets-15.0.1-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl",hashes = {sha256 = "c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}}, + {name = "websockets-15.0.1-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl",hashes = {sha256 = "fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}}, + {name = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}}, + {name = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}}, + {name = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}}, + {name = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}}, + {name = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}}, + {name = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}}, + {name = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}}, + {name = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}}, + {name = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}}, + {name = "websockets-15.0.1-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl",hashes = {sha256 = "16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}}, + {name = "websockets-15.0.1-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl",hashes = {sha256 = "27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}}, + {name = "websockets-15.0.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl",hashes = {sha256 = "f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}}, ] marker = "\"dev\" in extras" @@ -2308,11 +2334,11 @@ dependencies = [ [[packages]] name = "soupsieve" -version = "2.8.3" +version = "2.8.1" requires-python = ">=3.9" -sdist = {name = "soupsieve-2.8.3.tar.gz", url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hashes = {sha256 = "3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349"}} +sdist = {name = "soupsieve-2.8.1.tar.gz", url = "https://files.pythonhosted.org/packages/89/23/adf3796d740536d63a6fbda113d07e60c734b6ed5d3058d1e47fc0495e47/soupsieve-2.8.1.tar.gz", hashes = {sha256 = "4cf733bc50fa805f5df4b8ef4740fc0e0fa6218cf3006269afd3f9d6d80fd350"}} wheels = [ - {name = "soupsieve-2.8.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl",hashes = {sha256 = "ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95"}}, + {name = "soupsieve-2.8.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/48/f3/b67d6ea49ca9154453b6d70b34ea22f3996b9fa55da105a79d8732227adc/soupsieve-2.8.1-py3-none-any.whl",hashes = {sha256 = "a11fe2a6f3d76ab3cf2de04eb339c1be5b506a8a47f2ceb6d139803177f85434"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2321,17 +2347,18 @@ dependencies = [] [[packages]] name = "importlib-metadata" -version = "8.7.1" +version = "8.7.0" requires-python = ">=3.9" -sdist = {name = "importlib_metadata-8.7.1.tar.gz", url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hashes = {sha256 = "49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}} +sdist = {name = "importlib_metadata-8.7.0.tar.gz", url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hashes = {sha256 = "d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}} wheels = [ - {name = "importlib_metadata-8.7.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl",hashes = {sha256 = "5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}}, + {name = "importlib_metadata-8.7.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl",hashes = {sha256 = "e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ "zipp>=3.20", + "typing-extensions>=3.6.4; python_version < \"3.8\"", ] [[packages]] @@ -2431,11 +2458,11 @@ dependencies = [] [[packages]] name = "ipython" -version = "9.9.0" +version = "9.8.0" requires-python = ">=3.11" -sdist = {name = "ipython-9.9.0.tar.gz", url = "https://files.pythonhosted.org/packages/46/dd/fb08d22ec0c27e73c8bc8f71810709870d51cadaf27b7ddd3f011236c100/ipython-9.9.0.tar.gz", hashes = {sha256 = "48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220"}} +sdist = {name = "ipython-9.8.0.tar.gz", url = "https://files.pythonhosted.org/packages/12/51/a703c030f4928646d390b4971af4938a1b10c9dfce694f0d99a0bb073cb2/ipython-9.8.0.tar.gz", hashes = {sha256 = "8e4ce129a627eb9dd221c41b1d2cdaed4ef7c9da8c17c63f6f578fe231141f83"}} wheels = [ - {name = "ipython-9.9.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/86/92/162cfaee4ccf370465c5af1ce36a9eacec1becb552f2033bb3584e6f640a/ipython-9.9.0-py3-none-any.whl",hashes = {sha256 = "b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b"}}, + {name = "ipython-9.8.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl",hashes = {sha256 = "ebe6d1d58d7d988fbf23ff8ff6d8e1622cfdb194daf4b7b73b792c4ec3b85385"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2569,30 +2596,28 @@ dependencies = [ [[packages]] name = "psutil" -version = "7.2.1" +version = "7.1.3" requires-python = ">=3.6" -sdist = {name = "psutil-7.2.1.tar.gz", url = "https://files.pythonhosted.org/packages/73/cb/09e5184fb5fc0358d110fc3ca7f6b1d033800734d34cac10f4136cfac10e/psutil-7.2.1.tar.gz", hashes = {sha256 = "f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3"}} -wheels = [ - {name = "psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/05/c2/5fb764bd61e40e1fe756a44bd4c21827228394c17414ade348e28f83cd79/psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl",hashes = {sha256 = "494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679"}}, - {name = "psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/c9/d2/935039c20e06f615d9ca6ca0ab756cf8408a19d298ffaa08666bc18dc805/psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f"}}, - {name = "psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129"}}, - {name = "psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a"}}, - {name = "psutil-7.2.1-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/98/60/1672114392dd879586d60dd97896325df47d9a130ac7401318005aab28ec/psutil-7.2.1-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79"}}, - {name = "psutil-7.2.1-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/fb/7b/d0e9d4513c46e46897b46bcfc410d51fc65735837ea57a25170f298326e6/psutil-7.2.1-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266"}}, - {name = "psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/77/8e/f0c242053a368c2aa89584ecd1b054a18683f13d6e5a318fc9ec36582c94/psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl",hashes = {sha256 = "ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d"}}, - {name = "psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/26/97/a58a4968f8990617decee234258a2b4fc7cd9e35668387646c1963e69f26/psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl",hashes = {sha256 = "81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49"}}, - {name = "psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc"}}, - {name = "psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf"}}, - {name = "psutil-7.2.1-cp313-cp313t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fb/23/851cadc9764edcc18f0effe7d0bf69f727d4cf2442deb4a9f78d4e4f30f2/psutil-7.2.1-cp313-cp313t-win_amd64.whl",hashes = {sha256 = "923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f"}}, - {name = "psutil-7.2.1-cp313-cp313t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/59/82/d63e8494ec5758029f31c6cb06d7d161175d8281e91d011a4a441c8a43b5/psutil-7.2.1-cp313-cp313t-win_arm64.whl",hashes = {sha256 = "cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672"}}, - {name = "psutil-7.2.1-cp37-abi3-win_amd64.whl",url = "https://files.pythonhosted.org/packages/34/68/d9317542e3f2b180c4306e3f45d3c922d7e86d8ce39f941bb9e2e9d8599e/psutil-7.2.1-cp37-abi3-win_amd64.whl",hashes = {sha256 = "b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17"}}, - {name = "psutil-7.2.1-cp37-abi3-win_arm64.whl",url = "https://files.pythonhosted.org/packages/3e/73/2ce007f4198c80fcf2cb24c169884f833fe93fbc03d55d302627b094ee91/psutil-7.2.1-cp37-abi3-win_arm64.whl",hashes = {sha256 = "0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442"}}, - {name = "psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/c5/cf/5180eb8c8bdf6a503c6919f1da28328bd1e6b3b1b5b9d5b01ae64f019616/psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl",hashes = {sha256 = "b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42"}}, - {name = "psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/c5/2c/78e4a789306a92ade5000da4f5de3255202c534acdadc3aac7b5458fadef/psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl",hashes = {sha256 = "05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1"}}, - {name = "psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8"}}, - {name = "psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6"}}, - {name = "psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/44/ad/bbf6595a8134ee1e94a4487af3f132cef7fce43aef4a93b49912a48c3af7/psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8"}}, - {name = "psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/1c/15/dd6fd869753ce82ff64dcbc18356093471a5a5adf4f77ed1f805d473d859/psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl",hashes = {sha256 = "99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67"}}, +sdist = {name = "psutil-7.1.3.tar.gz", url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hashes = {sha256 = "6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74"}} +wheels = [ + {name = "psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl",hashes = {sha256 = "b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353"}}, + {name = "psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b"}}, + {name = "psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9"}}, + {name = "psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f"}}, + {name = "psutil-7.1.3-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7"}}, + {name = "psutil-7.1.3-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264"}}, + {name = "psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl",hashes = {sha256 = "0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc"}}, + {name = "psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl",hashes = {sha256 = "19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0"}}, + {name = "psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7"}}, + {name = "psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251"}}, + {name = "psutil-7.1.3-cp313-cp313t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl",hashes = {sha256 = "18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa"}}, + {name = "psutil-7.1.3-cp313-cp313t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl",hashes = {sha256 = "c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee"}}, + {name = "psutil-7.1.3-cp37-abi3-win_amd64.whl",url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl",hashes = {sha256 = "f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd"}}, + {name = "psutil-7.1.3-cp37-abi3-win_arm64.whl",url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl",hashes = {sha256 = "bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1"}}, + {name = "psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl",hashes = {sha256 = "2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab"}}, + {name = "psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl",hashes = {sha256 = "bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880"}}, + {name = "psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3"}}, + {name = "psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2699,7 +2724,7 @@ sdist = {name = "tzdata-2025.3.tar.gz", url = "https://files.pythonhosted.org/pa wheels = [ {name = "tzdata-2025.3-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl",hashes = {sha256 = "06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}}, ] -marker = "\"dev\" in extras and platform_system == \"Windows\" or \"docs\" in extras and platform_system == \"Windows\" or \"tests\" in extras and platform_system == \"Windows\"" +marker = "\"dev\" in extras or \"docs\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [] @@ -2718,7 +2743,7 @@ marker = "\"dev\" in extras or \"docs\" in extras" dependencies = [] [tool.pdm] -hashes = {sha256 = "06cadfeb160c3da38784a855b7e6581dddc2b7ad36d78afeeb824ad5252e23ea"} +hashes = {sha256 = "734c4e3c3ea45903c6017895e6b7a055141eec94fc7a5c991fefa918fa8da5db"} strategy = ["inherit_metadata", "static_urls"] [[tool.pdm.targets]] diff --git a/pyproject.toml b/pyproject.toml index cab1da12..4d98b50e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,6 +67,7 @@ tests = [ "pytest-timeout>=2.4.0", "pytest-asyncio>=1.3.0", "pytest-codspeed>=4.2.0", + "pytest-mock>=3.15.1", ] docs = [ "sphinx>=8.2.3,<9.0.0", # until myst parser catches up and stops emitting invalid references diff --git a/src/noob/node/base.py b/src/noob/node/base.py index 78b8f48f..b5b3e9a2 100644 --- a/src/noob/node/base.py +++ b/src/noob/node/base.py @@ -12,7 +12,6 @@ cast, get_args, get_origin, - overload, ) from pydantic import ( @@ -26,7 +25,6 @@ from noob.introspection import is_optional, is_union from noob.node.spec import NodeSpecification -from noob.types import RunnerContext from noob.utils import resolve_python_identifier if TYPE_CHECKING: @@ -195,14 +193,8 @@ def model_post_init(self, __context: Any) -> None: if inspect.isgeneratorfunction(self.process): self._wrap_generator(self.process) - @overload - def init(self) -> None: ... - - @overload - def init(self, context: RunnerContext) -> None: ... - # TODO: Support dependency injection in mypy plugin - def init(self) -> None: # type: ignore[misc] + def init(self) -> None: """ Start producing, processing, or receiving data. diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index b2bfa5f0..6d749743 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -463,6 +463,8 @@ def await_inputs(self) -> Generator[tuple[tuple[Any], dict[str, Any], int]]: if inputs is None: inputs = {} args, kwargs = self.store.split_args_kwargs(inputs) + # clear events for this epoch, since we have consumed what we need here. + self.store.clear(ready["epoch"]) yield args, kwargs, ready["epoch"] def update_graph(self, events: list[Event]) -> None: @@ -662,6 +664,7 @@ def on_start(self, msg: StartMsg) -> None: """ Start running in free mode """ + self.update_status(NodeStatus.running) if msg.value is None: self._freerun.set() else: @@ -749,11 +752,17 @@ class ZMQRunner(TubeRunner): quit_timeout: float = 10 """time in seconds to wait after calling deinit to wait before killing runner processes""" store: EventStore = field(default_factory=EventStore) + autoclear_store: bool = True + """ + If ``True`` (default), clear the event store after events are processed and returned. + If ``False`` , don't clear events from the event store + """ _initialized: EventType = field(default_factory=mp.Event) _running: EventType = field(default_factory=mp.Event) _init_lock: threading.RLock = field(default_factory=threading.RLock) _running_lock: threading.Lock = field(default_factory=threading.Lock) + _ignore_events: bool = False _return_node: Return | None = None _to_throw: ErrorValue | None = None _current_epoch: int = 0 @@ -928,28 +937,19 @@ def iter(self, n: int | None = None) -> Generator[ReturnNodeType, None, None]: self._logger.debug("Awaiting epoch %s", epoch) self.tube.scheduler.await_epoch(epoch) ret = self.collect_return(epoch) - self.store.clear(epoch) epoch += 1 self._current_epoch = epoch if loop > self.max_iter_loops: raise RuntimeError("Reached maximum process calls per iteration") # if we have run out of epochs to run, request some more with a cheap heuristic if n is not None and epoch >= stop_epoch: - # if we get one return value every 5 epochs, - # and we ran 5 epochs to get 1 result, - # then we need to run 20 more to get the other 4, - # or, (n remaining) * (epochs per result) - # so... - divisor = current_iter if current_iter > 0 else 1 - get_more = (n - current_iter) * math.ceil( - (stop_epoch - start_epoch) / divisor + stop_epoch += self._request_more( + n=n, current_iter=current_iter, n_epochs=stop_epoch - start_epoch ) - stop_epoch += get_more - self.command.start(get_more) - # stop here in case we don't exhaust the iterator - if n is not None and current_iter >= n: - self.command.stop() + # # stop here in case we don't exhaust the iterator + # if n is not None and current_iter >= n: + # self.command.stop() current_iter += 1 yield ret @@ -993,6 +993,8 @@ def run(self, n: int | None = None) -> None | list[ReturnNodeType]: self.command = cast(CommandNode, self.command) if n is None: + if self.autoclear_store: + self._ignore_events = True self.command.start() self._running.set() return None @@ -1008,6 +1010,7 @@ def stop(self) -> None: Stop running the tube. """ self.command = cast(CommandNode, self.command) + self._ignore_events = False self.command.stop() self._running.clear() @@ -1018,8 +1021,10 @@ def on_event(self, msg: Message) -> None: return msg = cast(EventMsg, msg) - for event in msg.value: - self.store.add(event) + # store events (if we are not in freerun mode, where we don't want to store infinite events) + if not self._ignore_events: + for event in msg.value: + self.store.add(event) self.tube.scheduler.update(msg.value) if self._return_node is not None: # mark the return node done if we've received the expected events for an epoch @@ -1050,6 +1055,8 @@ def collect_return(self, epoch: int | None = None) -> Any: args, kwargs = self.store.split_args_kwargs(events) self._return_node.process(*args, **kwargs) ret = self._return_node.get(keep=False) + if self.autoclear_store: + self.store.clear(epoch) return ret def _handle_error(self, msg: ErrorMsg) -> None: @@ -1086,6 +1093,39 @@ def _throw_error(self) -> None: raise err + def _request_more(self, n: int, current_iter: int, n_epochs: int) -> int: + """ + During iteration with cardinality-reducing nodes, + if we haven't gotten the requested n return values in n epochs, + request more epochs based on how many return values we got for n iterations + + Args: + n (int): number of requested return values + current_iter (int): current number of return values that have been collected + n_epochs (int): number of epochs that have run + """ + self.command = cast(CommandNode, self.command) + n_remaining = n - current_iter + if n_remaining <= 0: + self._logger.warning( + "Asked to request more epochs, but already collected enough return values. " + "Ignoring. " + "Requested n: %s, collected n: %s", + n, + current_iter, + ) + return 0 + + # if we get one return value every 5 epochs, + # and we ran 5 epochs to get 1 result, + # then we need to run 20 more to get the other 4, + # or, (n remaining) * (epochs per result) + # so... + divisor = current_iter if current_iter > 0 else 1 + get_more = math.ceil(n_remaining * (n_epochs / divisor)) + self.command.start(get_more) + return get_more + def enable_node(self, node_id: str) -> None: raise NotImplementedError() diff --git a/src/noob/store.py b/src/noob/store.py index 37f9473e..1dae0089 100644 --- a/src/noob/store.py +++ b/src/noob/store.py @@ -2,6 +2,7 @@ Tube runners for running tubes """ +import contextlib from collections import defaultdict from collections.abc import Generator from dataclasses import dataclass, field @@ -193,7 +194,8 @@ def clear(self, epoch: int | None = None) -> None: if epoch is None: self.events = _make_event_dict() else: - del self.events[epoch] + with contextlib.suppress(KeyError): + del self.events[epoch] @staticmethod def transform_events(edges: list[Edge], events: list[Event]) -> dict: diff --git a/src/noob/testing/__init__.py b/src/noob/testing/__init__.py index dffdf022..cd182695 100644 --- a/src/noob/testing/__init__.py +++ b/src/noob/testing/__init__.py @@ -2,6 +2,7 @@ from noob.testing.nodes import ( CountSource, CountSourceDecor, + InitCounter, Multiply, Now, NumberToLetterCls, @@ -56,6 +57,7 @@ "Multiply", "VolumeProcess", "Volume", + "InitCounter", "Now", "NumberToLetterCls", "StatefulMultiply", diff --git a/src/noob/testing/nodes.py b/src/noob/testing/nodes.py index 9c9e6cad..1996f88f 100644 --- a/src/noob/testing/nodes.py +++ b/src/noob/testing/nodes.py @@ -224,3 +224,23 @@ def increment( def passthrough(value: Any) -> Any: return value + + +class InitCounter(Node): + """Count how many times we have been initialized and deinitalized""" + + def __init__(self, *args: Any, **kwargs: Any): + super().__init__(*args, **kwargs) + self._inits = 0 + self._deinits = 0 + + def process(self) -> tuple[A[int, Name("inits")], A[int, Name("deinits")]]: + # sleep to just not have this flood the networking modules. + sleep(0.01) + return self._inits, self._deinits + + def init(self) -> None: + self._inits += 1 + + def deinit(self) -> None: + self._deinits += 1 diff --git a/tests/data/pipelines/special/count_inits.yaml b/tests/data/pipelines/special/count_inits.yaml new file mode 100644 index 00000000..5ac62559 --- /dev/null +++ b/tests/data/pipelines/special/count_inits.yaml @@ -0,0 +1,7 @@ +noob_id: testing-count-init +noob_model: noob.tube.TubeSpecification +noob_version: 0.1.1.dev86+gcf9e11b.d20250725 + +nodes: + counter: + type: noob.testing.InitCounter diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index c42cf1a7..647f9ebf 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -1,4 +1,5 @@ from asyncio import sleep +from datetime import UTC, datetime from time import time from typing import cast @@ -6,8 +7,10 @@ from noob import Tube from noob.event import Event +from noob.input import InputCollection from noob.network.message import EventMsg, IdentifyMsg, IdentifyValue, Message, NodeStatus -from noob.runner.zmq import ZMQRunner +from noob.node.spec import NodeSpecification +from noob.runner.zmq import NodeRunner, ZMQRunner pytestmark = pytest.mark.zmq_runner @@ -81,7 +84,7 @@ def _event_cb(event: Message) -> None: event = cast(EventMsg, event) events.extend(event.value) - runner = ZMQRunner(tube=tube) + runner = ZMQRunner(tube=tube, autoclear_store=False) with runner: runner.command.add_callback("inbox", _event_cb) # skip first epoch @@ -144,7 +147,7 @@ def _event_cb(event: Message) -> None: event = cast(EventMsg, event) events.extend(event.value) - runner = ZMQRunner(tube=tube) + runner = ZMQRunner(tube=tube, autoclear_store=False) for i in range(3): runner.tube.scheduler.add_epoch(i) runner.tube.scheduler.done(i, "input") @@ -200,7 +203,7 @@ async def test_run_freeruns(): allow nodes to execute as quickly as they can, whenever their deps are satisfied. """ tube = Tube.from_specification("testing-long-add") - runner = ZMQRunner(tube) + runner = ZMQRunner(tube, autoclear_store=False) # events = [] # @@ -239,49 +242,186 @@ async def test_run_freeruns(): assert len(set(e["epoch"] for e in count_events)) > 10 -@pytest.mark.xfail() -def test_start_stop(): +@pytest.mark.asyncio +async def test_start_stop(): """ The runner can be started and stopped without deinitializing """ - raise NotImplementedError() + tube = Tube.from_specification("testing-count-init") + events: list[Event] = [] + router_events: list[Message] = [] + def _event_cb(event: Message) -> None: + nonlocal events + event = cast(EventMsg, event) + events.extend(event.value) + + def _router_cb(msg: Message) -> None: + nonlocal router_events + router_events.append(msg) -@pytest.mark.xfail() -def test_iter_gather(): + runner = ZMQRunner(tube=tube) + with runner: + runner.command.add_callback("inbox", _event_cb) + runner.command.add_callback("router", _router_cb) + runner.run() + await sleep(0.1) + runner.stop() + await sleep(0.1) + runner.run() + await sleep(0.2) + + # sometimes we get the last stop event, + # sometimes we dont - we don't wait for it + assert 4 >= len(router_events) >= 3 + assert router_events[1].value == "stopped" + first_events = [e for e in events if e["timestamp"] < router_events[1].timestamp] + stopped_events = [ + e + for e in events + if e["timestamp"] > router_events[1].timestamp + and e["timestamp"] < router_events[2].timestamp + ] + end_events = [e for e in events if e["timestamp"] > router_events[2].timestamp] + + # with the node's sleep, there are time for ~10 runs if there was no latency, + # so say we should at least do 5 (10 events) + assert len(first_events) > 10 + # there can be one additional run of the node after the stopped message is sent + # if the node is already running when the stop message is received. + # (two events, because the node emits two signals) + assert len(stopped_events) <= 2 + assert len(end_events) > 10 + + # even though we stopped and started, the nodes should have stated initialized + # (and not been deinit'd and reinit'd) + inits = [e for e in events if e["signal"] == "inits"] + deinits = [e for e in events if e["signal"] == "deinits"] + assert len(inits) > 0 + assert len(deinits) > 0 + assert all(e["value"] == 1 for e in inits) + assert all(e["value"] == 0 for e in deinits) + + +def test_iter_gather(mocker): """ itering over gather should heuristically request more iterations as we go """ - raise NotImplementedError() + tube = Tube.from_specification("testing-gather-n") + runner = ZMQRunner(tube=tube) + # the gather_n pipeline only returns every 5 epochs. + # so we are going to request 11 return values, which should require 55 epochs + # after we run 11 epochs, (after returning two results) + # we should notice that we haven't returned the correct amount yet + # and request more. + spy = mocker.spy(runner, "_request_more") + stop_spy = mocker.spy(runner, "stop") + results = [] + with runner: + for result in runner.iter(11): + results.append(result) + + # after exhausting the iterator, but before deinit, we should have called stop + stop_spy.assert_called_once() + + # for cases like this with deterministic n_gather, only should need to call once. + assert spy.call_count == 1 + spy.assert_called_once_with(n=11, current_iter=2, n_epochs=11) + # we don't get an *exact* number of iters to run, + # e.g. here we have chosen 11 since it isn't a multiple of 5, + # and all we see is "we've run 11 times and gotten 2 results," + # so if 11 epochs yields 2 results, and we want 9 more, + # then a reasonable amount of additional times to run might be + # ceil((11/2)*9) = 50 + assert spy.spy_return == 50 -@pytest.mark.xfail() def test_noderunner_stores_clear(): """ Stores in the noderunners should clear after they use the events from an epoch """ - raise NotImplementedError() + spec = NodeSpecification( + id="test_node", + type="noob.testing.multiply", + depends=[{"left": "other.left"}, {"right": "other.right"}], + ) + runner = NodeRunner( + spec=spec, + runner_id="testing", + command_outbox="/notreal/unused", + command_router="/notreal/unused", + input_collection=InputCollection(), + ) + runner.init_node() + # fake a few events + events = [] + for i in range(3): -@pytest.mark.xfail() -def test_zmqrunner_stores_clear_process(): + msg = EventMsg( + node_id="other", + value=[ + Event( + id=i * 2, + timestamp=datetime.now(UTC), + signal="left", + value=i * 2, + node_id="other", + epoch=i, + ), + Event( + id=(i * 2) + 1, + timestamp=datetime.now(UTC), + signal="right", + value=(i * 2) + 1, + node_id="other", + epoch=i, + ), + ], + ) + runner.on_event(msg) + events.append(msg) + + runner._freerun.set() + assert len(runner.store.events) == 3 + args, kwargs, epoch = next(runner.await_inputs()) + assert len(runner.store.events) == 2 + assert epoch not in runner.store.events + + +@pytest.fixture +def _zmq_runner_basic() -> ZMQRunner: + tube = Tube.from_specification("testing-basic") + runner = ZMQRunner(tube=tube) + runner.init() + yield runner + runner.deinit() + + +def test_zmqrunner_stores_clear_process(_zmq_runner_basic): """ ZMQRunner stores clear after returning values from process """ - raise NotImplementedError() + runner = _zmq_runner_basic + runner.process() + assert len(runner.store.events) == 0 -@pytest.mark.xfail() -def test_zmqrunner_stores_clear_iter(): +def test_zmqrunner_stores_clear_iter(_zmq_runner_basic): """ ZMQRunner stores clear after returning values while iterating """ - raise NotImplementedError() + runner = _zmq_runner_basic + for _ in runner.iter(5): + assert len(runner.store.events) == 0 -@pytest.mark.xfail() -def test_zmqrunner_stores_clear_freerun(): +@pytest.mark.asyncio +async def test_zmqrunner_stores_clear_freerun(_zmq_runner_basic): """ ZMQRunner doesn't store events while freerunning. """ - raise NotImplementedError() + runner = _zmq_runner_basic + runner.run() + await sleep(0.1) + assert len(runner.store.events) == 0 From 65858c72b740d834eb279ac666e2a3694332b98f Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 15:54:07 -0800 Subject: [PATCH 12/18] iter mode runs ahead of the top-level iterator --- tests/test_runners/test_zmq.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index 647f9ebf..d8d445b1 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -412,8 +412,10 @@ def test_zmqrunner_stores_clear_iter(_zmq_runner_basic): ZMQRunner stores clear after returning values while iterating """ runner = _zmq_runner_basic - for _ in runner.iter(5): - assert len(runner.store.events) == 0 + for i, _ in enumerate(runner.iter(5)): + # we will receive more events from epochs that run ahead of our processing + # but we should clear the epoch as we return it from iter + assert i not in runner.store.events @pytest.mark.asyncio From 0e2c75e1969a37155efb899b267b6e6752073a52 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 16:00:03 -0800 Subject: [PATCH 13/18] why would we be getting extra router events --- tests/test_runners/test_zmq.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index d8d445b1..791087c1 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -271,9 +271,12 @@ def _router_cb(msg: Message) -> None: runner.run() await sleep(0.2) + router_events = [ + e for e in router_events if e.type_ == "status" and e.value in ("stopped", "running") + ] # sometimes we get the last stop event, # sometimes we dont - we don't wait for it - assert 4 >= len(router_events) >= 3 + assert 4 >= len(router_events) >= 3, router_events assert router_events[1].value == "stopped" first_events = [e for e in events if e["timestamp"] < router_events[1].timestamp] stopped_events = [ From be6e797577336535c684d175b85d8ec211bf72c3 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 16:02:22 -0800 Subject: [PATCH 14/18] update lockfile --- pylock.toml | 1048 ++++++++++++++++++++++++++------------------------- 1 file changed, 525 insertions(+), 523 deletions(-) diff --git a/pylock.toml b/pylock.toml index a2129172..bc29f41a 100644 --- a/pylock.toml +++ b/pylock.toml @@ -12,52 +12,17 @@ created-by = "pdm" [[packages]] name = "faker" -version = "39.0.0" +version = "40.1.2" requires-python = ">=3.10" -sdist = {name = "faker-39.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/30/b9/0897fb5888ddda099dc0f314a8a9afb5faa7e52eaf6865c00686dfb394db/faker-39.0.0.tar.gz", hashes = {sha256 = "ddae46d3b27e01cea7894651d687b33bcbe19a45ef044042c721ceac6d3da0ff"}} +sdist = {name = "faker-40.1.2.tar.gz", url = "https://files.pythonhosted.org/packages/5e/77/1c3ff07b6739b9a1d23ca01ec0a90a309a33b78e345a3eb52f9ce9240e36/faker-40.1.2.tar.gz", hashes = {sha256 = "b76a68163aa5f171d260fc24827a8349bc1db672f6a665359e8d0095e8135d30"}} wheels = [ - {name = "faker-39.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/eb/5a/26cdb1b10a55ac6eb11a738cea14865fa753606c4897d7be0f5dc230df00/faker-39.0.0-py3-none-any.whl",hashes = {sha256 = "c72f1fca8f1a24b8da10fcaa45739135a19772218ddd61b86b7ea1b8c790dce7"}}, + {name = "faker-40.1.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/46/ec/91a434c8a53d40c3598966621dea9c50512bec6ce8e76fa1751015e74cef/faker-40.1.2-py3-none-any.whl",hashes = {sha256 = "93503165c165d330260e4379fd6dc07c94da90c611ed3191a0174d2ab9966a42"}}, ] marker = "\"dev\" in extras or \"docs\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [ - "tzdata", -] - -[[packages]] -name = "autodoc-pydantic" -version = "2.2.0" -requires-python = "<4.0.0,>=3.8.1" -wheels = [ - {name = "autodoc_pydantic-2.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7b/df/87120e2195f08d760bc5cf8a31cfa2381a6887517aa89453b23f1ae3354f/autodoc_pydantic-2.2.0-py3-none-any.whl",hashes = {sha256 = "8c6a36fbf6ed2700ea9c6d21ea76ad541b621fbdf16b5a80ee04673548af4d95"}}, -] -marker = "\"dev\" in extras or \"docs\" in extras" - -[packages.tool.pdm] -dependencies = [ - "Sphinx>=4.0", - "importlib-metadata>1; python_version <= \"3.8\"", - "pydantic<3.0.0,>=2.0", - "pydantic-settings<3.0.0,>=2.0", -] - -[[packages]] -name = "pydantic" -version = "2.12.5" -requires-python = ">=3.9" -sdist = {name = "pydantic-2.12.5.tar.gz", url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hashes = {sha256 = "4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}} -wheels = [ - {name = "pydantic-2.12.5-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl",hashes = {sha256 = "e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}}, -] -marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras" - -[packages.tool.pdm] -dependencies = [ - "annotated-types>=0.6.0", - "pydantic-core==2.41.5", - "typing-extensions>=4.14.1", - "typing-inspection>=0.4.2", + "tzdata; platform_system == \"Windows\"", ] [[packages]] @@ -92,87 +57,54 @@ dependencies = [ ] [[packages]] -name = "typing-extensions" -version = "4.15.0" -requires-python = ">=3.9" -sdist = {name = "typing_extensions-4.15.0.tar.gz", url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hashes = {sha256 = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}} +name = "autodoc-pydantic" +version = "2.2.0" +requires-python = "<4.0.0,>=3.8.1" wheels = [ - {name = "typing_extensions-4.15.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl",hashes = {sha256 = "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}}, -] -marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras or \"mypy\" in extras or \"tests\" in extras" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "black" -version = "25.12.0" -requires-python = ">=3.10" -sdist = {name = "black-25.12.0.tar.gz", url = "https://files.pythonhosted.org/packages/c4/d9/07b458a3f1c525ac392b5edc6b191ff140b596f9d77092429417a54e249d/black-25.12.0.tar.gz", hashes = {sha256 = "8d3dd9cea14bff7ddc0eb243c811cdb1a011ebb4800a5f0335a01a68654796a7"}} -wheels = [ - {name = "black-25.12.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/35/46/1d8f2542210c502e2ae1060b2e09e47af6a5e5963cb78e22ec1a11170b28/black-25.12.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "0a0953b134f9335c2434864a643c842c44fba562155c738a2a37a4d61f00cad5"}}, - {name = "black-25.12.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/41/37/68accadf977672beb8e2c64e080f568c74159c1aaa6414b4cd2aef2d7906/black-25.12.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "2355bbb6c3b76062870942d8cc450d4f8ac71f9c93c40122762c8784df49543f"}}, - {name = "black-25.12.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ac/76/03608a9d8f0faad47a3af3a3c8c53af3367f6c0dd2d23a84710456c7ac56/black-25.12.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9678bd991cc793e81d19aeeae57966ee02909877cb65838ccffef24c3ebac08f"}}, - {name = "black-25.12.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/06/99/b2a4bd7dfaea7964974f947e1c76d6886d65fe5d24f687df2d85406b2609/black-25.12.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "97596189949a8aad13ad12fcbb4ae89330039b96ad6742e6f6b45e75ad5cfd83"}}, - {name = "black-25.12.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/b2/7c/d9825de75ae5dd7795d007681b752275ea85a1c5d83269b4b9c754c2aaab/black-25.12.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "778285d9ea197f34704e3791ea9404cd6d07595745907dd2ce3da7a13627b29b"}}, - {name = "black-25.12.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/c8/52/c551e36bc95495d2aa1a37d50566267aa47608c81a53f91daa809e03293f/black-25.12.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "a05ddeb656534c3e27a05a29196c962877c83fa5503db89e68857d1161ad08a5"}}, - {name = "black-25.12.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a0/f7/aac9b014140ee56d247e707af8db0aae2e9efc28d4a8aba92d0abd7ae9d1/black-25.12.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "9ec77439ef3e34896995503865a85732c94396edcc739f302c5673a2315e1e7f"}}, - {name = "black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/74/98/38aaa018b2ab06a863974c12b14a6266badc192b20603a81b738c47e902e/black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "0e509c858adf63aa61d908061b52e580c40eae0dfa72415fa47ac01b12e29baf"}}, - {name = "black-25.12.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/16/3a/a8ac542125f61574a3f015b521ca83b47321ed19bb63fe6d7560f348bfe1/black-25.12.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "252678f07f5bac4ff0d0e9b261fbb029fa530cfa206d0a636a34ab445ef8ca9d"}}, - {name = "black-25.12.0-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/e6/2d/bdc466a3db9145e946762d52cd55b1385509d9f9004fec1c97bdc8debbfb/black-25.12.0-cp313-cp313-win_arm64.whl",hashes = {sha256 = "bc5b1c09fe3c931ddd20ee548511c64ebf964ada7e6f0763d443947fd1c603ce"}}, - {name = "black-25.12.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/d1/bd/26083f805115db17fda9877b3c7321d08c647df39d0df4c4ca8f8450593e/black-25.12.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "31f96b7c98c1ddaeb07dc0f56c652e25bdedaac76d5b68a059d998b57c55594a"}}, - {name = "black-25.12.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/89/6b/ea00d6651561e2bdd9231c4177f4f2ae19cc13a0b0574f47602a7519b6ca/black-25.12.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "05dd459a19e218078a1f98178c13f861fe6a9a5f88fc969ca4d9b49eb1809783"}}, - {name = "black-25.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/6d/f3/360fa4182e36e9875fabcf3a9717db9d27a8d11870f21cff97725c54f35b/black-25.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "c1f68c5eff61f226934be6b5b80296cf6939e5d2f0c2f7d543ea08b204bfaf59"}}, - {name = "black-25.12.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f8/08/2c64830cb6616278067e040acca21d4f79727b23077633953081c9445d61/black-25.12.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "274f940c147ddab4442d316b27f9e332ca586d39c85ecf59ebdea82cc9ee8892"}}, - {name = "black-25.12.0-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/d4/60/a93f55fd9b9816b7432cf6842f0e3000fdd5b7869492a04b9011a133ee37/black-25.12.0-cp312-cp312-win_arm64.whl",hashes = {sha256 = "169506ba91ef21e2e0591563deda7f00030cb466e747c4b09cb0a9dae5db2f43"}}, - {name = "black-25.12.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/60/ad/7ac0d0e1e0612788dbc48e62aef8a8e8feffac7eb3d787db4e43b8462fa8/black-25.12.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "d0cfa263e85caea2cff57d8f917f9f51adae8e20b610e2b23de35b5b11ce691a"}}, - {name = "black-25.12.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/e8/dd/a237e9f565f3617a88b49284b59cbca2a4f56ebe68676c1aad0ce36a54a7/black-25.12.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "1a2f578ae20c19c50a382286ba78bfbeafdf788579b053d8e4980afb079ab9be"}}, - {name = "black-25.12.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/12/80/e187079df1ea4c12a0c63282ddd8b81d5107db6d642f7d7b75a6bcd6fc21/black-25.12.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d3e1b65634b0e471d07ff86ec338819e2ef860689859ef4501ab7ac290431f9b"}}, - {name = "black-25.12.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/93/b5/3096ccee4f29dc2c3aac57274326c4d2d929a77e629f695f544e159bfae4/black-25.12.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "a3fa71e3b8dd9f7c6ac4d818345237dfb4175ed3bf37cd5a581dbc4c034f1ec5"}}, - {name = "black-25.12.0-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/7e/39/f81c0ffbc25ffbe61c7d0385bf277e62ffc3e52f5ee668d7369d9854fadf/black-25.12.0-cp311-cp311-win_arm64.whl",hashes = {sha256 = "51e267458f7e650afed8445dc7edb3187143003d52a1b710c7321aef22aa9655"}}, - {name = "black-25.12.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/68/11/21331aed19145a952ad28fca2756a1433ee9308079bd03bd898e903a2e53/black-25.12.0-py3-none-any.whl",hashes = {sha256 = "48ceb36c16dbc84062740049eef990bb2ce07598272e673c17d1a7720c71c828"}}, + {name = "autodoc_pydantic-2.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7b/df/87120e2195f08d760bc5cf8a31cfa2381a6887517aa89453b23f1ae3354f/autodoc_pydantic-2.2.0-py3-none-any.whl",hashes = {sha256 = "8c6a36fbf6ed2700ea9c6d21ea76ad541b621fbdf16b5a80ee04673548af4d95"}}, ] -marker = "\"dev\" in extras" +marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ - "click>=8.0.0", - "mypy-extensions>=0.4.3", - "packaging>=22.0", - "pathspec>=0.9.0", - "platformdirs>=2", - "pytokens>=0.3.0", - "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=4.0.1; python_version < \"3.11\"", + "Sphinx>=4.0", + "importlib-metadata>1; python_version <= \"3.8\"", + "pydantic<3.0.0,>=2.0", + "pydantic-settings<3.0.0,>=2.0", ] [[packages]] -name = "platformdirs" -version = "4.5.1" -requires-python = ">=3.10" -sdist = {name = "platformdirs-4.5.1.tar.gz", url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hashes = {sha256 = "61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"}} +name = "pydantic" +version = "2.12.5" +requires-python = ">=3.9" +sdist = {name = "pydantic-2.12.5.tar.gz", url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hashes = {sha256 = "4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}} wheels = [ - {name = "platformdirs-4.5.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl",hashes = {sha256 = "d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"}}, + {name = "pydantic-2.12.5-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl",hashes = {sha256 = "e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}}, ] marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] -dependencies = [] +dependencies = [ + "annotated-types>=0.6.0", + "pydantic-core==2.41.5", + "typing-extensions>=4.14.1", + "typing-inspection>=0.4.2", +] [[packages]] name = "furo" -version = "2025.9.25" +version = "2025.12.19" requires-python = ">=3.8" -sdist = {name = "furo-2025.9.25.tar.gz", url = "https://files.pythonhosted.org/packages/4e/29/ff3b83a1ffce74676043ab3e7540d398e0b1ce7660917a00d7c4958b93da/furo-2025.9.25.tar.gz", hashes = {sha256 = "3eac05582768fdbbc2bdfa1cdbcdd5d33cfc8b4bd2051729ff4e026a1d7e0a98"}} +sdist = {name = "furo-2025.12.19.tar.gz", url = "https://files.pythonhosted.org/packages/ec/20/5f5ad4da6a5a27c80f2ed2ee9aee3f9e36c66e56e21c00fde467b2f8f88f/furo-2025.12.19.tar.gz", hashes = {sha256 = "188d1f942037d8b37cd3985b955839fea62baa1730087dc29d157677c857e2a7"}} wheels = [ - {name = "furo-2025.9.25-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/ba/69/964b55f389c289e16ba2a5dfe587c3c462aac09e24123f09ddf703889584/furo-2025.9.25-py3-none-any.whl",hashes = {sha256 = "2937f68e823b8e37b410c972c371bc2b1d88026709534927158e0cb3fac95afe"}}, + {name = "furo-2025.12.19-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/f4/b2/50e9b292b5cac13e9e81272c7171301abc753a60460d21505b606e15cf21/furo-2025.12.19-py3-none-any.whl",hashes = {sha256 = "bb0ead5309f9500130665a26bee87693c41ce4dbdff864dbfb6b0dae4673d24f"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ "beautifulsoup4", - "sphinx<9.0,>=6.0", + "sphinx<10.0,>=7.0", "sphinx-basic-ng>=1.0.0.beta2", "pygments>=2.7", "accessible-pygments>=0.0.5", @@ -221,6 +153,19 @@ dependencies = [ "librt>=0.6.2; platform_python_implementation != \"PyPy\"", ] +[[packages]] +name = "typing-extensions" +version = "4.15.0" +requires-python = ">=3.9" +sdist = {name = "typing_extensions-4.15.0.tar.gz", url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hashes = {sha256 = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}} +wheels = [ + {name = "typing_extensions-4.15.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl",hashes = {sha256 = "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}}, +] +marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras or \"mypy\" in extras or \"tests\" in extras" + +[packages.tool.pdm] +dependencies = [] + [[packages]] name = "myst-nb" version = "1.3.0" @@ -247,22 +192,22 @@ dependencies = [ [[packages]] name = "myst-parser" -version = "4.0.1" -requires-python = ">=3.10" -sdist = {name = "myst_parser-4.0.1.tar.gz", url = "https://files.pythonhosted.org/packages/66/a5/9626ba4f73555b3735ad86247a8077d4603aa8628537687c839ab08bfe44/myst_parser-4.0.1.tar.gz", hashes = {sha256 = "5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4"}} +version = "5.0.0" +requires-python = ">=3.11" +sdist = {name = "myst_parser-5.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/33/fa/7b45eef11b7971f0beb29d27b7bfe0d747d063aa29e170d9edd004733c8a/myst_parser-5.0.0.tar.gz", hashes = {sha256 = "f6f231452c56e8baa662cc352c548158f6a16fcbd6e3800fc594978002b94f3a"}} wheels = [ - {name = "myst_parser-4.0.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl",hashes = {sha256 = "9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d"}}, + {name = "myst_parser-5.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d3/ac/686789b9145413f1a61878c407210e41bfdb097976864e0913078b24098c/myst_parser-5.0.0-py3-none-any.whl",hashes = {sha256 = "ab31e516024918296e169139072b81592336f2fef55b8986aa31c9f04b5f7211"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ - "docutils<0.22,>=0.19", + "docutils<0.23,>=0.20", "jinja2", - "markdown-it-py~=3.0", - "mdit-py-plugins>=0.4.1,~=0.4", + "markdown-it-py~=4.0", + "mdit-py-plugins~=0.5", "pyyaml", - "sphinx<9,>=7", + "sphinx<10,>=8", ] [[packages]] @@ -332,36 +277,35 @@ dependencies = [ ] [[packages]] -name = "rich" -version = "14.2.0" -requires-python = ">=3.8.0" -sdist = {name = "rich-14.2.0.tar.gz", url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hashes = {sha256 = "73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}} +name = "pytest-cov" +version = "7.0.0" +requires-python = ">=3.9" +sdist = {name = "pytest_cov-7.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hashes = {sha256 = "33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}} wheels = [ - {name = "rich-14.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl",hashes = {sha256 = "76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}}, + {name = "pytest_cov-7.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl",hashes = {sha256 = "3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}}, ] -marker = "\"default\" in dependency_groups or \"dev\" in extras or \"tests\" in extras" +marker = "\"dev\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [ - "markdown-it-py>=2.2.0", - "pygments<3.0.0,>=2.13.0", + "coverage[toml]>=7.10.6", + "pluggy>=1.2", + "pytest>=7", ] [[packages]] -name = "pytest-cov" -version = "7.0.0" +name = "pytest-mock" +version = "3.15.1" requires-python = ">=3.9" -sdist = {name = "pytest_cov-7.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hashes = {sha256 = "33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}} +sdist = {name = "pytest_mock-3.15.1.tar.gz", url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hashes = {sha256 = "1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f"}} wheels = [ - {name = "pytest_cov-7.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl",hashes = {sha256 = "3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}}, + {name = "pytest_mock-3.15.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl",hashes = {sha256 = "0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d"}}, ] marker = "\"dev\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [ - "coverage[toml]>=7.10.6", - "pluggy>=1.2", - "pytest>=7", + "pytest>=6.2.5", ] [[packages]] @@ -441,110 +385,49 @@ dependencies = [ ] [[packages]] -name = "remote-pdb" -version = "2.1.0" -requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -sdist = {name = "remote-pdb-2.1.0.tar.gz", url = "https://files.pythonhosted.org/packages/e4/b5/4944cac06fd9fc4a2e168313ec220aa25ed96ce83947b63eea5b4045b22d/remote-pdb-2.1.0.tar.gz", hashes = {sha256 = "2d70c6f41e0eabf0165e8f1be58f82aa7a605aaeab8f2aefeb9ce246431091c1"}} -wheels = [ - {name = "remote_pdb-2.1.0-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/71/c5/d208c66344bb785d800adb61aef512290d3473052b9e7697890f0547aff2/remote_pdb-2.1.0-py2.py3-none-any.whl",hashes = {sha256 = "94f73a92ac1248cf16189211011f97096bdada8a7baac8c79372663bbb57b5d0"}}, -] -marker = "\"dev\" in extras" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "ruamel-yaml" -version = "0.18.17" -requires-python = ">=3.9" -sdist = {name = "ruamel_yaml-0.18.17.tar.gz", url = "https://files.pythonhosted.org/packages/3a/2b/7a1f1ebcd6b3f14febdc003e658778d81e76b40df2267904ee6b13f0c5c6/ruamel_yaml-0.18.17.tar.gz", hashes = {sha256 = "9091cd6e2d93a3a4b157ddb8fabf348c3de7f1fb1381346d985b6b247dcd8d3c"}} -wheels = [ - {name = "ruamel_yaml-0.18.17-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl",hashes = {sha256 = "9c8ba9eb3e793efdf924b60d521820869d5bf0cb9c6f1b82d82de8295e290b9d"}}, -] -marker = "\"default\" in dependency_groups" - -[packages.tool.pdm] -dependencies = [ - "ruamel-yaml-clib>=0.2.15; platform_python_implementation == \"CPython\" and python_version < \"3.15\"", -] - -[[packages]] -name = "ruff" -version = "0.14.10" -requires-python = ">=3.7" -sdist = {name = "ruff-0.14.10.tar.gz", url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hashes = {sha256 = "9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4"}} -wheels = [ - {name = "ruff-0.14.10-py3-none-linux_armv6l.whl",url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl",hashes = {sha256 = "7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49"}}, - {name = "ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl",url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl",hashes = {sha256 = "674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f"}}, - {name = "ruff-0.14.10-py3-none-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl",hashes = {sha256 = "d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",hashes = {sha256 = "16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",hashes = {sha256 = "c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",hashes = {sha256 = "4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",hashes = {sha256 = "f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f"}}, - {name = "ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl",url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl",hashes = {sha256 = "213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f"}}, - {name = "ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl",hashes = {sha256 = "b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d"}}, - {name = "ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl",url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl",hashes = {sha256 = "1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405"}}, - {name = "ruff-0.14.10-py3-none-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl",hashes = {sha256 = "c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60"}}, - {name = "ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830"}}, - {name = "ruff-0.14.10-py3-none-win32.whl",url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl",hashes = {sha256 = "104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6"}}, - {name = "ruff-0.14.10-py3-none-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl",hashes = {sha256 = "466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154"}}, - {name = "ruff-0.14.10-py3-none-win_arm64.whl",url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl",hashes = {sha256 = "e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6"}}, -] -marker = "\"dev\" in extras" - -[packages.tool.pdm] -dependencies = [] - -[[packages]] -name = "sphinx-autobuild" -version = "2025.8.25" -requires-python = ">=3.11" -sdist = {name = "sphinx_autobuild-2025.8.25.tar.gz", url = "https://files.pythonhosted.org/packages/e0/3c/a59a3a453d4133777f7ed2e83c80b7dc817d43c74b74298ca0af869662ad/sphinx_autobuild-2025.8.25.tar.gz", hashes = {sha256 = "9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213"}} +name = "rich" +version = "14.2.0" +requires-python = ">=3.8.0" +sdist = {name = "rich-14.2.0.tar.gz", url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hashes = {sha256 = "73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}} wheels = [ - {name = "sphinx_autobuild-2025.8.25-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d7/20/56411b52f917696995f5ad27d2ea7e9492c84a043c5b49a3a3173573cd93/sphinx_autobuild-2025.8.25-py3-none-any.whl",hashes = {sha256 = "b750ac7d5a18603e4665294323fd20f6dcc0a984117026d1986704fa68f0379a"}}, + {name = "rich-14.2.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl",hashes = {sha256 = "76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}}, ] -marker = "\"dev\" in extras" +marker = "\"default\" in dependency_groups or \"dev\" in extras or \"tests\" in extras" [packages.tool.pdm] dependencies = [ - "colorama>=0.4.6", - "Sphinx", - "starlette>=0.35", - "uvicorn>=0.25", - "watchfiles>=0.20", - "websockets>=11", + "markdown-it-py>=2.2.0", + "pygments<3.0.0,>=2.13.0", ] [[packages]] name = "sphinx-design" -version = "0.6.1" -requires-python = ">=3.9" -sdist = {name = "sphinx_design-0.6.1.tar.gz", url = "https://files.pythonhosted.org/packages/2b/69/b34e0cb5336f09c6866d53b4a19d76c227cdec1bbc7ac4de63ca7d58c9c7/sphinx_design-0.6.1.tar.gz", hashes = {sha256 = "b44eea3719386d04d765c1a8257caca2b3e6f8421d7b3a5e742c0fd45f84e632"}} +version = "0.7.0" +requires-python = ">=3.11" +sdist = {name = "sphinx_design-0.7.0.tar.gz", url = "https://files.pythonhosted.org/packages/13/7b/804f311da4663a4aecc6cf7abd83443f3d4ded970826d0c958edc77d4527/sphinx_design-0.7.0.tar.gz", hashes = {sha256 = "d2a3f5b19c24b916adb52f97c5f00efab4009ca337812001109084a740ec9b7a"}} wheels = [ - {name = "sphinx_design-0.6.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/c6/43/65c0acbd8cc6f50195a3a1fc195c404988b15c67090e73c7a41a9f57d6bd/sphinx_design-0.6.1-py3-none-any.whl",hashes = {sha256 = "b11f37db1a802a183d61b159d9a202314d4d2fe29c163437001324fe2f19549c"}}, + {name = "sphinx_design-0.7.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/30/cf/45dd359f6ca0c3762ce0490f681da242f0530c49c81050c035c016bfdd3a/sphinx_design-0.7.0-py3-none-any.whl",hashes = {sha256 = "f82bf179951d58f55dca78ab3706aeafa496b741a91b1911d371441127d64282"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ - "sphinx<9,>=6", + "sphinx<10,>=7", ] [[packages]] name = "sphinxcontrib-mermaid" -version = "1.2.3" -requires-python = ">=3.8" -sdist = {name = "sphinxcontrib_mermaid-1.2.3.tar.gz", url = "https://files.pythonhosted.org/packages/f5/49/c6ddfe709a4ab76ac6e5a00e696f73626b2c189dc1e1965a361ec102e6cc/sphinxcontrib_mermaid-1.2.3.tar.gz", hashes = {sha256 = "358699d0ec924ef679b41873d9edd97d0773446daf9760c75e18dc0adfd91371"}} +version = "2.0.0" +requires-python = ">=3.10" +sdist = {name = "sphinxcontrib_mermaid-2.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/96/a5/65a5c439cc14ba80483b9891e9350f11efb80cd3bdccb222f0c738068c78/sphinxcontrib_mermaid-2.0.0.tar.gz", hashes = {sha256 = "cf4f7d453d001132eaba5d1fdf53d42049f02e913213cf8337427483bfca26f4"}} wheels = [ - {name = "sphinxcontrib_mermaid-1.2.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d1/39/8b54299ffa00e597d3b0b4d042241a0a0b22cb429ad007ccfb9c1745b4d1/sphinxcontrib_mermaid-1.2.3-py3-none-any.whl",hashes = {sha256 = "5be782b27026bef97bfb15ccb2f7868b674a1afc0982b54cb149702cfc25aa02"}}, + {name = "sphinxcontrib_mermaid-2.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/f9/de/bd96c69b62e967bffd02c6d89dfca9471b04e761c466725fc39746abf41d/sphinxcontrib_mermaid-2.0.0-py3-none-any.whl",hashes = {sha256 = "59a73249bbee2c74b1a4db036f8e8899ade65982bdda6712cf22b4f4e9874bb5"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ + "jinja2", "sphinx", "pyyaml", ] @@ -599,18 +482,134 @@ marker = "\"dev\" in extras or \"mypy\" in extras" dependencies = [] [[packages]] -name = "pytest-mock" -version = "3.15.1" +name = "black" +version = "26.1.0" +requires-python = ">=3.10" +sdist = {name = "black-26.1.0.tar.gz", url = "https://files.pythonhosted.org/packages/13/88/560b11e521c522440af991d46848a2bde64b5f7202ec14e1f46f9509d328/black-26.1.0.tar.gz", hashes = {sha256 = "d294ac3340eef9c9eb5d29288e96dc719ff269a88e27b396340459dd85da4c58"}} +wheels = [ + {name = "black-26.1.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/6a/83/be35a175aacfce4b05584ac415fd317dd6c24e93a0af2dcedce0f686f5d8/black-26.1.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "9dc8c71656a79ca49b8d3e2ce8103210c9481c57798b48deeb3a8bb02db5f115"}}, + {name = "black-26.1.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a5/f5/d33696c099450b1274d925a42b7a030cd3ea1f56d72e5ca8bbed5f52759c/black-26.1.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "b22b3810451abe359a964cc88121d57f7bce482b53a066de0f1584988ca36e79"}}, + {name = "black-26.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/1b/87/670dd888c537acb53a863bc15abbd85b22b429237d9de1b77c0ed6b79c42/black-26.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "53c62883b3f999f14e5d30b5a79bd437236658ad45b2f853906c7cbe79de00af"}}, + {name = "black-26.1.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fe/9c/cd3deb79bfec5bcf30f9d2100ffeec63eecce826eb63e3961708b9431ff1/black-26.1.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "f016baaadc423dc960cdddf9acae679e71ee02c4c341f78f3179d7e4819c095f"}}, + {name = "black-26.1.0-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/4e/29/f3be41a1cf502a283506f40f5d27203249d181f7a1a2abce1c6ce188035a/black-26.1.0-cp314-cp314-win_arm64.whl",hashes = {sha256 = "66912475200b67ef5a0ab665011964bf924745103f51977a78b4fb92a9fc1bf0"}}, + {name = "black-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/04/fa2f4784f7237279332aa735cdfd5ae2e7730db0072fb2041dadda9ae551/black-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "ba1d768fbfb6930fc93b0ecc32a43d8861ded16f47a40f14afa9bb04ab93d304"}}, + {name = "black-26.1.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/cf/ad/5a131b01acc0e5336740a039628c0ab69d60cf09a2c87a4ec49f5826acda/black-26.1.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "2b807c240b64609cb0e80d2200a35b23c7df82259f80bef1b2c96eb422b4aac9"}}, + {name = "black-26.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/da/7c/b05f22964316a52ab6b4265bcd52c0ad2c30d7ca6bd3d0637e438fc32d6e/black-26.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "1de0f7d01cc894066a1153b738145b194414cc6eeaad8ef4397ac9abacf40f6b"}}, + {name = "black-26.1.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a6/a3/e8d1526bea0446e040193185353920a9506eab60a7d8beb062029129c7d2/black-26.1.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "91a68ae46bf07868963671e4d05611b179c2313301bd756a89ad4e3b3db2325b"}}, + {name = "black-26.1.0-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/c7/5a/d62ebf4d8f5e3a1daa54adaab94c107b57be1b1a2f115a0249b41931e188/black-26.1.0-cp313-cp313-win_arm64.whl",hashes = {sha256 = "be5e2fe860b9bd9edbf676d5b60a9282994c03fbbd40fe8f5e75d194f96064ca"}}, + {name = "black-26.1.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/f5/13/710298938a61f0f54cdb4d1c0baeb672c01ff0358712eddaf29f76d32a0b/black-26.1.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "6eeca41e70b5f5c84f2f913af857cf2ce17410847e1d54642e658e078da6544f"}}, + {name = "black-26.1.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/79/a6/5179beaa57e5dbd2ec9f1c64016214057b4265647c62125aa6aeffb05392/black-26.1.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "dd39eef053e58e60204f2cdf059e2442e2eb08f15989eefe259870f89614c8b6"}}, + {name = "black-26.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/8c/04/c96f79d7b93e8f09d9298b333ca0d31cd9b2ee6c46c274fd0f531de9dc61/black-26.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9459ad0d6cd483eacad4c6566b0f8e42af5e8b583cee917d90ffaa3778420a0a"}}, + {name = "black-26.1.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/49/f9/71c161c4c7aa18bdda3776b66ac2dc07aed62053c7c0ff8bbda8c2624fe2/black-26.1.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "a19915ec61f3a8746e8b10adbac4a577c6ba9851fa4a9e9fbfbcf319887a5791"}}, + {name = "black-26.1.0-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/4a/8b/a7b0f974e473b159d0ac1b6bcefffeb6bec465898a516ee5cc989503cbc7/black-26.1.0-cp312-cp312-win_arm64.whl",hashes = {sha256 = "643d27fb5facc167c0b1b59d0315f2674a6e950341aed0fc05cf307d22bf4954"}}, + {name = "black-26.1.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/30/83/f05f22ff13756e1a8ce7891db517dbc06200796a16326258268f4658a745/black-26.1.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "3cee1487a9e4c640dc7467aaa543d6c0097c391dc8ac74eb313f2fbf9d7a7cb5"}}, + {name = "black-26.1.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7d/f2/b2c570550e39bedc157715e43927360312d6dd677eed2cc149a802577491/black-26.1.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "d62d14ca31c92adf561ebb2e5f2741bf8dea28aef6deb400d49cca011d186c68"}}, + {name = "black-26.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/7a/d7/990d6a94dc9e169f61374b1c3d4f4dd3037e93c2cc12b6f3b12bc663aa7b/black-26.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "fb1dafbbaa3b1ee8b4550a84425aac8874e5f390200f5502cf3aee4a2acb2f14"}}, + {name = "black-26.1.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/36/1c/cbd7bae7dd3cb315dfe6eeca802bb56662cc92b89af272e014d98c1f2286/black-26.1.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "101540cb2a77c680f4f80e628ae98bd2bd8812fb9d72ade4f8995c5ff019e82c"}}, + {name = "black-26.1.0-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/59/b1/9fe6132bb2d0d1f7094613320b56297a108ae19ecf3041d9678aec381b37/black-26.1.0-cp311-cp311-win_arm64.whl",hashes = {sha256 = "6f3977a16e347f1b115662be07daa93137259c711e526402aa444d7a88fdc9d4"}}, + {name = "black-26.1.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/e4/3d/51bdb3ecbfadfaf825ec0c75e1de6077422b4afa2091c6c9ba34fbfc0c2d/black-26.1.0-py3-none-any.whl",hashes = {sha256 = "1054e8e47ebd686e078c0bb0eaf31e6ce69c966058d122f2c0c950311f9f3ede"}}, +] +marker = "\"dev\" in extras" + +[packages.tool.pdm] +dependencies = [ + "click>=8.0.0", + "mypy-extensions>=0.4.3", + "packaging>=22.0", + "pathspec>=1.0.0", + "platformdirs>=2", + "pytokens>=0.3.0", + "tomli>=1.1.0; python_version < \"3.11\"", + "typing-extensions>=4.0.1; python_version < \"3.11\"", +] + +[[packages]] +name = "platformdirs" +version = "4.5.1" +requires-python = ">=3.10" +sdist = {name = "platformdirs-4.5.1.tar.gz", url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hashes = {sha256 = "61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"}} +wheels = [ + {name = "platformdirs-4.5.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl",hashes = {sha256 = "d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"}}, +] +marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "remote-pdb" +version = "2.1.0" +requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +sdist = {name = "remote-pdb-2.1.0.tar.gz", url = "https://files.pythonhosted.org/packages/e4/b5/4944cac06fd9fc4a2e168313ec220aa25ed96ce83947b63eea5b4045b22d/remote-pdb-2.1.0.tar.gz", hashes = {sha256 = "2d70c6f41e0eabf0165e8f1be58f82aa7a605aaeab8f2aefeb9ce246431091c1"}} +wheels = [ + {name = "remote_pdb-2.1.0-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/71/c5/d208c66344bb785d800adb61aef512290d3473052b9e7697890f0547aff2/remote_pdb-2.1.0-py2.py3-none-any.whl",hashes = {sha256 = "94f73a92ac1248cf16189211011f97096bdada8a7baac8c79372663bbb57b5d0"}}, +] +marker = "\"dev\" in extras" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "ruamel-yaml" +version = "0.19.1" requires-python = ">=3.9" -sdist = {name = "pytest_mock-3.15.1.tar.gz", url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hashes = {sha256 = "1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f"}} +sdist = {name = "ruamel_yaml-0.19.1.tar.gz", url = "https://files.pythonhosted.org/packages/c7/3b/ebda527b56beb90cb7652cb1c7e4f91f48649fbcd8d2eb2fb6e77cd3329b/ruamel_yaml-0.19.1.tar.gz", hashes = {sha256 = "53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993"}} wheels = [ - {name = "pytest_mock-3.15.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl",hashes = {sha256 = "0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d"}}, + {name = "ruamel_yaml-0.19.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl",hashes = {sha256 = "27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93"}}, ] -marker = "\"dev\" in extras or \"tests\" in extras" +marker = "\"default\" in dependency_groups" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "ruff" +version = "0.14.14" +requires-python = ">=3.7" +sdist = {name = "ruff-0.14.14.tar.gz", url = "https://files.pythonhosted.org/packages/2e/06/f71e3a86b2df0dfa2d2f72195941cd09b44f87711cb7fa5193732cb9a5fc/ruff-0.14.14.tar.gz", hashes = {sha256 = "2d0f819c9a90205f3a867dbbd0be083bee9912e170fd7d9704cc8ae45824896b"}} +wheels = [ + {name = "ruff-0.14.14-py3-none-linux_armv6l.whl",url = "https://files.pythonhosted.org/packages/d2/89/20a12e97bc6b9f9f68343952da08a8099c57237aef953a56b82711d55edd/ruff-0.14.14-py3-none-linux_armv6l.whl",hashes = {sha256 = "7cfe36b56e8489dee8fbc777c61959f60ec0f1f11817e8f2415f429552846aed"}}, + {name = "ruff-0.14.14-py3-none-macosx_10_12_x86_64.whl",url = "https://files.pythonhosted.org/packages/a3/b1/c5de3fd2d5a831fcae21beda5e3589c0ba67eec8202e992388e4b17a6040/ruff-0.14.14-py3-none-macosx_10_12_x86_64.whl",hashes = {sha256 = "6006a0082336e7920b9573ef8a7f52eec837add1265cc74e04ea8a4368cd704c"}}, + {name = "ruff-0.14.14-py3-none-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b8/7c/3c1db59a10e7490f8f6f8559d1db8636cbb13dccebf18686f4e3c9d7c772/ruff-0.14.14-py3-none-macosx_11_0_arm64.whl",hashes = {sha256 = "026c1d25996818f0bf498636686199d9bd0d9d6341c9c2c3b62e2a0198b758de"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a1/6e/5e0e0d9674be0f8581d1f5e0f0a04761203affce3232c1a1189d0e3b4dad/ruff-0.14.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "f666445819d31210b71e0a6d1c01e24447a20b85458eea25a25fe8142210ae0e"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",url = "https://files.pythonhosted.org/packages/23/09/754ab09f46ff1884d422dc26d59ba18b4e5d355be147721bb2518aa2a014/ruff-0.14.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",hashes = {sha256 = "3c0f18b922c6d2ff9a5e6c3ee16259adc513ca775bcf82c67ebab7cbd9da5bc8"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/c8/cc/e71f88dd2a12afb5f50733851729d6b571a7c3a35bfdb16c3035132675a0/ruff-0.14.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "1629e67489c2dea43e8658c3dba659edbfd87361624b4040d1df04c9740ae906"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",url = "https://files.pythonhosted.org/packages/67/b2/397245026352494497dac935d7f00f1468c03a23a0c5db6ad8fc49ca3fb2/ruff-0.14.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",hashes = {sha256 = "27493a2131ea0f899057d49d303e4292b2cae2bb57253c1ed1f256fbcd1da480"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",url = "https://files.pythonhosted.org/packages/5b/06/06ef271459f778323112c51b7587ce85230785cd64e91772034ddb88f200/ruff-0.14.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",hashes = {sha256 = "01ff589aab3f5b539e35db38425da31a57521efd1e4ad1ae08fc34dbe30bd7df"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",url = "https://files.pythonhosted.org/packages/41/d6/99364514541cf811ccc5ac44362f88df66373e9fec1b9d1c4cc830593fe7/ruff-0.14.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",hashes = {sha256 = "1cc12d74eef0f29f51775f5b755913eb523546b88e2d733e1d701fe65144e89b"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/ca/71/37daa46f89475f8582b7762ecd2722492df26421714a33e72ccc9a84d7a5/ruff-0.14.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "bb8481604b7a9e75eff53772496201690ce2687067e038b3cc31aaf16aa0b974"}}, + {name = "ruff-0.14.14-py3-none-manylinux_2_31_riscv64.whl",url = "https://files.pythonhosted.org/packages/2c/10/a31f86169ec91c0705e618443ee74ede0bdd94da0a57b28e72db68b2dbac/ruff-0.14.14-py3-none-manylinux_2_31_riscv64.whl",hashes = {sha256 = "14649acb1cf7b5d2d283ebd2f58d56b75836ed8c6f329664fa91cdea19e76e66"}}, + {name = "ruff-0.14.14-py3-none-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/fd/1e/c723f20536b5163adf79bdd10c5f093414293cdf567eed9bdb7b83940f3f/ruff-0.14.14-py3-none-musllinux_1_2_aarch64.whl",hashes = {sha256 = "e8058d2145566510790eab4e2fad186002e288dec5e0d343a92fe7b0bc1b3e13"}}, + {name = "ruff-0.14.14-py3-none-musllinux_1_2_armv7l.whl",url = "https://files.pythonhosted.org/packages/3e/34/8a84cea7e42c2d94ba5bde1d7a4fae164d6318f13f933d92da6d7c2041ff/ruff-0.14.14-py3-none-musllinux_1_2_armv7l.whl",hashes = {sha256 = "e651e977a79e4c758eb807f0481d673a67ffe53cfa92209781dfa3a996cf8412"}}, + {name = "ruff-0.14.14-py3-none-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/55/ef/b7c5ea0be82518906c978e365e56a77f8de7678c8bb6651ccfbdc178c29f/ruff-0.14.14-py3-none-musllinux_1_2_i686.whl",hashes = {sha256 = "cc8b22da8d9d6fdd844a68ae937e2a0adf9b16514e9a97cc60355e2d4b219fc3"}}, + {name = "ruff-0.14.14-py3-none-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/6a/5b/aaf1dfbcc53a2811f6cc0a1759de24e4b03e02ba8762daabd9b6bd8c59e3/ruff-0.14.14-py3-none-musllinux_1_2_x86_64.whl",hashes = {sha256 = "16bc890fb4cc9781bb05beb5ab4cd51be9e7cb376bf1dd3580512b24eb3fda2b"}}, + {name = "ruff-0.14.14-py3-none-win32.whl",url = "https://files.pythonhosted.org/packages/2c/aa/9f89c719c467dfaf8ad799b9bae0df494513fb21d31a6059cb5870e57e74/ruff-0.14.14-py3-none-win32.whl",hashes = {sha256 = "b530c191970b143375b6a68e6f743800b2b786bbcf03a7965b06c4bf04568167"}}, + {name = "ruff-0.14.14-py3-none-win_amd64.whl",url = "https://files.pythonhosted.org/packages/87/44/90fa543014c45560cae1fffc63ea059fb3575ee6e1cb654562197e5d16fb/ruff-0.14.14-py3-none-win_amd64.whl",hashes = {sha256 = "3dde1435e6b6fe5b66506c1dff67a421d0b7f6488d466f651c07f4cab3bf20fd"}}, + {name = "ruff-0.14.14-py3-none-win_arm64.whl",url = "https://files.pythonhosted.org/packages/9e/6a/40fee331a52339926a92e17ae748827270b288a35ef4a15c9c8f2ec54715/ruff-0.14.14-py3-none-win_arm64.whl",hashes = {sha256 = "56e6981a98b13a32236a72a8da421d7839221fa308b223b9283312312e5ac76c"}}, +] +marker = "\"dev\" in extras" + +[packages.tool.pdm] +dependencies = [] + +[[packages]] +name = "sphinx-autobuild" +version = "2025.8.25" +requires-python = ">=3.11" +sdist = {name = "sphinx_autobuild-2025.8.25.tar.gz", url = "https://files.pythonhosted.org/packages/e0/3c/a59a3a453d4133777f7ed2e83c80b7dc817d43c74b74298ca0af869662ad/sphinx_autobuild-2025.8.25.tar.gz", hashes = {sha256 = "9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213"}} +wheels = [ + {name = "sphinx_autobuild-2025.8.25-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d7/20/56411b52f917696995f5ad27d2ea7e9492c84a043c5b49a3a3173573cd93/sphinx_autobuild-2025.8.25-py3-none-any.whl",hashes = {sha256 = "b750ac7d5a18603e4665294323fd20f6dcc0a984117026d1986704fa68f0379a"}}, +] +marker = "\"dev\" in extras" [packages.tool.pdm] dependencies = [ - "pytest>=6.2.5", + "colorama>=0.4.6", + "Sphinx", + "starlette>=0.35", + "uvicorn>=0.25", + "watchfiles>=0.20", + "websockets>=11", ] [[packages]] @@ -763,11 +762,11 @@ dependencies = [] [[packages]] name = "packaging" -version = "25.0" +version = "26.0" requires-python = ">=3.8" -sdist = {name = "packaging-25.0.tar.gz", url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hashes = {sha256 = "d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}} +sdist = {name = "packaging-26.0.tar.gz", url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hashes = {sha256 = "00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}} wheels = [ - {name = "packaging-25.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl",hashes = {sha256 = "29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}}, + {name = "packaging-26.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl",hashes = {sha256 = "b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}}, ] marker = "\"dev\" in extras or \"docs\" in extras or \"tests\" in extras" @@ -789,11 +788,11 @@ dependencies = [] [[packages]] name = "markdown-it-py" -version = "3.0.0" -requires-python = ">=3.8" -sdist = {name = "markdown-it-py-3.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hashes = {sha256 = "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}} +version = "4.0.0" +requires-python = ">=3.10" +sdist = {name = "markdown_it_py-4.0.0.tar.gz", url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hashes = {sha256 = "cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}} wheels = [ - {name = "markdown_it_py-3.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl",hashes = {sha256 = "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}}, + {name = "markdown_it_py-4.0.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl",hashes = {sha256 = "87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}}, ] marker = "\"default\" in dependency_groups or \"dev\" in extras or \"docs\" in extras or \"tests\" in extras" @@ -802,21 +801,6 @@ dependencies = [ "mdurl~=0.1", ] -[[packages]] -name = "mdit-py-plugins" -version = "0.5.0" -requires-python = ">=3.10" -sdist = {name = "mdit_py_plugins-0.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hashes = {sha256 = "f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6"}} -wheels = [ - {name = "mdit_py_plugins-0.5.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl",hashes = {sha256 = "07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f"}}, -] -marker = "\"dev\" in extras or \"docs\" in extras" - -[packages.tool.pdm] -dependencies = [ - "markdown-it-py<5.0.0,>=2.0.0", -] - [[packages]] name = "mypy-extensions" version = "1.1.0" @@ -832,11 +816,11 @@ dependencies = [] [[packages]] name = "pathspec" -version = "0.12.1" -requires-python = ">=3.8" -sdist = {name = "pathspec-0.12.1.tar.gz", url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hashes = {sha256 = "a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}} +version = "1.0.3" +requires-python = ">=3.9" +sdist = {name = "pathspec-1.0.3.tar.gz", url = "https://files.pythonhosted.org/packages/4c/b2/bb8e495d5262bfec41ab5cb18f522f1012933347fb5d9e62452d446baca2/pathspec-1.0.3.tar.gz", hashes = {sha256 = "bac5cf97ae2c2876e2d25ebb15078eb04d76e4b98921ee31c6f85ade8b59444d"}} wheels = [ - {name = "pathspec-0.12.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl",hashes = {sha256 = "a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}}, + {name = "pathspec-1.0.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl",hashes = {sha256 = "e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c"}}, ] marker = "\"dev\" in extras or \"mypy\" in extras" @@ -1160,40 +1144,47 @@ dependencies = [ [[packages]] name = "sqlalchemy" -version = "2.0.45" +version = "2.0.46" requires-python = ">=3.7" -sdist = {name = "sqlalchemy-2.0.45.tar.gz", url = "https://files.pythonhosted.org/packages/be/f9/5e4491e5ccf42f5d9cfc663741d261b3e6e1683ae7812114e7636409fcc6/sqlalchemy-2.0.45.tar.gz", hashes = {sha256 = "1632a4bda8d2d25703fdad6363058d882541bdaaee0e5e3ddfa0cd3229efce88"}} -wheels = [ - {name = "sqlalchemy-2.0.45-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/cc/64/4e1913772646b060b025d3fc52ce91a58967fe58957df32b455de5a12b4f/sqlalchemy-2.0.45-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "7f46ec744e7f51275582e6a24326e10c49fbdd3fc99103e01376841213028774"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/27/caf606ee924282fe4747ee4fd454b335a72a6e018f97eab5ff7f28199e16/sqlalchemy-2.0.45-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "883c600c345123c033c2f6caca18def08f1f7f4c3ebeb591a63b6fceffc95cce"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/85/d0/3d64218c9724e91f3d1574d12eb7ff8f19f937643815d8daf792046d88ab/sqlalchemy-2.0.45-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "2c0b74aa79e2deade948fe8593654c8ef4228c44ba862bb7c9585c8e0db90f33"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/24/10/dd7688a81c5bc7690c2a3764d55a238c524cd1a5a19487928844cb247695/sqlalchemy-2.0.45-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "8a420169cef179d4c9064365f42d779f1e5895ad26ca0c8b4c0233920973db74"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/aa/41/db75756ca49f777e029968d9c9fee338c7907c563267740c6d310a8e3f60/sqlalchemy-2.0.45-cp314-cp314-win32.whl",hashes = {sha256 = "e50dcb81a5dfe4b7b4a4aa8f338116d127cb209559124f3694c70d6cd072b68f"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/89/a2/0e1590e9adb292b1d576dbcf67ff7df8cf55e56e78d2c927686d01080f4b/sqlalchemy-2.0.45-cp314-cp314-win_amd64.whl",hashes = {sha256 = "4748601c8ea959e37e03d13dcda4a44837afcd1b21338e637f7c935b8da06177"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/42/39/f05f0ed54d451156bbed0e23eb0516bcad7cbb9f18b3bf219c786371b3f0/sqlalchemy-2.0.45-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "cd337d3526ec5298f67d6a30bbbe4ed7e5e68862f0bf6dd21d289f8d37b7d60b"}}, - {name = "sqlalchemy-2.0.45-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/54/0f/d15398b98b65c2bce288d5ee3f7d0a81f77ab89d9456994d5c7cc8b2a9db/sqlalchemy-2.0.45-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "9a62b446b7d86a3909abbcd1cd3cc550a832f99c2bc37c5b22e1925438b9367b"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/c8/7cc5221b47a54edc72a0140a1efa56e0a2730eefa4058d7ed0b4c4357ff8/sqlalchemy-2.0.45-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "fe187fc31a54d7fd90352f34e8c008cf3ad5d064d08fedd3de2e8df83eb4a1cf"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/0e/50/80a8d080ac7d3d321e5e5d420c9a522b0aa770ec7013ea91f9a8b7d36e4a/sqlalchemy-2.0.45-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "672c45cae53ba88e0dad74b9027dddd09ef6f441e927786b05bec75d949fbb2e"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/da/4c/13dab31266fc9904f7609a5dc308a2432a066141d65b857760c3bef97e69/sqlalchemy-2.0.45-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "470daea2c1ce73910f08caf10575676a37159a6d16c4da33d0033546bddebc9b"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/74/04/891b5c2e9f83589de202e7abaf24cd4e4fa59e1837d64d528829ad6cc107/sqlalchemy-2.0.45-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "9c6378449e0940476577047150fd09e242529b761dc887c9808a9a937fe990c8"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/f1/24/fc59e7f71b0948cdd4cff7a286210e86b0443ef1d18a23b0d83b87e4b1f7/sqlalchemy-2.0.45-cp313-cp313-win32.whl",hashes = {sha256 = "4b6bec67ca45bc166c8729910bd2a87f1c0407ee955df110d78948f5b5827e8a"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/c0/c5/d17113020b2d43073412aeca09b60d2009442420372123b8d49cc253f8b8/sqlalchemy-2.0.45-cp313-cp313-win_amd64.whl",hashes = {sha256 = "afbf47dc4de31fa38fd491f3705cac5307d21d4bb828a4f020ee59af412744ee"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/3d/8d/bb40a5d10e7a5f2195f235c0b2f2c79b0bf6e8f00c0c223130a4fbd2db09/sqlalchemy-2.0.45-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "83d7009f40ce619d483d26ac1b757dfe3167b39921379a8bd1b596cf02dab4a6"}}, - {name = "sqlalchemy-2.0.45-cp313-cp313t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/75/a5/346128b0464886f036c039ea287b7332a410aa2d3fb0bb5d404cb8861635/sqlalchemy-2.0.45-cp313-cp313t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "d8a2ca754e5415cde2b656c27900b19d50ba076aa05ce66e2207623d3fe41f5a"}}, - {name = "sqlalchemy-2.0.45-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2d/c7/1900b56ce19bff1c26f39a4ce427faec7716c81ac792bfac8b6a9f3dca93/sqlalchemy-2.0.45-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b3ee2aac15169fb0d45822983631466d60b762085bc4535cd39e66bea362df5f"}}, - {name = "sqlalchemy-2.0.45-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/0a/93/3be94d96bb442d0d9a60e55a6bb6e0958dd3457751c6f8502e56ef95fed0/sqlalchemy-2.0.45-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "ba547ac0b361ab4f1608afbc8432db669bd0819b3e12e29fb5fa9529a8bba81d"}}, - {name = "sqlalchemy-2.0.45-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/48/4b/f88ded696e61513595e4a9778f9d3f2bf7332cce4eb0c7cedaabddd6687b/sqlalchemy-2.0.45-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "215f0528b914e5c75ef2559f69dca86878a3beeb0c1be7279d77f18e8d180ed4"}}, - {name = "sqlalchemy-2.0.45-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/ed/6a/310ecb5657221f3e1bd5288ed83aa554923fb5da48d760a9f7622afeb065/sqlalchemy-2.0.45-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "107029bf4f43d076d4011f1afb74f7c3e2ea029ec82eb23d8527d5e909e97aa6"}}, - {name = "sqlalchemy-2.0.45-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/5c/39/69c0b4051079addd57c84a5bfb34920d87456dd4c90cf7ee0df6efafc8ff/sqlalchemy-2.0.45-cp312-cp312-win32.whl",hashes = {sha256 = "0c9f6ada57b58420a2c0277ff853abe40b9e9449f8d7d231763c6bc30f5c4953"}}, - {name = "sqlalchemy-2.0.45-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f7/4e/510db49dd89fc3a6e994bee51848c94c48c4a00dc905e8d0133c251f41a7/sqlalchemy-2.0.45-cp312-cp312-win_amd64.whl",hashes = {sha256 = "8defe5737c6d2179c7997242d6473587c3beb52e557f5ef0187277009f73e5e1"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/a2/1c/769552a9d840065137272ebe86ffbb0bc92b0f1e0a68ee5266a225f8cd7b/sqlalchemy-2.0.45-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "2e90a344c644a4fa871eb01809c32096487928bd2038bf10f3e4515cb688cc56"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/f3/f8/9be54ff620e5b796ca7b44670ef58bc678095d51b0e89d6e3102ea468216/sqlalchemy-2.0.45-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b8c8b41b97fba5f62349aa285654230296829672fc9939cd7f35aab246d1c08b"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/f6/2b/60ce3ee7a5ae172bfcd419ce23259bb874d2cddd44f67c5df3760a1e22f9/sqlalchemy-2.0.45-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "12c694ed6468333a090d2f60950e4250b928f457e4962389553d6ba5fe9951ac"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/a3/42/bac8d393f5db550e4e466d03d16daaafd2bad1f74e48c12673fb499a7fc1/sqlalchemy-2.0.45-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f7d27a1d977a1cfef38a0e2e1ca86f09c4212666ce34e6ae542f3ed0a33bc606"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/6f/12/43dc70a0528c59842b04ea1c1ed176f072a9b383190eb015384dd102fb19/sqlalchemy-2.0.45-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "d62e47f5d8a50099b17e2bfc1b0c7d7ecd8ba6b46b1507b58cc4f05eefc3bb1c"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/cf/9c/563049cf761d9a2ec7bc489f7879e9d94e7b590496bea5bbee9ed7b4cc32/sqlalchemy-2.0.45-cp311-cp311-win32.whl",hashes = {sha256 = "3c5f76216e7b85770d5bb5130ddd11ee89f4d52b11783674a662c7dd57018177"}}, - {name = "sqlalchemy-2.0.45-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/bc/fa/09d0a11fe9f15c7fa5c7f0dd26be3d235b0c0cbf2f9544f43bc42efc8a24/sqlalchemy-2.0.45-cp311-cp311-win_amd64.whl",hashes = {sha256 = "a15b98adb7f277316f2c276c090259129ee4afca783495e212048daf846654b2"}}, - {name = "sqlalchemy-2.0.45-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/bf/e1/3ccb13c643399d22289c6a9786c1a91e3dcbb68bce4beb44926ac2c557bf/sqlalchemy-2.0.45-py3-none-any.whl",hashes = {sha256 = "5225a288e4c8cc2308dbdd874edad6e7d0fd38eac1e9e5f23503425c8eee20d0"}}, +sdist = {name = "sqlalchemy-2.0.46.tar.gz", url = "https://files.pythonhosted.org/packages/06/aa/9ce0f3e7a9829ead5c8ce549392f33a12c4555a6c0609bb27d882e9c7ddf/sqlalchemy-2.0.46.tar.gz", hashes = {sha256 = "cf36851ee7219c170bb0793dbc3da3e80c582e04a5437bc601bfe8c85c9216d7"}} +wheels = [ + {name = "sqlalchemy-2.0.46-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/e9/f8/5ecdfc73383ec496de038ed1614de9e740a82db9ad67e6e4514ebc0708a3/sqlalchemy-2.0.46-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "56bdd261bfd0895452006d5316cbf35739c53b9bb71a170a331fa0ea560b2ada"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/e5/bf/eba3036be7663ce4d9c050bc3d63794dc29fbe01691f2bf5ccb64e048d20/sqlalchemy-2.0.46-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "33e462154edb9493f6c3ad2125931e273bbd0be8ae53f3ecd1c161ea9a1dd366"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/05/45/1256fb597bb83b58a01ddb600c59fe6fdf0e5afe333f0456ed75c0f8d7bd/sqlalchemy-2.0.46-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9bcdce05f056622a632f1d44bb47dbdb677f58cad393612280406ce37530eb6d"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/d9/a0/2053b39e4e63b5d7ceb3372cface0859a067c1ddbd575ea7e9985716f771/sqlalchemy-2.0.46-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "8e84b09a9b0f19accedcbeff5c2caf36e0dd537341a33aad8d680336152dc34e"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/1e/87/97713497d9502553c68f105a1cb62786ba1ee91dea3852ae4067ed956a50/sqlalchemy-2.0.46-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "4f52f7291a92381e9b4de9050b0a65ce5d6a763333406861e33906b8aa4906bf"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/a8/87/5d1b23548f420ff823c236f8bea36b1a997250fd2f892e44a3838ca424f4/sqlalchemy-2.0.46-cp314-cp314-win32.whl",hashes = {sha256 = "70ed2830b169a9960193f4d4322d22be5c0925357d82cbf485b3369893350908"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/3a/20/555f39cbcf0c10cf452988b6a93c2a12495035f68b3dbd1a408531049d31/sqlalchemy-2.0.46-cp314-cp314-win_amd64.whl",hashes = {sha256 = "3c32e993bc57be6d177f7d5d31edb93f30726d798ad86ff9066d75d9bf2e0b6b"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/3e/f0/f96c8057c982d9d8a7a68f45d69c674bc6f78cad401099692fe16521640a/sqlalchemy-2.0.46-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "4dafb537740eef640c4d6a7c254611dca2df87eaf6d14d6a5fca9d1f4c3fc0fa"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/d7/53/3b37dda0a5b137f21ef608d8dfc77b08477bab0fe2ac9d3e0a66eaeab6fc/sqlalchemy-2.0.46-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "42a1643dc5427b69aca967dae540a90b0fbf57eaf248f13a90ea5930e0966863"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/33/75/f28622ba6dde79cd545055ea7bd4062dc934e0621f7b3be2891f8563f8de/sqlalchemy-2.0.46-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "ff33c6e6ad006bbc0f34f5faf941cfc62c45841c64c0a058ac38c799f15b5ede"}}, + {name = "sqlalchemy-2.0.46-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/a9/42/4afecbbc38d5e99b18acef446453c76eec6fbd03db0a457a12a056836e22/sqlalchemy-2.0.46-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "82ec52100ec1e6ec671563bbd02d7c7c8d0b9e71a0723c72f22ecf52d1755330"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b3/4b/fa7838fe20bb752810feed60e45625a9a8b0102c0c09971e2d1d95362992/sqlalchemy-2.0.46-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "93a12da97cca70cea10d4b4fc602589c4511f96c1f8f6c11817620c021d21d00"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/46/c1/b34dccd712e8ea846edf396e00973dda82d598cb93762e55e43e6835eba9/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "af865c18752d416798dae13f83f38927c52f085c52e2f32b8ab0fef46fdd02c2"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/96/48/a04d9c94753e5d5d096c628c82a98c4793b9c08ca0e7155c3eb7d7db9f24/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "8d679b5f318423eacb61f933a9a0f75535bfca7056daeadbf6bd5bcee6183aee"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/be/f4/06eda6e91476f90a7d8058f74311cb65a2fb68d988171aced81707189131/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "64901e08c33462acc9ec3bad27fc7a5c2b6491665f2aa57564e57a4f5d7c52ad"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/ab/a2/d2af04095412ca6345ac22b33b89fe8d6f32a481e613ffcb2377d931d8d0/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "e8ac45e8f4eaac0f9f8043ea0e224158855c6a4329fd4ee37c45c61e3beb518e"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/31/48/1980c7caa5978a3b8225b4d230e69a2a6538a3562b8b31cea679b6933c83/sqlalchemy-2.0.46-cp313-cp313-win32.whl",hashes = {sha256 = "8d3b44b3d0ab2f1319d71d9863d76eeb46766f8cf9e921ac293511804d39813f"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/2d/54/f8d65bbde3d877617c4720f3c9f60e99bb7266df0d5d78b6e25e7c149f35/sqlalchemy-2.0.46-cp313-cp313-win_amd64.whl",hashes = {sha256 = "77f8071d8fbcbb2dd11b7fd40dedd04e8ebe2eb80497916efedba844298065ef"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/56/ba/9be4f97c7eb2b9d5544f2624adfc2853e796ed51d2bb8aec90bc94b7137e/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a1e8cc6cc01da346dc92d9509a63033b9b1bda4fed7a7a7807ed385c7dccdc10"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/20/a6/b1fc6634564dbb4415b7ed6419cdfeaadefd2c39cdab1e3aa07a5f2474c2/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "96c7cca1a4babaaf3bfff3e4e606e38578856917e52f0384635a95b226c87764"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/a1/d8/41e0bdfc0f930ff236f86fccd12962d8fa03713f17ed57332d38af6a3782/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "b2a9f9aee38039cf4755891a1e50e1effcc42ea6ba053743f452c372c3152b1b"}}, + {name = "sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/f0/8b/9dcbec62d95bea85f5ecad9b8d65b78cc30fb0ffceeb3597961f3712549b/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "db23b1bf8cfe1f7fda19018e7207b20cdb5168f83c437ff7e95d19e39289c447"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b6/35/d16bfa235c8b7caba3730bba43e20b1e376d2224f407c178fbf59559f23e/sqlalchemy-2.0.46-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "3a9a72b0da8387f15d5810f1facca8f879de9b85af8c645138cba61ea147968c"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/06/6c/3192e24486749862f495ddc6584ed730c0c994a67550ec395d872a2ad650/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "2347c3f0efc4de367ba00218e0ae5c4ba2306e47216ef80d6e31761ac97cb0b9"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ea/a2/b9f33c8d68a3747d972a0bb758c6b63691f8fb8a49014bc3379ba15d4274/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9094c8b3197db12aa6f05c51c05daaad0a92b8c9af5388569847b03b1007fb1b"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/aa/d2/3e59e2a91eaec9db7e8dc6b37b91489b5caeb054f670f32c95bcba98940f/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "37fee2164cf21417478b6a906adc1a91d69ae9aba8f9533e67ce882f4bb1de53"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/dd/dd/67bc2e368b524e2192c3927b423798deda72c003e73a1e94c21e74b20a85/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "b1e14b2f6965a685c7128bd315e27387205429c2e339eeec55cb75ca4ab0ea2e"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/43/82/0ecd68e172bfe62247e96cb47867c2d68752566811a4e8c9d8f6e7c38a65/sqlalchemy-2.0.46-cp312-cp312-win32.whl",hashes = {sha256 = "412f26bb4ba942d52016edc8d12fb15d91d3cd46b0047ba46e424213ad407bcb"}}, + {name = "sqlalchemy-2.0.46-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/bc/2a/2821a45742073fc0331dc132552b30de68ba9563230853437cac54b2b53e/sqlalchemy-2.0.46-cp312-cp312-win_amd64.whl",hashes = {sha256 = "ea3cd46b6713a10216323cda3333514944e510aa691c945334713fca6b5279ff"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/69/ac/b42ad16800d0885105b59380ad69aad0cce5a65276e269ce2729a2343b6a/sqlalchemy-2.0.46-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "261c4b1f101b4a411154f1da2b76497d73abbfc42740029205d4d01fa1052684"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/a0/60/d8710068cb79f64d002ebed62a7263c00c8fd95f4ebd4b5be8f7ca93f2bc/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "181903fe8c1b9082995325f1b2e84ac078b1189e2819380c2303a5f90e114a62"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/2b/0f/20c71487c7219ab3aa7421c7c62d93824c97c1460f2e8bb72404b0192d13/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "590be24e20e2424a4c3c1b0835e9405fa3d0af5823a1a9fc02e5dff56471515f"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/65/80/d26d00b3b249ae000eee4db206fcfc564bf6ca5030e4747adf451f4b5108/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "7568fe771f974abadce52669ef3a03150ff03186d8eb82613bc8adc435a03f01"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/da/ee/74dda7506640923821340541e8e45bd3edd8df78664f1f2e0aae8077192b/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "ebf7e1e78af38047e08836d33502c7a278915698b7c2145d045f780201679999"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/9f/25/6dcf8abafff1389a21c7185364de145107b7394ecdcb05233815b236330d/sqlalchemy-2.0.46-cp311-cp311-win32.whl",hashes = {sha256 = "9d80ea2ac519c364a7286e8d765d6cd08648f5b21ca855a8017d9871f075542d"}}, + {name = "sqlalchemy-2.0.46-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/93/5f/e081490f8523adc0088f777e4ebad3cac21e498ec8a3d4067074e21447a1/sqlalchemy-2.0.46-cp311-cp311-win_amd64.whl",hashes = {sha256 = "585af6afe518732d9ccd3aea33af2edaae4a7aa881af5d8f6f4fe3a368699597"}}, + {name = "sqlalchemy-2.0.46-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl",hashes = {sha256 = "f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1206,49 +1197,54 @@ dependencies = [ [[packages]] name = "greenlet" -version = "3.3.0" +version = "3.3.1" requires-python = ">=3.10" -sdist = {name = "greenlet-3.3.0.tar.gz", url = "https://files.pythonhosted.org/packages/c7/e5/40dbda2736893e3e53d25838e0f19a2b417dfc122b9989c91918db30b5d3/greenlet-3.3.0.tar.gz", hashes = {sha256 = "a82bb225a4e9e4d653dd2fb7b8b2d36e4fb25bc0165422a11e48b88e9e6f78fb"}} -wheels = [ - {name = "greenlet-3.3.0-cp314-cp314-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/d7/7c/f0a6d0ede2c7bf092d00bc83ad5bafb7e6ec9b4aab2fbdfa6f134dc73327/greenlet-3.3.0-cp314-cp314-macosx_11_0_universal2.whl",hashes = {sha256 = "60c2ef0f578afb3c8d92ea07ad327f9a062547137afe91f38408f08aacab667f"}}, - {name = "greenlet-3.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/44/06/dac639ae1a50f5969d82d2e3dd9767d30d6dbdbab0e1a54010c8fe90263c/greenlet-3.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0a5d554d0712ba1de0a6c94c640f7aeba3f85b3a6e1f2899c11c2c0428da9365"}}, - {name = "greenlet-3.3.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/e0/94/0fb76fe6c5369fba9bf98529ada6f4c3a1adf19e406a47332245ef0eb357/greenlet-3.3.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "3a898b1e9c5f7307ebbde4102908e6cbfcb9ea16284a3abe15cab996bee8b9b3"}}, - {name = "greenlet-3.3.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/93/79/d2c70cae6e823fac36c3bbc9077962105052b7ef81db2f01ec3b9bf17e2b/greenlet-3.3.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "dcd2bdbd444ff340e8d6bdf54d2f206ccddbb3ccfdcd3c25bf4afaa7b8f0cf45"}}, - {name = "greenlet-3.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/b8/14/bab308fc2c1b5228c3224ec2bf928ce2e4d21d8046c161e44a2012b5203e/greenlet-3.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "5773edda4dc00e173820722711d043799d3adb4f01731f40619e07ea2750b955"}}, - {name = "greenlet-3.3.0-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/4b/d2/91465d39164eaa0085177f61983d80ffe746c5a1860f009811d498e7259c/greenlet-3.3.0-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "ac0549373982b36d5fd5d30beb8a7a33ee541ff98d2b502714a09f1169f31b55"}}, - {name = "greenlet-3.3.0-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/42/1b/83d110a37044b92423084d52d5d5a3b3a73cafb51b547e6d7366ff62eff1/greenlet-3.3.0-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "d198d2d977460358c3b3a4dc844f875d1adb33817f0613f663a656f463764ccc"}}, - {name = "greenlet-3.3.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/7c/9a/9030e6f9aa8fd7808e9c31ba4c38f87c4f8ec324ee67431d181fe396d705/greenlet-3.3.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "73f51dd0e0bdb596fb0417e475fa3c5e32d4c83638296e560086b8d7da7c4170"}}, - {name = "greenlet-3.3.0-cp314-cp314t-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/a0/66/bd6317bc5932accf351fc19f177ffba53712a202f9df10587da8df257c7e/greenlet-3.3.0-cp314-cp314t-macosx_11_0_universal2.whl",hashes = {sha256 = "d6ed6f85fae6cdfdb9ce04c9bf7a08d666cfcfb914e7d006f44f840b46741931"}}, - {name = "greenlet-3.3.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/30/cf/cc81cb030b40e738d6e69502ccbd0dd1bced0588e958f9e757945de24404/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "d9125050fcf24554e69c4cacb086b87b3b55dc395a8b3ebe6487b045b2614388"}}, - {name = "greenlet-3.3.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/9c/ea/1020037b5ecfe95ca7df8d8549959baceb8186031da83d5ecceff8b08cd2/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "87e63ccfa13c0a0f6234ed0add552af24cc67dd886731f2261e46e241608bee3"}}, - {name = "greenlet-3.3.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/69/cc/1e4bae2e45ca2fa55299f4e85854606a78ecc37fead20d69322f96000504/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "2662433acbca297c9153a4023fe2161c8dcfdcc91f10433171cf7e7d94ba2221"}}, - {name = "greenlet-3.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/57/b9/f8025d71a6085c441a7eaff0fd928bbb275a6633773667023d19179fe815/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "3c6e9b9c1527a78520357de498b0e709fb9e2f49c3a513afd5a249007261911b"}}, - {name = "greenlet-3.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/f6/c7/876a8c7a7485d5d6b5c6821201d542ef28be645aa024cfe1145b35c120c1/greenlet-3.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "286d093f95ec98fdd92fcb955003b8a3d054b4e2cab3e2707a5039e7b50520fd"}}, - {name = "greenlet-3.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/4f/dc/041be1dff9f23dac5f48a43323cd0789cb798342011c19a248d9c9335536/greenlet-3.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "6c10513330af5b8ae16f023e8ddbfb486ab355d04467c4679c5cfe4659975dd9"}}, - {name = "greenlet-3.3.0-cp313-cp313-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/02/2f/28592176381b9ab2cafa12829ba7b472d177f3acc35d8fbcf3673d966fff/greenlet-3.3.0-cp313-cp313-macosx_11_0_universal2.whl",hashes = {sha256 = "a1e41a81c7e2825822f4e068c48cb2196002362619e2d70b148f20a831c00739"}}, - {name = "greenlet-3.3.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2c/80/fbe937bf81e9fca98c981fe499e59a3f45df2a04da0baa5c2be0dca0d329/greenlet-3.3.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "9f515a47d02da4d30caaa85b69474cec77b7929b2e936ff7fb853d42f4bf8808"}}, - {name = "greenlet-3.3.0-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/c2/ff/7c985128f0514271b8268476af89aee6866df5eec04ac17dcfbc676213df/greenlet-3.3.0-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "7d2d9fd66bfadf230b385fdc90426fcd6eb64db54b40c495b72ac0feb5766c54"}}, - {name = "greenlet-3.3.0-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/79/07/c47a82d881319ec18a4510bb30463ed6891f2ad2c1901ed5ec23d3de351f/greenlet-3.3.0-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "30a6e28487a790417d036088b3bcb3f3ac7d8babaa7d0139edbaddebf3af9492"}}, - {name = "greenlet-3.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/fd/8e/424b8c6e78bd9837d14ff7df01a9829fc883ba2ab4ea787d4f848435f23f/greenlet-3.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "087ea5e004437321508a8d6f20efc4cfec5e3c30118e1417ea96ed1d93950527"}}, - {name = "greenlet-3.3.0-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/b5/ba/56699ff9b7c76ca12f1cdc27a886d0f81f2189c3455ff9f65246780f713d/greenlet-3.3.0-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "ab97cf74045343f6c60a39913fa59710e4bd26a536ce7ab2397adf8b27e67c39"}}, - {name = "greenlet-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/1e/37/f31136132967982d698c71a281a8901daf1a8fbab935dce7c0cf15f942cc/greenlet-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5375d2e23184629112ca1ea89a53389dddbffcf417dad40125713d88eb5f96e8"}}, - {name = "greenlet-3.3.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/7e/71/ba21c3fb8c5dce83b8c01f458a42e99ffdb1963aeec08fff5a18588d8fd7/greenlet-3.3.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "9ee1942ea19550094033c35d25d20726e4f1c40d59545815e1128ac58d416d38"}}, - {name = "greenlet-3.3.0-cp312-cp312-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/f8/0a/a3871375c7b9727edaeeea994bfff7c63ff7804c9829c19309ba2e058807/greenlet-3.3.0-cp312-cp312-macosx_11_0_universal2.whl",hashes = {sha256 = "b01548f6e0b9e9784a2c99c5651e5dc89ffcbe870bc5fb2e5ef864e9cc6b5dcb"}}, - {name = "greenlet-3.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/43/ab/7ebfe34dce8b87be0d11dae91acbf76f7b8246bf9d6b319c741f99fa59c6/greenlet-3.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "349345b770dc88f81506c6861d22a6ccd422207829d2c854ae2af8025af303e3"}}, - {name = "greenlet-3.3.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/a4/39/f1c8da50024feecd0793dbd5e08f526809b8ab5609224a2da40aad3a7641/greenlet-3.3.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "e8e18ed6995e9e2c0b4ed264d2cf89260ab3ac7e13555b8032b25a74c6d18655"}}, - {name = "greenlet-3.3.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/77/cb/43692bcd5f7a0da6ec0ec6d58ee7cddb606d055ce94a62ac9b1aa481e969/greenlet-3.3.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "c024b1e5696626890038e34f76140ed1daf858e37496d33f2af57f06189e70d7"}}, - {name = "greenlet-3.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/75/b0/6bde0b1011a60782108c01de5913c588cf51a839174538d266de15e4bf4d/greenlet-3.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "047ab3df20ede6a57c35c14bf5200fcf04039d50f908270d3f9a7a82064f543b"}}, - {name = "greenlet-3.3.0-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/49/0e/49b46ac39f931f59f987b7cd9f34bfec8ef81d2a1e6e00682f55be5de9f4/greenlet-3.3.0-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "2d9ad37fc657b1102ec880e637cccf20191581f75c64087a549e66c57e1ceb53"}}, - {name = "greenlet-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/05/f5/49a9ac2dff7f10091935def9165c90236d8f175afb27cbed38fb1d61ab6b/greenlet-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "83cd0e36932e0e7f36a64b732a6f60c2fc2df28c351bae79fbaf4f8092fe7614"}}, - {name = "greenlet-3.3.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/6c/79/3912a94cf27ec503e51ba493692d6db1e3cd8ac7ac52b0b47c8e33d7f4f9/greenlet-3.3.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "a7a34b13d43a6b78abf828a6d0e87d3385680eaf830cd60d20d52f249faabf39"}}, - {name = "greenlet-3.3.0-cp311-cp311-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/1f/cb/48e964c452ca2b92175a9b2dca037a553036cb053ba69e284650ce755f13/greenlet-3.3.0-cp311-cp311-macosx_11_0_universal2.whl",hashes = {sha256 = "e29f3018580e8412d6aaf5641bb7745d38c85228dacf51a73bd4e26ddf2a6a8e"}}, - {name = "greenlet-3.3.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/28/da/38d7bff4d0277b594ec557f479d65272a893f1f2a716cad91efeb8680953/greenlet-3.3.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "a687205fb22794e838f947e2194c0566d3812966b41c78709554aa883183fb62"}}, - {name = "greenlet-3.3.0-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/3c/f2/89c5eb0faddc3ff014f1c04467d67dee0d1d334ab81fadbf3744847f8a8a/greenlet-3.3.0-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "4243050a88ba61842186cb9e63c7dfa677ec146160b0efd73b855a3d9c7fcf32"}}, - {name = "greenlet-3.3.0-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/80/d7/db0a5085035d05134f8c089643da2b44cc9b80647c39e93129c5ef170d8f/greenlet-3.3.0-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "670d0f94cd302d81796e37299bcd04b95d62403883b24225c6b5271466612f45"}}, - {name = "greenlet-3.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/dc/a6/e959a127b630a58e23529972dbc868c107f9d583b5a9f878fb858c46bc1a/greenlet-3.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "6cb3a8ec3db4a3b0eb8a3c25436c2d49e3505821802074969db017b87bc6a948"}}, - {name = "greenlet-3.3.0-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/48/60/29035719feb91798693023608447283b266b12efc576ed013dd9442364bb/greenlet-3.3.0-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "2de5a0b09eab81fc6a382791b995b1ccf2b172a9fec934747a7a23d2ff291794"}}, - {name = "greenlet-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/0a/5f/783a23754b691bfa86bd72c3033aa107490deac9b2ef190837b860996c9f/greenlet-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "4449a736606bd30f27f8e1ff4678ee193bc47f6ca810d705981cfffd6ce0d8c5"}}, - {name = "greenlet-3.3.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/1d/d5/c339b3b4bc8198b7caa4f2bd9fd685ac9f29795816d8db112da3d04175bb/greenlet-3.3.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "7652ee180d16d447a683c04e4c5f6441bae7ba7b17ffd9f6b3aff4605e9e6f71"}}, +sdist = {name = "greenlet-3.3.1.tar.gz", url = "https://files.pythonhosted.org/packages/8a/99/1cd3411c56a410994669062bd73dd58270c00cc074cac15f385a1fd91f8a/greenlet-3.3.1.tar.gz", hashes = {sha256 = "41848f3230b58c08bb43dee542e74a2a2e34d3c59dc3076cec9151aeeedcae98"}} +wheels = [ + {name = "greenlet-3.3.1-cp314-cp314-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/ae/fb/011c7c717213182caf78084a9bea51c8590b0afda98001f69d9f853a495b/greenlet-3.3.1-cp314-cp314-macosx_11_0_universal2.whl",hashes = {sha256 = "bd59acd8529b372775cd0fcbc5f420ae20681c5b045ce25bd453ed8455ab99b5"}}, + {name = "greenlet-3.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/41/2e/a3a417d620363fdbb08a48b1dd582956a46a61bf8fd27ee8164f9dfe87c2/greenlet-3.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b31c05dd84ef6871dd47120386aed35323c944d86c3d91a17c4b8d23df62f15b"}}, + {name = "greenlet-3.3.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/b4/09/c6c4a0db47defafd2d6bab8ddfe47ad19963b4e30f5bed84d75328059f8c/greenlet-3.3.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "02925a0bfffc41e542c70aa14c7eda3593e4d7e274bfcccca1827e6c0875902e"}}, + {name = "greenlet-3.3.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/e2/89/b95f2ddcc5f3c2bc09c8ee8d77be312df7f9e7175703ab780f2014a0e781/greenlet-3.3.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "3e0f3878ca3a3ff63ab4ea478585942b53df66ddde327b59ecb191b19dbbd62d"}}, + {name = "greenlet-3.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/80/38/9d42d60dffb04b45f03dbab9430898352dba277758640751dc5cc316c521/greenlet-3.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "34a729e2e4e4ffe9ae2408d5ecaf12f944853f40ad724929b7585bca808a9d6f"}}, + {name = "greenlet-3.3.1-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/96/61/373c30b7197f9e756e4c81ae90a8d55dc3598c17673f91f4d31c3c689c3f/greenlet-3.3.1-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "aec9ab04e82918e623415947921dea15851b152b822661cce3f8e4393c3df683"}}, + {name = "greenlet-3.3.1-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/fd/d3/ca534310343f5945316f9451e953dcd89b36fe7a19de652a1dc5a0eeef3f/greenlet-3.3.1-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "71c767cf281a80d02b6c1bdc41c9468e1f5a494fb11bc8688c360524e273d7b1"}}, + {name = "greenlet-3.3.1-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/52/cb/c21a3fd5d2c9c8b622e7bede6d6d00e00551a5ee474ea6d831b5f567a8b4/greenlet-3.3.1-cp314-cp314-win_amd64.whl",hashes = {sha256 = "96aff77af063b607f2489473484e39a0bbae730f2ea90c9e5606c9b73c44174a"}}, + {name = "greenlet-3.3.1-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/6a/8e/8a2db6d11491837af1de64b8aff23707c6e85241be13c60ed399a72e2ef8/greenlet-3.3.1-cp314-cp314-win_arm64.whl",hashes = {sha256 = "b066e8b50e28b503f604fa538adc764a638b38cf8e81e025011d26e8a627fa79"}}, + {name = "greenlet-3.3.1-cp314-cp314t-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/28/24/cbbec49bacdcc9ec652a81d3efef7b59f326697e7edf6ed775a5e08e54c2/greenlet-3.3.1-cp314-cp314t-macosx_11_0_universal2.whl",hashes = {sha256 = "3e63252943c921b90abb035ebe9de832c436401d9c45f262d80e2d06cc659242"}}, + {name = "greenlet-3.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/86/2e/4f2b9323c144c4fe8842a4e0d92121465485c3c2c5b9e9b30a52e80f523f/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "76e39058e68eb125de10c92524573924e827927df5d3891fbc97bd55764a8774"}}, + {name = "greenlet-3.3.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/d9/87/50ca60e515f5bb55a2fbc5f0c9b5b156de7d2fc51a0a69abc9d23914a237/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "c9f9d5e7a9310b7a2f416dd13d2e3fd8b42d803968ea580b7c0f322ccb389b97"}}, + {name = "greenlet-3.3.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/7c/25/c51a63f3f463171e09cb586eb64db0861eb06667ab01a7968371a24c4f3b/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "4b9721549a95db96689458a1e0ae32412ca18776ed004463df3a9299c1b257ab"}}, + {name = "greenlet-3.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/1d/94/74310866dfa2b73dd08659a3d18762f83985ad3281901ba0ee9a815194fb/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "92497c78adf3ac703b57f1e3813c2d874f27f71a178f9ea5887855da413cd6d2"}}, + {name = "greenlet-3.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/97/43/8bf0ffa3d498eeee4c58c212a3905dd6146c01c8dc0b0a046481ca29b18c/greenlet-3.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "ed6b402bc74d6557a705e197d47f9063733091ed6357b3de33619d8a8d93ac53"}}, + {name = "greenlet-3.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/89/90/a3be7a5f378fc6e84abe4dcfb2ba32b07786861172e502388b4c90000d1b/greenlet-3.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "59913f1e5ada20fde795ba906916aea25d442abcc0593fba7e26c92b7ad76249"}}, + {name = "greenlet-3.3.1-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/e1/2b/98c7f93e6db9977aaee07eb1e51ca63bd5f779b900d362791d3252e60558/greenlet-3.3.1-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "301860987846c24cb8964bdec0e31a96ad4a2a801b41b4ef40963c1b44f33451"}}, + {name = "greenlet-3.3.1-cp313-cp313-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/ec/ab/d26750f2b7242c2b90ea2ad71de70cfcd73a948a49513188a0fc0d6fc15a/greenlet-3.3.1-cp313-cp313-macosx_11_0_universal2.whl",hashes = {sha256 = "7ab327905cabb0622adca5971e488064e35115430cec2c35a50fd36e72a315b3"}}, + {name = "greenlet-3.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/10/d3/be7d19e8fad7c5a78eeefb2d896a08cd4643e1e90c605c4be3b46264998f/greenlet-3.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "65be2f026ca6a176f88fb935ee23c18333ccea97048076aef4db1ef5bc0713ac"}}, + {name = "greenlet-3.3.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/ae/21/fe703aaa056fdb0f17e5afd4b5c80195bbdab701208918938bd15b00d39b/greenlet-3.3.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "7a3ae05b3d225b4155bda56b072ceb09d05e974bc74be6c3fc15463cf69f33fd"}}, + {name = "greenlet-3.3.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/06/00/95df0b6a935103c0452dad2203f5be8377e551b8466a29650c4c5a5af6cc/greenlet-3.3.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "12184c61e5d64268a160226fb4818af4df02cfead8379d7f8b99a56c3a54ff3e"}}, + {name = "greenlet-3.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/cb/86/5c6ab23bb3c28c21ed6bebad006515cfe08b04613eb105ca0041fecca852/greenlet-3.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "6423481193bbbe871313de5fd06a082f2649e7ce6e08015d2a76c1e9186ca5b3"}}, + {name = "greenlet-3.3.1-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/c2/f3/7949994264e22639e40718c2daf6f6df5169bf48fb038c008a489ec53a50/greenlet-3.3.1-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "33a956fe78bbbda82bfc95e128d61129b32d66bcf0a20a1f0c08aa4839ffa951"}}, + {name = "greenlet-3.3.1-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/8d/6e/d73c94d13b6465e9f7cd6231c68abde838bb22408596c05d9059830b7872/greenlet-3.3.1-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "4b065d3284be43728dd280f6f9a13990b56470b81be20375a207cdc814a983f2"}}, + {name = "greenlet-3.3.1-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/5e/b3/c9c23a6478b3bcc91f979ce4ca50879e4d0b2bd7b9a53d8ecded719b92e2/greenlet-3.3.1-cp313-cp313-win_amd64.whl",hashes = {sha256 = "27289986f4e5b0edec7b5a91063c109f0276abb09a7e9bdab08437525977c946"}}, + {name = "greenlet-3.3.1-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/90/e7/824beda656097edee36ab15809fd063447b200cc03a7f6a24c34d520bc88/greenlet-3.3.1-cp313-cp313-win_arm64.whl",hashes = {sha256 = "2f080e028001c5273e0b42690eaf359aeef9cb1389da0f171ea51a5dc3c7608d"}}, + {name = "greenlet-3.3.1-cp312-cp312-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/f9/c8/9d76a66421d1ae24340dfae7e79c313957f6e3195c144d2c73333b5bfe34/greenlet-3.3.1-cp312-cp312-macosx_11_0_universal2.whl",hashes = {sha256 = "7e806ca53acf6d15a888405880766ec84721aa4181261cd11a457dfe9a7a4975"}}, + {name = "greenlet-3.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/81/99/401ff34bb3c032d1f10477d199724f5e5f6fbfb59816ad1455c79c1eb8e7/greenlet-3.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "d842c94b9155f1c9b3058036c24ffb8ff78b428414a19792b2380be9cecf4f36"}}, + {name = "greenlet-3.3.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/2b/bc/4dcc0871ed557792d304f50be0f7487a14e017952ec689effe2180a6ff35/greenlet-3.3.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "20fedaadd422fa02695f82093f9a98bad3dab5fcda793c658b945fcde2ab27ba"}}, + {name = "greenlet-3.3.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/3b/cd/7a7ca57588dac3389e97f7c9521cb6641fd8b6602faf1eaa4188384757df/greenlet-3.3.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "c620051669fd04ac6b60ebc70478210119c56e2d5d5df848baec4312e260e4ca"}}, + {name = "greenlet-3.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/cf/05/821587cf19e2ce1f2b24945d890b164401e5085f9d09cbd969b0c193cd20/greenlet-3.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "14194f5f4305800ff329cbf02c5fcc88f01886cadd29941b807668a45f0d2336"}}, + {name = "greenlet-3.3.1-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/a4/52/ee8c46ed9f8babaa93a19e577f26e3d28a519feac6350ed6f25f1afee7e9/greenlet-3.3.1-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "7b2fe4150a0cf59f847a67db8c155ac36aed89080a6a639e9f16df5d6c6096f1"}}, + {name = "greenlet-3.3.1-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/8f/7c/456a74f07029597626f3a6db71b273a3632aecb9afafeeca452cfa633197/greenlet-3.3.1-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "49f4ad195d45f4a66a0eb9c1ba4832bb380570d361912fa3554746830d332149"}}, + {name = "greenlet-3.3.1-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/34/2f/5e0e41f33c69655300a5e54aeb637cf8ff57f1786a3aba374eacc0228c1d/greenlet-3.3.1-cp312-cp312-win_amd64.whl",hashes = {sha256 = "cc98b9c4e4870fa983436afa999d4eb16b12872fab7071423d5262fa7120d57a"}}, + {name = "greenlet-3.3.1-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/c8/ab/717c58343cf02c5265b531384b248787e04d8160b8afe53d9eec053d7b44/greenlet-3.3.1-cp312-cp312-win_arm64.whl",hashes = {sha256 = "bfb2d1763d777de5ee495c85309460f6fd8146e50ec9d0ae0183dbf6f0a829d1"}}, + {name = "greenlet-3.3.1-cp311-cp311-macosx_11_0_universal2.whl",url = "https://files.pythonhosted.org/packages/ec/e8/2e1462c8fdbe0f210feb5ac7ad2d9029af8be3bf45bd9fa39765f821642f/greenlet-3.3.1-cp311-cp311-macosx_11_0_universal2.whl",hashes = {sha256 = "5fd23b9bc6d37b563211c6abbb1b3cab27db385a4449af5c32e932f93017080c"}}, + {name = "greenlet-3.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/7e/a8/530a401419a6b302af59f67aaf0b9ba1015855ea7e56c036b5928793c5bd/greenlet-3.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "09f51496a0bfbaa9d74d36a52d2580d1ef5ed4fdfcff0a73730abfbbbe1403dd"}}, + {name = "greenlet-3.3.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",url = "https://files.pythonhosted.org/packages/8e/89/7e812bb9c05e1aaef9b597ac1d0962b9021d2c6269354966451e885c4e6b/greenlet-3.3.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl",hashes = {sha256 = "cb0feb07fe6e6a74615ee62a880007d976cf739b6669cce95daa7373d4fc69c5"}}, + {name = "greenlet-3.3.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",url = "https://files.pythonhosted.org/packages/70/ae/e2d5f0e59b94a2269b68a629173263fa40b63da32f5c231307c349315871/greenlet-3.3.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl",hashes = {sha256 = "67ea3fc73c8cd92f42467a72b75e8f05ed51a0e9b1d15398c913416f2dafd49f"}}, + {name = "greenlet-3.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/5c/ae/8d472e1f5ac5efe55c563f3eabb38c98a44b832602e12910750a7c025802/greenlet-3.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "39eda9ba259cc9801da05351eaa8576e9aa83eb9411e8f0c299e05d712a210f2"}}, + {name = "greenlet-3.3.1-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/a8/51/0fde34bebfcadc833550717eade64e35ec8738e6b097d5d248274a01258b/greenlet-3.3.1-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "e2e7e882f83149f0a71ac822ebf156d902e7a5d22c9045e3e0d1daf59cee2cc9"}}, + {name = "greenlet-3.3.1-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/16/c9/2fb47bee83b25b119d5a35d580807bb8b92480a54b68fef009a02945629f/greenlet-3.3.1-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "80aa4d79eb5564f2e0a6144fcc744b5a37c56c4a92d60920720e99210d88db0f"}}, + {name = "greenlet-3.3.1-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/1f/54/dcf9f737b96606f82f8dd05becfb8d238db0633dd7397d542a296fe9cad3/greenlet-3.3.1-cp311-cp311-win_amd64.whl",hashes = {sha256 = "32e4ca9777c5addcbf42ff3915d99030d8e00173a56f80001fb3875998fe410b"}}, + {name = "greenlet-3.3.1-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/91/37/61e1015cf944ddd2337447d8e97fb423ac9bc21f9963fb5f206b53d65649/greenlet-3.3.1-cp311-cp311-win_arm64.whl",hashes = {sha256 = "da19609432f353fed186cc1b85e9440db93d489f198b4bdf42ae19cc9d9ac9b4"}}, ] marker = "\"dev\" in extras and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\") or \"docs\" in extras and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")" @@ -1257,65 +1253,65 @@ dependencies = [] [[packages]] name = "librt" -version = "0.7.4" +version = "0.7.8" requires-python = ">=3.9" -sdist = {name = "librt-0.7.4.tar.gz", url = "https://files.pythonhosted.org/packages/93/e4/b59bdf1197fdf9888452ea4d2048cdad61aef85eb83e99dc52551d7fdc04/librt-0.7.4.tar.gz", hashes = {sha256 = "3871af56c59864d5fd21d1ac001eb2fb3b140d52ba0454720f2e4a19812404ba"}} -wheels = [ - {name = "librt-0.7.4-cp314-cp314-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/74/81/6921e65c8708eb6636bbf383aa77e6c7dad33a598ed3b50c313306a2da9d/librt-0.7.4-cp314-cp314-macosx_10_13_x86_64.whl",hashes = {sha256 = "4f1ee004942eaaed6e06c087d93ebc1c67e9a293e5f6b9b5da558df6bf23dc5d"}}, - {name = "librt-0.7.4-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/0d/d6/3eb864af8a8de8b39cc8dd2e9ded1823979a27795d72c4eea0afa8c26c9f/librt-0.7.4-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "d854c6dc0f689bad7ed452d2a3ecff58029d80612d336a45b62c35e917f42d23"}}, - {name = "librt-0.7.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/49/bc/b1d4c0711fdf79646225d576faee8747b8528a6ec1ceb6accfd89ade7102/librt-0.7.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "a4f7339d9e445280f23d63dea842c0c77379c4a47471c538fc8feedab9d8d063"}}, - {name = "librt-0.7.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/2c/08/61c41cd8f0a6a41fc99ea78a2205b88187e45ba9800792410ed62f033584/librt-0.7.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "39003fc73f925e684f8521b2dbf34f61a5deb8a20a15dcf53e0d823190ce8848"}}, - {name = "librt-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/8b/c7/4ee18b4d57f01444230bc18cf59103aeab8f8c0f45e84e0e540094df1df1/librt-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "6bb15ee29d95875ad697d449fe6071b67f730f15a6961913a2b0205015ca0843"}}, - {name = "librt-0.7.4-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/a1/af/009e8ba3fbf830c936842da048eda1b34b99329f402e49d88fafff6525d1/librt-0.7.4-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "02a69369862099e37d00765583052a99d6a68af7e19b887e1b78fee0146b755a"}}, - {name = "librt-0.7.4-cp314-cp314-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/85/26/51ae25f813656a8b117c27a974f25e8c1e90abcd5a791ac685bf5b489a1b/librt-0.7.4-cp314-cp314-musllinux_1_2_i686.whl",hashes = {sha256 = "ec72342cc4d62f38b25a94e28b9efefce41839aecdecf5e9627473ed04b7be16"}}, - {name = "librt-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/48/93/36d6c71f830305f88996b15c8e017aa8d1e03e2e947b40b55bbf1a34cf24/librt-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "776dbb9bfa0fc5ce64234b446995d8d9f04badf64f544ca036bd6cff6f0732ce"}}, - {name = "librt-0.7.4-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/08/11/8299e70862bb9d704735bf132c6be09c17b00fbc7cda0429a9df222fdc1b/librt-0.7.4-cp314-cp314-win32.whl",hashes = {sha256 = "0f8cac84196d0ffcadf8469d9ded4d4e3a8b1c666095c2a291e22bf58e1e8a9f"}}, - {name = "librt-0.7.4-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/54/d5/656b0126e4e0f8e2725cd2d2a1ec40f71f37f6f03f135a26b663c0e1a737/librt-0.7.4-cp314-cp314-win_amd64.whl",hashes = {sha256 = "037f5cb6fe5abe23f1dc058054d50e9699fcc90d0677eee4e4f74a8677636a1a"}}, - {name = "librt-0.7.4-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/60/86/465ff07b75c1067da8fa7f02913c4ead096ef106cfac97a977f763783bfb/librt-0.7.4-cp314-cp314-win_arm64.whl",hashes = {sha256 = "a5deebb53d7a4d7e2e758a96befcd8edaaca0633ae71857995a0f16033289e44"}}, - {name = "librt-0.7.4-cp314-cp314t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/a0/24941f85960774a80d4b3c2aec651d7d980466da8101cae89e8b032a3e21/librt-0.7.4-cp314-cp314t-macosx_10_13_x86_64.whl",hashes = {sha256 = "b4c25312c7f4e6ab35ab16211bdf819e6e4eddcba3b2ea632fb51c9a2a97e105"}}, - {name = "librt-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/77/a0/ddb259cae86ab415786c1547d0fe1b40f04a7b089f564fd5c0242a3fafb2/librt-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "618b7459bb392bdf373f2327e477597fff8f9e6a1878fffc1b711c013d1b0da4"}}, - {name = "librt-0.7.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/31/11/77823cb530ab8a0c6fac848ac65b745be446f6f301753b8990e8809080c9/librt-0.7.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "1437c3f72a30c7047f16fd3e972ea58b90172c3c6ca309645c1c68984f05526a"}}, - {name = "librt-0.7.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/a4/ce/157db3614cf3034b3f702ae5ba4fefda4686f11eea4b7b96542324a7a0e7/librt-0.7.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "c96cb76f055b33308f6858b9b594618f1b46e147a4d03a4d7f0c449e304b9b95"}}, - {name = "librt-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/30/ef/6ec4c7e3d6490f69a4fd2803516fa5334a848a4173eac26d8ee6507bff6e/librt-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "28f990e6821204f516d09dc39966ef8b84556ffd648d5926c9a3f681e8de8906"}}, - {name = "librt-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/ad/22/750b37bf549f60a4782ab80e9d1e9c44981374ab79a7ea68670159905918/librt-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "bc4aebecc79781a1b77d7d4e7d9fe080385a439e198d993b557b60f9117addaf"}}, - {name = "librt-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/7a/87/2e8a0f584412a93df5faad46c5fa0a6825fdb5eba2ce482074b114877f44/librt-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl",hashes = {sha256 = "022cc673e69283a42621dd453e2407cf1647e77f8bd857d7ad7499901e62376f"}}, - {name = "librt-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/e5/ca/7bf78fa950e43b564b7de52ceeb477fb211a11f5733227efa1591d05a307/librt-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "2b3ca211ae8ea540569e9c513da052699b7b06928dcda61247cb4f318122bdb5"}}, - {name = "librt-0.7.4-cp314-cp314t-win32.whl",url = "https://files.pythonhosted.org/packages/d6/49/3732b0e8424ae35ad5c3166d9dd5bcdae43ce98775e0867a716ff5868064/librt-0.7.4-cp314-cp314t-win32.whl",hashes = {sha256 = "8a461f6456981d8c8e971ff5a55f2e34f4e60871e665d2f5fde23ee74dea4eeb"}}, - {name = "librt-0.7.4-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/35/d6/d8823e01bd069934525fddb343189c008b39828a429b473fb20d67d5cd36/librt-0.7.4-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "721a7b125a817d60bf4924e1eec2a7867bfcf64cfc333045de1df7a0629e4481"}}, - {name = "librt-0.7.4-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/36/e9/a0aa60f5322814dd084a89614e9e31139702e342f8459ad8af1984a18168/librt-0.7.4-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "76b2ba71265c0102d11458879b4d53ccd0b32b0164d14deb8d2b598a018e502f"}}, - {name = "librt-0.7.4-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/fe/4d/46a53ccfbb39fd0b493fd4496eb76f3ebc15bb3e45d8c2e695a27587edf5/librt-0.7.4-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "d44a1b1ba44cbd2fc3cb77992bef6d6fdb1028849824e1dd5e4d746e1f7f7f0b"}}, - {name = "librt-0.7.4-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7f/2b/3ac7f5212b1828bf4f979cf87f547db948d3e28421d7a430d4db23346ce4/librt-0.7.4-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "c9cab4b3de1f55e6c30a84c8cee20e4d3b2476f4d547256694a1b0163da4fe32"}}, - {name = "librt-0.7.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/e8/99/6523509097cbe25f363795f0c0d1c6a3746e30c2994e25b5aefdab119b21/librt-0.7.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "2857c875f1edd1feef3c371fbf830a61b632fb4d1e57160bb1e6a3206e6abe67"}}, - {name = "librt-0.7.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/fe/35/323611e59f8fe032649b4fb7e77f746f96eb7588fcbb31af26bae9630571/librt-0.7.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b370a77be0a16e1ad0270822c12c21462dc40496e891d3b0caf1617c8cc57e20"}}, - {name = "librt-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/41/e6/40fb2bb21616c6e06b6a64022802228066e9a31618f493e03f6b9661548a/librt-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "d05acd46b9a52087bfc50c59dfdf96a2c480a601e8898a44821c7fd676598f74"}}, - {name = "librt-0.7.4-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/32/48/1b47c7d5d28b775941e739ed2bfe564b091c49201b9503514d69e4ed96d7/librt-0.7.4-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "70969229cb23d9c1a80e14225838d56e464dc71fa34c8342c954fc50e7516dee"}}, - {name = "librt-0.7.4-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/75/a6/ee135dfb5d3b54d5d9001dbe483806229c6beac3ee2ba1092582b7efeb1b/librt-0.7.4-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "4450c354b89dbb266730893862dbff06006c9ed5b06b6016d529b2bf644fc681"}}, - {name = "librt-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/04/87/d5b84ec997338be26af982bcd6679be0c1db9a32faadab1cf4bb24f9e992/librt-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "adefe0d48ad35b90b6f361f6ff5a1bd95af80c17d18619c093c60a20e7a5b60c"}}, - {name = "librt-0.7.4-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/86/63/ba1333bf48306fe398e3392a7427ce527f81b0b79d0d91618c4610ce9d15/librt-0.7.4-cp313-cp313-win32.whl",hashes = {sha256 = "21ea710e96c1e050635700695095962a22ea420d4b3755a25e4909f2172b4ff2"}}, - {name = "librt-0.7.4-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f9/8a/de2c6df06cdfa9308c080e6b060fe192790b6a48a47320b215e860f0e98c/librt-0.7.4-cp313-cp313-win_amd64.whl",hashes = {sha256 = "772e18696cf5a64afee908662fbcb1f907460ddc851336ee3a848ef7684c8e1e"}}, - {name = "librt-0.7.4-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/31/66/8ee0949efc389691381ed686185e43536c20e7ad880c122dd1f31e65c658/librt-0.7.4-cp313-cp313-win_arm64.whl",hashes = {sha256 = "52e34c6af84e12921748c8354aa6acf1912ca98ba60cdaa6920e34793f1a0788"}}, - {name = "librt-0.7.4-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/f3/e7/b805d868d21f425b7e76a0ea71a2700290f2266a4f3c8357fcf73efc36aa/librt-0.7.4-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "7dd3b5c37e0fb6666c27cf4e2c88ae43da904f2155c4cfc1e5a2fdce3b9fcf92"}}, - {name = "librt-0.7.4-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/59/5e/69a2b02e62a14cfd5bfd9f1e9adea294d5bcfeea219c7555730e5d068ee4/librt-0.7.4-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "a9c5de1928c486201b23ed0cc4ac92e6e07be5cd7f3abc57c88a9cf4f0f32108"}}, - {name = "librt-0.7.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/6e/6b/05dba608aae1272b8ea5ff8ef12c47a4a099a04d1e00e28a94687261d403/librt-0.7.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "078ae52ffb3f036396cc4aed558e5b61faedd504a3c1f62b8ae34bf95ae39d94"}}, - {name = "librt-0.7.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/8f/bc/199533d3fc04a4cda8d7776ee0d79955ab0c64c79ca079366fbc2617e680/librt-0.7.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "ce58420e25097b2fc201aef9b9f6d65df1eb8438e51154e1a7feb8847e4a55ab"}}, - {name = "librt-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/62/ec/09239b912a45a8ed117cb4a6616d9ff508f5d3131bd84329bf2f8d6564f1/librt-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "b719c8730c02a606dc0e8413287e8e94ac2d32a51153b300baf1f62347858fba"}}, - {name = "librt-0.7.4-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/46/2e/e188313d54c02f5b0580dd31476bb4b0177514ff8d2be9f58d4a6dc3a7ba/librt-0.7.4-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "3749ef74c170809e6dee68addec9d2458700a8de703de081c888e92a8b015cf9"}}, - {name = "librt-0.7.4-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/eb/84/f1d568d254518463d879161d3737b784137d236075215e56c7c9be191cee/librt-0.7.4-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "b35c63f557653c05b5b1b6559a074dbabe0afee28ee2a05b6c9ba21ad0d16a74"}}, - {name = "librt-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/5d/43/060bbc1c002f0d757c33a1afe6bf6a565f947a04841139508fc7cef6c08b/librt-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "1ef704e01cb6ad39ad7af668d51677557ca7e5d377663286f0ee1b6b27c28e5f"}}, - {name = "librt-0.7.4-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/ff/7f/708f8f02d8012ee9f366c07ea6a92882f48bd06cc1ff16a35e13d0fbfb08/librt-0.7.4-cp312-cp312-win32.whl",hashes = {sha256 = "c66c2b245926ec15188aead25d395091cb5c9df008d3b3207268cd65557d6286"}}, - {name = "librt-0.7.4-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/f1/a5/4e051b061c8b2509be31b2c7ad4682090502c0a8b6406edcf8c6b4fe1ef7/librt-0.7.4-cp312-cp312-win_amd64.whl",hashes = {sha256 = "71a56f4671f7ff723451f26a6131754d7c1809e04e22ebfbac1db8c9e6767a20"}}, - {name = "librt-0.7.4-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/d0/d2/90d84e9f919224a3c1f393af1636d8638f54925fdc6cd5ee47f1548461e5/librt-0.7.4-cp312-cp312-win_arm64.whl",hashes = {sha256 = "419eea245e7ec0fe664eb7e85e7ff97dcdb2513ca4f6b45a8ec4a3346904f95a"}}, - {name = "librt-0.7.4-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/84/64/44089b12d8b4714a7f0e2f33fb19285ba87702d4be0829f20b36ebeeee07/librt-0.7.4-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "3485b9bb7dfa66167d5500ffdafdc35415b45f0da06c75eb7df131f3357b174a"}}, - {name = "librt-0.7.4-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/26/ef/6fa39fb5f37002f7d25e0da4f24d41b457582beea9369eeb7e9e73db5508/librt-0.7.4-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "188b4b1a770f7f95ea035d5bbb9d7367248fc9d12321deef78a269ebf46a5729"}}, - {name = "librt-0.7.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/9d/e4/cbaca170a13bee2469c90df9e47108610b4422c453aea1aec1779ac36c24/librt-0.7.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "1b668b1c840183e4e38ed5a99f62fac44c3a3eef16870f7f17cfdfb8b47550ed"}}, - {name = "librt-0.7.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/d0/32/0b2296f9cc7e693ab0d0835e355863512e5eac90450c412777bd699c76ae/librt-0.7.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0e8f864b521f6cfedb314d171630f827efee08f5c3462bcbc2244ab8e1768cd6"}}, - {name = "librt-0.7.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/d8/33/c70b6d40f7342716e5f1353c8da92d9e32708a18cbfa44897a93ec2bf879/librt-0.7.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4df7c9def4fc619a9c2ab402d73a0c5b53899abe090e0100323b13ccb5a3dd82"}}, - {name = "librt-0.7.4-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/e4/c8/555c405155da210e4c4113a879d378f54f850dbc7b794e847750a8fadd43/librt-0.7.4-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f79bc3595b6ed159a1bf0cdc70ed6ebec393a874565cab7088a219cca14da727"}}, - {name = "librt-0.7.4-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/6b/88/34dc1f1461c5613d1b73f0ecafc5316cc50adcc1b334435985b752ed53e5/librt-0.7.4-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "77772a4b8b5f77d47d883846928c36d730b6e612a6388c74cba33ad9eb149c11"}}, - {name = "librt-0.7.4-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/b6/5a/f3fafe80a221626bcedfa9fe5abbf5f04070989d44782f579b2d5920d6d0/librt-0.7.4-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "064a286e6ab0b4c900e228ab4fa9cb3811b4b83d3e0cc5cd816b2d0f548cb61c"}}, - {name = "librt-0.7.4-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/d8/77/5c048d471ce17f4c3a6e08419be19add4d291e2f7067b877437d482622ac/librt-0.7.4-cp311-cp311-win32.whl",hashes = {sha256 = "42da201c47c77b6cc91fc17e0e2b330154428d35d6024f3278aa2683e7e2daf2"}}, - {name = "librt-0.7.4-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fb/3b/514a86305a12c3d9eac03e424b07cd312c7343a9f8a52719aa079590a552/librt-0.7.4-cp311-cp311-win_amd64.whl",hashes = {sha256 = "d31acb5886c16ae1711741f22504195af46edec8315fe69b77e477682a87a83e"}}, - {name = "librt-0.7.4-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/ba/01/3b7b1914f565926b780a734fac6e9a4d2c7aefe41f4e89357d73697a9457/librt-0.7.4-cp311-cp311-win_arm64.whl",hashes = {sha256 = "114722f35093da080a333b3834fff04ef43147577ed99dd4db574b03a5f7d170"}}, +sdist = {name = "librt-0.7.8.tar.gz", url = "https://files.pythonhosted.org/packages/e7/24/5f3646ff414285e0f7708fa4e946b9bf538345a41d1c375c439467721a5e/librt-0.7.8.tar.gz", hashes = {sha256 = "1a4ede613941d9c3470b0368be851df6bb78ab218635512d0370b27a277a0862"}} +wheels = [ + {name = "librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/1a/73/fa8814c6ce2d49c3827829cadaa1589b0bf4391660bd4510899393a23ebc/librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl",hashes = {sha256 = "be927c3c94c74b05128089a955fba86501c3b544d1d300282cc1b4bd370cb418"}}, + {name = "librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/53/fe/f6c70956da23ea235fd2e3cc16f4f0b4ebdfd72252b02d1164dd58b4e6c3/librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "7b0803e9008c62a7ef79058233db7ff6f37a9933b8f2573c05b07ddafa226611"}}, + {name = "librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/1f/4d/7a2481444ac5fba63050d9abe823e6bc16896f575bfc9c1e5068d516cdce/librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "79feb4d00b2a4e0e05c9c56df707934f41fcb5fe53fd9efb7549068d0495b758"}}, + {name = "librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/ac/3c/10901d9e18639f8953f57c8986796cfbf4c1c514844a41c9197cf87cb707/librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "b9122094e3f24aa759c38f46bd8863433820654927370250f460ae75488b66ea"}}, + {name = "librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/db/01/5cbdde0951a5090a80e5ba44e6357d375048123c572a23eecfb9326993a7/librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "7e03bea66af33c95ce3addf87a9bf1fcad8d33e757bc479957ddbc0e4f7207ac"}}, + {name = "librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/b4/e80528d2f4b7eaf1d437fcbd6fc6ba4cbeb3e2a0cb9ed5a79f47c7318706/librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f1ade7f31675db00b514b98f9ab9a7698c7282dad4be7492589109471852d398"}}, + {name = "librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/c1/ab/938368f8ce31a9787ecd4becb1e795954782e4312095daf8fd22420227c8/librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl",hashes = {sha256 = "a14229ac62adcf1b90a15992f1ab9c69ae8b99ffb23cb64a90878a6e8a2f5b81"}}, + {name = "librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/3c/10/559c310e7a6e4014ac44867d359ef8238465fb499e7eb31b6bfe3e3f86f5/librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5bcaaf624fd24e6a0cb14beac37677f90793a96864c67c064a91458611446e83"}}, + {name = "librt-0.7.8-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/f8/db/a0db7acdb6290c215f343835c6efda5b491bb05c3ddc675af558f50fdba3/librt-0.7.8-cp314-cp314-win32.whl",hashes = {sha256 = "7aa7d5457b6c542ecaed79cec4ad98534373c9757383973e638ccced0f11f46d"}}, + {name = "librt-0.7.8-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/72/e0/4f9bdc2a98a798511e81edcd6b54fe82767a715e05d1921115ac70717f6f/librt-0.7.8-cp314-cp314-win_amd64.whl",hashes = {sha256 = "3d1322800771bee4a91f3b4bd4e49abc7d35e65166821086e5afd1e6c0d9be44"}}, + {name = "librt-0.7.8-cp314-cp314-win_arm64.whl",url = "https://files.pythonhosted.org/packages/f9/3d/59c6402e3dec2719655a41ad027a7371f8e2334aa794ed11533ad5f34969/librt-0.7.8-cp314-cp314-win_arm64.whl",hashes = {sha256 = "5363427bc6a8c3b1719f8f3845ea53553d301382928a86e8fab7984426949bce"}}, + {name = "librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/4e/9c/2481d80950b83085fb14ba3c595db56330d21bbc7d88a19f20165f3538db/librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl",hashes = {sha256 = "ca916919793a77e4a98d4a1701e345d337ce53be4a16620f063191f7322ac80f"}}, + {name = "librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/96/79/108df2cfc4e672336765d54e3ff887294c1cc36ea4335c73588875775527/librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "54feb7b4f2f6706bb82325e836a01be805770443e2400f706e824e91f6441dde"}}, + {name = "librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/46/f2/30179898f9994a5637459d6e169b6abdc982012c0a4b2d4c26f50c06f911/librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "39a4c76fee41007070f872b648cc2f711f9abf9a13d0c7162478043377b52c8e"}}, + {name = "librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/b4/da/f7563db55cebdc884f518ba3791ad033becc25ff68eb70902b1747dc0d70/librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "ac9c8a458245c7de80bc1b9765b177055efff5803f08e548dd4bb9ab9a8d789b"}}, + {name = "librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/b3/6c/4289acf076ad371471fa86718c30ae353e690d3de6167f7db36f429272f1/librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "95b67aa7eff150f075fda09d11f6bfb26edffd300f6ab1666759547581e8f666"}}, + {name = "librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/4a/7f/377521ac25b78ac0a5ff44127a0360ee6d5ddd3ce7327949876a30533daa/librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "535929b6eff670c593c34ff435d5440c3096f20fa72d63444608a5aef64dd581"}}, + {name = "librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/c5/b1/e1e96c3e20b23d00cf90f4aad48f0deb4cdfec2f0ed8380d0d85acf98bbf/librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl",hashes = {sha256 = "63937bd0f4d1cb56653dc7ae900d6c52c41f0015e25aaf9902481ee79943b33a"}}, + {name = "librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/43/71/0f5d010e92ed9747e14bef35e91b6580533510f1e36a8a09eb79ee70b2f0/librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "cf243da9e42d914036fd362ac3fa77d80a41cadcd11ad789b1b5eec4daaf67ca"}}, + {name = "librt-0.7.8-cp314-cp314t-win32.whl",url = "https://files.pythonhosted.org/packages/22/f0/07fb6ab5c39a4ca9af3e37554f9d42f25c464829254d72e4ebbd81da351c/librt-0.7.8-cp314-cp314t-win32.whl",hashes = {sha256 = "171ca3a0a06c643bd0a2f62a8944e1902c94aa8e5da4db1ea9a8daf872685365"}}, + {name = "librt-0.7.8-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/24/d4/7e4be20993dc6a782639625bd2f97f3c66125c7aa80c82426956811cfccf/librt-0.7.8-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "445b7304145e24c60288a2f172b5ce2ca35c0f81605f5299f3fa567e189d2e32"}}, + {name = "librt-0.7.8-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/fc/85/69f92b2a7b3c0f88ffe107c86b952b397004b5b8ea5a81da3d9c04c04422/librt-0.7.8-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "8766ece9de08527deabcd7cb1b4f1a967a385d26e33e536d6d8913db6ef74f06"}}, + {name = "librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/a1/fe/b1f9de2829cf7fc7649c1dcd202cfd873837c5cc2fc9e526b0e7f716c3d2/librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "4c3995abbbb60b3c129490fa985dfe6cac11d88fc3c36eeb4fb1449efbbb04fc"}}, + {name = "librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/eb/d4/4a60fbe2e53b825f5d9a77325071d61cd8af8506255067bf0c8527530745/librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "44e0c2cbc9bebd074cf2cdbe472ca185e824be4e74b1c63a8e934cea674bebf2"}}, + {name = "librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/6a/37/61ff80341ba5159afa524445f2d984c30e2821f31f7c73cf166dcafa5564/librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "4d2f1e492cae964b3463a03dc77a7fe8742f7855d7258c7643f0ee32b6651dd3"}}, + {name = "librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/1c/86/13d4f2d6a93f181ebf2fc953868826653ede494559da8268023fe567fca3/librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "451e7ffcef8f785831fdb791bd69211f47e95dc4c6ddff68e589058806f044c6"}}, + {name = "librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/88/26/e24ef01305954fc4d771f1f09f3dd682f9eb610e1bec188ffb719374d26e/librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "3469e1af9f1380e093ae06bedcbdd11e407ac0b303a56bbe9afb1d6824d4982d"}}, + {name = "librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/88/a0/92b6bd060e720d7a31ed474d046a69bd55334ec05e9c446d228c4b806ae3/librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f11b300027ce19a34f6d24ebb0a25fd0e24a9d53353225a5c1e6cadbf2916b2e"}}, + {name = "librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/06/bb/6f4c650253704279c3a214dad188101d1b5ea23be0606628bc6739456624/librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "4adc73614f0d3c97874f02f2c7fd2a27854e7e24ad532ea6b965459c5b757eca"}}, + {name = "librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/dc/00/1c409618248d43240cadf45f3efb866837fa77e9a12a71481912135eb481/librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "60c299e555f87e4c01b2eca085dfccda1dde87f5a604bb45c2906b8305819a93"}}, + {name = "librt-0.7.8-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/d9/83/b2cfe8e76ff5c1c77f8a53da3d5de62d04b5ebf7cf913e37f8bca43b5d07/librt-0.7.8-cp313-cp313-win32.whl",hashes = {sha256 = "b09c52ed43a461994716082ee7d87618096851319bf695d57ec123f2ab708951"}}, + {name = "librt-0.7.8-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a9/0b/c59d45de56a51bd2d3a401fc63449c0ac163e4ef7f523ea8b0c0dee86ec5/librt-0.7.8-cp313-cp313-win_amd64.whl",hashes = {sha256 = "f8f4a901a3fa28969d6e4519deceab56c55a09d691ea7b12ca830e2fa3461e34"}}, + {name = "librt-0.7.8-cp313-cp313-win_arm64.whl",url = "https://files.pythonhosted.org/packages/fc/b9/973455cec0a1ec592395250c474164c4a58ebf3e0651ee920fef1a2623f1/librt-0.7.8-cp313-cp313-win_arm64.whl",hashes = {sha256 = "43d4e71b50763fcdcf64725ac680d8cfa1706c928b844794a7aa0fa9ac8e5f09"}}, + {name = "librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/56/04/79d8fcb43cae376c7adbab7b2b9f65e48432c9eced62ac96703bcc16e09b/librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "9b6943885b2d49c48d0cff23b16be830ba46b0152d98f62de49e735c6e655a63"}}, + {name = "librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b4/ba/60b96e93043d3d659da91752689023a73981336446ae82078cddf706249e/librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "46ef1f4b9b6cc364b11eea0ecc0897314447a66029ee1e55859acb3dd8757c93"}}, + {name = "librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/7c/26/5215e4cdcc26e7be7eee21955a7e13cbf1f6d7d7311461a6014544596fac/librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "907ad09cfab21e3c86e8f1f87858f7049d1097f77196959c033612f532b4e592"}}, + {name = "librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/0f/84/e8d1bc86fa0159bfc24f3d798d92cafd3897e84c7fea7fe61b3220915d76/librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "2991b6c3775383752b3ca0204842743256f3ad3deeb1d0adc227d56b78a9a850"}}, + {name = "librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/57/11/d0268c4b94717a18aa91df1100e767b010f87b7ae444dafaa5a2d80f33a6/librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "03679b9856932b8c8f674e87aa3c55ea11c9274301f76ae8dc4d281bda55cf62"}}, + {name = "librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/8d/56/1e8e833b95fe684f80f8894ae4d8b7d36acc9203e60478fcae599120a975/librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "3968762fec1b2ad34ce57458b6de25dbb4142713e9ca6279a0d352fa4e9f452b"}}, + {name = "librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/17/48/f11cf28a2cb6c31f282009e2208312aa84a5ee2732859f7856ee306176d5/librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "bb7a7807523a31f03061288cc4ffc065d684c39db7644c676b47d89553c0d714"}}, + {name = "librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/b8/6a/d7c116c6da561b9155b184354a60a3d5cdbf08fc7f3678d09c95679d13d9/librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "ad64a14b1e56e702e19b24aae108f18ad1bf7777f3af5fcd39f87d0c5a814449"}}, + {name = "librt-0.7.8-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/61/de/1975200bb0285fc921c5981d9978ce6ce11ae6d797df815add94a5a848a3/librt-0.7.8-cp312-cp312-win32.whl",hashes = {sha256 = "0241a6ed65e6666236ea78203a73d800dbed896cf12ae25d026d75dc1fcd1dac"}}, + {name = "librt-0.7.8-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8e/cd/724f2d0b3461426730d4877754b65d39f06a41ac9d0a92d5c6840f72b9ae/librt-0.7.8-cp312-cp312-win_amd64.whl",hashes = {sha256 = "6db5faf064b5bab9675c32a873436b31e01d66ca6984c6f7f92621656033a708"}}, + {name = "librt-0.7.8-cp312-cp312-win_arm64.whl",url = "https://files.pythonhosted.org/packages/bd/cf/7e899acd9ee5727ad8160fdcc9994954e79fab371c66535c60e13b968ffc/librt-0.7.8-cp312-cp312-win_arm64.whl",hashes = {sha256 = "57175aa93f804d2c08d2edb7213e09276bd49097611aefc37e3fa38d1fb99ad0"}}, + {name = "librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/1b/a3/87ea9c1049f2c781177496ebee29430e4631f439b8553a4969c88747d5d8/librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "ff3e9c11aa260c31493d4b3197d1e28dd07768594a4f92bec4506849d736248f"}}, + {name = "librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/5e/4a/23bcef149f37f771ad30203d561fcfd45b02bc54947b91f7a9ac34815747/librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "ddb52499d0b3ed4aa88746aaf6f36a08314677d5c346234c3987ddc506404eac"}}, + {name = "librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/22/6e/46eb9b85c1b9761e0f42b6e6311e1cc544843ac897457062b9d5d0b21df4/librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "e9c0afebbe6ce177ae8edba0c7c4d626f2a0fc12c33bb993d163817c41a7a05c"}}, + {name = "librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/7a/3f/aa7c7f6829fb83989feb7ba9aa11c662b34b4bd4bd5b262f2876ba3db58d/librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "631599598e2c76ded400c0a8722dec09217c89ff64dc54b060f598ed68e7d2a8"}}, + {name = "librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/3f/2d/d57d154b40b11f2cb851c4df0d4c4456bacd9b1ccc4ecb593ddec56c1a8b/librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9c1ba843ae20db09b9d5c80475376168feb2640ce91cd9906414f23cc267a1ff"}}, + {name = "librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/59/f9/36c4dad00925c16cd69d744b87f7001792691857d3b79187e7a673e812fb/librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "b5b007bb22ea4b255d3ee39dfd06d12534de2fcc3438567d9f48cdaf67ae1ae3"}}, + {name = "librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/23/9b/8a9889d3df5efb67695a67785028ccd58e661c3018237b73ad081691d0cb/librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "dbd79caaf77a3f590cbe32dc2447f718772d6eea59656a7dcb9311161b10fa75"}}, + {name = "librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/43/64/54d6ef11afca01fef8af78c230726a9394759f2addfbf7afc5e3cc032a45/librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "87808a8d1e0bd62a01cafc41f0fd6818b5a5d0ca0d8a55326a81643cdda8f873"}}, + {name = "librt-0.7.8-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/2d/29/73e7ed2991330b28919387656f54109139b49e19cd72902f466bd44415fd/librt-0.7.8-cp311-cp311-win32.whl",hashes = {sha256 = "31724b93baa91512bd0a376e7cf0b59d8b631ee17923b1218a65456fa9bda2e7"}}, + {name = "librt-0.7.8-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/3f/de/66766ff48ed02b4d78deea30392ae200bcbd99ae61ba2418b49fd50a4831/librt-0.7.8-cp311-cp311-win_amd64.whl",hashes = {sha256 = "978e8b5f13e52cf23a9e80f3286d7546baa70bc4ef35b51d97a709d0b28e537c"}}, + {name = "librt-0.7.8-cp311-cp311-win_arm64.whl",url = "https://files.pythonhosted.org/packages/6f/e3/33450438ff3a8c581d4ed7f798a70b07c3206d298cf0b87d3806e72e3ed8/librt-0.7.8-cp311-cp311-win_arm64.whl",hashes = {sha256 = "20e3946863d872f7cabf7f77c6c9d370b8b3d74333d3a32471c50d3a86c0a232"}}, ] marker = "\"dev\" in extras and platform_python_implementation != \"PyPy\" or \"mypy\" in extras and platform_python_implementation != \"PyPy\"" @@ -1400,6 +1396,21 @@ marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [] +[[packages]] +name = "mdit-py-plugins" +version = "0.5.0" +requires-python = ">=3.10" +sdist = {name = "mdit_py_plugins-0.5.0.tar.gz", url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hashes = {sha256 = "f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6"}} +wheels = [ + {name = "mdit_py_plugins-0.5.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl",hashes = {sha256 = "07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f"}}, +] +marker = "\"dev\" in extras or \"docs\" in extras" + +[packages.tool.pdm] +dependencies = [ + "markdown-it-py<5.0.0,>=2.0.0", +] + [[packages]] name = "mdurl" version = "0.1.2" @@ -1415,11 +1426,11 @@ dependencies = [] [[packages]] name = "nbclient" -version = "0.10.2" -requires-python = ">=3.9.0" -sdist = {name = "nbclient-0.10.2.tar.gz", url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hashes = {sha256 = "90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}} +version = "0.10.4" +requires-python = ">=3.10.0" +sdist = {name = "nbclient-0.10.4.tar.gz", url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hashes = {sha256 = "1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9"}} wheels = [ - {name = "nbclient-0.10.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl",hashes = {sha256 = "4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}}, + {name = "nbclient-0.10.4-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl",hashes = {sha256 = "9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1427,7 +1438,7 @@ marker = "\"dev\" in extras or \"docs\" in extras" dependencies = [ "jupyter-client>=6.1.12", "jupyter-core!=5.0.*,>=4.12", - "nbformat>=5.1", + "nbformat>=5.1.3", "traitlets>=5.4", ] @@ -1492,11 +1503,11 @@ dependencies = [] [[packages]] name = "jsonschema" -version = "4.25.1" -requires-python = ">=3.9" -sdist = {name = "jsonschema-4.25.1.tar.gz", url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hashes = {sha256 = "e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85"}} +version = "4.26.0" +requires-python = ">=3.10" +sdist = {name = "jsonschema-4.26.0.tar.gz", url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hashes = {sha256 = "0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"}} wheels = [ - {name = "jsonschema-4.25.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl",hashes = {sha256 = "3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63"}}, + {name = "jsonschema-4.26.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl",hashes = {sha256 = "d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1505,7 +1516,7 @@ dependencies = [ "attrs>=22.2.0", "jsonschema-specifications>=2023.03.6", "referencing>=0.28.4", - "rpds-py>=0.7.1", + "rpds-py>=0.25.0", ] [[packages]] @@ -1667,11 +1678,11 @@ dependencies = [] [[packages]] name = "jupyter-client" -version = "8.7.0" +version = "8.8.0" requires-python = ">=3.10" -sdist = {name = "jupyter_client-8.7.0.tar.gz", url = "https://files.pythonhosted.org/packages/a6/27/d10de45e8ad4ce872372c4a3a37b7b35b6b064f6f023a5c14ffcced4d59d/jupyter_client-8.7.0.tar.gz", hashes = {sha256 = "3357212d9cbe01209e59190f67a3a7e1f387a4f4e88d1e0433ad84d7b262531d"}} +sdist = {name = "jupyter_client-8.8.0.tar.gz", url = "https://files.pythonhosted.org/packages/05/e4/ba649102a3bc3fbca54e7239fb924fd434c766f855693d86de0b1f2bec81/jupyter_client-8.8.0.tar.gz", hashes = {sha256 = "d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e"}} wheels = [ - {name = "jupyter_client-8.7.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/bb/f5/fddaec430367be9d62a7ed125530e133bfd4a1c0350fe221149ee0f2b526/jupyter_client-8.7.0-py3-none-any.whl",hashes = {sha256 = "3671a94fd25e62f5f2f554f5e95389c2294d89822378a5f2dd24353e1494a9e0"}}, + {name = "jupyter_client-8.8.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/2d/0b/ceb7694d864abc0a047649aec263878acb9f792e1fec3e676f22dc9015e3/jupyter_client-8.8.0-py3-none-any.whl",hashes = {sha256 = "f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1714,11 +1725,36 @@ dependencies = [] [[packages]] name = "pytokens" -version = "0.3.0" +version = "0.4.0" requires-python = ">=3.8" -sdist = {name = "pytokens-0.3.0.tar.gz", url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hashes = {sha256 = "2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a"}} -wheels = [ - {name = "pytokens-0.3.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl",hashes = {sha256 = "95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3"}}, +sdist = {name = "pytokens-0.4.0.tar.gz", url = "https://files.pythonhosted.org/packages/e5/16/4b9cfd90d55e66ffdb277d7ebe3bc25250c2311336ec3fc73b2673c794d5/pytokens-0.4.0.tar.gz", hashes = {sha256 = "6b0b03e6ea7c9f9d47c5c61164b69ad30f4f0d70a5d9fe7eac4d19f24f77af2d"}} +wheels = [ + {name = "pytokens-0.4.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/5f/f1/d07e6209f18ef378fc2ae9dee8d1dfe91fd2447c2e2dbfa32867b6dd30cf/pytokens-0.4.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "0d7374c917197106d3c4761374718bc55ea2e9ac0fb94171588ef5840ee1f016"}}, + {name = "pytokens-0.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/0a/73/0eb111400abd382a04f253b269819db9fcc748aa40748441cebdcb6d068f/pytokens-0.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0cd3fa1caf9e47a72ee134a29ca6b5bea84712724bba165d6628baa190c6ea5b"}}, + {name = "pytokens-0.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/8d/9e4e2fdb5bcaba679e54afcc304e9f13f488eb4d626e6b613f9553e03dbd/pytokens-0.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "9c6986576b7b07fe9791854caa5347923005a80b079d45b63b0be70d50cce5f1"}}, + {name = "pytokens-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/cb/b7/e0a370321af2deb772cff14ff337e1140d1eac2c29a8876bfee995f486f0/pytokens-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "9940f7c2e2f54fb1cb5fe17d0803c54da7a2bf62222704eb4217433664a186a7"}}, + {name = "pytokens-0.4.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/7c/54/4348f916c440d4c3e68b53b4ed0e66b292d119e799fa07afa159566dcc86/pytokens-0.4.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "54691cf8f299e7efabcc25adb4ce715d3cef1491e1c930eaf555182f898ef66a"}}, + {name = "pytokens-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/e8/f8/a693c0cfa9c783a2a8c4500b7b2a8bab420f8ca4f2d496153226bf1c12e3/pytokens-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "94ff5db97a0d3cd7248a5b07ba2167bd3edc1db92f76c6db00137bbaf068ddf8"}}, + {name = "pytokens-0.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/c0/dd/a64eb1e9f3ec277b69b33ef1b40ffbcc8f0a3bafcde120997efc7bdefebf/pytokens-0.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "d0dd6261cd9cc95fae1227b1b6ebee023a5fd4a4b6330b071c73a516f5f59b63"}}, + {name = "pytokens-0.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/df/22/06c1079d93dbc3bca5d013e1795f3d8b9ed6c87290acd6913c1c526a6bb2/pytokens-0.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "0cdca8159df407dbd669145af4171a0d967006e0be25f3b520896bc7068f02c4"}}, + {name = "pytokens-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/8d/de/a6f5e43115b4fbf4b93aa87d6c83c79932cdb084f9711daae04549e1e4ad/pytokens-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "4b5770abeb2a24347380a1164a558f0ebe06e98aedbd54c45f7929527a5fb26e"}}, + {name = "pytokens-0.4.0-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/ab/3d/c136e057cb622e36e0c3ff7a8aaa19ff9720050c4078235691da885fe6ee/pytokens-0.4.0-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "74500d72c561dad14c037a9e86a657afd63e277dd5a3bb7570932ab7a3b12551"}}, + {name = "pytokens-0.4.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/98/63/627b7e71d557383da5a97f473ad50f8d9c2c1f55c7d3c2531a120c796f6e/pytokens-0.4.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "73eff3bdd8ad08da679867992782568db0529b887bed4c85694f84cdf35eafc6"}}, + {name = "pytokens-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/28/d7/16f434c37ec3824eba6bcb6e798e5381a8dc83af7a1eda0f95c16fe3ade5/pytokens-0.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "d97cc1f91b1a8e8ebccf31c367f28225699bea26592df27141deade771ed0afb"}}, + {name = "pytokens-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ab/96/04102856b9527701ae57d74a6393d1aca5bad18a1b1ca48ccffb3c93b392/pytokens-0.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "a2c8952c537cb73a1a74369501a83b7f9d208c3cf92c41dd88a17814e68d48ce"}}, + {name = "pytokens-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/0e/ef/0936eb472b89ab2d2c2c24bb81c50417e803fa89c731930d9fb01176fe9f/pytokens-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "5dbf56f3c748aed9310b310d5b8b14e2c96d3ad682ad5a943f381bdbbdddf753"}}, + {name = "pytokens-0.4.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/ae/f5/64f3d6f7df4a9e92ebda35ee85061f6260e16eac82df9396020eebbca775/pytokens-0.4.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "e131804513597f2dff2b18f9911d9b6276e21ef3699abeffc1c087c65a3d975e"}}, + {name = "pytokens-0.4.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/3d/65/65460ebbfefd0bc1b160457904370d44f269e6e4582e0a9b6cba7c267b04/pytokens-0.4.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "cd8da894e5a29ba6b6da8be06a4f7589d7220c099b5e363cb0643234b9b38c2a"}}, + {name = "pytokens-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/25/70/a46669ec55876c392036b4da9808b5c3b1c5870bbca3d4cc923bf68bdbc1/pytokens-0.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "237ba7cfb677dbd3b01b09860810aceb448871150566b93cd24501d5734a04b1"}}, + {name = "pytokens-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/62/0b/c486fc61299c2fc3b7f88ee4e115d4c8b6ffd1a7f88dc94b398b5b1bc4b8/pytokens-0.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "01d1a61e36812e4e971cfe2c0e4c1f2d66d8311031dac8bf168af8a249fa04dd"}}, + {name = "pytokens-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/79/92/b036af846707d25feaff7cafbd5280f1bd6a1034c16bb06a7c910209c1ab/pytokens-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "e47e2ef3ec6ee86909e520d79f965f9b23389fda47460303cf715d510a6fe544"}}, + {name = "pytokens-0.4.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/0d/c0/6d011fc00fefa74ce34816c84a923d2dd7c46b8dbc6ee52d13419786834c/pytokens-0.4.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "3d36954aba4557fd5a418a03cf595ecbb1cdcce119f91a49b19ef09d691a22ae"}}, + {name = "pytokens-0.4.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b4/05/3196399a353dd4cd99138a88f662810979ee2f1a1cdb0b417cb2f4507836/pytokens-0.4.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "92eb3ef88f27c22dc9dbab966ace4d61f6826e02ba04dac8e2d65ea31df56c8e"}}, + {name = "pytokens-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/28/1d/c8fc4ed0a1c4f660391b201cda00b1d5bbcc00e2998e8bcd48b15eefd708/pytokens-0.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "f4b77858a680635ee9904306f54b0ee4781effb89e211ba0a773d76539537165"}}, + {name = "pytokens-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/8e/0e/53e55ba01f3e858d229cd84b02481542f42ba59050483a78bf2447ee1af7/pytokens-0.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "25cacc20c2ad90acb56f3739d87905473c54ca1fa5967ffcd675463fe965865e"}}, + {name = "pytokens-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/dc/56/2d930d7f899e3f21868ca6e8ec739ac31e8fc532f66e09cbe45d3df0a84f/pytokens-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "628fab535ebc9079e4db35cd63cb401901c7ce8720a9834f9ad44b9eb4e0f1d4"}}, + {name = "pytokens-0.4.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/42/dd/4e7e6920d23deffaf66e6f40d45f7610dcbc132ca5d90ab4faccef22f624/pytokens-0.4.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "4d0f568d7e82b7e96be56d03b5081de40e43c904eb6492bf09aaca47cd55f35b"}}, + {name = "pytokens-0.4.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7c/3c/6941a82f4f130af6e1c68c076b6789069ef10c04559bd4733650f902fd3b/pytokens-0.4.0-py3-none-any.whl",hashes = {sha256 = "0508d11b4de157ee12063901603be87fb0253e8f4cb9305eb168b1202ab92068"}}, ] marker = "\"dev\" in extras" @@ -1894,11 +1930,11 @@ dependencies = [] [[packages]] name = "urllib3" -version = "2.6.2" +version = "2.6.3" requires-python = ">=3.9" -sdist = {name = "urllib3-2.6.2.tar.gz", url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hashes = {sha256 = "016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797"}} +sdist = {name = "urllib3-2.6.3.tar.gz", url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hashes = {sha256 = "1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}} wheels = [ - {name = "urllib3-2.6.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl",hashes = {sha256 = "ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd"}}, + {name = "urllib3-2.6.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl",hashes = {sha256 = "bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1907,11 +1943,11 @@ dependencies = [] [[packages]] name = "certifi" -version = "2025.11.12" +version = "2026.1.4" requires-python = ">=3.7" -sdist = {name = "certifi-2025.11.12.tar.gz", url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hashes = {sha256 = "d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316"}} +sdist = {name = "certifi-2026.1.4.tar.gz", url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hashes = {sha256 = "ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}} wheels = [ - {name = "certifi-2025.11.12-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl",hashes = {sha256 = "97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b"}}, + {name = "certifi-2026.1.4-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl",hashes = {sha256 = "9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -1946,58 +1982,6 @@ marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [] -[[packages]] -name = "ruamel-yaml-clib" -version = "0.2.15" -requires-python = ">=3.9" -sdist = {name = "ruamel_yaml_clib-0.2.15.tar.gz", url = "https://files.pythonhosted.org/packages/ea/97/60fda20e2fb54b83a61ae14648b0817c8f5d84a3821e40bfbdae1437026a/ruamel_yaml_clib-0.2.15.tar.gz", hashes = {sha256 = "46e4cc8c43ef6a94885f72512094e482114a8a706d3c555a34ed4b0d20200600"}} -wheels = [ - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/3e/bd/ab8459c8bb759c14a146990bf07f632c1cbec0910d4853feeee4be2ab8bb/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "753faf20b3a5906faf1fc50e4ddb8c074cb9b251e00b14c18b28492f933ac8ef"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/69/f2/c4cec0a30f1955510fde498aac451d2e52b24afdbcb00204d3a951b772c3/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "480894aee0b29752560a9de46c0e5f84a82602f2bc5c6cde8db9a345319acfdf"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/82/c7/2480d062281385a2ea4f7cc9476712446e0c548cd74090bff92b4b49e898/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "4d3b58ab2454b4747442ac76fab66739c72b1e2bb9bd173d7694b9f9dbc9c000"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/75/08/e365ee305367559f57ba6179d836ecc3d31c7d3fdff2a40ebf6c32823a1f/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "bfd309b316228acecfa30670c3887dcedf9b7a44ea39e2101e75d2654522acd4"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/a1/5c/8b56b08db91e569d0a4fbfa3e492ed2026081bdd7e892f63ba1c88a2f548/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "2812ff359ec1f30129b62372e5f22a52936fac13d5d21e70373dbca5d64bb97c"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/6a/1d/70dbda370bd0e1a92942754c873bd28f513da6198127d1736fa98bb2a16f/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "7e74ea87307303ba91073b63e67f2c667e93f05a8c63079ee5b7a5c8d0d7b043"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/5b/87/822d95874216922e1120afb9d3fafa795a18fdd0c444f5c4c382f6dac761/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_i686.whl",hashes = {sha256 = "713cd68af9dfbe0bb588e144a61aad8dcc00ef92a82d2e87183ca662d242f524"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/b9/17/4e01a602693b572149f92c983c1f25bd608df02c3f5cf50fd1f94e124a59/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "542d77b72786a35563f97069b9379ce762944e67055bea293480f7734b2c7e5e"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/9f/17/7999399081d39ebb79e807314de6b611e1d1374458924eb2a489c01fc5ad/ruamel_yaml_clib-0.2.15-cp314-cp314-win32.whl",hashes = {sha256 = "424ead8cef3939d690c4b5c85ef5b52155a231ff8b252961b6516ed7cf05f6aa"}}, - {name = "ruamel_yaml_clib-0.2.15-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/d2/67/be582a7370fdc9e6846c5be4888a530dcadd055eef5b932e0e85c33c7d73/ruamel_yaml_clib-0.2.15-cp314-cp314-win_amd64.whl",hashes = {sha256 = "ac9b8d5fa4bb7fd2917ab5027f60d4234345fd366fe39aa711d5dca090aa1467"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/17/5e/2f970ce4c573dc30c2f95825f2691c96d55560268ddc67603dc6ea2dd08e/ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "4dcec721fddbb62e60c2801ba08c87010bd6b700054a09998c4d09c08147b8fb"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/d6/03/a1baa5b94f71383913f21b96172fb3a2eb5576a4637729adbf7cd9f797f8/ruamel_yaml_clib-0.2.15-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "65f48245279f9bb301d1276f9679b82e4c080a1ae25e679f682ac62446fac471"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/dc/19/40d676802390f85784235a05788fd28940923382e3f8b943d25febbb98b7/ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "46895c17ead5e22bea5e576f1db7e41cb273e8d062c04a6a49013d9f60996c25"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/ce/bb/6ef5abfa43b48dd55c30d53e997f8f978722f02add61efba31380d73e42e/ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "3eb199178b08956e5be6288ee0b05b2fb0b5c1f309725ad25d9c6ea7e27f962a"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/ff/5d/e4f84c9c448613e12bd62e90b23aa127ea4c46b697f3d760acc32cb94f25/ruamel_yaml_clib-0.2.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "4d1032919280ebc04a80e4fb1e93f7a738129857eaec9448310e638c8bccefcf"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/de/4b/e98086e88f76c00c88a6bcf15eae27a1454f661a9eb72b111e6bbb69024d/ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "ab0df0648d86a7ecbd9c632e8f8d6b21bb21b5fc9d9e095c796cacf32a728d2d"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/0c/5c/5964fcd1fd9acc53b7a3a5d9a05ea4f95ead9495d980003a557deb9769c7/ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "331fb180858dd8534f0e61aa243b944f25e73a4dae9962bd44c46d1761126bbf"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/07/1e/99660f5a30fceb58494598e7d15df883a07292346ef5696f0c0ae5dee8c6/ruamel_yaml_clib-0.2.15-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "fd4c928ddf6bce586285daa6d90680b9c291cfd045fc40aad34e445d57b1bf51"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/36/2f/fa0344a9327b58b54970e56a27b32416ffbcfe4dcc0700605516708579b2/ruamel_yaml_clib-0.2.15-cp313-cp313-win32.whl",hashes = {sha256 = "bf0846d629e160223805db9fe8cc7aec16aaa11a07310c50c8c7164efa440aec"}}, - {name = "ruamel_yaml_clib-0.2.15-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/06/c4/c124fbcef0684fcf3c9b72374c2a8c35c94464d8694c50f37eef27f5a145/ruamel_yaml_clib-0.2.15-cp313-cp313-win_amd64.whl",hashes = {sha256 = "45702dfbea1420ba3450bb3dd9a80b33f0badd57539c6aac09f42584303e0db6"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/72/4b/5fde11a0722d676e469d3d6f78c6a17591b9c7e0072ca359801c4bd17eee/ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "cb15a2e2a90c8475df45c0949793af1ff413acfb0a716b8b94e488ea95ce7cff"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/85/82/4d08ac65ecf0ef3b046421985e66301a242804eb9a62c93ca3437dc94ee0/ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "64da03cbe93c1e91af133f5bec37fd24d0d4ba2418eaf970d7166b0a26a148a2"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/b9/cb/22366d68b280e281a932403b76da7a988108287adff2bfa5ce881200107a/ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "f6d3655e95a80325b84c4e14c080b2470fe4f33b6846f288379ce36154993fb1"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/71/73/81230babf8c9e33770d43ed9056f603f6f5f9665aea4177a2c30ae48e3f3/ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "71845d377c7a47afc6592aacfea738cc8a7e876d586dfba814501d8c53c1ba60"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/61/62/150c841f24cda9e30f588ef396ed83f64cfdc13b92d2f925bb96df337ba9/ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "11e5499db1ccbc7f4b41f0565e4f799d863ea720e01d3e99fa0b7b5fcd7802c9"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/30/93/e79bd9cbecc3267499d9ead919bd61f7ddf55d793fb5ef2b1d7d92444f35/ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "4b293a37dc97e2b1e8a1aec62792d1e52027087c8eea4fc7b5abd2bdafdd6642"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/8d/06/1eb640065c3a27ce92d76157f8efddb184bd484ed2639b712396a20d6dce/ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "512571ad41bba04eac7268fe33f7f4742210ca26a81fe0c75357fa682636c690"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/a5/21/ee353e882350beab65fcc47a91b6bdc512cace4358ee327af2962892ff16/ruamel_yaml_clib-0.2.15-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "e5e9f630c73a490b758bf14d859a39f375e6999aea5ddd2e2e9da89b9953486a"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/57/34/cc1b94057aa867c963ecf9ea92ac59198ec2ee3a8d22a126af0b4d4be712/ruamel_yaml_clib-0.2.15-cp312-cp312-win32.whl",hashes = {sha256 = "f4421ab780c37210a07d138e56dd4b51f8642187cdfb433eb687fe8c11de0144"}}, - {name = "ruamel_yaml_clib-0.2.15-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/b3/e5/8925a4208f131b218f9a7e459c0d6fcac8324ae35da269cb437894576366/ruamel_yaml_clib-0.2.15-cp312-cp312-win_amd64.whl",hashes = {sha256 = "2b216904750889133d9222b7b873c199d48ecbb12912aca78970f84a5aa1a4bc"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/2c/80/8ce7b9af532aa94dd83360f01ce4716264db73de6bc8efd22c32341f6658/ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "c583229f336682b7212a43d2fa32c30e643d3076178fb9f7a6a14dde85a2d8bd"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/53/09/de9d3f6b6701ced5f276d082ad0f980edf08ca67114523d1b9264cd5e2e0/ruamel_yaml_clib-0.2.15-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "56ea19c157ed8c74b6be51b5fa1c3aff6e289a041575f0556f66e5fb848bb137"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",url = "https://files.pythonhosted.org/packages/0e/f7/73a9b517571e214fe5c246698ff3ed232f1ef863c8ae1667486625ec688a/ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",hashes = {sha256 = "5fea0932358e18293407feb921d4f4457db837b67ec1837f87074667449f9401"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/9b/a2/0dc0013169800f1c331a6f55b1282c1f4492a6d32660a0cf7b89e6684919/ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "ef71831bd61fbdb7aa0399d5c4da06bea37107ab5c79ff884cc07f2450910262"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",url = "https://files.pythonhosted.org/packages/aa/ed/3fb20a1a96b8dc645d88c4072df481fe06e0289e4d528ebbdcc044ebc8b3/ruamel_yaml_clib-0.2.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",hashes = {sha256 = "617d35dc765715fa86f8c3ccdae1e4229055832c452d4ec20856136acc75053f"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/60/50/6842f4628bc98b7aa4733ab2378346e1441e150935ad3b9f3c3c429d9408/ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "1b45498cc81a4724a2d42273d6cfc243c0547ad7c6b87b4f774cb7bcc131c98d"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/d3/b0/128ae8e19a7d794c2e36130a72b3bb650ce1dd13fb7def6cf10656437dcf/ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "def5663361f6771b18646620fca12968aae730132e104688766cf8a3b1d65922"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/75/05/91130633602d6ba7ce3e07f8fc865b40d2a09efd4751c740df89eed5caf9/ruamel_yaml_clib-0.2.15-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "014181cdec565c8745b7cbc4de3bf2cc8ced05183d986e6d1200168e5bb59490"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/fd/4b/fd4542e7f33d7d1bc64cc9ac9ba574ce8cf145569d21f5f20133336cdc8c/ruamel_yaml_clib-0.2.15-cp311-cp311-win32.whl",hashes = {sha256 = "d290eda8f6ada19e1771b54e5706b8f9807e6bb08e873900d5ba114ced13e02c"}}, - {name = "ruamel_yaml_clib-0.2.15-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/bb/eb/00ff6032c19c7537371e3119287999570867a0eafb0154fccc80e74bf57a/ruamel_yaml_clib-0.2.15-cp311-cp311-win_amd64.whl",hashes = {sha256 = "bdc06ad71173b915167702f55d0f3f027fc61abd975bd308a0968c02db4a4c3e"}}, -] -marker = "platform_python_implementation == \"CPython\" and python_version < \"3.15\" and \"default\" in dependency_groups" - -[packages.tool.pdm] -dependencies = [] - [[packages]] name = "six" version = "1.17.0" @@ -2119,11 +2103,11 @@ dependencies = [] [[packages]] name = "starlette" -version = "0.50.0" +version = "0.52.1" requires-python = ">=3.10" -sdist = {name = "starlette-0.50.0.tar.gz", url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hashes = {sha256 = "a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca"}} +sdist = {name = "starlette-0.52.1.tar.gz", url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hashes = {sha256 = "834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933"}} wheels = [ - {name = "starlette-0.50.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl",hashes = {sha256 = "9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca"}}, + {name = "starlette-0.52.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl",hashes = {sha256 = "0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74"}}, ] marker = "\"dev\" in extras" @@ -2135,11 +2119,11 @@ dependencies = [ [[packages]] name = "anyio" -version = "4.12.0" +version = "4.12.1" requires-python = ">=3.9" -sdist = {name = "anyio-4.12.0.tar.gz", url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hashes = {sha256 = "73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0"}} +sdist = {name = "anyio-4.12.1.tar.gz", url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hashes = {sha256 = "41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"}} wheels = [ - {name = "anyio-4.12.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl",hashes = {sha256 = "dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb"}}, + {name = "anyio-4.12.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl",hashes = {sha256 = "d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"}}, ] marker = "\"dev\" in extras" @@ -2272,44 +2256,61 @@ dependencies = [ [[packages]] name = "websockets" -version = "15.0.1" -requires-python = ">=3.9" -sdist = {name = "websockets-15.0.1.tar.gz", url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hashes = {sha256 = "82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}} -wheels = [ - {name = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}}, - {name = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}}, - {name = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}}, - {name = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}}, - {name = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}}, - {name = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}}, - {name = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}}, - {name = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl",hashes = {sha256 = "756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}}, - {name = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}}, - {name = "websockets-15.0.1-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl",hashes = {sha256 = "ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}}, - {name = "websockets-15.0.1-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl",hashes = {sha256 = "e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}}, - {name = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}}, - {name = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}}, - {name = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}}, - {name = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}}, - {name = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}}, - {name = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}}, - {name = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}}, - {name = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl",hashes = {sha256 = "5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}}, - {name = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}}, - {name = "websockets-15.0.1-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl",hashes = {sha256 = "c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}}, - {name = "websockets-15.0.1-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl",hashes = {sha256 = "fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}}, - {name = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}}, - {name = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}}, - {name = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}}, - {name = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",hashes = {sha256 = "d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}}, - {name = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",hashes = {sha256 = "66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}}, - {name = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",hashes = {sha256 = "8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}}, - {name = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}}, - {name = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl",url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl",hashes = {sha256 = "693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}}, - {name = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}}, - {name = "websockets-15.0.1-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl",hashes = {sha256 = "16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}}, - {name = "websockets-15.0.1-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl",hashes = {sha256 = "27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}}, - {name = "websockets-15.0.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl",hashes = {sha256 = "f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}}, +version = "16.0" +requires-python = ">=3.10" +sdist = {name = "websockets-16.0.tar.gz", url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hashes = {sha256 = "5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5"}} +wheels = [ + {name = "websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl",hashes = {sha256 = "8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0"}}, + {name = "websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl",hashes = {sha256 = "daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904"}}, + {name = "websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl",hashes = {sha256 = "fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4"}}, + {name = "websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e"}}, + {name = "websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4"}}, + {name = "websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl",hashes = {sha256 = "19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1"}}, + {name = "websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl",hashes = {sha256 = "a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3"}}, + {name = "websockets-16.0-cp314-cp314-win32.whl",url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl",hashes = {sha256 = "a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8"}}, + {name = "websockets-16.0-cp314-cp314-win_amd64.whl",url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl",hashes = {sha256 = "c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d"}}, + {name = "websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl",url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl",hashes = {sha256 = "a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244"}}, + {name = "websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl",hashes = {sha256 = "b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e"}}, + {name = "websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641"}}, + {name = "websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8"}}, + {name = "websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e"}}, + {name = "websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl",hashes = {sha256 = "bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944"}}, + {name = "websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl",hashes = {sha256 = "32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206"}}, + {name = "websockets-16.0-cp314-cp314t-win32.whl",url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl",hashes = {sha256 = "5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6"}}, + {name = "websockets-16.0-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd"}}, + {name = "websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl",hashes = {sha256 = "878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9"}}, + {name = "websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl",hashes = {sha256 = "52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230"}}, + {name = "websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl",hashes = {sha256 = "e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c"}}, + {name = "websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5"}}, + {name = "websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82"}}, + {name = "websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl",hashes = {sha256 = "52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8"}}, + {name = "websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl",hashes = {sha256 = "6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f"}}, + {name = "websockets-16.0-cp313-cp313-win32.whl",url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl",hashes = {sha256 = "abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a"}}, + {name = "websockets-16.0-cp313-cp313-win_amd64.whl",url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl",hashes = {sha256 = "3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156"}}, + {name = "websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl",url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl",hashes = {sha256 = "71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00"}}, + {name = "websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl",hashes = {sha256 = "8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79"}}, + {name = "websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl",hashes = {sha256 = "86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39"}}, + {name = "websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c"}}, + {name = "websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f"}}, + {name = "websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl",hashes = {sha256 = "a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1"}}, + {name = "websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl",hashes = {sha256 = "485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2"}}, + {name = "websockets-16.0-cp312-cp312-win32.whl",url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl",hashes = {sha256 = "eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89"}}, + {name = "websockets-16.0-cp312-cp312-win_amd64.whl",url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl",hashes = {sha256 = "5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea"}}, + {name = "websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl",url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl",hashes = {sha256 = "31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8"}}, + {name = "websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl",hashes = {sha256 = "417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad"}}, + {name = "websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl",hashes = {sha256 = "af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d"}}, + {name = "websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe"}}, + {name = "websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b"}}, + {name = "websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl",hashes = {sha256 = "d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5"}}, + {name = "websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl",hashes = {sha256 = "1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64"}}, + {name = "websockets-16.0-cp311-cp311-win32.whl",url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl",hashes = {sha256 = "5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6"}}, + {name = "websockets-16.0-cp311-cp311-win_amd64.whl",url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl",hashes = {sha256 = "8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac"}}, + {name = "websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl",hashes = {sha256 = "349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d"}}, + {name = "websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl",hashes = {sha256 = "4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03"}}, + {name = "websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",hashes = {sha256 = "f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da"}}, + {name = "websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",hashes = {sha256 = "0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c"}}, + {name = "websockets-16.0-pp311-pypy311_pp73-win_amd64.whl",url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl",hashes = {sha256 = "a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767"}}, + {name = "websockets-16.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl",hashes = {sha256 = "1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec"}}, ] marker = "\"dev\" in extras" @@ -2334,11 +2335,11 @@ dependencies = [ [[packages]] name = "soupsieve" -version = "2.8.1" +version = "2.8.3" requires-python = ">=3.9" -sdist = {name = "soupsieve-2.8.1.tar.gz", url = "https://files.pythonhosted.org/packages/89/23/adf3796d740536d63a6fbda113d07e60c734b6ed5d3058d1e47fc0495e47/soupsieve-2.8.1.tar.gz", hashes = {sha256 = "4cf733bc50fa805f5df4b8ef4740fc0e0fa6218cf3006269afd3f9d6d80fd350"}} +sdist = {name = "soupsieve-2.8.3.tar.gz", url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hashes = {sha256 = "3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349"}} wheels = [ - {name = "soupsieve-2.8.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/48/f3/b67d6ea49ca9154453b6d70b34ea22f3996b9fa55da105a79d8732227adc/soupsieve-2.8.1-py3-none-any.whl",hashes = {sha256 = "a11fe2a6f3d76ab3cf2de04eb339c1be5b506a8a47f2ceb6d139803177f85434"}}, + {name = "soupsieve-2.8.3-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl",hashes = {sha256 = "ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2347,18 +2348,17 @@ dependencies = [] [[packages]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" requires-python = ">=3.9" -sdist = {name = "importlib_metadata-8.7.0.tar.gz", url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hashes = {sha256 = "d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}} +sdist = {name = "importlib_metadata-8.7.1.tar.gz", url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hashes = {sha256 = "49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}} wheels = [ - {name = "importlib_metadata-8.7.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl",hashes = {sha256 = "e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}}, + {name = "importlib_metadata-8.7.1-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl",hashes = {sha256 = "5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" [packages.tool.pdm] dependencies = [ "zipp>=3.20", - "typing-extensions>=3.6.4; python_version < \"3.8\"", ] [[packages]] @@ -2458,11 +2458,11 @@ dependencies = [] [[packages]] name = "ipython" -version = "9.8.0" +version = "9.9.0" requires-python = ">=3.11" -sdist = {name = "ipython-9.8.0.tar.gz", url = "https://files.pythonhosted.org/packages/12/51/a703c030f4928646d390b4971af4938a1b10c9dfce694f0d99a0bb073cb2/ipython-9.8.0.tar.gz", hashes = {sha256 = "8e4ce129a627eb9dd221c41b1d2cdaed4ef7c9da8c17c63f6f578fe231141f83"}} +sdist = {name = "ipython-9.9.0.tar.gz", url = "https://files.pythonhosted.org/packages/46/dd/fb08d22ec0c27e73c8bc8f71810709870d51cadaf27b7ddd3f011236c100/ipython-9.9.0.tar.gz", hashes = {sha256 = "48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220"}} wheels = [ - {name = "ipython-9.8.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl",hashes = {sha256 = "ebe6d1d58d7d988fbf23ff8ff6d8e1622cfdb194daf4b7b73b792c4ec3b85385"}}, + {name = "ipython-9.9.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/86/92/162cfaee4ccf370465c5af1ce36a9eacec1becb552f2033bb3584e6f640a/ipython-9.9.0-py3-none-any.whl",hashes = {sha256 = "b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2596,28 +2596,30 @@ dependencies = [ [[packages]] name = "psutil" -version = "7.1.3" +version = "7.2.1" requires-python = ">=3.6" -sdist = {name = "psutil-7.1.3.tar.gz", url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hashes = {sha256 = "6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74"}} -wheels = [ - {name = "psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl",hashes = {sha256 = "b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353"}}, - {name = "psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b"}}, - {name = "psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9"}}, - {name = "psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f"}}, - {name = "psutil-7.1.3-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7"}}, - {name = "psutil-7.1.3-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264"}}, - {name = "psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl",hashes = {sha256 = "0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc"}}, - {name = "psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl",hashes = {sha256 = "19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0"}}, - {name = "psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7"}}, - {name = "psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251"}}, - {name = "psutil-7.1.3-cp313-cp313t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl",hashes = {sha256 = "18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa"}}, - {name = "psutil-7.1.3-cp313-cp313t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl",hashes = {sha256 = "c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee"}}, - {name = "psutil-7.1.3-cp37-abi3-win_amd64.whl",url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl",hashes = {sha256 = "f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd"}}, - {name = "psutil-7.1.3-cp37-abi3-win_arm64.whl",url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl",hashes = {sha256 = "bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1"}}, - {name = "psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl",hashes = {sha256 = "2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab"}}, - {name = "psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl",hashes = {sha256 = "bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880"}}, - {name = "psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3"}}, - {name = "psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b"}}, +sdist = {name = "psutil-7.2.1.tar.gz", url = "https://files.pythonhosted.org/packages/73/cb/09e5184fb5fc0358d110fc3ca7f6b1d033800734d34cac10f4136cfac10e/psutil-7.2.1.tar.gz", hashes = {sha256 = "f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3"}} +wheels = [ + {name = "psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl",url = "https://files.pythonhosted.org/packages/05/c2/5fb764bd61e40e1fe756a44bd4c21827228394c17414ade348e28f83cd79/psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl",hashes = {sha256 = "494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679"}}, + {name = "psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/c9/d2/935039c20e06f615d9ca6ca0ab756cf8408a19d298ffaa08666bc18dc805/psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl",hashes = {sha256 = "3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f"}}, + {name = "psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129"}}, + {name = "psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a"}}, + {name = "psutil-7.2.1-cp314-cp314t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/98/60/1672114392dd879586d60dd97896325df47d9a130ac7401318005aab28ec/psutil-7.2.1-cp314-cp314t-win_amd64.whl",hashes = {sha256 = "2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79"}}, + {name = "psutil-7.2.1-cp314-cp314t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/fb/7b/d0e9d4513c46e46897b46bcfc410d51fc65735837ea57a25170f298326e6/psutil-7.2.1-cp314-cp314t-win_arm64.whl",hashes = {sha256 = "08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266"}}, + {name = "psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl",url = "https://files.pythonhosted.org/packages/77/8e/f0c242053a368c2aa89584ecd1b054a18683f13d6e5a318fc9ec36582c94/psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl",hashes = {sha256 = "ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d"}}, + {name = "psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/26/97/a58a4968f8990617decee234258a2b4fc7cd9e35668387646c1963e69f26/psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl",hashes = {sha256 = "81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49"}}, + {name = "psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc"}}, + {name = "psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf"}}, + {name = "psutil-7.2.1-cp313-cp313t-win_amd64.whl",url = "https://files.pythonhosted.org/packages/fb/23/851cadc9764edcc18f0effe7d0bf69f727d4cf2442deb4a9f78d4e4f30f2/psutil-7.2.1-cp313-cp313t-win_amd64.whl",hashes = {sha256 = "923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f"}}, + {name = "psutil-7.2.1-cp313-cp313t-win_arm64.whl",url = "https://files.pythonhosted.org/packages/59/82/d63e8494ec5758029f31c6cb06d7d161175d8281e91d011a4a441c8a43b5/psutil-7.2.1-cp313-cp313t-win_arm64.whl",hashes = {sha256 = "cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672"}}, + {name = "psutil-7.2.1-cp37-abi3-win_amd64.whl",url = "https://files.pythonhosted.org/packages/34/68/d9317542e3f2b180c4306e3f45d3c922d7e86d8ce39f941bb9e2e9d8599e/psutil-7.2.1-cp37-abi3-win_amd64.whl",hashes = {sha256 = "b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17"}}, + {name = "psutil-7.2.1-cp37-abi3-win_arm64.whl",url = "https://files.pythonhosted.org/packages/3e/73/2ce007f4198c80fcf2cb24c169884f833fe93fbc03d55d302627b094ee91/psutil-7.2.1-cp37-abi3-win_arm64.whl",hashes = {sha256 = "0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442"}}, + {name = "psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl",url = "https://files.pythonhosted.org/packages/c5/cf/5180eb8c8bdf6a503c6919f1da28328bd1e6b3b1b5b9d5b01ae64f019616/psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl",hashes = {sha256 = "b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42"}}, + {name = "psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl",url = "https://files.pythonhosted.org/packages/c5/2c/78e4a789306a92ade5000da4f5de3255202c534acdadc3aac7b5458fadef/psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl",hashes = {sha256 = "05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1"}}, + {name = "psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl",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",hashes = {sha256 = "5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8"}}, + {name = "psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",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",hashes = {sha256 = "ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6"}}, + {name = "psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl",url = "https://files.pythonhosted.org/packages/44/ad/bbf6595a8134ee1e94a4487af3f132cef7fce43aef4a93b49912a48c3af7/psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl",hashes = {sha256 = "f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8"}}, + {name = "psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl",url = "https://files.pythonhosted.org/packages/1c/15/dd6fd869753ce82ff64dcbc18356093471a5a5adf4f77ed1f805d473d859/psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl",hashes = {sha256 = "99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2692,11 +2694,11 @@ dependencies = [] [[packages]] name = "pycparser" -version = "2.23" -requires-python = ">=3.8" -sdist = {name = "pycparser-2.23.tar.gz", url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hashes = {sha256 = "78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"}} +version = "3.0" +requires-python = ">=3.10" +sdist = {name = "pycparser-3.0.tar.gz", url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hashes = {sha256 = "600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"}} wheels = [ - {name = "pycparser-2.23-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl",hashes = {sha256 = "e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"}}, + {name = "pycparser-3.0-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl",hashes = {sha256 = "b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"}}, ] marker = "\"dev\" in extras and implementation_name != \"PyPy\" or \"docs\" in extras and implementation_name != \"PyPy\" or \"tests\" in extras and implementation_name != \"PyPy\" or \"zmq\" in extras and implementation_name != \"PyPy\"" @@ -2724,18 +2726,18 @@ sdist = {name = "tzdata-2025.3.tar.gz", url = "https://files.pythonhosted.org/pa wheels = [ {name = "tzdata-2025.3-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl",hashes = {sha256 = "06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}}, ] -marker = "\"dev\" in extras or \"docs\" in extras or \"tests\" in extras" +marker = "\"dev\" in extras and platform_system == \"Windows\" or \"docs\" in extras and platform_system == \"Windows\" or \"tests\" in extras and platform_system == \"Windows\"" [packages.tool.pdm] dependencies = [] [[packages]] name = "wcwidth" -version = "0.2.14" -requires-python = ">=3.6" -sdist = {name = "wcwidth-0.2.14.tar.gz", url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hashes = {sha256 = "4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605"}} +version = "0.3.2" +requires-python = ">=3.8" +sdist = {name = "wcwidth-0.3.2.tar.gz", url = "https://files.pythonhosted.org/packages/05/07/0b5bcc9812b1b2fd331cc88289ef4d47d428afdbbf0216bb7d53942d93d6/wcwidth-0.3.2.tar.gz", hashes = {sha256 = "d469b3059dab6b1077def5923ed0a8bf5738bd4a1a87f686d5e2de455354c4ad"}} wheels = [ - {name = "wcwidth-0.2.14-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl",hashes = {sha256 = "a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1"}}, + {name = "wcwidth-0.3.2-py3-none-any.whl",url = "https://files.pythonhosted.org/packages/72/c6/1452e716c5af065c018f75d42ca97517a04ac6aae4133722e0424649a07c/wcwidth-0.3.2-py3-none-any.whl",hashes = {sha256 = "817abc6a89e47242a349b5d100cbd244301690d6d8d2ec6335f26fe6640a6315"}}, ] marker = "\"dev\" in extras or \"docs\" in extras" @@ -2743,7 +2745,7 @@ marker = "\"dev\" in extras or \"docs\" in extras" dependencies = [] [tool.pdm] -hashes = {sha256 = "734c4e3c3ea45903c6017895e6b7a055141eec94fc7a5c991fefa918fa8da5db"} +hashes = {sha256 = "c6cc2d8206ca50bb2f0477bf7bece34c4d4842d43e85a4fe1da3b202b5df6570"} strategy = ["inherit_metadata", "static_urls"] [[tool.pdm.targets]] From 0e47394ee0d0d7d3dc4a800246e42fddc7e8e2fe Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 16:02:32 -0800 Subject: [PATCH 15/18] pytest truncating my debugging output --- tests/test_runners/test_zmq.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index 791087c1..5ca8125b 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -276,7 +276,7 @@ def _router_cb(msg: Message) -> None: ] # sometimes we get the last stop event, # sometimes we dont - we don't wait for it - assert 4 >= len(router_events) >= 3, router_events + assert 4 >= len(router_events) >= 3, str(router_events) assert router_events[1].value == "stopped" first_events = [e for e in events if e["timestamp"] < router_events[1].timestamp] stopped_events = [ From b72c7d8b1f7ab50e3edbd543c7b4204c34bcf013 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 16:07:05 -0800 Subject: [PATCH 16/18] just get state transitions --- tests/test_runners/test_zmq.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index 5ca8125b..e94a55e2 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -274,6 +274,12 @@ def _router_cb(msg: Message) -> None: router_events = [ e for e in router_events if e.type_ == "status" and e.value in ("stopped", "running") ] + # we can get duplicate status messages if the command node has to ping to wake up the sockets + # so filter just to the transitions + router_events = [ + e for i, e in enumerate(router_events) if i == 0 or router_events[i - 1].value != e.value + ] + # sometimes we get the last stop event, # sometimes we dont - we don't wait for it assert 4 >= len(router_events) >= 3, str(router_events) From bd4eb65b6bdc97361478be34e5e2fb8e2cb697e6 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 16:11:26 -0800 Subject: [PATCH 17/18] increase timeouts --- src/noob/runner/zmq.py | 2 +- tests/test_runners/test_zmq.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index 6d749743..2c65205e 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -228,7 +228,7 @@ def add_callback(self, type_: Literal["inbox", "router"], cb: Callable[[Message] def clear_callbacks(self) -> None: self._callbacks = defaultdict(list) - def await_ready(self, node_ids: list[NodeID], timeout: float = 5) -> None: + def await_ready(self, node_ids: list[NodeID], timeout: float = 10) -> None: """ Wait until all the node_ids have announced themselves """ diff --git a/tests/test_runners/test_zmq.py b/tests/test_runners/test_zmq.py index e94a55e2..f49f2114 100644 --- a/tests/test_runners/test_zmq.py +++ b/tests/test_runners/test_zmq.py @@ -294,13 +294,14 @@ def _router_cb(msg: Message) -> None: end_events = [e for e in events if e["timestamp"] > router_events[2].timestamp] # with the node's sleep, there are time for ~10 runs if there was no latency, - # so say we should at least do 5 (10 events) - assert len(first_events) > 10 + # but all we really care about is that we got any + # (macos runner on gh is very slow to process events, and we don't want to increase wait time) + assert len(first_events) > 0 # there can be one additional run of the node after the stopped message is sent # if the node is already running when the stop message is received. # (two events, because the node emits two signals) assert len(stopped_events) <= 2 - assert len(end_events) > 10 + assert len(end_events) > 0 # even though we stopped and started, the nodes should have stated initialized # (and not been deinit'd and reinit'd) From 197fbd08c5725e73420e16e5aaf0f9c4eed49a58 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Fri, 23 Jan 2026 16:27:28 -0800 Subject: [PATCH 18/18] cleanup --- src/noob/logging.py | 7 +++++++ src/noob/runner/zmq.py | 3 --- tests/conftest.py | 7 ------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/noob/logging.py b/src/noob/logging.py index 255b71cc..54a27191 100644 --- a/src/noob/logging.py +++ b/src/noob/logging.py @@ -29,6 +29,13 @@ def init_logger( Log to a set of rotating files in the ``log_dir`` according to ``name`` , as well as using the :class:`~rich.RichHandler` for pretty-formatted stdout logs. + If this method is called from a process that isn't the root process, + it will create new rich and file handlers in the root noob logger to avoid + deadlocks from threading locks that are copied on forked processes. + Since the handlers will be different across processes, + to avoid file access conflicts, logging files will have the process's ``pid`` + appended (e.g. ``noob_12345.log`` ) + Args: name (str): Name of this logger. Ideally names are hierarchical and indicate what they are logging for, eg. ``noob.api.auth`` diff --git a/src/noob/runner/zmq.py b/src/noob/runner/zmq.py index 2c65205e..ac85991d 100644 --- a/src/noob/runner/zmq.py +++ b/src/noob/runner/zmq.py @@ -947,9 +947,6 @@ def iter(self, n: int | None = None) -> Generator[ReturnNodeType, None, None]: n=n, current_iter=current_iter, n_epochs=stop_epoch - start_epoch ) - # # stop here in case we don't exhaust the iterator - # if n is not None and current_iter >= n: - # self.command.stop() current_iter += 1 yield ret diff --git a/tests/conftest.py b/tests/conftest.py index 44350224..5265c3bb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -28,13 +28,6 @@ def _config_sources(cls: type[ConfigYAMLMixin]) -> list[Path]: monkeypatch_session.setattr(ConfigYAMLMixin, "config_sources", classmethod(_config_sources)) -@pytest.fixture(scope="session", autouse=True) -def patch_env_config(monkeypatch_session: MonkeyPatch) -> None: - """Patch env settings, e.g. setting log levels and etc.""" - - # monkeypatch_session.setenv("NOOB_LOGS__LEVEL", "DEBUG") - - def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item]) -> None: # While zmq runner uses IPC, can't run on windows if platform.system() == "Windows":