From 4a895df52cc1caa9d0708b0136043cc04bc4c4d6 Mon Sep 17 00:00:00 2001 From: kolo Date: Mon, 13 Oct 2025 02:03:49 +0300 Subject: [PATCH 001/117] feat: start make docs --- docs/index.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 7d6ec32..4bc3f3e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,12 +6,9 @@ Argenta documentation ===================== -Add your content using ``reStructuredText`` syntax. See the -`reStructuredText `_ -documentation for details. +First step to make Argenta docs .. toctree:: :maxdepth: 2 :caption: Contents: - From 36b4d16610624e567f77ac6a82af66d5e92bc884 Mon Sep 17 00:00:00 2001 From: kolo Date: Mon, 13 Oct 2025 14:23:47 +0300 Subject: [PATCH 002/117] fix public api --- src/argenta/__init__.py | 9 ++--- src/argenta/app/__init__.py | 16 ++------ src/argenta/app/autocompleter/__init__.py | 5 +-- src/argenta/app/autocompleter/entity.py | 12 +++--- src/argenta/app/defaults.py | 2 + src/argenta/app/dividing_line/__init__.py | 5 +-- src/argenta/app/dividing_line/models.py | 2 + src/argenta/app/models.py | 2 + src/argenta/app/protocols.py | 6 ++- src/argenta/app/registered_routers/entity.py | 2 + src/argenta/command/__init__.py | 17 +++------ src/argenta/command/exceptions.py | 7 ++++ src/argenta/command/flag/__init__.py | 18 ++++----- src/argenta/command/flag/defaults.py | 38 ++++++++++--------- src/argenta/command/flag/flags/__init__.py | 10 +---- src/argenta/command/flag/flags/models.py | 9 +++-- src/argenta/command/flag/models.py | 20 +++++----- src/argenta/command/models.py | 23 ++++++----- src/argenta/di/integration.py | 4 +- src/argenta/di/providers.py | 4 ++ src/argenta/metrics/__init__.py | 5 +-- src/argenta/metrics/main.py | 4 ++ src/argenta/orchestrator/__init__.py | 6 +-- .../orchestrator/argparser/__init__.py | 11 +----- .../argparser/arguments/__init__.py | 9 ++--- .../argparser/arguments/models.py | 14 +++++-- src/argenta/orchestrator/argparser/entity.py | 32 +++++++++------- src/argenta/orchestrator/entity.py | 6 +-- src/argenta/response/__init__.py | 7 +--- src/argenta/response/entity.py | 2 + src/argenta/response/status.py | 2 + src/argenta/router/__init__.py | 5 +-- src/argenta/router/command_handler/entity.py | 2 + src/argenta/router/defaults.py | 2 + src/argenta/router/entity.py | 2 + src/argenta/router/exceptions.py | 2 + 36 files changed, 164 insertions(+), 158 deletions(-) diff --git a/src/argenta/__init__.py b/src/argenta/__init__.py index 6685918..ae4f3db 100644 --- a/src/argenta/__init__.py +++ b/src/argenta/__init__.py @@ -1,6 +1,3 @@ -__all__ = ["App", "Orchestrator", "Router"] - - -from argenta.orchestrator.entity import Orchestrator -from argenta.app.models import App -from argenta.router.entity import Router +from argenta.orchestrator.entity import Orchestrator as Orchestrator +from argenta.app.models import App as App +from argenta.router.entity import Router as Router diff --git a/src/argenta/app/__init__.py b/src/argenta/app/__init__.py index 7803dd8..d4a5d6a 100644 --- a/src/argenta/app/__init__.py +++ b/src/argenta/app/__init__.py @@ -1,12 +1,4 @@ -__all__ = [ - "App", - "PredefinedMessages", - "DynamicDividingLine", - "StaticDividingLine", - "AutoCompleter" -] - -from argenta.app.models import App -from argenta.app.defaults import PredefinedMessages -from argenta.app.dividing_line.models import DynamicDividingLine, StaticDividingLine -from argenta.app.autocompleter.entity import AutoCompleter +from argenta.app.models import App as App +from argenta.app.defaults import PredefinedMessages as PredefinedMessages +from argenta.app.dividing_line.models import DynamicDividingLine as DynamicDividingLine, StaticDividingLine as StaticDividingLine +from argenta.app.autocompleter.entity import AutoCompleter as AutoCompleter diff --git a/src/argenta/app/autocompleter/__init__.py b/src/argenta/app/autocompleter/__init__.py index 30bb9ce..f829610 100644 --- a/src/argenta/app/autocompleter/__init__.py +++ b/src/argenta/app/autocompleter/__init__.py @@ -1,4 +1 @@ -__all__ = ["AutoCompleter"] - - -from argenta.app.autocompleter.entity import AutoCompleter +from argenta.app.autocompleter.entity import AutoCompleter as AutoCompleter diff --git a/src/argenta/app/autocompleter/entity.py b/src/argenta/app/autocompleter/entity.py index e90de55..fb659c4 100644 --- a/src/argenta/app/autocompleter/entity.py +++ b/src/argenta/app/autocompleter/entity.py @@ -1,3 +1,5 @@ +__all__ = ["AutoCompleter"] + import os import readline from typing import Never @@ -38,7 +40,7 @@ class AutoCompleter: i += 1 common_prefix = common_prefix[:i] if state == 0: - readline.insert_text(common_prefix[len(text) :]) + readline.insert_text(common_prefix[len(text) :]) readline.redisplay() return None elif len(matches) == 1: @@ -54,10 +56,10 @@ class AutoCompleter: """ if self.history_filename: if os.path.exists(self.history_filename): - readline.read_history_file(self.history_filename) + readline.read_history_file(self.history_filename) else: for line in all_commands: - readline.add_history(line) + readline.add_history(line) readline.set_completer(self._complete) readline.set_completer_delims(readline.get_completer_delims().replace(" ", "")) @@ -69,7 +71,7 @@ class AutoCompleter: :return: None """ if self.history_filename: - readline.write_history_file(self.history_filename) + readline.write_history_file(self.history_filename) with open(self.history_filename, "r") as history_file: raw_history = history_file.read() pretty_history: list[str] = [] @@ -86,5 +88,5 @@ def _get_history_items() -> list[str] | list[Never]: """ return [ readline.get_history_item(i) - for i in range(1, readline.get_current_history_length() + 1) + for i in range(1, readline.get_current_history_length() + 1) ] diff --git a/src/argenta/app/defaults.py b/src/argenta/app/defaults.py index 2908cef..8bead5e 100644 --- a/src/argenta/app/defaults.py +++ b/src/argenta/app/defaults.py @@ -1,3 +1,5 @@ +__all__ = ["PredefinedMessages"] + from enum import StrEnum diff --git a/src/argenta/app/dividing_line/__init__.py b/src/argenta/app/dividing_line/__init__.py index 4b4f746..efe2734 100644 --- a/src/argenta/app/dividing_line/__init__.py +++ b/src/argenta/app/dividing_line/__init__.py @@ -1,4 +1 @@ -__all__ = ["StaticDividingLine", "DynamicDividingLine"] - - -from argenta.app.dividing_line.models import StaticDividingLine, DynamicDividingLine +from argenta.app.dividing_line.models import StaticDividingLine as StaticDividingLine, DynamicDividingLine as DynamicDividingLine diff --git a/src/argenta/app/dividing_line/models.py b/src/argenta/app/dividing_line/models.py index d54279e..f64bbc1 100644 --- a/src/argenta/app/dividing_line/models.py +++ b/src/argenta/app/dividing_line/models.py @@ -1,3 +1,5 @@ +__all__ = ["StaticDividingLine", "DynamicDividingLine"] + from abc import ABC diff --git a/src/argenta/app/models.py b/src/argenta/app/models.py index 676cf15..86bebbc 100644 --- a/src/argenta/app/models.py +++ b/src/argenta/app/models.py @@ -1,3 +1,5 @@ +__all__ = ["App"] + import io import re from contextlib import redirect_stdout diff --git a/src/argenta/app/protocols.py b/src/argenta/app/protocols.py index e3f13fd..c66829a 100644 --- a/src/argenta/app/protocols.py +++ b/src/argenta/app/protocols.py @@ -1,3 +1,5 @@ +__all__ = ["NonStandardBehaviorHandler", "EmptyCommandHandler", "Printer", "DescriptionMessageGenerator"] + from typing import Protocol, TypeVar T = TypeVar('T', contravariant=True) # noqa: WPS111 @@ -6,11 +8,11 @@ T = TypeVar('T', contravariant=True) # noqa: WPS111 class NonStandardBehaviorHandler(Protocol[T]): def __call__(self, __param: T) -> None: raise NotImplementedError - + class EmptyCommandHandler(Protocol): def __call__(self) -> None: raise NotImplementedError - + class Printer(Protocol): def __call__(self, __text: str) -> None: diff --git a/src/argenta/app/registered_routers/entity.py b/src/argenta/app/registered_routers/entity.py index bce0a23..2212389 100644 --- a/src/argenta/app/registered_routers/entity.py +++ b/src/argenta/app/registered_routers/entity.py @@ -1,3 +1,5 @@ +__all__ = ["RegisteredRouters"] + from typing import Iterator, Optional from argenta.router import Router diff --git a/src/argenta/command/__init__.py b/src/argenta/command/__init__.py index 98310e5..3507d43 100644 --- a/src/argenta/command/__init__.py +++ b/src/argenta/command/__init__.py @@ -1,12 +1,5 @@ -__all__ = [ - "Command", - "PossibleValues", - "PredefinedFlags", - "InputCommand", - "Flags", - "Flag" -] - -from argenta.command.models import Command, InputCommand -from argenta.command.flag import defaults as PredefinedFlags -from argenta.command.flag import (Flag, Flags, PossibleValues) +from argenta.command.models import Command as Command, InputCommand as InputCommand +from argenta.command.flag.defaults import PredefinedFlags as PredefinedFlags +from argenta.command.flag import (Flag as Flag, + Flags as Flags, + PossibleValues as PossibleValues) diff --git a/src/argenta/command/exceptions.py b/src/argenta/command/exceptions.py index 8e5a2ad..159c5cc 100644 --- a/src/argenta/command/exceptions.py +++ b/src/argenta/command/exceptions.py @@ -1,3 +1,10 @@ +__all__ = [ + "InputCommandException", + "UnprocessedInputFlagException", + "RepeatedInputFlagsException", + "EmptyInputCommandException", +] + from argenta.command.flag.models import Flag, InputFlag from abc import ABC, abstractmethod from typing import override diff --git a/src/argenta/command/flag/__init__.py b/src/argenta/command/flag/__init__.py index 3095bd8..cdae7e6 100644 --- a/src/argenta/command/flag/__init__.py +++ b/src/argenta/command/flag/__init__.py @@ -1,11 +1,7 @@ -__all__ = [ - "Flag", - "InputFlag", - "Flags", - "PossibleValues", - "ValidationStatus" -] - - -from argenta.command.flag.models import Flag, InputFlag, PossibleValues, ValidationStatus -from argenta.command.flag.flags.models import Flags +from argenta.command.flag.models import ( + Flag as Flag, + InputFlag as InputFlag, + PossibleValues as PossibleValues, + ValidationStatus as ValidationStatus +) +from argenta.command.flag.flags.models import Flags as Flags diff --git a/src/argenta/command/flag/defaults.py b/src/argenta/command/flag/defaults.py index 2ffb780..3c51bfc 100644 --- a/src/argenta/command/flag/defaults.py +++ b/src/argenta/command/flag/defaults.py @@ -1,27 +1,31 @@ +__all__ = ["PredefinedFlags"] + from typing import Literal from argenta.command.flag.models import Flag, PossibleValues -import re +import re DEFAULT_PREFIX: Literal["-", "--", "---"] = "-" -HELP = Flag(name="help", possible_values=PossibleValues.NEITHER) -SHORT_HELP = Flag(name="H", prefix=DEFAULT_PREFIX, possible_values=PossibleValues.NEITHER) -INFO = Flag(name="info", possible_values=PossibleValues.NEITHER) # noqa: WPS110 -SHORT_INFO = Flag(name="I", prefix=DEFAULT_PREFIX, possible_values=PossibleValues.NEITHER) +class PredefinedFlags: + HELP = Flag(name="help", possible_values=PossibleValues.NEITHER) + SHORT_HELP = Flag(name="H", prefix=DEFAULT_PREFIX, possible_values=PossibleValues.NEITHER) -ALL = Flag(name="all", possible_values=PossibleValues.NEITHER) -SHORT_ALL = Flag(name="A", prefix=DEFAULT_PREFIX, possible_values=PossibleValues.NEITHER) + INFO = Flag(name="info", possible_values=PossibleValues.NEITHER) # noqa: WPS110 + SHORT_INFO = Flag(name="I", prefix=DEFAULT_PREFIX, possible_values=PossibleValues.NEITHER) -HOST = Flag( - name="host", possible_values=re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$") -) -SHORT_HOST = Flag( - name="H", - prefix=DEFAULT_PREFIX, - possible_values=re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"), -) + ALL = Flag(name="all", possible_values=PossibleValues.NEITHER) + SHORT_ALL = Flag(name="A", prefix=DEFAULT_PREFIX, possible_values=PossibleValues.NEITHER) -PORT = Flag(name="port", possible_values=re.compile(r"^\d{1,5}$")) -SHORT_PORT = Flag(name="P", prefix=DEFAULT_PREFIX, possible_values=re.compile(r"^\d{1,5}$")) + HOST = Flag( + name="host", possible_values=re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$") + ) + SHORT_HOST = Flag( + name="H", + prefix=DEFAULT_PREFIX, + possible_values=re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"), + ) + + PORT = Flag(name="port", possible_values=re.compile(r"^\d{1,5}$")) + SHORT_PORT = Flag(name="P", prefix=DEFAULT_PREFIX, possible_values=re.compile(r"^\d{1,5}$")) diff --git a/src/argenta/command/flag/flags/__init__.py b/src/argenta/command/flag/flags/__init__.py index b355115..19593ba 100644 --- a/src/argenta/command/flag/flags/__init__.py +++ b/src/argenta/command/flag/flags/__init__.py @@ -1,10 +1,4 @@ -__all__ = [ - "Flags", - "InputFlags" -] - - from argenta.command.flag.flags.models import ( - Flags, - InputFlags + Flags as Flags, + InputFlags as InputFlags ) diff --git a/src/argenta/command/flag/flags/models.py b/src/argenta/command/flag/flags/models.py index c80b21b..132584a 100644 --- a/src/argenta/command/flag/flags/models.py +++ b/src/argenta/command/flag/flags/models.py @@ -1,3 +1,5 @@ +__all__ = ["Flags", "InputFlags"] + from argenta.command.flag.models import InputFlag, Flag from typing import Generic, TypeVar, override from collections.abc import Iterator @@ -52,7 +54,7 @@ class Flags(BaseFlags[Flag]): :return: entity of the flag or None """ return next((flag for flag in self.flags if flag.name == name), None) - + @override def __eq__(self, other: object) -> bool: if not isinstance(other, Flags): @@ -82,9 +84,9 @@ class InputFlags(BaseFlags[InputFlag]): :return: entity of the flag or None """ return next((flag for flag in self.flags if flag.name == name), None) - + @override - def __eq__(self, other: object) -> bool: + def __eq__(self, other: object) -> bool: if not isinstance(other, InputFlags): raise NotImplementedError @@ -103,4 +105,3 @@ class InputFlags(BaseFlags[InputFlag]): return False else: raise TypeError - diff --git a/src/argenta/command/flag/models.py b/src/argenta/command/flag/models.py index 7f04992..e9d90d4 100644 --- a/src/argenta/command/flag/models.py +++ b/src/argenta/command/flag/models.py @@ -1,3 +1,5 @@ +__all__ = ["PossibleValues", "ValidationStatus", "Flag", "InputFlag"] + from enum import Enum from re import Pattern from typing import Literal, override @@ -16,7 +18,7 @@ class ValidationStatus(Enum): class Flag: def __init__( - self, name: str, *, + self, name: str, *, prefix: Literal["-", "--", "---"] = "--", possible_values: list[str] | Pattern[str] | PossibleValues = PossibleValues.ALL, ) -> None: @@ -47,7 +49,7 @@ class Flag: return input_flag_value in self.possible_values return True - + @property def string_entity(self) -> str: """ @@ -56,17 +58,17 @@ class Flag: """ string_entity: str = self.prefix + self.name return string_entity - + @override def __str__(self) -> str: return self.string_entity - + @override def __repr__(self) -> str: return f'Flag' - + @override - def __eq__(self, other: object) -> bool: + def __eq__(self, other: object) -> bool: if isinstance(other, Flag): return self.string_entity == other.string_entity else: @@ -91,7 +93,7 @@ class InputFlag: self.prefix: Literal['-', '--', '---'] = prefix self.input_value: str | None = input_value self.status: ValidationStatus | None = status - + @property def string_entity(self) -> str: """ @@ -104,13 +106,13 @@ class InputFlag: @override def __str__(self) -> str: return f'{self.string_entity} {self.input_value}' - + @override def __repr__(self) -> str: return f'InputFlag' @override - def __eq__(self, other: object) -> bool: + def __eq__(self, other: object) -> bool: if isinstance(other, InputFlag): return ( self.name == other.name diff --git a/src/argenta/command/models.py b/src/argenta/command/models.py index 6088a21..1286d73 100644 --- a/src/argenta/command/models.py +++ b/src/argenta/command/models.py @@ -1,3 +1,8 @@ +__all__ = [ + "Command", + "InputCommand" +] + from argenta.command.flag.models import Flag, InputFlag, ValidationStatus from argenta.command.flag.flags.models import InputFlags, Flags from argenta.command.exceptions import ( @@ -20,7 +25,7 @@ DEFAULT_WITHOUT_INPUT_FLAGS: InputFlags = InputFlags() class Command: def __init__( self, - trigger: str, *, + trigger: str, *, description: str | None = None, flags: Flag | Flags = DEFAULT_WITHOUT_FLAGS, aliases: list[str] | None = None, @@ -57,7 +62,7 @@ class Command: class InputCommand: - def __init__(self, trigger: str, *, + def __init__(self, trigger: str, *, input_flags: InputFlag | InputFlags = DEFAULT_WITHOUT_INPUT_FLAGS): """ Private. The model of the input command, after parsing @@ -78,7 +83,7 @@ class InputCommand: trigger, input_flags = CommandParser(raw_command).parse_raw_command() return cls(trigger=trigger, input_flags=input_flags) - + class CommandParser: def __init__(self, raw_command: str) -> None: @@ -113,24 +118,24 @@ class CommandParser: input_value=crnt_flg_val, status=None ) - + if input_flag in self._parsed_input_flags: raise RepeatedInputFlagsException(input_flag) - + self._parsed_input_flags.add_flag(input_flag) crnt_flg_name, crnt_flg_val = None, None return (self._parsed_input_flags, crnt_flg_name, crnt_flg_val) - + def _is_next_token_value(self, current_index: int, _tokens: list[str] | list[Never]) -> bool: next_index = current_index + 1 if next_index >= len(_tokens): - return False - + return False + next_token = _tokens[next_index] return not next_token.startswith(MIN_FLAG_PREFIX) - + def _parse_single_token( token: str, crnt_flag_name: str | None, diff --git a/src/argenta/di/integration.py b/src/argenta/di/integration.py index a4001ec..3a38b47 100644 --- a/src/argenta/di/integration.py +++ b/src/argenta/di/integration.py @@ -20,9 +20,10 @@ def inject(func: Callable[..., T]) -> Callable[..., T]: ) -def setup_dishka(app: App, *, auto_inject: bool = False) -> None: +def setup_dishka(app: App, container: Container, *, auto_inject: bool = False) -> None: if auto_inject: _auto_inject_handlers(app) + Response.patch_by_container(container) def _get_container_from_response( @@ -33,7 +34,6 @@ def _get_container_from_response( if hasattr(arg, "_dishka_container"): return arg._dishka_container # pyright: ignore[reportPrivateUsage] break - raise RuntimeError("dishka container not found in Response") diff --git a/src/argenta/di/providers.py b/src/argenta/di/providers.py index 43e404e..49b1c0c 100644 --- a/src/argenta/di/providers.py +++ b/src/argenta/di/providers.py @@ -1,3 +1,7 @@ +__all__ = [ + 'SystemProvider', +] + from argenta.orchestrator.argparser import ArgParser from dishka import Provider, provide, Scope diff --git a/src/argenta/metrics/__init__.py b/src/argenta/metrics/__init__.py index 5b98ef8..9888ab8 100644 --- a/src/argenta/metrics/__init__.py +++ b/src/argenta/metrics/__init__.py @@ -1,4 +1 @@ -__all__ = ["get_time_of_pre_cycle_setup"] - - -from argenta.metrics.main import get_time_of_pre_cycle_setup +from argenta.metrics.main import get_time_of_pre_cycle_setup as get_time_of_pre_cycle_setup diff --git a/src/argenta/metrics/main.py b/src/argenta/metrics/main.py index cc68072..b32b526 100644 --- a/src/argenta/metrics/main.py +++ b/src/argenta/metrics/main.py @@ -1,3 +1,7 @@ +__all__ = [ + 'get_time_of_pre_cycle_setup', +] + import io from contextlib import redirect_stdout from time import time diff --git a/src/argenta/orchestrator/__init__.py b/src/argenta/orchestrator/__init__.py index b980d66..1eddaa5 100644 --- a/src/argenta/orchestrator/__init__.py +++ b/src/argenta/orchestrator/__init__.py @@ -1,4 +1,2 @@ -__all__ = ["ArgParser", "Orchestrator"] - -from argenta.orchestrator.argparser.entity import ArgParser -from argenta.orchestrator.entity import Orchestrator +from argenta.orchestrator.argparser.entity import ArgParser as ArgParser +from argenta.orchestrator.entity import Orchestrator as Orchestrator diff --git a/src/argenta/orchestrator/argparser/__init__.py b/src/argenta/orchestrator/argparser/__init__.py index 4f59581..92db9bf 100644 --- a/src/argenta/orchestrator/argparser/__init__.py +++ b/src/argenta/orchestrator/argparser/__init__.py @@ -1,9 +1,2 @@ -__all__ = [ - "ArgParser", - "BooleanArgument", - "ValueArgument" -] - - -from argenta.orchestrator.argparser.entity import ArgParser -from argenta.orchestrator.argparser.arguments import BooleanArgument, ValueArgument +from argenta.orchestrator.argparser.entity import ArgParser as ArgParser +from argenta.orchestrator.argparser.arguments import BooleanArgument as BooleanArgument, ValueArgument as ValueArgument diff --git a/src/argenta/orchestrator/argparser/arguments/__init__.py b/src/argenta/orchestrator/argparser/arguments/__init__.py index 0308877..651bc58 100644 --- a/src/argenta/orchestrator/argparser/arguments/__init__.py +++ b/src/argenta/orchestrator/argparser/arguments/__init__.py @@ -1,8 +1,5 @@ -__all__ = ["BooleanArgument", "ValueArgument", "InputArgument"] - - from argenta.orchestrator.argparser.arguments.models import ( - BooleanArgument, - ValueArgument, - InputArgument + BooleanArgument as BooleanArgument, + ValueArgument as ValueArgument, + InputArgument as InputArgument ) diff --git a/src/argenta/orchestrator/argparser/arguments/models.py b/src/argenta/orchestrator/argparser/arguments/models.py index 32d6f02..df686a9 100644 --- a/src/argenta/orchestrator/argparser/arguments/models.py +++ b/src/argenta/orchestrator/argparser/arguments/models.py @@ -1,3 +1,9 @@ +__all__ = [ + 'BooleanArgument', + 'ValueArgument', + 'InputArgument' +] + from typing import Literal @@ -20,7 +26,7 @@ class BaseArgument: self.help: str = help self.is_deprecated: bool = is_deprecated self.prefix: Literal["-", "--", "---"] = prefix - + @property def string_entity(self) -> str: return self.prefix + self.name @@ -29,7 +35,7 @@ class BaseArgument: class ValueArgument(BaseArgument): def __init__(self, name: str, *, prefix: Literal["-", "--", "---"] = "--", - help: str = "Help message for the value argument", + help: str = "Help message for the value argument", possible_values: list[str] | None = None, default: str | None = None, is_required: bool = False, @@ -74,9 +80,9 @@ class InputArgument: self.name: str = name self.value: str | None = value self.founder_class: type[BaseArgument] = founder_class - + def __str__(self) -> str: return f"InputArgument({self.name}={self.value})" - + def __repr__(self) -> str: return f"InputArgument" diff --git a/src/argenta/orchestrator/argparser/entity.py b/src/argenta/orchestrator/argparser/entity.py index b49e426..a48f56d 100644 --- a/src/argenta/orchestrator/argparser/entity.py +++ b/src/argenta/orchestrator/argparser/entity.py @@ -1,3 +1,8 @@ +__all__ = [ + "ArgSpace", + "ArgParser", +] + from argparse import ArgumentParser, Namespace from typing import Never, Self @@ -8,32 +13,32 @@ from argenta.orchestrator.argparser.arguments.models import ( ValueArgument ) - + class ArgSpace: def __init__(self, all_arguments: list[InputArgument]) -> None: self.all_arguments = all_arguments - + @classmethod - def from_namespace(cls, namespace: Namespace, + def from_namespace(cls, namespace: Namespace, processed_args: list[ValueArgument | BooleanArgument]) -> Self: name_type_paired_args: dict[str, type[BaseArgument]] = { arg.name: type(arg) - for arg in processed_args + for arg in processed_args } - return cls([InputArgument(name=name, - value=value, - founder_class=name_type_paired_args[name]) + return cls([InputArgument(name=name, + value=value, + founder_class=name_type_paired_args[name]) for name, value in vars(namespace).items()]) - + def get_by_name(self, name: str) -> InputArgument | None: for arg in self.all_arguments: if arg.name == name: return arg return None - + def get_by_type(self, arg_type: type[BaseArgument]) -> list[InputArgument] | list[Never]: return [arg for arg in self.all_arguments if arg.founder_class is arg_type] - + class ArgParser: def __init__( @@ -56,15 +61,15 @@ class ArgParser: self.processed_args: list[ValueArgument | BooleanArgument] = processed_args self._core: ArgumentParser = ArgumentParser(prog=name, description=description, epilog=epilog) - + for arg in processed_args: if isinstance(arg, BooleanArgument): - _ = self._core.add_argument(arg.string_entity, + _ = self._core.add_argument(arg.string_entity, action=arg.action, help=arg.help, deprecated=arg.is_deprecated) else: - _ = self._core.add_argument(arg.string_entity, + _ = self._core.add_argument(arg.string_entity, action=arg.action, help=arg.help, default=arg.default, @@ -75,4 +80,3 @@ class ArgParser: def parse_args(self) -> ArgSpace: return ArgSpace.from_namespace(namespace=self._core.parse_args(), processed_args=self.processed_args) - \ No newline at end of file diff --git a/src/argenta/orchestrator/entity.py b/src/argenta/orchestrator/entity.py index 7934e56..7a1f739 100644 --- a/src/argenta/orchestrator/entity.py +++ b/src/argenta/orchestrator/entity.py @@ -1,5 +1,6 @@ +__all__ = ["Orchestrator"] + from argenta.app import App -from argenta.response import Response from argenta.orchestrator.argparser import ArgParser from argenta.di.integration import setup_dishka @@ -31,7 +32,6 @@ class Orchestrator: :return: None """ container = make_container(SystemProvider(self._arg_parser), *self._custom_providers) - Response.patch_by_container(container) - setup_dishka(app, auto_inject=self._auto_inject_handlers) + setup_dishka(app, container, auto_inject=self._auto_inject_handlers) app.run_polling() diff --git a/src/argenta/response/__init__.py b/src/argenta/response/__init__.py index d7eb4a1..905f782 100644 --- a/src/argenta/response/__init__.py +++ b/src/argenta/response/__init__.py @@ -1,5 +1,2 @@ -__all__ = ["Response", "ResponseStatus"] - - -from argenta.response.entity import Response -from argenta.response.status import ResponseStatus +from argenta.response.entity import Response as Response +from argenta.response.status import ResponseStatus as ResponseStatus diff --git a/src/argenta/response/entity.py b/src/argenta/response/entity.py index 3e10371..ec0dc41 100644 --- a/src/argenta/response/entity.py +++ b/src/argenta/response/entity.py @@ -1,3 +1,5 @@ +__all__ = ["Response"] + from dishka import Container from argenta.command.flag.flags.models import InputFlags diff --git a/src/argenta/response/status.py b/src/argenta/response/status.py index 7c860fd..8fe548f 100644 --- a/src/argenta/response/status.py +++ b/src/argenta/response/status.py @@ -1,3 +1,5 @@ +__all__ = ["ResponseStatus"] + from enum import Enum diff --git a/src/argenta/router/__init__.py b/src/argenta/router/__init__.py index ecdb426..2a961de 100644 --- a/src/argenta/router/__init__.py +++ b/src/argenta/router/__init__.py @@ -1,4 +1 @@ -from argenta.router.entity import Router - - -__all__ = ["Router"] +from argenta.router.entity import Router as Router diff --git a/src/argenta/router/command_handler/entity.py b/src/argenta/router/command_handler/entity.py index ac01d71..62865d2 100644 --- a/src/argenta/router/command_handler/entity.py +++ b/src/argenta/router/command_handler/entity.py @@ -1,3 +1,5 @@ +__all__ = ["CommandHandler", "CommandHandlers"] + from collections.abc import Iterator from typing import Callable diff --git a/src/argenta/router/defaults.py b/src/argenta/router/defaults.py index d8e3f21..a47c108 100644 --- a/src/argenta/router/defaults.py +++ b/src/argenta/router/defaults.py @@ -1,3 +1,5 @@ +__all__ = ["system_router"] + from argenta.router import Router diff --git a/src/argenta/router/entity.py b/src/argenta/router/entity.py index 841c6d0..93fb402 100644 --- a/src/argenta/router/entity.py +++ b/src/argenta/router/entity.py @@ -1,3 +1,5 @@ +__all__ = ["Router"] + from typing import Callable, TypeAlias from inspect import getfullargspec, get_annotations, getsourcefile, getsourcelines from rich.console import Console diff --git a/src/argenta/router/exceptions.py b/src/argenta/router/exceptions.py index 161f08f..2c40df0 100644 --- a/src/argenta/router/exceptions.py +++ b/src/argenta/router/exceptions.py @@ -1,3 +1,5 @@ +__all__ = ["RepeatedFlagNameException", "RequiredArgumentNotPassedException", "TriggerContainSpacesException"] + from typing import override From a5e72161ef8c53266a8d147dc0edf8f8e6001db0 Mon Sep 17 00:00:00 2001 From: kolo Date: Mon, 13 Oct 2025 14:28:11 +0300 Subject: [PATCH 003/117] imports sort --- pyproject.toml | 1 + src/argenta/__init__.py | 2 +- src/argenta/app/__init__.py | 9 ++++--- src/argenta/app/dividing_line/__init__.py | 5 +++- src/argenta/app/models.py | 25 ++++++++----------- src/argenta/command/__init__.py | 9 ++++--- src/argenta/command/exceptions.py | 3 ++- src/argenta/command/flag/__init__.py | 10 +++----- src/argenta/command/flag/defaults.py | 4 +-- src/argenta/command/flag/flags/__init__.py | 6 ++--- src/argenta/command/flag/flags/models.py | 4 +-- src/argenta/command/models.py | 14 +++++------ src/argenta/di/__init__.py | 2 +- src/argenta/di/integration.py | 5 ++-- src/argenta/di/providers.py | 4 +-- src/argenta/metrics/__init__.py | 3 ++- .../orchestrator/argparser/__init__.py | 5 +++- .../argparser/arguments/__init__.py | 9 ++++--- src/argenta/orchestrator/argparser/entity.py | 10 +++----- src/argenta/orchestrator/entity.py | 10 +++----- src/argenta/response/entity.py | 1 - src/argenta/router/defaults.py | 1 - src/argenta/router/entity.py | 18 ++++++------- 23 files changed, 79 insertions(+), 81 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9fd14fa..2afea90 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,7 @@ build-backend = "hatchling.build" [dependency-groups] dev = [ + "isort>=7.0.0", "mypy>=1.14.1", "pytest>=8.3.2", "ruff>=0.12.12", diff --git a/src/argenta/__init__.py b/src/argenta/__init__.py index ae4f3db..94239fd 100644 --- a/src/argenta/__init__.py +++ b/src/argenta/__init__.py @@ -1,3 +1,3 @@ -from argenta.orchestrator.entity import Orchestrator as Orchestrator from argenta.app.models import App as App +from argenta.orchestrator.entity import Orchestrator as Orchestrator from argenta.router.entity import Router as Router diff --git a/src/argenta/app/__init__.py b/src/argenta/app/__init__.py index d4a5d6a..c5d4e46 100644 --- a/src/argenta/app/__init__.py +++ b/src/argenta/app/__init__.py @@ -1,4 +1,7 @@ -from argenta.app.models import App as App -from argenta.app.defaults import PredefinedMessages as PredefinedMessages -from argenta.app.dividing_line.models import DynamicDividingLine as DynamicDividingLine, StaticDividingLine as StaticDividingLine from argenta.app.autocompleter.entity import AutoCompleter as AutoCompleter +from argenta.app.defaults import PredefinedMessages as PredefinedMessages +from argenta.app.dividing_line.models import \ + DynamicDividingLine as DynamicDividingLine +from argenta.app.dividing_line.models import \ + StaticDividingLine as StaticDividingLine +from argenta.app.models import App as App diff --git a/src/argenta/app/dividing_line/__init__.py b/src/argenta/app/dividing_line/__init__.py index efe2734..289c51c 100644 --- a/src/argenta/app/dividing_line/__init__.py +++ b/src/argenta/app/dividing_line/__init__.py @@ -1 +1,4 @@ -from argenta.app.dividing_line.models import StaticDividingLine as StaticDividingLine, DynamicDividingLine as DynamicDividingLine +from argenta.app.dividing_line.models import \ + DynamicDividingLine as DynamicDividingLine +from argenta.app.dividing_line.models import \ + StaticDividingLine as StaticDividingLine diff --git a/src/argenta/app/models.py b/src/argenta/app/models.py index 86bebbc..c53aa80 100644 --- a/src/argenta/app/models.py +++ b/src/argenta/app/models.py @@ -5,25 +5,22 @@ import re from contextlib import redirect_stdout from typing import Never, TypeAlias -from art import text2art # pyright: ignore[reportMissingTypeStubs, reportUnknownVariableType] +from art import \ + text2art # pyright: ignore[reportMissingTypeStubs, reportUnknownVariableType] from rich.console import Console from rich.markup import escape from argenta.app.autocompleter import AutoCompleter -from argenta.app.dividing_line.models import DynamicDividingLine, StaticDividingLine -from argenta.app.protocols import ( - DescriptionMessageGenerator, - EmptyCommandHandler, - NonStandardBehaviorHandler, - Printer, -) +from argenta.app.dividing_line.models import (DynamicDividingLine, + StaticDividingLine) +from argenta.app.protocols import (DescriptionMessageGenerator, + EmptyCommandHandler, + NonStandardBehaviorHandler, Printer) from argenta.app.registered_routers.entity import RegisteredRouters -from argenta.command.exceptions import ( - EmptyInputCommandException, - InputCommandException, - RepeatedInputFlagsException, - UnprocessedInputFlagException, -) +from argenta.command.exceptions import (EmptyInputCommandException, + InputCommandException, + RepeatedInputFlagsException, + UnprocessedInputFlagException) from argenta.command.models import Command, InputCommand from argenta.response import Response from argenta.router import Router diff --git a/src/argenta/command/__init__.py b/src/argenta/command/__init__.py index 3507d43..67ecd1b 100644 --- a/src/argenta/command/__init__.py +++ b/src/argenta/command/__init__.py @@ -1,5 +1,6 @@ -from argenta.command.models import Command as Command, InputCommand as InputCommand +from argenta.command.flag import Flag as Flag +from argenta.command.flag import Flags as Flags +from argenta.command.flag import PossibleValues as PossibleValues from argenta.command.flag.defaults import PredefinedFlags as PredefinedFlags -from argenta.command.flag import (Flag as Flag, - Flags as Flags, - PossibleValues as PossibleValues) +from argenta.command.models import Command as Command +from argenta.command.models import InputCommand as InputCommand diff --git a/src/argenta/command/exceptions.py b/src/argenta/command/exceptions.py index 159c5cc..60477d9 100644 --- a/src/argenta/command/exceptions.py +++ b/src/argenta/command/exceptions.py @@ -5,10 +5,11 @@ __all__ = [ "EmptyInputCommandException", ] -from argenta.command.flag.models import Flag, InputFlag from abc import ABC, abstractmethod from typing import override +from argenta.command.flag.models import Flag, InputFlag + class InputCommandException(ABC, Exception): """ diff --git a/src/argenta/command/flag/__init__.py b/src/argenta/command/flag/__init__.py index cdae7e6..31433e2 100644 --- a/src/argenta/command/flag/__init__.py +++ b/src/argenta/command/flag/__init__.py @@ -1,7 +1,5 @@ -from argenta.command.flag.models import ( - Flag as Flag, - InputFlag as InputFlag, - PossibleValues as PossibleValues, - ValidationStatus as ValidationStatus -) from argenta.command.flag.flags.models import Flags as Flags +from argenta.command.flag.models import Flag as Flag +from argenta.command.flag.models import InputFlag as InputFlag +from argenta.command.flag.models import PossibleValues as PossibleValues +from argenta.command.flag.models import ValidationStatus as ValidationStatus diff --git a/src/argenta/command/flag/defaults.py b/src/argenta/command/flag/defaults.py index 3c51bfc..5123741 100644 --- a/src/argenta/command/flag/defaults.py +++ b/src/argenta/command/flag/defaults.py @@ -1,9 +1,9 @@ __all__ = ["PredefinedFlags"] -from typing import Literal -from argenta.command.flag.models import Flag, PossibleValues import re +from typing import Literal +from argenta.command.flag.models import Flag, PossibleValues DEFAULT_PREFIX: Literal["-", "--", "---"] = "-" diff --git a/src/argenta/command/flag/flags/__init__.py b/src/argenta/command/flag/flags/__init__.py index 19593ba..a7d3a22 100644 --- a/src/argenta/command/flag/flags/__init__.py +++ b/src/argenta/command/flag/flags/__init__.py @@ -1,4 +1,2 @@ -from argenta.command.flag.flags.models import ( - Flags as Flags, - InputFlags as InputFlags -) +from argenta.command.flag.flags.models import Flags as Flags +from argenta.command.flag.flags.models import InputFlags as InputFlags diff --git a/src/argenta/command/flag/flags/models.py b/src/argenta/command/flag/flags/models.py index 132584a..6dd0206 100644 --- a/src/argenta/command/flag/flags/models.py +++ b/src/argenta/command/flag/flags/models.py @@ -1,9 +1,9 @@ __all__ = ["Flags", "InputFlags"] -from argenta.command.flag.models import InputFlag, Flag -from typing import Generic, TypeVar, override from collections.abc import Iterator +from typing import Generic, TypeVar, override +from argenta.command.flag.models import Flag, InputFlag FlagType = TypeVar("FlagType") diff --git a/src/argenta/command/models.py b/src/argenta/command/models.py index 1286d73..462192d 100644 --- a/src/argenta/command/models.py +++ b/src/argenta/command/models.py @@ -3,15 +3,13 @@ __all__ = [ "InputCommand" ] -from argenta.command.flag.models import Flag, InputFlag, ValidationStatus -from argenta.command.flag.flags.models import InputFlags, Flags -from argenta.command.exceptions import ( - UnprocessedInputFlagException, - RepeatedInputFlagsException, - EmptyInputCommandException, -) -from typing import Never, Self, cast, Literal +from typing import Literal, Never, Self, cast +from argenta.command.exceptions import (EmptyInputCommandException, + RepeatedInputFlagsException, + UnprocessedInputFlagException) +from argenta.command.flag.flags.models import Flags, InputFlags +from argenta.command.flag.models import Flag, InputFlag, ValidationStatus ParseFlagsResult = tuple[InputFlags, str | None, str | None] ParseResult = tuple[str, InputFlags] diff --git a/src/argenta/di/__init__.py b/src/argenta/di/__init__.py index 04d5216..e7d5091 100644 --- a/src/argenta/di/__init__.py +++ b/src/argenta/di/__init__.py @@ -1,2 +1,2 @@ -from argenta.di.integration import inject as inject from argenta.di.integration import FromDishka as FromDishka +from argenta.di.integration import inject as inject diff --git a/src/argenta/di/integration.py b/src/argenta/di/integration.py index 3a38b47..da26b6c 100644 --- a/src/argenta/di/integration.py +++ b/src/argenta/di/integration.py @@ -3,11 +3,10 @@ __all__ = ["inject", "setup_dishka", "FromDishka"] from typing import Any, Callable, TypeVar from dishka import Container, FromDishka -from dishka.integrations.base import wrap_injection, is_dishka_injected +from dishka.integrations.base import is_dishka_injected, wrap_injection -from argenta.response import Response from argenta.app import App - +from argenta.response import Response T = TypeVar("T") diff --git a/src/argenta/di/providers.py b/src/argenta/di/providers.py index 49b1c0c..baad0c4 100644 --- a/src/argenta/di/providers.py +++ b/src/argenta/di/providers.py @@ -2,9 +2,9 @@ __all__ = [ 'SystemProvider', ] -from argenta.orchestrator.argparser import ArgParser -from dishka import Provider, provide, Scope +from dishka import Provider, Scope, provide +from argenta.orchestrator.argparser import ArgParser from argenta.orchestrator.argparser.entity import ArgSpace diff --git a/src/argenta/metrics/__init__.py b/src/argenta/metrics/__init__.py index 9888ab8..e97a8ca 100644 --- a/src/argenta/metrics/__init__.py +++ b/src/argenta/metrics/__init__.py @@ -1 +1,2 @@ -from argenta.metrics.main import get_time_of_pre_cycle_setup as get_time_of_pre_cycle_setup +from argenta.metrics.main import \ + get_time_of_pre_cycle_setup as get_time_of_pre_cycle_setup diff --git a/src/argenta/orchestrator/argparser/__init__.py b/src/argenta/orchestrator/argparser/__init__.py index 92db9bf..6cdfa27 100644 --- a/src/argenta/orchestrator/argparser/__init__.py +++ b/src/argenta/orchestrator/argparser/__init__.py @@ -1,2 +1,5 @@ +from argenta.orchestrator.argparser.arguments import \ + BooleanArgument as BooleanArgument +from argenta.orchestrator.argparser.arguments import \ + ValueArgument as ValueArgument from argenta.orchestrator.argparser.entity import ArgParser as ArgParser -from argenta.orchestrator.argparser.arguments import BooleanArgument as BooleanArgument, ValueArgument as ValueArgument diff --git a/src/argenta/orchestrator/argparser/arguments/__init__.py b/src/argenta/orchestrator/argparser/arguments/__init__.py index 651bc58..b214840 100644 --- a/src/argenta/orchestrator/argparser/arguments/__init__.py +++ b/src/argenta/orchestrator/argparser/arguments/__init__.py @@ -1,5 +1,6 @@ -from argenta.orchestrator.argparser.arguments.models import ( - BooleanArgument as BooleanArgument, - ValueArgument as ValueArgument, +from argenta.orchestrator.argparser.arguments.models import \ + BooleanArgument as BooleanArgument +from argenta.orchestrator.argparser.arguments.models import \ InputArgument as InputArgument -) +from argenta.orchestrator.argparser.arguments.models import \ + ValueArgument as ValueArgument diff --git a/src/argenta/orchestrator/argparser/entity.py b/src/argenta/orchestrator/argparser/entity.py index a48f56d..2d4fb9c 100644 --- a/src/argenta/orchestrator/argparser/entity.py +++ b/src/argenta/orchestrator/argparser/entity.py @@ -6,12 +6,10 @@ __all__ = [ from argparse import ArgumentParser, Namespace from typing import Never, Self -from argenta.orchestrator.argparser.arguments.models import ( - BaseArgument, - BooleanArgument, - InputArgument, - ValueArgument -) +from argenta.orchestrator.argparser.arguments.models import (BaseArgument, + BooleanArgument, + InputArgument, + ValueArgument) class ArgSpace: diff --git a/src/argenta/orchestrator/entity.py b/src/argenta/orchestrator/entity.py index 7a1f739..7745ad9 100644 --- a/src/argenta/orchestrator/entity.py +++ b/src/argenta/orchestrator/entity.py @@ -1,13 +1,11 @@ __all__ = ["Orchestrator"] -from argenta.app import App - -from argenta.orchestrator.argparser import ArgParser -from argenta.di.integration import setup_dishka -from argenta.di.providers import SystemProvider - from dishka import Provider, make_container +from argenta.app import App +from argenta.di.integration import setup_dishka +from argenta.di.providers import SystemProvider +from argenta.orchestrator.argparser import ArgParser DEFAULT_ARGPARSER: ArgParser = ArgParser(processed_args=[]) diff --git a/src/argenta/response/entity.py b/src/argenta/response/entity.py index ec0dc41..516e80d 100644 --- a/src/argenta/response/entity.py +++ b/src/argenta/response/entity.py @@ -5,7 +5,6 @@ from dishka import Container from argenta.command.flag.flags.models import InputFlags from argenta.response.status import ResponseStatus - EMPTY_INPUT_FLAGS: InputFlags = InputFlags() diff --git a/src/argenta/router/defaults.py b/src/argenta/router/defaults.py index a47c108..b0b96aa 100644 --- a/src/argenta/router/defaults.py +++ b/src/argenta/router/defaults.py @@ -2,5 +2,4 @@ __all__ = ["system_router"] from argenta.router import Router - system_router = Router(title="System points:") diff --git a/src/argenta/router/entity.py b/src/argenta/router/entity.py index 93fb402..a18f73a 100644 --- a/src/argenta/router/entity.py +++ b/src/argenta/router/entity.py @@ -1,20 +1,20 @@ __all__ = ["Router"] +from inspect import (get_annotations, getfullargspec, getsourcefile, + getsourcelines) from typing import Callable, TypeAlias -from inspect import getfullargspec, get_annotations, getsourcefile, getsourcelines + from rich.console import Console from argenta.command import Command, InputCommand from argenta.command.flag import ValidationStatus -from argenta.response import Response, ResponseStatus -from argenta.router.command_handler.entity import CommandHandlers, CommandHandler from argenta.command.flag.flags import Flags, InputFlags -from argenta.router.exceptions import ( - RepeatedFlagNameException, - RequiredArgumentNotPassedException, - TriggerContainSpacesException, -) - +from argenta.response import Response, ResponseStatus +from argenta.router.command_handler.entity import (CommandHandler, + CommandHandlers) +from argenta.router.exceptions import (RepeatedFlagNameException, + RequiredArgumentNotPassedException, + TriggerContainSpacesException) HandlerFunc: TypeAlias = Callable[..., None] From 0fca3af35d0b1ab87dd3e395a1b0fa245c0d7d46 Mon Sep 17 00:00:00 2001 From: kolo Date: Tue, 14 Oct 2025 22:34:19 +0300 Subject: [PATCH 004/117] start create docs --- docs/_build/doctrees/environment.pickle | Bin 13552 -> 13468 bytes docs/_build/doctrees/index.doctree | Bin 4438 -> 3517 bytes docs/_build/html/.buildinfo | 2 +- docs/_build/html/.buildinfo.bak | 4 + docs/_build/html/.doctrees/API/App.doctree | Bin 0 -> 2161 bytes .../.doctrees/API/App/Autocompleter.doctree | Bin 0 -> 3220 bytes .../.doctrees/API/App/DividingLine.doctree | Bin 0 -> 3219 bytes .../.doctrees/API/App/DividingLines.doctree | Bin 0 -> 3220 bytes .../html/.doctrees/API/App/index.doctree | Bin 0 -> 2804 bytes .../html/.doctrees/API/Autocompleter.doctree | Bin 0 -> 2171 bytes .../_build/html/.doctrees/API/Command.doctree | Bin 0 -> 2165 bytes .../html/.doctrees/API/Command/Flag.doctree | Bin 0 -> 2170 bytes .../html/.doctrees/API/Command/Flags.doctree | Bin 0 -> 3144 bytes .../.doctrees/API/Command/InputFlag.doctree | Bin 0 -> 2175 bytes .../.doctrees/API/Command/InputFlags.doctree | Bin 0 -> 2903 bytes .../API/Command/PossibleValues.doctree | Bin 0 -> 3341 bytes .../API/Command/ValidationStatus.doctree | Bin 0 -> 3363 bytes .../html/.doctrees/API/Command/index.doctree | Bin 0 -> 2865 bytes .../html/.doctrees/API/DividingLine.doctree | Bin 0 -> 2170 bytes .../html/.doctrees/API/Orchestrator.doctree | Bin 0 -> 2170 bytes .../API/Orchestrator/Argparser.doctree | Bin 0 -> 3294 bytes .../API/Orchestrator/Arguments.doctree | Bin 0 -> 3302 bytes .../.doctrees/API/Orchestrator/index.doctree | Bin 0 -> 2868 bytes .../API/Orhestrator/Argparser.doctree | Bin 0 -> 3293 bytes .../API/Orhestrator/Arguments.doctree | Bin 0 -> 3301 bytes .../.doctrees/API/Orhestrator/index.doctree | Bin 0 -> 2864 bytes .../html/.doctrees/API/Response.doctree | Bin 0 -> 3166 bytes docs/_build/html/.doctrees/API/Router.doctree | Bin 0 -> 3146 bytes .../html/.doctrees/API/Router/index.doctree | Bin 0 -> 2170 bytes docs/_build/html/.doctrees/API/index.doctree | Bin 0 -> 2880 bytes .../html/.doctrees/contributing.doctree | Bin 0 -> 16083 bytes docs/_build/html/.doctrees/environment.pickle | Bin 0 -> 30131 bytes docs/_build/html/.doctrees/index.doctree | Bin 0 -> 4039 bytes docs/_build/html/.doctrees/quickstart.doctree | Bin 0 -> 3071 bytes docs/_build/html/API/App.html | 284 ++++++++++++ docs/_build/html/API/App/Autocompleter.html | 283 ++++++++++++ docs/_build/html/API/App/DividingLine.html | 311 +++++++++++++ docs/_build/html/API/App/DividingLines.html | 283 ++++++++++++ docs/_build/html/API/App/index.html | 289 ++++++++++++ docs/_build/html/API/Autocompleter.html | 284 ++++++++++++ docs/_build/html/API/Command.html | 284 ++++++++++++ docs/_build/html/API/Command/Flag.html | 284 ++++++++++++ docs/_build/html/API/Command/Flags.html | 283 ++++++++++++ docs/_build/html/API/Command/InputFlag.html | 284 ++++++++++++ docs/_build/html/API/Command/InputFlags.html | 292 +++++++++++++ .../html/API/Command/PossibleValues.html | 284 ++++++++++++ .../html/API/Command/ValidationStatus.html | 284 ++++++++++++ docs/_build/html/API/Command/index.html | 290 ++++++++++++ docs/_build/html/API/DividingLine.html | 284 ++++++++++++ docs/_build/html/API/Orchestrator.html | 284 ++++++++++++ .../html/API/Orchestrator/Argparser.html | 323 ++++++++++++++ .../html/API/Orchestrator/Arguments.html | 323 ++++++++++++++ docs/_build/html/API/Orchestrator/index.html | 328 ++++++++++++++ .../html/API/Orhestrator/Argparser.html | 284 ++++++++++++ .../html/API/Orhestrator/Arguments.html | 284 ++++++++++++ docs/_build/html/API/Orhestrator/index.html | 289 ++++++++++++ docs/_build/html/API/Response.html | 283 ++++++++++++ docs/_build/html/API/Router.html | 283 ++++++++++++ docs/_build/html/API/Router/index.html | 284 ++++++++++++ docs/_build/html/API/index.html | 344 +++++++++++++++ docs/_build/html/_sources/API/App.rst.txt | 0 .../_sources/API/App/Autocompleter.rst.txt | 4 + .../_sources/API/App/DividingLine.rst.txt | 4 + .../_sources/API/App/DividingLines.rst.txt | 4 + .../html/_sources/API/App/index.rst.txt | 6 + .../html/_sources/API/Autocompleter.rst.txt | 0 docs/_build/html/_sources/API/Command.rst.txt | 0 .../html/_sources/API/Command/Flag.rst.txt | 0 .../html/_sources/API/Command/Flags.rst.txt | 4 + .../_sources/API/Command/InputFlag.rst.txt | 0 .../_sources/API/Command/InputFlags.rst.txt | 4 + .../API/Command/PossibleValues.rst.txt | 6 + .../API/Command/ValidationStatus.rst.txt | 6 + .../html/_sources/API/Command/index.rst.txt | 7 + .../html/_sources/API/DividingLine.rst.txt | 0 .../html/_sources/API/Orchestrator.rst.txt | 0 .../API/Orchestrator/Argparser.rst.txt | 6 + .../API/Orchestrator/Arguments.rst.txt | 6 + .../_sources/API/Orchestrator/index.rst.txt | 6 + .../API/Orhestrator/Argparser.rst.txt | 6 + .../API/Orhestrator/Arguments.rst.txt | 6 + .../_sources/API/Orhestrator/index.rst.txt | 6 + .../_build/html/_sources/API/Response.rst.txt | 4 + docs/_build/html/_sources/API/Router.rst.txt | 4 + .../html/_sources/API/Router/index.rst.txt | 0 docs/_build/html/_sources/API/index.rst.txt | 9 + .../_build/html/_sources/contributing.rst.txt | 119 +++++ docs/_build/html/_sources/index.rst.txt | 28 +- docs/_build/html/_sources/quickstart.rst.txt | 8 + docs/_build/html/_static/debug.css | 69 +++ .../html/_static/documentation_options.js | 2 +- docs/_build/html/_static/pygments.css | 321 ++++++++++---- .../html/_static/scripts/furo-extensions.js | 0 docs/_build/html/_static/scripts/furo.js | 3 + .../html/_static/scripts/furo.js.LICENSE.txt | 7 + docs/_build/html/_static/scripts/furo.js.map | 1 + docs/_build/html/_static/skeleton.css | 296 +++++++++++++ .../html/_static/styles/furo-extensions.css | 2 + .../_static/styles/furo-extensions.css.map | 1 + docs/_build/html/_static/styles/furo.css | 2 + docs/_build/html/_static/styles/furo.css.map | 1 + docs/_build/html/contributing.html | 413 ++++++++++++++++++ docs/_build/html/genindex.html | 372 ++++++++++++---- docs/_build/html/index.html | 398 +++++++++++++---- docs/_build/html/objects.inv | Bin 237 -> 576 bytes docs/_build/html/quickstart.html | 307 +++++++++++++ docs/_build/html/search.html | 400 ++++++++++++----- docs/_build/html/searchindex.js | 2 +- docs/api/App/Autocompleter.rst | 4 + docs/api/App/DividingLines.rst | 4 + docs/api/App/index.rst | 6 + docs/api/Command/Flags.rst | 4 + docs/api/Command/PossibleValues.rst | 6 + docs/api/Command/ValidationStatus.rst | 6 + docs/api/Command/index.rst | 7 + docs/api/Orchestrator/Argparser.rst | 6 + docs/api/Orchestrator/Arguments.rst | 6 + docs/api/Orchestrator/index.rst | 6 + docs/api/Response.rst | 4 + docs/api/Router.rst | 4 + docs/api/index.rst | 9 + docs/conf.py | 4 +- docs/contributing.rst | 119 +++++ docs/index.rst | 27 +- docs/quickstart.rst | 8 + docs/requirements.txt | 1 + mock/mock_app/main.py | 2 + pyproject.toml | 2 +- src/argenta/app/models.py | 3 +- 129 files changed, 10325 insertions(+), 381 deletions(-) create mode 100644 docs/_build/html/.buildinfo.bak create mode 100644 docs/_build/html/.doctrees/API/App.doctree create mode 100644 docs/_build/html/.doctrees/API/App/Autocompleter.doctree create mode 100644 docs/_build/html/.doctrees/API/App/DividingLine.doctree create mode 100644 docs/_build/html/.doctrees/API/App/DividingLines.doctree create mode 100644 docs/_build/html/.doctrees/API/App/index.doctree create mode 100644 docs/_build/html/.doctrees/API/Autocompleter.doctree create mode 100644 docs/_build/html/.doctrees/API/Command.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/Flag.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/Flags.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/InputFlag.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/InputFlags.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/PossibleValues.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/ValidationStatus.doctree create mode 100644 docs/_build/html/.doctrees/API/Command/index.doctree create mode 100644 docs/_build/html/.doctrees/API/DividingLine.doctree create mode 100644 docs/_build/html/.doctrees/API/Orchestrator.doctree create mode 100644 docs/_build/html/.doctrees/API/Orchestrator/Argparser.doctree create mode 100644 docs/_build/html/.doctrees/API/Orchestrator/Arguments.doctree create mode 100644 docs/_build/html/.doctrees/API/Orchestrator/index.doctree create mode 100644 docs/_build/html/.doctrees/API/Orhestrator/Argparser.doctree create mode 100644 docs/_build/html/.doctrees/API/Orhestrator/Arguments.doctree create mode 100644 docs/_build/html/.doctrees/API/Orhestrator/index.doctree create mode 100644 docs/_build/html/.doctrees/API/Response.doctree create mode 100644 docs/_build/html/.doctrees/API/Router.doctree create mode 100644 docs/_build/html/.doctrees/API/Router/index.doctree create mode 100644 docs/_build/html/.doctrees/API/index.doctree create mode 100644 docs/_build/html/.doctrees/contributing.doctree create mode 100644 docs/_build/html/.doctrees/environment.pickle create mode 100644 docs/_build/html/.doctrees/index.doctree create mode 100644 docs/_build/html/.doctrees/quickstart.doctree create mode 100644 docs/_build/html/API/App.html create mode 100644 docs/_build/html/API/App/Autocompleter.html create mode 100644 docs/_build/html/API/App/DividingLine.html create mode 100644 docs/_build/html/API/App/DividingLines.html create mode 100644 docs/_build/html/API/App/index.html create mode 100644 docs/_build/html/API/Autocompleter.html create mode 100644 docs/_build/html/API/Command.html create mode 100644 docs/_build/html/API/Command/Flag.html create mode 100644 docs/_build/html/API/Command/Flags.html create mode 100644 docs/_build/html/API/Command/InputFlag.html create mode 100644 docs/_build/html/API/Command/InputFlags.html create mode 100644 docs/_build/html/API/Command/PossibleValues.html create mode 100644 docs/_build/html/API/Command/ValidationStatus.html create mode 100644 docs/_build/html/API/Command/index.html create mode 100644 docs/_build/html/API/DividingLine.html create mode 100644 docs/_build/html/API/Orchestrator.html create mode 100644 docs/_build/html/API/Orchestrator/Argparser.html create mode 100644 docs/_build/html/API/Orchestrator/Arguments.html create mode 100644 docs/_build/html/API/Orchestrator/index.html create mode 100644 docs/_build/html/API/Orhestrator/Argparser.html create mode 100644 docs/_build/html/API/Orhestrator/Arguments.html create mode 100644 docs/_build/html/API/Orhestrator/index.html create mode 100644 docs/_build/html/API/Response.html create mode 100644 docs/_build/html/API/Router.html create mode 100644 docs/_build/html/API/Router/index.html create mode 100644 docs/_build/html/API/index.html create mode 100644 docs/_build/html/_sources/API/App.rst.txt create mode 100644 docs/_build/html/_sources/API/App/Autocompleter.rst.txt create mode 100644 docs/_build/html/_sources/API/App/DividingLine.rst.txt create mode 100644 docs/_build/html/_sources/API/App/DividingLines.rst.txt create mode 100644 docs/_build/html/_sources/API/App/index.rst.txt create mode 100644 docs/_build/html/_sources/API/Autocompleter.rst.txt create mode 100644 docs/_build/html/_sources/API/Command.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/Flag.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/Flags.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/InputFlag.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/InputFlags.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/PossibleValues.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/ValidationStatus.rst.txt create mode 100644 docs/_build/html/_sources/API/Command/index.rst.txt create mode 100644 docs/_build/html/_sources/API/DividingLine.rst.txt create mode 100644 docs/_build/html/_sources/API/Orchestrator.rst.txt create mode 100644 docs/_build/html/_sources/API/Orchestrator/Argparser.rst.txt create mode 100644 docs/_build/html/_sources/API/Orchestrator/Arguments.rst.txt create mode 100644 docs/_build/html/_sources/API/Orchestrator/index.rst.txt create mode 100644 docs/_build/html/_sources/API/Orhestrator/Argparser.rst.txt create mode 100644 docs/_build/html/_sources/API/Orhestrator/Arguments.rst.txt create mode 100644 docs/_build/html/_sources/API/Orhestrator/index.rst.txt create mode 100644 docs/_build/html/_sources/API/Response.rst.txt create mode 100644 docs/_build/html/_sources/API/Router.rst.txt create mode 100644 docs/_build/html/_sources/API/Router/index.rst.txt create mode 100644 docs/_build/html/_sources/API/index.rst.txt create mode 100644 docs/_build/html/_sources/contributing.rst.txt create mode 100644 docs/_build/html/_sources/quickstart.rst.txt create mode 100644 docs/_build/html/_static/debug.css create mode 100644 docs/_build/html/_static/scripts/furo-extensions.js create mode 100644 docs/_build/html/_static/scripts/furo.js create mode 100644 docs/_build/html/_static/scripts/furo.js.LICENSE.txt create mode 100644 docs/_build/html/_static/scripts/furo.js.map create mode 100644 docs/_build/html/_static/skeleton.css create mode 100644 docs/_build/html/_static/styles/furo-extensions.css create mode 100644 docs/_build/html/_static/styles/furo-extensions.css.map create mode 100644 docs/_build/html/_static/styles/furo.css create mode 100644 docs/_build/html/_static/styles/furo.css.map create mode 100644 docs/_build/html/contributing.html create mode 100644 docs/_build/html/quickstart.html create mode 100644 docs/api/App/Autocompleter.rst create mode 100644 docs/api/App/DividingLines.rst create mode 100644 docs/api/App/index.rst create mode 100644 docs/api/Command/Flags.rst create mode 100644 docs/api/Command/PossibleValues.rst create mode 100644 docs/api/Command/ValidationStatus.rst create mode 100644 docs/api/Command/index.rst create mode 100644 docs/api/Orchestrator/Argparser.rst create mode 100644 docs/api/Orchestrator/Arguments.rst create mode 100644 docs/api/Orchestrator/index.rst create mode 100644 docs/api/Response.rst create mode 100644 docs/api/Router.rst create mode 100644 docs/api/index.rst create mode 100644 docs/contributing.rst create mode 100644 docs/quickstart.rst diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 341caa604ef6a10b6908d8b89d5cefa66d1b0886..c12c2eb67d0e6e549e0bbab86c0c65419ed61ce4 100644 GIT binary patch delta 3814 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 Y)(L)l->~-l#0!0nrrk0TUv!1`Z&km)3jhEB diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree index 03a9dffcaee952eebc6e20b16e287c2c73a54e25..d3f05edc6853a74ddf8f38b109426687284174b3 100644 GIT binary patch delta 195 zcmcbnv{#z7fpzL8-i@rwnD|YdtztrpQ;UjYvh#EDGbf*C`t2d_mRVF>qEK9tTA)yp zuaKLVovPqil%ASblBkf9pIkg8gFSXihCmM?b(80_NKEEsliIwCU5-&Gtu#X=BP2sD zLp?*onOraq7Hv~7X{1+m4C$*v2rcm5nIQN|I`E~x=Mg4{Tp*j0m|5RFBy}jIe z%z(1iW*o$R>pqP=YKNg8c^&nB1`cQ0m(s66e#>=9KNgfYal|3wL@@PX{Ikq0Kl@Q!v{D zlLF&U_7J#2F#X7d#6TVfD^{nf_C%-{+1!sKvJq3_0=NBu84{=3vVk+{xiRds-{sl^ zoJgkvU*Xw-%;e>l^10g4(=&%j8(vfgXZ}?!U&-CYIb6*;flU zpkSvdYygGGf&IX(|F>(rTO$GWBNRMU3YG?GC9*@1hiFYF6>&j*ncg{Oj$?>Pfs5Gs z>)1p($!+QlfbVzZ-myC~25V*4g0n@+wf0aR8x^>ym$dOhTcT4RGh9$ZqGo$0U|g{8 zrqxlJu54Z s@uO@sa0j<>3lot}7YXrx7uc}0J8y97wZK{-Z5yv*f>h+2Cm(8m03UsWpa1{> diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index f757ebb..746b73e 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: a7676963520569074adf4bb73b4ff361 +config: a31851b2bf90a6fb6c198b7566e48a39 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/.buildinfo.bak b/docs/_build/html/.buildinfo.bak new file mode 100644 index 0000000..5a5516f --- /dev/null +++ b/docs/_build/html/.buildinfo.bak @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: ec0a0fe70596da7aef27b1170e45a8af +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/.doctrees/API/App.doctree b/docs/_build/html/.doctrees/API/App.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f25346f062f95a81c321e9fec7adf4c4fa0a5691 GIT binary patch literal 2161 zcmZ8jOHU*>5azK1Gr$awT~?8@9P>H=IYdgd%4M~u2nC@?$%&QavE9=SZoA_L3!ll^HibiOkKBw>g zNe}7UII#52nP8bnaSax%mWo@U)29@7sP|TmgU8)$yD7QL`faADb5P>Dr)krD^?7KY zg)wC}R#e4iYaZaokMFO4cfz{s8>5W8zPk6d(d5dSKLzvd`h%SyIeLvWAzb}({h@8o ztn(?p@s?_*sF$#Bt(jQix}r zjgnfV%h-3qd#NX=)8V3Ul{MN6%~Ra^gQ|d+E-JTWf^UPz&7PNDWfudaFD&)OW`R=_ z&eNuauxpL+NL*BMn&SF-io0DR1krC`urm{bRgi|>Fp^7{Pmxd$ncMpmk1Dv)#)}t+ zk8$WwJslb{t&DBbV;nj3ttHGfx!Dd5zw9(ZiJ~EQ(${3(M#P(4nDrIKv7$BB6D4j1 zin|eaYN{4uFCL1iL@hn_!Oe|&vB$+YOb~8#N3BLJVPOSrpc$Y!Oyno!{G>+Zh|tV% zSfw}!zB>Ks)Jc55TRtShT4PB~HCMu-4>?r^NbGm@f8nK9yrg)ta8G}K#hM1wcvSrs=V5I5wZX~_bWsA^G20McrzvcvtNDY(zAe^#|l1a8Q*$!Izd z)7CgaUfwJaVV>MdCp*0E6D}PctNf5zmfLf-)NkV+9^=4|LP0nk&df+9RW|_M<}U;R z!3#}=&fYlsy^A4(K6T>7dOXaO18npJC{(hMKK**|O&qnNC7_4^QCTV2Ue=5$a?iYo zU)0{W?)~{W)b6Y;)8ow83Fvg3ElUEhBwjRVk4HQD(4T(w{ST<;$X0B{ebzj?|9b8o z%%vHxH^QDt;j0n@GvU1UjY6=2r(;lv`#N3p;|T!SkOear4Drf93m+o%VSl+ z2hU660i$k7+btHT;jLN-TX~*hCqciRm9y_b{`U7RO8SuMU7QYIcBj}6nM99sK=|l1 znS^t@F0q%I&hAsn-E782EgD`-->fJX)`KOFgL%|)>1fG6hN<-l>^NTaH9NtE!-!xe z6EVp4tv V@I1`sydRLf9LtZ0dNYjA{s(URZ(9HW literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/App/Autocompleter.doctree b/docs/_build/html/.doctrees/API/App/Autocompleter.doctree new file mode 100644 index 0000000000000000000000000000000000000000..939488753036c9f110357fe9c6c8f99acceac853 GIT binary patch literal 3220 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 GLH{2+9r-i> literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/App/index.doctree b/docs/_build/html/.doctrees/API/App/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4c37482327f2d25d2d9afd2d82b63f8e2a369b53 GIT binary patch literal 2804 zcmZ8jTW=gS6i$=uJ-fNIL8whog`fmVHVE;6Dj`wI6MqLNjeq{_ZWMoR5UVJ+LYiT!VrIN+2SLJ8 z>)-iL|MIW>iR);3WmK*s=G_J~A}(aCS?XVTzTsMiMOLV^*5?i09!=Gl|+ zuZC$ezEDz$@$+lTRZ5;~^*howHSXFsC223ySSh%}OU%%(z?hWNMq zJLcL6oyRP*-2d<&{!nY06%asYW>QW3jcald$AHL<>sK~vK|9Tp3DYe0=NqnD0K}+N zUPHGFq%FhF`Dgq~e#9T6ireVP5dB`OfZMGKb$X>~mLVUyT9k19^JOm!JI#E;Y8!3~ zr*Nh!=3-gZG#u~X_*Myp;y9YQ9>S`>8le2KyJs~`jijM0B-3i9nJEF4XQVBc9tO3=HuVb-EeAnSh3-ltQ zxenmUG_^{j^PQN2HkKwC7Co($MW|@@+`Btx-u2252>f0^p<69;EwSpO^dt}{>>`v# z=-ah-2UD0ym1QfNZ(TnO3G|)Jr%EUOts5ACGb2D^m^B6lACwX%Ss@`;!g8`8G5l2r zDprr&j%JzCmPmHVP|i))r*4}eYCzwnAS=YPSaQdgMa~Yi>!CMW#w0_Gzu%; z9pBoyWr8Ds(&#dP#nGenjaw((UPu7IGaU7iNXWasr0FcDGlp`7+F18KqRu{QW#OL9++|n#3~9V9*cuDdeXgfAJOS zIndMSmiZuAnt!w~59ZQ<*9)eHg4t=|1JmG)+eE@y$I=NX6k|r8x7{%SnUI>9bppg> z0U#mi>`~(guaPTdd0^kt(9)&ESqBP7x0pUy=<~ zE=q{g7kLI3;iXXw`)UT@W`IPbQ(&MP3I}0In0#_eO(X%kQqhu$;qt%mfDCSt81%hH z1e`GoABPdNE(lAgkOcQ>7`jE&`_&@_Se4UqpxwAFmR^QOglm_h1l$D@aeWGK!xBqz zw_`Nn0kMyufGmrb62>|1!!XL-!J4#uRzM7E(|XYi^As-<$Xh{Je)E_7g>juAu-6$P zeC_$m8^a&s{|nwTuD{x=;&eX}=y-4si=`w`a-mm-xhg635IlODOq8tKU#Q-@C9JhO zYZf~Tuf?H*HTxK?+In#1@V2dL2e&&0Mub;Scxt#_q@+Y)kpu3F*0W0f4#~gqKLh-D q_kl)usTuUUbXd=gHF2*N7cJ{mFAP9r7P{4q!)U9fK)Af~$?$(AoMA-( literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Autocompleter.doctree b/docs/_build/html/.doctrees/API/Autocompleter.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a05101c61b09c148306df2ed713b5740b70d1f8a GIT binary patch literal 2171 zcmZ8jO;2Mt6dhm^5<`~{8n0SZ1DRxINoBX?lq}IZT?~bB%`_*H< zc{V1rm>FK?nC|j`%TFK2zguqXc&4Qm^~{*xEZjxWs=#nCa!gmLrB_|iLF z=(>^IadU30i{Y&^R9Q)#z|O|#so}OQuj90%GG4t3d&?NkV0s^R9i67yVzm`Ug*UjM zBa5o8!~W7Eh2rr#^elHys3{OTT0vMEtsGY@hVCC!dfa)1VOM+Cc!!-GC!9Yk2x-PQlZaQhh=J zIl@(;8KPq7dsm+QbY=y<->)wcZj3ghqKZjw(1%oN0ZJUS_`k@~$ys7J-B{U3QT-f7 zZPMogmRsMiFKp}#hv@>Kp{;xQgY2~@K~fRIK}nGzmkPv(7U{j;mF+%rw) zbz;*YpEufa@^WXUNa4t>u%hMb0b#<@iA)z+RJprUOZ6`7<1!Zd$Pz@-;UbKbLbjve zUHZZykb0IWS1B7qzXupM=u>N6ZH1#GInYK;!9po&;o`4{--S`b8v==N2(`$7?I+KK zqV}YV@KxnpV?SP8z-`Z)JV(y8nLY!8+?DwZ%!G@|)e?vG9i2cz%vJHK7fwOQnyi$$x&X0FV#rfCwD*{A zb5eOtdMu>s`_A$HGvgCo+= z&r@hI1D?PhT?kcz1B;<>oTh~JlZ`M@C+NZ~cN$9ns1lk1?g<=BQaKuqeeT*hNCPyd= z%yM|Nkb|Y?;{l^?&D%aPa3fo}GP-G=;&p<5H#ryI{q*hb8$kLHs{vMrFT0cDhlN0o z(}Bp*dXfm2acyBQJ#F0Qn7Ua{v|KejhrZo#uA=*E8T-pq^QPmq{1~RjMX2LsGuL7T zFC0chp?w+vct8p*WeYrBh}};M{}0^r9)O#z(!Q*bW-H_a6{T5TyIVkbn)3oWn`aHDH z!kDrfE2?6%IS=sD`G@O2oUrct#wa7NukL+qG`X_olVILm|6(Udj$R{82v@&epPQzk znx9(dQ+(?!)lN|_ai_IrVukAx>v`j;N*8N!du}5*#1P_^r<0sjs@LO)1&gP7GRx;O z?#?wzYLPBu-wE%fo}g9-i{e$*XfHHRaq~~A0$#hQ-lhq@4IVdpUV4>X4DbYDsW&zY zoT7N1HZ6o5Ym7(YqLR}T*UwVi=@KD`eglK;nHa2sH1vj%T*iEggnG!_-luq2!HqUv zyf}P}Lx&3L(2!|mY?B`2$f0*FVW=Q3Iyn5Y(+DMshTKVClX)uu!J zxD_bwtGHcLwGeypKujfS>8THHZq$oCF2-SkaHBhFHEIb9D`*4F0L@_{KPl%YH7ZAh zW`@Hm#X<1Z$&V*a;`{ybAraOZOKLzt35!1DR2d+#*VX@pmtOIb;_=GKii`T^IO?1} zCosSIe)(YKX57yY01RD?`Y1do#i62l66i#r+#K>N@F%{pf*H#R7cIbpFcQeQjGN5p z3U5R?B%h<9-i#v}ydlr3_(}qCLmrxzEKrH67KH>Lt)?nF+$)-b``r3xRqI6HhD@7` zrhPGOjT7YM%>ohT$*pv#a7&B&9nQj z=kCE=n(=xg?5PyKDlsq<&T8K%1RHod28Fn<(?vfX1CR|_Fmv$$;@XUmr?~I#G1;c1 zmXliHAK-nhOve4LYbaRuR{*6Q3iYPQok)~nbXMA9R#W7I#&={xl}ib6`zEvqk;i?R zLbDn01oRjtbp;H}hQeW<5-yBa%w&_Xs|@X!_`1v^K&BZB4*K3BgIWlW7)K0NH$*g4 zDndCnMOg%o@gRH7gV_mHbp!1wZU}vwF2gwXyHNt}0*O*{32u1eDds&!6V}K9k^-_k z))jp4yf_{(>Xx+Ka)BD&s)ewb=PC9Q^jldu`yS+Pf8U~{52@b4>F{NDiv5sD^f(8E zk4}?GIJfH(d#UN{KBnBwW^B}=;l=drigIB+Sn@cSM=h5Qm;7UxTA#p784VK(RefaK*^en`|CVSM^OQtfd8 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Command/Flag.doctree b/docs/_build/html/.doctrees/API/Command/Flag.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ef721ce0773f36f105b8336b053bd330d9ed1102 GIT binary patch literal 2170 zcmZ8jOKT)I5VqGl_KfWrKX$zYvOeZ@u$@B=VaXxE5C|s51d`J%LL;fCl~GF_J^VNr zl0(1--B$U(`J|p1+hZ_vl}c5ms_(0szkC0g{#yBqBW_smQn^!YxNs@Kv5#?rGX|Uwt0h zCt*U_%!;bmY%T))c>ZDhyA#%pXGR%0zPj_Z(d5dSKLzt{{F9v`IXXs~5Uze1pPQzk znvZ{0bb4x?Pw}m{R69kz#KqQ{sTHovuIG)XDqXC_?S+lt5JQMto=$UWsa}sG7A)T9 z$vmmcxVz9OsYSYseJ8w^dWwP_EGt-9qrK2P#mzsc3V8CegqtS#HhA3ZdFfSlF~B>7 zrQX;qaEc0g+O!aMtT7&mi%Q<6xPF%6PL~Kl^cf7c=VGu5($E`5axL>I66zsydza#2 z1vlDw@$B#+4jsyc=HSM2BSDu zw8na(#I-C}GiuoGJq(_PY8%^U^C`QaoNcS#eSS z5J#QUrvw&P-@iOqxf%EK0{}x;qdp1`N^z*Do(4JnQ+B}-JIszo6INUN#J4)=BIG zb(7#-{z4Eiz0g$X?2V(}JD4`;Qzu@m$Ae5cz(!AjLM0pN)35tq#ZfC-0*VL_m6d|+ zX3c~m_somKeusLFY{gdG zXU&uQFBk5?T$=GZ6ZTXJUzHe`31_u$6oL&roq$5z*Xg1kj{(SrESb4{0C83Hq(9oPQ7Ux4&yq()(2J;B@%BJH>v; zBzl|!!bhjcBwW~ai9OeJb{|vjW-~Er+3;fec15|g9=z~4SVS$C4qy1kFtt8`9Y?Fa z<|o*27!k~bJOHpjm{F=LJT}DE`CR`AZ~iy^2DrD>f;d>y4jt|SE+@qc_0CdVnzSP| cQ-NntOv~>9o`>0j_XCobWBD~vZ-mL||4u@3;Q#;t literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Command/Flags.doctree b/docs/_build/html/.doctrees/API/Command/Flags.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4eb43b99b2ea9e1bef97b6a336885236bd14e518 GIT binary patch literal 3144 zcma)8OK)5?6i%AVB$LN9NgGNl1dEk z9$BtZa#yQwSY*xc7CcHV9pbPV(o76*t0bXmJS?2*Yh!&rg6~TP>O!RrSiHsC!DH;T ztgw>J?6_8Ox_8zOv48ca2@k*G&Rb1WBWVDaWLix$GbMFe zR#__j{+wH>b?~_Txjeuz@48X0L-0uz>VaFUB?UbOZrLzvMGE@3&4&GBty0TUP^2Mr9q zQc9R)g@im1mXkWYa9?$x$~VBGS*ElllHF&3^Nd^JR5r_&+hm6VC|YWBQ!BMxD`um7 zg6p~us7`?*G&G|LBprk!V!@^GK9K@50_La~THbYXJHGbeH6!r7b8?d~t(7Jm`6Zb~ z1j17z>)qKB`57y%!ism7PVJmB!L{p_MyC&`kM5k@ICau(1P4Go!-0>4L*A`Rnoe>$ zVSqcv`V2~+JEvKsbWCEFfi}2CfHMQvj#N5^kAOqOH5+)_b!l!DnTp(*P{!8dJjqDI zN1$2=1gNM}DucnZg`{A52>n!)8J5S2943KH8%R547@0j;Pz2d}Ul>vH^(={np(7a_ zsb0BM=LvFd4bB*3Mv-(dx?ZV~v5;k9ekpw65>(D2F5+-?WKrQya$0VlMN^r5aRSfp5cnnsf&(M)qp2pkBUS(1_!F5uobEVO6(~$kp%8a zMaxVKZSuf_GRcU=NZ%v8fHO4kCvH1})&XG&6_U^xO}=Q($8NLgbKt5Rmj&&KTVUyZ zj}GOQ%Tj{e1rtRY3*?3+n&@vI|WTa%ng+lfGDPg1CIbpF=-&!2nI$-C|$~QuEWnozFv`DTi8=zG`$_3^T+} z&l#!QR#Sm%;0ic@E=S}ByWdW&_uM<5;7T1*t_G`usV7VieZJQeleoqJ_y1*HF!u$= w|NJk<|KTUx`Dzt2#r7Pd@7Z4Jb<4A^-pY literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Command/InputFlag.doctree b/docs/_build/html/.doctrees/API/Command/InputFlag.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8d0227970909042972bd0e91da77642cced1bee7 GIT binary patch literal 2175 zcmZ8j&1+mY5YN}zyS8_2=Zivogql!jPaA|*(%Yw4PkNO`iG2vP zhe86nMg4#Kliu#yUW4JyXf!jL`Tb`0@6mrWzE%IyOga%sn{Z;CR3WEvQFO{u{+z%2 zCx6J_rith8gNt6MoNmEFwAx6oY<`o|9w+j85eavT?OiQH(eDbwLx2+BBg?ztYb;}b zB`ml&_o}HjJL>?yym&tUBPbu{=gv4ie|<@quQY{FtTzwY0Hg7mf2>{+MO~UF?}aEpaix;g^F(8C5mxy{49}n~Hd=3#%@p zI9~P66Eo_aLUHe;y_TDeI7-LrLZg<%DTcMtD2=3A#3jPb-g9qJOIUctJ7^|oj!@-E zB|lxd%aj#P!YZdpq~_U=&w|GHlbeT3dG9=H0Sco$`cP68fW+ZY|7%`G)k{uKw@$WP zv_GZU;Pfhi_0=ag54LWmqw)a2Ftn(T!Gm&|8g7@7FBQryA>RR$(gUxA^O8x`13U<$ zft<6nBb;sUMwCO#H5%HTG~sHfGyv%>H^t#$)l}S<)?cam zprUl_qAO@RQWw1oie0~1AtH#q(?Jh-J!Db`zA)t>t1NfdY-t~-13V^xAC-b|I$fEu zMw?+AJT6}d0=ie4DqFls^m`v82YnjESGUt~p&Vdimq4M>ou>TT(Kl(!8I3qn4n zqi~5Ccfne{Yz_Va-h0Ls+#iIFgJpk3P&%Mc52`$f%s9bUrF|+|j(pJgfo!O9Eg^27 z#~vZd;IC6?H3L2YJx*xb00XO`aKB865Eol!x+~Z2xOgsuIVjT%1MO3~tL(dc78hwej1q7cNYqwpaDy0eOn!_e zER7So f_O%rz$^wdI{ZSyxFkAC}!pd^2KPlR~adGlL4(D|H literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Command/InputFlags.doctree b/docs/_build/html/.doctrees/API/Command/InputFlags.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b524ed1123321d6bf98dd6b59de4bdbd8dc2ca85 GIT binary patch literal 2903 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 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Command/ValidationStatus.doctree b/docs/_build/html/.doctrees/API/Command/ValidationStatus.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3a855f9c388adc614854f23063726dd5b55ae47f GIT binary patch literal 3363 zcmb7HTW=gS6i%A#CY#IV(uTGoX}3XzfYc2L1Ss%=iV!Fzt++iUvb;0iwVRpoV0+T! zp;AGrlt_L+s(FJyR{;{g0zS`eH`}O%N|DxQj*pK&f8RN$Pa3~oTb#)M*>)&{%!o*L z6B#n??5sD$EHUnxd;2H%*lpRCqK~x9RKT2_fJeYZ6e^au1GmK|Y|~IRU_*c2uxs6J zhx|Yz5mF;$@~xpJ(>spO95_2ijZvbP8Jy;$Pl-??lAQ@6sx^%G-AHI${F)83bhzlz z;83xC;e#I{bawfuK1b*0xXjKNI`F$3Z`tWcB+Ttj+Ga|Tv~hgOwn%+TteVy3?%mzl z|6Vht_YY+x#r}g6!(~DqDEW{DM(=-ydnShNW3%3;so1|O><9uV+;~8XVT)Fq(9gYK3e~CBA8|7)28uDbNN#r`^A9s=+d-y0QAtV5J-bj@aw_lHSQb5 zaF{EXnToJlG%_Gwk^U=EX&`5H;_PZ4VG?QB$j4K==!KAEF*)u_72_$|8f73Q0VITt z8UbG~EG%NVg*+05ld3AmLWT-85!M~Qv_-~5?T~|T_T~- zv={k{lv&PHI)UaEa2X9{^pj<9Q68V;1&1x8MB$c(zqP7z^($!|-ob;h|jW`FhAyS1{Ah&pInHl;~UfA^HG|dn|-}Pmlp;7(veLS^%#@!eS~SLPLxx`Al(YSIR~Vu15W$pq<$% zmK-_sN;_MW5@;7p6iFzc4MU2-CZ9G|kQA6@Fe`yIp`Sq>qtui|#rN)YwCH>Mc4ikxA1*(6F%Woup9{hl z7O&6BugH1SQuz7qsZZjbjA}0Au2;s4wRh`W#8!1`zG?MbeAHQG{G7Em9;^I~c0A-eoz3y-akE=ZIv>4i@AD_WjqiT`f0x*a5&kD0*JRM?KuD9)nU*bsRrB^}tB6uC4J81o#y1s-J9Q@|PnaPO>{ffDC z2Y%D=dl?chz`*~x0D;LI0e|E9`o_7w=S31kS?KG@!2f4sF7$n{Y#IK+vR?OJb*Lz8 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Command/index.doctree b/docs/_build/html/.doctrees/API/Command/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a8e182d21d30e3e145fb477fe1a8eebdf6864c91 GIT binary patch literal 2865 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 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Orchestrator.doctree b/docs/_build/html/.doctrees/API/Orchestrator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bd2b393b3cc41794635af94ea3beaa4f0c6763d3 GIT binary patch literal 2170 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 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Orchestrator/Arguments.doctree b/docs/_build/html/.doctrees/API/Orchestrator/Arguments.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4d2c2196c532560e9af82ade06002d60b1babcb6 GIT binary patch literal 3302 zcmb7HTW=gS6i%A#CY#H)X(>>Vw%ejYKy(8V4=C`0iV%>JRtR`XWqD`3Ym=GrV0+r+ zp;AGr)JlFps(FK7##;qQ{0jKa+;$VH79y=QK0ZFz?_Bbr^Yd?ObLF4!$2uyUO6)Mx zv9Q4}6Co9u3s1sZKZN^X%l8bwXLVsB5&RrDBB_$th%DR*TXN2K9XAs(<(D1b9}WlX zV>2lQ*_|Ml?gYQWoil1wIH)193o5n{;g_O>TMHt-I~h-_ujRPNr-u=b4vZLAJor#? z@I9!l6okSrIX)rwAbWl>QJDz4^S+yNnCXIC@IBW0g;Te2=ZhOV``=h$?EZmHwA#OY z#`xgf9X$xD01h|AN6qujU?k9lb2)29H#Z6asBG9q+^XYL???Y#?~c4u z>gzW8i;-vz-IAM>_xFNmOrA|6C;N{RYG+=Du!UJ?{0dMYkljec;gP=}4s!&aO^IxD z#7aQi5Av2=wf>c7vH(b6*aX9@nT>HxJX^rXtNtYwu*I_7;pDh$Dq)!^InYYn9Y?4Dn?!a0>qP=*_AU5<^;oX7z9?zcQCP#tYy zc6H(M!i7D#wdZ?4swi<8aELj|%<(kGVby5uU@FSyF!=fH;8!aX81x>1VWmD6Cc$al z>4;Im(Jf5rz-Dt4{Mj+YWZH?D%SV2l0G|~pI~;41A{Bj9hss%`Q|clX0$-~rA`vBp z-BV7ors$!seo%J-gvE$l8^;oHS0J3H{EFmBd+hiPai|bQ$6a9?rjGB#VpL3^u78i4 z3{eD!5j+K@hjc`OTq65ahL|xRN5|j--U>Iq{=s#t@V$Bbk_lt9VUlNYA`CJ>rbaIK z(^ceWq;yIt!CyRab3%mt(f2E%Qv;f(o5wFsy!2WF^feG*g%Z}X7+qH(%Be3A{;7i&>*|M&kLv7l;lrQb6t;%G-oXy5!I5Q z07aAWgan>0DJ9Y=^;1%AMG1RZ@+Mm+1>i(96rh6d6gQ*074{g*;V9422CUHozvE0ELN4 zl?z{OeQxmM%@8tmpU$B@{auc9;D{ z05WB5Ww!l~*_;sa*q^aS7+{A?s)24i&URl#{LQ0gr(m9jR;#4Af2GEOiOA*b{6jCF~}eSCvSE z`yc=^=}5#V-y>Kc1y+m4{(Jn;6VD<+Z}E&nB+aydEi}pKO8nibD0-@KrX? zQYt=-O(Z%U>7>O%$@V$0n-Cb8FOEgzjdCLev)INGMppOjVKVBDd5M7p5ffY}o1 zBtewn1BS=ajhg<1BJk7hynPtHLOEa!L1AInvp@i8#p=_yM;67?P}@1ztWfg9Y9Ymf z`OYUro~Q^_Hc+TG1^Wk8RtFUFox#<1IlMY-)|z);^yuk>U)pC+AN)ED(*@|S|FZyH zmVZ8PJCirL@6^L>-Y*h9P?VqVeR_)~OtomE>D6oOB5e=9H_KGLTw$5x{%qTOn~;@( z{G*9dwRldWR-d>1_GeIOsMwmI&4g>9>;O}K(6*AeiG#fS-O~KroPELKxdXmM@I5aC s|MFk{{S4RVOV`QO)z;Orlvh<2B}GiFV?zHnti&|(>ghn4Dn`S90GtmG;s5{u literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Orchestrator/index.doctree b/docs/_build/html/.doctrees/API/Orchestrator/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..66937689010c1aa6450247a74bccdb98203d5cfe GIT binary patch literal 2868 zcmZ`*TW=gS6i$=uEqlqO7oj#m6@rpdvO$Ok)F+@44@86t0jkukEbokWZQ>aZwkO#< zRDy@1M)F(D?}g7Zv$L0ql}0;0K69?$ckDkK|2*z)6hAkJRg_yH%`jClGv2j>AYrNX z@BHJx{A+*gI+|V?mFtLkw*ifa3mI#c`d6NBxRzm&6)LUud4o53>y;BamCjV}XeW)$wM=XiGDUYgS>MyKN~_=Fjsnbvx8r zEylS;IwAZm5gUZ+T9Ks2K#2E7N|W-f9p~9%F{aUlW|N?kyOyQXu;uxH-{)QafN$|b z_x-b{qhAfvW^|#X5~JtWmaCLJ*Xnl^!i>JvQ^ZO~h|`Q{CPvE%k3<@?*-#rKb9Ar7r&vx$=i7=SO%x#`6fzF`oPG z9>O?X4&$^410_MES`>viK6m%uQ$sE&J(Bf*`~TT5uwt;!Tu-Et%wskYvNXxR;omXW zPUtLVndSb6fAK>fXjT9QU7JcZ_BXD{MH~ZAH?CjVs0HmbPsU8M*q?2AcYI$*aN#gB=*$DuGiNM8{WyT8^NGGk@alfFP-nG!%+tT1_=GC7c^pSt`qFR60d* z^5E~58$`JdWFa**dUHuh5!W`%T9Hmc_Whdu6RlFqfI-*%jmjMTtLfiVxy^Fx&-vio zbpUQwauZr z_U>Q;GpVv{Y4fe?ham$bkl94(#J_a|Oc0R~P$$eP1A`Ar36rdlkSk$1nNuGAst>9e zaPE4VWlCEj*(F0cH{A}WvR*daKAQ7Zp1 z3n_*8M2eabmPRUumUo@pPENi)F#_+0tDA&rtu)~@jU`YC7$CREdbe9ve#uIsu;Sg( z+RmB@jsQxdivZ@I90sx-jsE=#_zLwL z=t;C@K1dekAI;5!xisMQg6W}Pc2fAjG&topk#N?rbPNi`nA&G;cLYEtq-JKF05MrW z$c@`G*EsWLgo`PccmUpQsRHhMCZS;2A2}#(P^jC*x?B>eB3hmm?kM6E@u2Y~*-+)8 zg!uX*&)_25REqIm%>bMgkce~w3{*qmAWR99kJr>h60j>3Etwdu3Kt%b!MPHHzSoF= zGiKrAZUn6h!V)SZ!J!+5ZV~lFH*Slim*L9c+T|z#cY#D4tpePz#8TV@ zFq&}P*hf%6mc>mA;~Xbs80GF@MOt1$AcnO`y=aDciu()XtspGl`Ah!7xK0q*>kJXT z_Wb3I;Scfuf_IJUFZZhWx*rL2Jh+F&QW7XR*DJ$ZmXvx39=%P*O4jW!RPU?_Ywga8 z#m?Mo@zKGGeT-IZJ-Bjr-Bz`O^Bw~u!qo_sEITKx7)awG)TYR!xC$c<1Bce?EtNjsO4v literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Orhestrator/Argparser.doctree b/docs/_build/html/.doctrees/API/Orhestrator/Argparser.doctree new file mode 100644 index 0000000000000000000000000000000000000000..09f1754e5ea9f18a4efeb6049f398fe71aca69f9 GIT binary patch literal 3293 zcmb7HTW=gS6i%A#CY#H)X(>>Vw%ejYKy(8V4=C`0iV#&wS|Q*mmF1oBu1#jfgY9XP zhe`#hQY-lZspbv-6hEN?Bz^^aXKuR*RSS_;8Xq5@>vt}B*!lUlwYl=o_hTIuP9=7j z=~&p{mx+*y%!Q}nogc!3u;qJ(-?zFjkqCYc9FbH>Y(y6BhAlbgyN;WQnDWbx?+=Fq z_NkfV+*o0Df?T>A{0eu@s8QjdhQuzY*g}L~iV|)ui1_YgJgvT#<079PMm#z&VqEdy zL&d@Opte#F3cuv|gxG`Z`Nc$KBJ9rlF0RQFx!`-O^$VwNbO=W749k-|E|oi=n?=^q;FLNP)tmMoqrowdP}9oZ%C zDNr4!Tq0(!e6JNzh6p^1UyDNujU#r;VRe5Q5v9zxTgZaepT+W(tDl01e+nzqB`ab#Z`gY`%Qct(h zTZ}|&;FjE^bbk;;W9n@7IN5!iP&@G^ge}ZE;a8A+fuu$v4v+l>ahN0EY)WLKBUa+z zL6EoQs`alumj(C%!zLJJ&1{To;@ILuUiGga>6uM9WtZhfPmHh?jyp~}o`l^wztZr) zxZSye(lGD)QDF#$tj64)Uu!5OPWSw>70#(_g6i97%W-UU=0paZcfaLHfud;Zv8xN0 z7cT6{tv%lZKt+kifJ4ktU5=+Y4y#6M2UAfkhr!Qp2ftdGz@Ya43@i1qFbPiUPDhOD zjBa5{2R56d;LnaBCeu#LTt4>e1oW&(+2L556shQ=DpbxQol^6#5coz#5s4@%?7ni6 zHMI_X^@FuXvYz83lu+zs*j@G)0mziK zmD%<`W^+Qw6Mx1YVQw8VsU|YP58z!)G~s^DrW{rFeSwm;2-LaqTpd}WBVLF0Vk9vu zA|$>lHbl7$AzmL8IaJWw^Hu zq$3fde2-v(6xb-9`129C4wy)}N*Ir^b(EXJW4}=kT3|I9R}JlnUl7^7fXV2Wt5$;A z1rk*jE7XQ#)t*xB5F0QG$Z}YH(9UDpEFPfM9ivv;2gr~%ZVz4Rr&wHQd|=wHa_g7q zvZmdZo7VS;;Er;{m&VXzD>rCTZ(<~m4CF?6Eh%I;Tn8aSAwS08;n0)kE<7kOGe^OR`gK>xM5$S?@17=I4lLS$Q z4;UUxH){G*ioj31^Y&5r3guAlOAITX1p-JbR-V2+vM8R0+RnLVb&?-fdnoqG_dYA~ zL`A5wfkL$@*gvSUI-rp646e32;niWY(!Bq&N6#Mq(ms3k@YmtY0`%AaS%5CfKVP(! z$y?la>ftu;7YQFI%A0$i-=+yu?bm2}_4c|*+r#h8GF2~ESmL-p+xFfjWMv@#Xrfdt zoYSb)=WW0J1ymX;wkBvZ;TkAAz?2`ftt4*ZATNKnG(R_IU$SuSfNv3eFABlG{Fi?} m$MyNrb#isJb+s(zRh30a5mW1!(0>anF^#->I#8yH(eNKW;|qHL literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Orhestrator/Arguments.doctree b/docs/_build/html/.doctrees/API/Orhestrator/Arguments.doctree new file mode 100644 index 0000000000000000000000000000000000000000..af439836d847765c11e4fddde56e86e7acfac60b GIT binary patch literal 3301 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 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/Response.doctree b/docs/_build/html/.doctrees/API/Response.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e077c2e0cb4f117c203aeb4b2883f18c4b23d508 GIT binary patch literal 3166 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 aXHZPb?*X2N*@E{2l9yxoHBoPd$=UxbpmRY0 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/API/index.doctree b/docs/_build/html/.doctrees/API/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4e00bfdfe7ddebc4e5987b621a673b011f4fbf33 GIT binary patch literal 2880 zcmZ8jTW=gS6i$=uEt}n3dJ$?96d@>qk_|#2L7yl^2#8ps3V2F8^2~VGCZ6$Ndz#Hd zC3q-mB#W1t-wU5Tvy_1!oe$ihEe|DJ4q%>UUQ7%)eo$Y!-Mswrd zx{v;HuiT;SDRQA@sS@h!3N#YNMXG4-o;$W;JDMhj%e>KNE!Jk8=k5@jEyInV3tM*M zw2TE$4xXI;;Jg-;)_lK7c7qtB zcw8E!;zM8KsYaN#lL(?Ug!pddB&)u zo5-w?Wu7inr7D=+(goxBY(&zu?ncMR#3;I0!Ah6Ci}ct5>h~Ug@8kCnzeD`)+a5e0 z2hT_x@hBeBJsjJC-+59L_3qzpjEX_@Orm1S`Sm@&{#hlAYNLpeYC(6$?>&`SM)Gt) zyctYTUC3Nh7@>BP=ZPp&I^m*n&Aw*euy5IS?0agv8JVTDFwFh$GnYZZ`! zF~DItphfQuyxAjr2aU+JAihXZq2yFiUBSC$q#>fJM6DAFQ+j{5>@X>nCr{K+Wpgg6 zC}X>t8pHD`h`-ZJf{Bv3p#Z3D|3*ZK4mP8p4WJaIabq?d+aAD914e+GUP?eZL$U&k zzLL@)Q~+S+?5$&G`&9@L{GNN%)yq-|tOjUA&}|X$33J?%&wCVS@c*hn3Om0Om*c zmN#ykwA(%b08ca2M<5|*2ZH3&l1wSeonpNTmfG8jCQ_vlSPj^~jUPB;+fHOYL5?T~ zPv>Z0Z962Tk%4n8(G;Pya zAvKK_PX>r2CVI&=$4v9KqLgbA3!g|GWoOP4aBdUHXfPv?4(fwiEt-!sd(VHt39f@c zOqzRZDf->V973O}<;g9(;Fy_Az**0b7!*n|u}`{oAAroFhM7$QkuE$!uI#qH#2q+`7@snM zAHcgVq{scH&InlcM+r)66zX86gy$1rpdJdleoE*vzM;l5k6j^2#YF#fICp>y?vxbty+j0zQUf1%6KI`BG$UL@ zxRL$P4N>pZ4<2AuOsau)W!Gr_(mz3Lw;CnjE|7>zn1dT8G6XLJj3zukb`TVhW$^04 zIL967N4ecyl2(rrh+%EgEZTma;ynX-#|x`(M%W8&dtP8J3q<(JF>mfjU{ov b5r>xb>-PpAGWFfsNd0K5r+~k_%XsuZl)ZiY literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/contributing.doctree b/docs/_build/html/.doctrees/contributing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4855d7999a1530e01751b0f4a4614de97209edb6 GIT binary patch literal 16083 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 literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/index.doctree b/docs/_build/html/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..86ce8b34f2ee46da6cc735155bbc16ee10fe5b45 GIT binary patch literal 4039 zcmds4&u=70751)oW<2BHP8_XZ7xf|8ohb2mH|$E_10q@kEC$Dd1PRHj-kR>3smfG$ zb*ifE86+e)B*dsrq&OpS;2bGe{sjIA{uB7Bx_f3k5Gmon0ZSuyy?*to-h1Es-s|7C z{`9xqweV+mQkj&73q8nXO0}~aUXan;xX;|1zjMEFecM&!O3P9u)Y&y?B#etx(cHao zeYR#hiOgwL{o-P>Ar$--^Jeg=i zl!>7H3u2=85)(as96kQ-$g* zz_HE?2S@L`Pp3XC|7YHP?0lMSyCBG^acol$iR}?%6i3v636Ftwo@(S9$reOw2=Uy? zNme~=q-C*K3`sIkbQE;D(@dP`f_Us~6pCu9E~zVR$B?n#;aHa)vUS^y8>Bd_+6~;E zK0CSi0DJVsL<-3-&S!?nJU&O<)Du*7R+9y)x zb40TiYx|sf^tKE)f-b$Xo!V%X_Pxcr3REBWeZ<~i>+Hc9>z|cF!d^p!*j-@c8~EMB z?_2mqFI>r9X9K9eRjIRwtbf`GSL!0zWUNTRmQQ~44DpVB@H`qRgyu@BNp!^xi*zCj zsw0vExnqEn3-{ z9*{Jx>7`TG*T3n0X%N|=ZH3GNe88vT0doB_+gs3u`^25uE-CnNrTK}Yc8lkUC{yam z#zV2shAgFaBO}w47KXW>{1blwG&sbA!*-v63~+)z0e;3p4&AkFGoGekx=-zPZLStv z+l{=;hE&niovztlK#`WYm|<5Bgt@qCST?7y4?QT}uLHS>K%TE6$nMrLI=TWt3aT7g z1=U%TfXWU)$lj~Sx`8(PU}gPf7=@*ny?lZAZFw>bH4nx_L>*Ub6x_6#K)nj|Vv6*Q-9V%m0N>ecS#KH$N_i&c4o! zDfG$l@fZbF4hO*OaiElx5^+qbZUv|9o%7lGb7!MQznB$#Al3M|s5oaymxch%qqAMJ zQuI@vPxOC`O`rXl{e>bze_f8yT}0@Q|5b$OylQNx@qsifv@BX8q&IQe`b|Pwm}&Ml z3^r$C_Rzj+6v?#+ojgV~z(l%g4lN@M5mg=3I-x8|@8vDKla$K0mbhkh54BnnX!^`< zXle{lhxudQ_kl2wj8v${6s_r(M3gAv`9#u|r723|&e#BTk4b|nVx;mUkYc952$2<7 zZ2FdttAYcj&fYq9cC)%djB_VY=+(6?{w=Q3@-;kj_Fx1vxioa?B?!TH z6>va29Z8jeA$ByXr-W+%AC|XEmV&O~7o!+)R zM#OyCvio$(5k*5xsT-x1ZKZTrj&a=16;U~&2n~!@86;h#ETP^de?OihW--kZnfeO1 z-O`MXzH_8Gp6}g!8B?XCiWypt00998@GU`O-K`?OWTh3XID3EP&58;354%$tU0k5q zdhh0om7R9aI{@HmhWLmuN^A>~k4rM92zQFn;x;(izJh^Gsx$_@Q;Y(6;#eZJ58OS=C3BFE+p?9|MJgXWY1-?LD+R1ubHf2wGX5gn(^%$&ldg zzAo(DITg}E4~j5>1x9rC&})VZKr=QJ<2TCBPkOXCdgIX(#B)cDk`?n_vM~RkF^|e6 z9H zFcnIV`z@W}6C?hpL`iD|>Xoprma&itsRjmnKVg{C5+uGVHbgmu5W6R3fj;j)oq^d+eu1*{vgNY(V`Oa_yMybIWhY7SMG0g}U zG3F>wy5ZLQ^;8S2icv*q*LI!emk#5A-KeMpwF@L-C<-4lF+Q!v)P%u&AD05M47e7k z!IVJK@N4q|(Ee2XdPYrI@EbsJ^-)oNIS)SnM{ZhD`@I?1yhp zhgvyYwN<~tqzA%CFzo^rXeWsj0tto>=og)5wfr+U|FQcyz>hH>WrVLJjeJ)J&Uxd8 dcylfeDch{4O+aMqKec+Pr?#2}eDlT#^DmuPD1iU~ literal 0 HcmV?d00001 diff --git a/docs/_build/html/.doctrees/quickstart.doctree b/docs/_build/html/.doctrees/quickstart.doctree new file mode 100644 index 0000000000000000000000000000000000000000..60e7766a4eb8f3b72e31da5a4850210ea833dd7d GIT binary patch literal 3071 zcmai0ZEqYk5Y9{Qaxb|{(liLs1Vso+N$CXy5)gzC>L(Nt6$E@rW%+h}XLH{5*7l}} z)T;2IQX~0W&A;I1@dJ3gZ@HXG8|jqwcsw(HW}fl<+4}q6{!;PhhOvrrE2J5vDrUyJ zP7ow4wf>d=^!);w)eu9&f6JzE@@)ptFB#zbmDGEkurah zkE!cXYqc2X7FP+OuZq|pOt%(EY7B(}y{SEJYkP;{zk#^;Z0 zzvf7NqHU~J>2yw=e_Nzv$89Y5@l`s2#rGu^Cwwm;&ff>jd>?uI0KX6MyMy0dK*$gH zcToT4ZAxG9U49SX+<@{IZ&Ut!PI(jpdD8*c2}s+E40YQEIAamvBSVhGx#w+EP(BHt zZh2IM`{`At%ZQ3}4J6W_sU%~mqS+i+ZaWj%zNivH%hZ?H?!11l1QA}Cc>{8;d!EQ6 zlhMGp4#Gvjo#C@JQGtS&t|MtW&FM7A3};e$H{@cbK`t7&8t6t!h(j9mXtWe%#>1aobb+bp;K zgbz<#7hDZARN7+^gO8wAl3~%;N?C+j6pC9u^sZlq0KTR(DDlodQK@XhsuA zx=2UF!j(dNA_ZoIrICuEnBz1t{}pR>{` zta!J#u(M!-|KoyvDsF@Sjj#N6q9RY`k>uNyT7}DG-awT#r0<|`X^CTlpJp$E2AW(`rr7{@YC?rLt zhtyw*GQ;v%5zro5o9sMOhLQP`MTta~oCzb!dfgzgFmx;#E>cCgR`Ud$TgPP#m{E`p zMhBG|nFv|FeeZ-XI6-qMh{@7mEk?fkca(TS$wgTBuHt7^qC`BTy|7r7MH_TW@ zKoJItMg?H&K{BR@J@CT4%dO4K(cvM)W|S3A&yZ_N= zUjomeovmcCxs7mgF|i;31?kP$DmMbxj*i>Jrra@8fG>Z zAZ5e7berY^Pxv`$I;zKj5uQo6ZW2r_H(Li9u&v6A9Wre9@ALVe*-IluRH2TnlL?WAt+Rq#n6a$9*2498Cu;nX*p9t3~Q5S(GL9-;~3;?L0EqC=lrR0-5>}r zb=c<5FAd+v|EIif++aRe#pyvLkn!Li7E4K>WUW_*IWH;o5Il05jFoKCU#Q+%5H{M~ zYZkk;*W%F4Yxc`=7F^j`v{mikg+s%LR36#^o|8yP31D#tyccT^D)}p1{)PVq#gADI pG{Tr_knhrA(>Jb(`;E9rSzn})%;QiZ(~zxR99mn|1 + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/App/Autocompleter.html b/docs/_build/html/API/App/Autocompleter.html new file mode 100644 index 0000000..c8a4e4e --- /dev/null +++ b/docs/_build/html/API/App/Autocompleter.html @@ -0,0 +1,283 @@ + + + + + + + + + Autocompleter - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Autocompleter

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/App/DividingLine.html b/docs/_build/html/API/App/DividingLine.html new file mode 100644 index 0000000..6c688b8 --- /dev/null +++ b/docs/_build/html/API/App/DividingLine.html @@ -0,0 +1,311 @@ + + + + + + + + + DividingLines - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

DividingLines

+
+ +
+
+ +
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/App/DividingLines.html b/docs/_build/html/API/App/DividingLines.html new file mode 100644 index 0000000..ccffcd1 --- /dev/null +++ b/docs/_build/html/API/App/DividingLines.html @@ -0,0 +1,283 @@ + + + + + + + + + DividingLines - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

DividingLines

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/App/index.html b/docs/_build/html/API/App/index.html new file mode 100644 index 0000000..522da72 --- /dev/null +++ b/docs/_build/html/API/App/index.html @@ -0,0 +1,289 @@ + + + + + + + + + App - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Autocompleter.html b/docs/_build/html/API/Autocompleter.html new file mode 100644 index 0000000..01d0b9f --- /dev/null +++ b/docs/_build/html/API/Autocompleter.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command.html b/docs/_build/html/API/Command.html new file mode 100644 index 0000000..d06cb34 --- /dev/null +++ b/docs/_build/html/API/Command.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/Flag.html b/docs/_build/html/API/Command/Flag.html new file mode 100644 index 0000000..005d9c9 --- /dev/null +++ b/docs/_build/html/API/Command/Flag.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/Flags.html b/docs/_build/html/API/Command/Flags.html new file mode 100644 index 0000000..7c42820 --- /dev/null +++ b/docs/_build/html/API/Command/Flags.html @@ -0,0 +1,283 @@ + + + + + + + + + Flags - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Flags

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/InputFlag.html b/docs/_build/html/API/Command/InputFlag.html new file mode 100644 index 0000000..e225a79 --- /dev/null +++ b/docs/_build/html/API/Command/InputFlag.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/InputFlags.html b/docs/_build/html/API/Command/InputFlags.html new file mode 100644 index 0000000..b7b50d4 --- /dev/null +++ b/docs/_build/html/API/Command/InputFlags.html @@ -0,0 +1,292 @@ + + + + + + + + + Input - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Input

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/PossibleValues.html b/docs/_build/html/API/Command/PossibleValues.html new file mode 100644 index 0000000..4595b29 --- /dev/null +++ b/docs/_build/html/API/Command/PossibleValues.html @@ -0,0 +1,284 @@ + + + + + + + + + PossibleValues - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

PossibleValues

+

mda

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/ValidationStatus.html b/docs/_build/html/API/Command/ValidationStatus.html new file mode 100644 index 0000000..d389c1c --- /dev/null +++ b/docs/_build/html/API/Command/ValidationStatus.html @@ -0,0 +1,284 @@ + + + + + + + + + ValidationStatus - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

ValidationStatus

+

case

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Command/index.html b/docs/_build/html/API/Command/index.html new file mode 100644 index 0000000..46b8005 --- /dev/null +++ b/docs/_build/html/API/Command/index.html @@ -0,0 +1,290 @@ + + + + + + + + + Command - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/DividingLine.html b/docs/_build/html/API/DividingLine.html new file mode 100644 index 0000000..d706831 --- /dev/null +++ b/docs/_build/html/API/DividingLine.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orchestrator.html b/docs/_build/html/API/Orchestrator.html new file mode 100644 index 0000000..02a266e --- /dev/null +++ b/docs/_build/html/API/Orchestrator.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orchestrator/Argparser.html b/docs/_build/html/API/Orchestrator/Argparser.html new file mode 100644 index 0000000..df9d48c --- /dev/null +++ b/docs/_build/html/API/Orchestrator/Argparser.html @@ -0,0 +1,323 @@ + + + + + + + + + Argparser - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Argparser

+

nu

+
+ +
+
+ +
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orchestrator/Arguments.html b/docs/_build/html/API/Orchestrator/Arguments.html new file mode 100644 index 0000000..a89a0a2 --- /dev/null +++ b/docs/_build/html/API/Orchestrator/Arguments.html @@ -0,0 +1,323 @@ + + + + + + + + + Arguments - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Arguments

+

prikol

+
+ +
+
+ +
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orchestrator/index.html b/docs/_build/html/API/Orchestrator/index.html new file mode 100644 index 0000000..3ae5336 --- /dev/null +++ b/docs/_build/html/API/Orchestrator/index.html @@ -0,0 +1,328 @@ + + + + + + + + + Orchestrator - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orhestrator/Argparser.html b/docs/_build/html/API/Orhestrator/Argparser.html new file mode 100644 index 0000000..96d39e5 --- /dev/null +++ b/docs/_build/html/API/Orhestrator/Argparser.html @@ -0,0 +1,284 @@ + + + + + + + + + Argparser - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Argparser

+

nu

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orhestrator/Arguments.html b/docs/_build/html/API/Orhestrator/Arguments.html new file mode 100644 index 0000000..8694279 --- /dev/null +++ b/docs/_build/html/API/Orhestrator/Arguments.html @@ -0,0 +1,284 @@ + + + + + + + + + Arguments - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Arguments

+

prikol

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Orhestrator/index.html b/docs/_build/html/API/Orhestrator/index.html new file mode 100644 index 0000000..1fc0f9b --- /dev/null +++ b/docs/_build/html/API/Orhestrator/index.html @@ -0,0 +1,289 @@ + + + + + + + + + Orchestrator - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Response.html b/docs/_build/html/API/Response.html new file mode 100644 index 0000000..ce5cc6a --- /dev/null +++ b/docs/_build/html/API/Response.html @@ -0,0 +1,283 @@ + + + + + + + + + Response - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Response

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Router.html b/docs/_build/html/API/Router.html new file mode 100644 index 0000000..e065388 --- /dev/null +++ b/docs/_build/html/API/Router.html @@ -0,0 +1,283 @@ + + + + + + + + + Router - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

Router

+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/Router/index.html b/docs/_build/html/API/Router/index.html new file mode 100644 index 0000000..3fe51bb --- /dev/null +++ b/docs/_build/html/API/Router/index.html @@ -0,0 +1,284 @@ + + + + + + + + + <no title> - Argenta 1.1.1 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+ +
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/API/index.html b/docs/_build/html/API/index.html new file mode 100644 index 0000000..33aac69 --- /dev/null +++ b/docs/_build/html/API/index.html @@ -0,0 +1,344 @@ + + + + + + + + + Public API - Argenta 1.1.2 documentation + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/_build/html/_sources/API/App.rst.txt b/docs/_build/html/_sources/API/App.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/App/Autocompleter.rst.txt b/docs/_build/html/_sources/API/App/Autocompleter.rst.txt new file mode 100644 index 0000000..1423b53 --- /dev/null +++ b/docs/_build/html/_sources/API/App/Autocompleter.rst.txt @@ -0,0 +1,4 @@ +.. _Autocompleter: + +Autocompleter +**************** diff --git a/docs/_build/html/_sources/API/App/DividingLine.rst.txt b/docs/_build/html/_sources/API/App/DividingLine.rst.txt new file mode 100644 index 0000000..4f35667 --- /dev/null +++ b/docs/_build/html/_sources/API/App/DividingLine.rst.txt @@ -0,0 +1,4 @@ +.. _DividingLines: + +DividingLines +**************** diff --git a/docs/_build/html/_sources/API/App/DividingLines.rst.txt b/docs/_build/html/_sources/API/App/DividingLines.rst.txt new file mode 100644 index 0000000..4f35667 --- /dev/null +++ b/docs/_build/html/_sources/API/App/DividingLines.rst.txt @@ -0,0 +1,4 @@ +.. _DividingLines: + +DividingLines +**************** diff --git a/docs/_build/html/_sources/API/App/index.rst.txt b/docs/_build/html/_sources/API/App/index.rst.txt new file mode 100644 index 0000000..c1a7dc3 --- /dev/null +++ b/docs/_build/html/_sources/API/App/index.rst.txt @@ -0,0 +1,6 @@ +App +**************** + +.. toctree:: + Autocompleter + DividingLines diff --git a/docs/_build/html/_sources/API/Autocompleter.rst.txt b/docs/_build/html/_sources/API/Autocompleter.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/Command.rst.txt b/docs/_build/html/_sources/API/Command.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/Command/Flag.rst.txt b/docs/_build/html/_sources/API/Command/Flag.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/Command/Flags.rst.txt b/docs/_build/html/_sources/API/Command/Flags.rst.txt new file mode 100644 index 0000000..5159e23 --- /dev/null +++ b/docs/_build/html/_sources/API/Command/Flags.rst.txt @@ -0,0 +1,4 @@ +.. _Flags: + +Flags +**************** diff --git a/docs/_build/html/_sources/API/Command/InputFlag.rst.txt b/docs/_build/html/_sources/API/Command/InputFlag.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/Command/InputFlags.rst.txt b/docs/_build/html/_sources/API/Command/InputFlags.rst.txt new file mode 100644 index 0000000..90d4bba --- /dev/null +++ b/docs/_build/html/_sources/API/Command/InputFlags.rst.txt @@ -0,0 +1,4 @@ +.. _PossibleValues: + +Input +**************** diff --git a/docs/_build/html/_sources/API/Command/PossibleValues.rst.txt b/docs/_build/html/_sources/API/Command/PossibleValues.rst.txt new file mode 100644 index 0000000..79a9f6c --- /dev/null +++ b/docs/_build/html/_sources/API/Command/PossibleValues.rst.txt @@ -0,0 +1,6 @@ +.. _PossibleValues: + +PossibleValues +**************** + +mda diff --git a/docs/_build/html/_sources/API/Command/ValidationStatus.rst.txt b/docs/_build/html/_sources/API/Command/ValidationStatus.rst.txt new file mode 100644 index 0000000..8941ffb --- /dev/null +++ b/docs/_build/html/_sources/API/Command/ValidationStatus.rst.txt @@ -0,0 +1,6 @@ +.. _ValidationStatus: + +ValidationStatus +**************** + +case diff --git a/docs/_build/html/_sources/API/Command/index.rst.txt b/docs/_build/html/_sources/API/Command/index.rst.txt new file mode 100644 index 0000000..6cb847e --- /dev/null +++ b/docs/_build/html/_sources/API/Command/index.rst.txt @@ -0,0 +1,7 @@ +Command +**************** + +.. toctree:: + Flags + PossibleValues + ValidationStatus diff --git a/docs/_build/html/_sources/API/DividingLine.rst.txt b/docs/_build/html/_sources/API/DividingLine.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/Orchestrator.rst.txt b/docs/_build/html/_sources/API/Orchestrator.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/Orchestrator/Argparser.rst.txt b/docs/_build/html/_sources/API/Orchestrator/Argparser.rst.txt new file mode 100644 index 0000000..8b32eac --- /dev/null +++ b/docs/_build/html/_sources/API/Orchestrator/Argparser.rst.txt @@ -0,0 +1,6 @@ +.. _Argparser: + +Argparser +**************** + +nu diff --git a/docs/_build/html/_sources/API/Orchestrator/Arguments.rst.txt b/docs/_build/html/_sources/API/Orchestrator/Arguments.rst.txt new file mode 100644 index 0000000..07318f0 --- /dev/null +++ b/docs/_build/html/_sources/API/Orchestrator/Arguments.rst.txt @@ -0,0 +1,6 @@ +.. _Arguments: + +Arguments +**************** + +prikol diff --git a/docs/_build/html/_sources/API/Orchestrator/index.rst.txt b/docs/_build/html/_sources/API/Orchestrator/index.rst.txt new file mode 100644 index 0000000..adc0558 --- /dev/null +++ b/docs/_build/html/_sources/API/Orchestrator/index.rst.txt @@ -0,0 +1,6 @@ +Orchestrator +**************** + +.. toctree:: + Argparser + Arguments diff --git a/docs/_build/html/_sources/API/Orhestrator/Argparser.rst.txt b/docs/_build/html/_sources/API/Orhestrator/Argparser.rst.txt new file mode 100644 index 0000000..8b32eac --- /dev/null +++ b/docs/_build/html/_sources/API/Orhestrator/Argparser.rst.txt @@ -0,0 +1,6 @@ +.. _Argparser: + +Argparser +**************** + +nu diff --git a/docs/_build/html/_sources/API/Orhestrator/Arguments.rst.txt b/docs/_build/html/_sources/API/Orhestrator/Arguments.rst.txt new file mode 100644 index 0000000..07318f0 --- /dev/null +++ b/docs/_build/html/_sources/API/Orhestrator/Arguments.rst.txt @@ -0,0 +1,6 @@ +.. _Arguments: + +Arguments +**************** + +prikol diff --git a/docs/_build/html/_sources/API/Orhestrator/index.rst.txt b/docs/_build/html/_sources/API/Orhestrator/index.rst.txt new file mode 100644 index 0000000..adc0558 --- /dev/null +++ b/docs/_build/html/_sources/API/Orhestrator/index.rst.txt @@ -0,0 +1,6 @@ +Orchestrator +**************** + +.. toctree:: + Argparser + Arguments diff --git a/docs/_build/html/_sources/API/Response.rst.txt b/docs/_build/html/_sources/API/Response.rst.txt new file mode 100644 index 0000000..0e15364 --- /dev/null +++ b/docs/_build/html/_sources/API/Response.rst.txt @@ -0,0 +1,4 @@ +.. _Response: + +Response +**************** diff --git a/docs/_build/html/_sources/API/Router.rst.txt b/docs/_build/html/_sources/API/Router.rst.txt new file mode 100644 index 0000000..d83afb8 --- /dev/null +++ b/docs/_build/html/_sources/API/Router.rst.txt @@ -0,0 +1,4 @@ +.. _Router: + +Router +**************** diff --git a/docs/_build/html/_sources/API/Router/index.rst.txt b/docs/_build/html/_sources/API/Router/index.rst.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_sources/API/index.rst.txt b/docs/_build/html/_sources/API/index.rst.txt new file mode 100644 index 0000000..9e859e8 --- /dev/null +++ b/docs/_build/html/_sources/API/index.rst.txt @@ -0,0 +1,9 @@ +Public API +**************** + +.. toctree:: + App/index + Router + Orchestrator/index + Command/index + Response diff --git a/docs/_build/html/_sources/contributing.rst.txt b/docs/_build/html/_sources/contributing.rst.txt new file mode 100644 index 0000000..087bf14 --- /dev/null +++ b/docs/_build/html/_sources/contributing.rst.txt @@ -0,0 +1,119 @@ +Contributing +*************************** + +``dishka`` is an opensource project and we are welcome the new developers to join us. + +Getting started +======================== + +1. Clone project: + +.. code-block:: + + git clone git@github.com:reagento/dishka.git + cd dishka + +2. Create and activate virtual environment: + +.. code-block:: + + python3 -m venv .venv + source .venv/bin/activate + +3. Install development tools and project itself: + +.. code-block:: + + pip install -r requirements_dev.txt + uv pip install -e . + +Running linters +===================== + +Currently we use ``ruff`` to check code. To run it do + +.. code-block:: + + ruff check + +We do not use ruff formatter for all code, so ensure that you formatted only your part of code proposing new changes. +We have a lot of checks enabled and some of them can be false positive. Double check your code before suppressing any linter warning. + +Running type checker +===================== + +Currently we use ``mypy`` to check types. To run it do + +.. code-block:: + + mypy + +Running tests +======================== + +Project contains several types of tests: + +* unit tests of library itself +* integration with other libraries +* tests of example app. + +All of them can be run using nox: + +.. code-block:: + + nox + +You can run integration tests for all specified versions of library: + +.. code-block:: + + nox -t aiohttp + + +All integration tests are using specific versions of libraries by default. You can run them with latest version specifying it explicitly. E.g.: + +.. code-block:: + + nox -s aiohttp_latest + +All requirement files for tests are located in ``/requirements`` dir + +Building documentation +============================== + +Documentation is created using sphinx. First of all you might need ``make`` installed on your system. +Then install documentation requirements: + +.. code-block:: + + pip install -r requirements_doc.txt + +Compile docs: + +.. code-block:: + + sphinx-build -M html docs docs-build -W + +Open file ``docs-build/html/index.html`` in your browser + +Running security audit for GitHub Actions +========================================== + +We use ``zizmor`` to audit our GitHub Actions workflows for security issues. To run it locally: + +.. code-block:: + + zizmor .github + +Submitting changes +============================ + +We welcome new contributors, but we want to keep the library design as simple as possible, so new approaches may require some discussion. Here are some requirements: + +1. Compatibility matters. If proposed changes introduce new parameters, they should not be required. Changes in behavior can be introduced under a toggle. +2. Bugfixes are always welcome. +3. New features should be discussed beforehand. They should not exceed the scope of the IoC container and should fit into the overall API design. +4. New integrations are never accepted into the library. You are free to publish them as a separate project. +5. New translations are accepted if we have at least three (3) maintainers who are eager to support them and can translate all documentation changes in a short period. + +When submitting new pull request, ensure that you have run all tests and linters. \ No newline at end of file diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt index 7d6ec32..127d082 100644 --- a/docs/_build/html/_sources/index.rst.txt +++ b/docs/_build/html/_sources/index.rst.txt @@ -3,15 +3,27 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Argenta documentation -===================== - -Add your content using ``reStructuredText`` syntax. See the -`reStructuredText `_ -documentation for details. +Argenta +============================================= +Cute DI framework with scopes and agreeable API. .. toctree:: - :maxdepth: 2 - :caption: Contents: + :hidden: + :caption: Contents: + quickstart + api/index + +.. toctree:: + :hidden: + :caption: For developers: + + contributing + +.. toctree:: + :hidden: + :caption: Project Links + + GitHub + PyPI diff --git a/docs/_build/html/_sources/quickstart.rst.txt b/docs/_build/html/_sources/quickstart.rst.txt new file mode 100644 index 0000000..0a56e14 --- /dev/null +++ b/docs/_build/html/_sources/quickstart.rst.txt @@ -0,0 +1,8 @@ +Quickstart +******************** + +1. **Install Argenta** + +.. code-block:: shell + + pip install argenta diff --git a/docs/_build/html/_static/debug.css b/docs/_build/html/_static/debug.css new file mode 100644 index 0000000..74d4aec --- /dev/null +++ b/docs/_build/html/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js index 14c9773..de213a8 100644 --- a/docs/_build/html/_static/documentation_options.js +++ b/docs/_build/html/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '1.1.1', + VERSION: '1.1.2', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css index 6f8b210..9d1083b 100644 --- a/docs/_build/html/_static/pygments.css +++ b/docs/_build/html/_static/pygments.css @@ -1,75 +1,250 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #f8f8f8; } -.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #F00 } /* Error */ -.highlight .k { color: #008000; font-weight: bold } /* Keyword */ -.highlight .o { color: #666 } /* Operator */ -.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #9C6500 } /* Comment.Preproc */ -.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #fdf2e2 } +.highlight { background: #f2f2f2; color: #1E1E1E } +.highlight .c { color: #515151 } /* Comment */ +.highlight .err { color: #D71835 } /* Error */ +.highlight .k { color: #8045E5 } /* Keyword */ +.highlight .l { color: #7F4707 } /* Literal */ +.highlight .n { color: #1E1E1E } /* Name */ +.highlight .o { color: #163 } /* Operator */ +.highlight .p { color: #1E1E1E } /* Punctuation */ +.highlight .ch { color: #515151 } /* Comment.Hashbang */ +.highlight .cm { color: #515151 } /* Comment.Multiline */ +.highlight .cp { color: #515151 } /* Comment.Preproc */ +.highlight .cpf { color: #515151 } /* Comment.PreprocFile */ +.highlight .c1 { color: #515151 } /* Comment.Single */ +.highlight .cs { color: #515151 } /* Comment.Special */ +.highlight .gd { color: #00749C } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #E40000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #008400 } /* Generic.Inserted */ -.highlight .go { color: #717171 } /* Generic.Output */ -.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gh { color: #00749C } /* Generic.Heading */ .highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #04D } /* Generic.Traceback */ -.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #008000 } /* Keyword.Pseudo */ -.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #B00040 } /* Keyword.Type */ -.highlight .m { color: #666 } /* Literal.Number */ -.highlight .s { color: #BA2121 } /* Literal.String */ -.highlight .na { color: #687822 } /* Name.Attribute */ -.highlight .nb { color: #008000 } /* Name.Builtin */ -.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */ -.highlight .no { color: #800 } /* Name.Constant */ -.highlight .nd { color: #A2F } /* Name.Decorator */ -.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #00F } /* Name.Function */ -.highlight .nl { color: #767600 } /* Name.Label */ -.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #19177C } /* Name.Variable */ -.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #BBB } /* Text.Whitespace */ -.highlight .mb { color: #666 } /* Literal.Number.Bin */ -.highlight .mf { color: #666 } /* Literal.Number.Float */ -.highlight .mh { color: #666 } /* Literal.Number.Hex */ -.highlight .mi { color: #666 } /* Literal.Number.Integer */ -.highlight .mo { color: #666 } /* Literal.Number.Oct */ -.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ -.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ -.highlight .sc { color: #BA2121 } /* Literal.String.Char */ -.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ -.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ -.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ -.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ -.highlight .sx { color: #008000 } /* Literal.String.Other */ -.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ -.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ -.highlight .ss { color: #19177C } /* Literal.String.Symbol */ -.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #00F } /* Name.Function.Magic */ -.highlight .vc { color: #19177C } /* Name.Variable.Class */ -.highlight .vg { color: #19177C } /* Name.Variable.Global */ -.highlight .vi { color: #19177C } /* Name.Variable.Instance */ -.highlight .vm { color: #19177C } /* Name.Variable.Magic */ -.highlight .il { color: #666 } /* Literal.Number.Integer.Long */ \ No newline at end of file +.highlight .gu { color: #00749C } /* Generic.Subheading */ +.highlight .kc { color: #8045E5 } /* Keyword.Constant */ +.highlight .kd { color: #8045E5 } /* Keyword.Declaration */ +.highlight .kn { color: #8045E5 } /* Keyword.Namespace */ +.highlight .kp { color: #8045E5 } /* Keyword.Pseudo */ +.highlight .kr { color: #8045E5 } /* Keyword.Reserved */ +.highlight .kt { color: #7F4707 } /* Keyword.Type */ +.highlight .ld { color: #7F4707 } /* Literal.Date */ +.highlight .m { color: #7F4707 } /* Literal.Number */ +.highlight .s { color: #163 } /* Literal.String */ +.highlight .na { color: #7F4707 } /* Name.Attribute */ +.highlight .nb { color: #7F4707 } /* Name.Builtin */ +.highlight .nc { color: #00749C } /* Name.Class */ +.highlight .no { color: #00749C } /* Name.Constant */ +.highlight .nd { color: #7F4707 } /* Name.Decorator */ +.highlight .ni { color: #163 } /* Name.Entity */ +.highlight .ne { color: #8045E5 } /* Name.Exception */ +.highlight .nf { color: #00749C } /* Name.Function */ +.highlight .nl { color: #7F4707 } /* Name.Label */ +.highlight .nn { color: #1E1E1E } /* Name.Namespace */ +.highlight .nx { color: #1E1E1E } /* Name.Other */ +.highlight .py { color: #00749C } /* Name.Property */ +.highlight .nt { color: #00749C } /* Name.Tag */ +.highlight .nv { color: #D71835 } /* Name.Variable */ +.highlight .ow { color: #8045E5 } /* Operator.Word */ +.highlight .pm { color: #1E1E1E } /* Punctuation.Marker */ +.highlight .w { color: #1E1E1E } /* Text.Whitespace */ +.highlight .mb { color: #7F4707 } /* Literal.Number.Bin */ +.highlight .mf { color: #7F4707 } /* Literal.Number.Float */ +.highlight .mh { color: #7F4707 } /* Literal.Number.Hex */ +.highlight .mi { color: #7F4707 } /* Literal.Number.Integer */ +.highlight .mo { color: #7F4707 } /* Literal.Number.Oct */ +.highlight .sa { color: #163 } /* Literal.String.Affix */ +.highlight .sb { color: #163 } /* Literal.String.Backtick */ +.highlight .sc { color: #163 } /* Literal.String.Char */ +.highlight .dl { color: #163 } /* Literal.String.Delimiter */ +.highlight .sd { color: #163 } /* Literal.String.Doc */ +.highlight .s2 { color: #163 } /* Literal.String.Double */ +.highlight .se { color: #163 } /* Literal.String.Escape */ +.highlight .sh { color: #163 } /* Literal.String.Heredoc */ +.highlight .si { color: #163 } /* Literal.String.Interpol */ +.highlight .sx { color: #163 } /* Literal.String.Other */ +.highlight .sr { color: #D71835 } /* Literal.String.Regex */ +.highlight .s1 { color: #163 } /* Literal.String.Single */ +.highlight .ss { color: #00749C } /* Literal.String.Symbol */ +.highlight .bp { color: #7F4707 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #00749C } /* Name.Function.Magic */ +.highlight .vc { color: #D71835 } /* Name.Variable.Class */ +.highlight .vg { color: #D71835 } /* Name.Variable.Global */ +.highlight .vi { color: #D71835 } /* Name.Variable.Instance */ +.highlight .vm { color: #7F4707 } /* Name.Variable.Magic */ +.highlight .il { color: #7F4707 } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #404040 } +body[data-theme="dark"] .highlight { background: #202020; color: #D0D0D0 } +body[data-theme="dark"] .highlight .c { color: #ABABAB; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #D0D0D0 } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #D0D0D0 } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #6EBF26; font-weight: bold } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #D0D0D0 } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #D0D0D0 } /* Name */ +body[data-theme="dark"] .highlight .o { color: #D0D0D0 } /* Operator */ +body[data-theme="dark"] .highlight .x { color: #D0D0D0 } /* Other */ +body[data-theme="dark"] .highlight .p { color: #D0D0D0 } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #ABABAB; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #ABABAB; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #FF3A3A; font-weight: bold } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #ABABAB; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #ABABAB; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #E50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #FF3A3A } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #D0D0D0; font-style: italic } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #D0D0D0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #FF3A3A } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #FFF; font-weight: bold } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #CCC } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #AAA } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #D0D0D0; font-weight: bold } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #FFF; text-decoration: underline } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #FF3A3A } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #6EBF26; font-weight: bold } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #6EBF26; font-weight: bold } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #6EBF26; font-weight: bold } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #6EBF26 } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #6EBF26; font-weight: bold } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #6EBF26; font-weight: bold } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #D0D0D0 } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #51B2FD } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #ED9D13 } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #BBB } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #2FBCCD } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #71ADFF; text-decoration: underline } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #40FFFF } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #FFA500 } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #D0D0D0 } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #BBB } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #71ADFF } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #D0D0D0 } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #71ADFF; text-decoration: underline } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #D0D0D0 } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #D0D0D0 } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #6EBF26; font-weight: bold } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #40FFFF } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #6EBF26; font-weight: bold } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #D0D0D0 } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #666 } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #51B2FD } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #51B2FD } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #51B2FD } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #51B2FD } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #51B2FD } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #ED9D13 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #ED9D13 } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #ED9D13 } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #ED9D13 } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #ED9D13 } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #ED9D13 } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #ED9D13 } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #ED9D13 } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #ED9D13 } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #FFA500 } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #ED9D13 } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #ED9D13 } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #ED9D13 } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #2FBCCD } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #71ADFF } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #40FFFF } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #40FFFF } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #40FFFF } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #40FFFF } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #51B2FD } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } +body:not([data-theme="light"]) .highlight { background: #202020; color: #D0D0D0 } +body:not([data-theme="light"]) .highlight .c { color: #ABABAB; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #D0D0D0 } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #D0D0D0 } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #6EBF26; font-weight: bold } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #D0D0D0 } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #D0D0D0 } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #D0D0D0 } /* Operator */ +body:not([data-theme="light"]) .highlight .x { color: #D0D0D0 } /* Other */ +body:not([data-theme="light"]) .highlight .p { color: #D0D0D0 } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #ABABAB; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #ABABAB; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #FF3A3A; font-weight: bold } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #ABABAB; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #ABABAB; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #E50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #FF3A3A } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #D0D0D0; font-style: italic } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #D0D0D0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #FF3A3A } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #FFF; font-weight: bold } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #CCC } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #AAA } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #D0D0D0; font-weight: bold } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #FFF; text-decoration: underline } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #FF3A3A } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #6EBF26; font-weight: bold } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #6EBF26; font-weight: bold } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #6EBF26; font-weight: bold } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #6EBF26 } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #6EBF26; font-weight: bold } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #6EBF26; font-weight: bold } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #D0D0D0 } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #51B2FD } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #ED9D13 } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #BBB } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #2FBCCD } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #71ADFF; text-decoration: underline } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #40FFFF } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #FFA500 } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #D0D0D0 } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #BBB } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #71ADFF } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #D0D0D0 } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #71ADFF; text-decoration: underline } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #D0D0D0 } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #D0D0D0 } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #6EBF26; font-weight: bold } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #40FFFF } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #6EBF26; font-weight: bold } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #D0D0D0 } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #666 } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #51B2FD } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #51B2FD } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #51B2FD } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #51B2FD } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #51B2FD } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #ED9D13 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #ED9D13 } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #ED9D13 } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #ED9D13 } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #ED9D13 } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #ED9D13 } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #ED9D13 } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #ED9D13 } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #ED9D13 } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #FFA500 } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #ED9D13 } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #ED9D13 } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #ED9D13 } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #2FBCCD } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #71ADFF } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #40FFFF } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #40FFFF } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #40FFFF } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #40FFFF } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #51B2FD } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/docs/_build/html/_static/scripts/furo-extensions.js b/docs/_build/html/_static/scripts/furo-extensions.js new file mode 100644 index 0000000..e69de29 diff --git a/docs/_build/html/_static/scripts/furo.js b/docs/_build/html/_static/scripts/furo.js new file mode 100644 index 0000000..87e1767 --- /dev/null +++ b/docs/_build/html/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={856:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort(function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})}),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(function(){r(a),v.detect()})};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}}),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(856),e=n.n(t),o=null,r=null,c=document.documentElement.scrollTop;function s(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function l(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach(t=>{t.addEventListener("click",s)})}(),function(){let t=0,e=!1;window.addEventListener("scroll",function(n){t=window.scrollY,e||(window.requestAnimationFrame(function(){var n;(function(t){t>0?r.classList.add("scrolled"):r.classList.remove("scrolled")})(n=t),function(t){t<64?document.documentElement.classList.remove("show-back-to-top"):tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1}),e=!0)}),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);const e=r.getBoundingClientRect();return e.top+e.height+2.5*t+1}})}document.addEventListener("DOMContentLoaded",function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),l()})})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/docs/_build/html/_static/scripts/furo.js.LICENSE.txt b/docs/_build/html/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 0000000..1632189 --- /dev/null +++ b/docs/_build/html/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/docs/_build/html/_static/scripts/furo.js.map b/docs/_build/html/_static/scripts/furo.js.map new file mode 100644 index 0000000..3b316f3 --- /dev/null +++ b/docs/_build/html/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader(positionY) {\n if (positionY > 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader(positionY);\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n const headerRect = header.getBoundingClientRect();\n return headerRect.top + headerRect.height + 2.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","scrollHandlerForHeader","scrollHandlerForBackToTop","scrollTo","floor","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","headerRect","height"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_build/html/_static/skeleton.css b/docs/_build/html/_static/skeleton.css new file mode 100644 index 0000000..467c878 --- /dev/null +++ b/docs/_build/html/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/docs/_build/html/_static/styles/furo-extensions.css b/docs/_build/html/_static/styles/furo-extensions.css new file mode 100644 index 0000000..2d74267 --- /dev/null +++ b/docs/_build/html/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0s}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/docs/_build/html/_static/styles/furo-extensions.css.map b/docs/_build/html/_static/styles/furo-extensions.css.map new file mode 100644 index 0000000..68fb7fd --- /dev/null +++ b/docs/_build/html/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAEE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cAIA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,mBACA,CACA,wCACE,cAEJ,8BACE,UCzCN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_build/html/_static/styles/furo.css b/docs/_build/html/_static/styles/furo.css new file mode 100644 index 0000000..592d5bf --- /dev/null +++ b/docs/_build/html/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,p,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;background:var(--color-background-primary);border:0!important;color:var(--color-foreground-primary);white-space:nowrap!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-stack--headings:var(--font-stack);--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#6b6f76;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#0a4bff;--color-brand-content:#2757dd;--color-brand-visited:#872ee0;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-api-added:#21632c;--color-api-added-border:#38a84d;--color-api-changed:#046172;--color-api-changed-border:#06a1bc;--color-api-deprecated:#605706;--color-api-deprecated-border:#f0d90f;--color-api-removed:#b30000;--color-api-removed-border:#ff5c5c;--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link--hover:var(--color-brand-content);--color-link-underline--hover:var(--color-foreground-border);--color-link--visited:var(--color-brand-visited);--color-link-underline--visited:var(--color-background-border);--color-link--visited--hover:var(--color-brand-visited);--color-link-underline--visited--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:block}@media(prefers-color-scheme:dark){body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-dark{display:block}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:none}}body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-family:var(--font-stack--headings);font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:visited{color:var(--color-link--visited);text-decoration-color:var(--color-link-underline--visited)}a:visited:hover{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link:hover:visited{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}body,html{height:100%}.skip-to-content,body,html{background:var(--color-background-primary);color:var(--color-foreground-primary)}.skip-to-content{border-radius:1rem;left:.25rem;padding:1rem;position:fixed;top:.25rem;transform:translateY(-200%);transition:transform .3s ease-in-out;z-index:40}.skip-to-content:focus-within{transform:translateY(0)}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{display:flex}.theme-toggle{background:transparent;border:none;cursor:pointer;display:flex;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1.25rem;width:1.25rem}.theme-toggle-header{align-items:center;display:flex;justify-content:center}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1.5rem;width:1.5rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg,.content-icon-container .view-this-page svg{color:inherit;height:1.25rem;width:1.25rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0s,height 0s,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.content{margin-left:auto;margin-right:auto;padding:0 1em}}@media(max-width:63em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.theme-toggle-header,.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.5rem;width:1.5rem}:target{scroll-margin-top:calc(var(--header-height) + 2.5rem)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}}@media(max-width:48em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){article[role=main] aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:4.25rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{border-left:.1875rem solid;border-radius:.125rem;padding-left:.75rem}div.deprecated p,div.versionadded p,div.versionchanged p,div.versionremoved p{margin-bottom:.125rem;margin-top:.125rem}div.versionadded{border-color:var(--color-api-added-border)}div.versionadded .versionmodified{color:var(--color-api-added)}div.versionchanged{border-color:var(--color-api-changed-border)}div.versionchanged .versionmodified{color:var(--color-api-changed)}div.deprecated{border-color:var(--color-api-deprecated-border)}div.deprecated .versionmodified{color:var(--color-api-deprecated)}div.versionremoved{border-color:var(--color-api-removed-border)}div.versionremoved .versionmodified{color:var(--color-api-removed)}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class]>.highlight{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>:not(span),div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}[role=main] .table-wrapper.container{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:2.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(2.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(2.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover);color:var(--color-sidebar-link-text)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23607d8b' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Cpath stroke='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree a.reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling. Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/docs/_build/html/_static/styles/furo.css.map b/docs/_build/html/_static/styles/furo.css.map new file mode 100644 index 0000000..280b3fe --- /dev/null +++ b/docs/_build/html/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"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,CAJE,gBAEJ,CAHI,iBAMA,yFAKA,aACA,eACA,cCxaJ,iBAEE,aADA,iBACA,6BAEA,kCAEA,SACA,UAIA,gCACA,CALA,SAEA,SAEA,CAJA,wEAEA,CAFA,OAKA,CAGA,mDACE,iBAGF,gCACE,CADF,UACE,aAEJ,iCAEE,CAFF,UAEE,wCAEA,WACA,WADA,UACA,CACA,4CAGA,MACA,CADA,KACA,wCACA,UAGA,CAJA,UAIA,6DAUA,0CACE,CAFF,mBAEE,wEACA,CAVA,YACA,CAMF,mBAJE,OAOA,gBAJJ,gCACE,CANE,cACA,CAHA,oBACA,CAGA,QAGJ,CAII,0BACA,CADA,UACA,wCAEJ,kBACE,0DACA,gCACE,kBACA,CADA,YACA,oEACA,2CAMF,mDAII,CALN,YACE,CANE,cAKJ,CACE,iBAII,kEACA,yCACE,kDACA,yDACE,+CACA,uBANN,CAMM,+BANN,uCACE,qDACA,4BAEE,mBADA,0CACA,CADA,qBACA,0DACE,wCACA,sGALJ,oCACA,sBACE,kBAFF,UAEE,2CACA,wFACE,cACA,kEANN,uBACE,iDACA,CADA,UACA,0DACE,wDAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCvEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kEAGA,8CAEA,uDAIF,gEAIE,6BACA,gEAIA,+C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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote, p\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\n@use \"../variables\" as *\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto-light\n display: block\n\n @media (prefers-color-scheme: dark)\n .theme-toggle svg.theme-icon-when-auto-dark\n display: block\n .theme-toggle svg.theme-icon-when-auto-light\n display: none\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack:\n -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif,\n Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace:\n \"SFMono-Regular\", Menlo, Consolas, Monaco, Liberation Mono, Lucida Console,\n monospace;\n --font-stack--headings: var(--font-stack);\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 *\n #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","@use \"sass:list\";\n// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{list.nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n list.nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #6b6f76; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #0a4bff;\n --color-brand-content: #2757dd;\n --color-brand-visited: #872ee0;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n\n --color-api-added: #21632c;\n --color-api-added-border: #38a84d;\n --color-api-changed: #046172;\n --color-api-changed-border: #06a1bc;\n --color-api-deprecated: #605706;\n --color-api-deprecated-border: #f0d90f;\n --color-api-removed: #b30000;\n --color-api-removed-border: #ff5c5c;\n\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline--hover: var(--color-foreground-border);\n\n --color-link--visited: var(--color-brand-visited);\n --color-link-underline--visited: var(--color-background-border);\n --color-link--visited--hover: var(--color-brand-visited);\n --color-link-underline--visited--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #cfd0d0; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #3d94ff;\n --color-brand-content: #5ca5ff;\n --color-brand-visited: #b27aeb;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n --color-api-added: #3db854;\n --color-api-added-border: #267334;\n --color-api-changed: #09b0ce;\n --color-api-changed-border: #056d80;\n --color-api-deprecated: #b1a10b;\n --color-api-deprecated-border: #6e6407;\n --color-api-removed: #ff7575;\n --color-api-removed-border: #b03b3b;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-family: var(--font-stack--headings)\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:visited\n color: var(--color-link--visited)\n text-decoration-color: var(--color-link-underline--visited)\n &:hover\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &:visited\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n@use \"variables\" as *\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n.skip-to-content\n position: fixed\n padding: 1rem\n border-radius: 1rem\n left: 0.25rem\n top: 0.25rem\n z-index: 40\n background: var(--color-background-primary)\n color: var(--color-foreground-primary)\n\n transform: translateY(-200%)\n transition: transform 300ms ease-in-out\n\n &:focus-within\n transform: translateY(0%)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n display: flex\n\n.theme-toggle\n display: flex\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n display: flex\n align-items: center\n justify-content: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1.5rem\n width: 1.5rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page, .view-this-page\n svg\n color: inherit\n height: 1.25rem\n width: 1.25rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $content-padded-width + $sidebar-width)\n // Center the page\n .content\n margin-left: auto\n margin-right: auto\n padding: 0 $content-padding--small\n\n@media (max-width: $content-padded-width--small + $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon, .theme-toggle-header\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.5rem\n width: 1.5rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: calc(var(--header-height) + 2.5rem)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n\n@media (max-width: $content-width + 2* $content-padding--small)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n article[role=main] aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","@use \"sass:list\"\n@use \"../variables\" as *\n\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{list.nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 4.25rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated,\ndiv.versionremoved\n border-left: 0.1875rem solid\n border-radius: 0.125rem\n\n padding-left: 0.75rem\n\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\ndiv.versionadded\n border-color: var(--color-api-added-border)\n .versionmodified\n color: var(--color-api-added)\n\ndiv.versionchanged\n border-color: var(--color-api-changed-border)\n .versionmodified\n color: var(--color-api-changed)\n\ndiv.deprecated\n border-color: var(--color-api-deprecated-border)\n .versionmodified\n color: var(--color-api-deprecated)\n\ndiv.versionremoved\n border-color: var(--color-api-removed-border)\n .versionmodified\n color: var(--color-api-removed)\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n > .highlight\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > *:not(span),\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n","[role=main] .table-wrapper.container\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n","@use \"../variables\" as *\n\n:target\n scroll-margin-top: 2.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(2.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(2.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n@use \"../variables\" as *\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n color: var(--color-sidebar-link-text)\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the