diff --git a/.mypy.ini b/.mypy.ini index 591ec89451..48cad442f4 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -23,6 +23,9 @@ ignore_errors = True [mypy-manim.utils.*] ignore_errors = True +[mypy-manim.utils.color] +ignore_errors = False + [mypy-manim.animation.*] ignore_errors = True diff --git a/docs/source/_templates/autosummary/class.rst b/docs/source/_templates/autosummary/class.rst index 8a0027edd4..8709ccced9 100644 --- a/docs/source/_templates/autosummary/class.rst +++ b/docs/source/_templates/autosummary/class.rst @@ -7,6 +7,8 @@ Qualified name: ``{{ fullname | escape }}`` .. autoclass:: {{ objname }} :show-inheritance: :members: + :private-members: + {% block methods %} {%- if methods %} diff --git a/docs/source/conf.py b/docs/source/conf.py index 2121352c5c..5fdcf60b79 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -43,6 +43,7 @@ "sphinx.ext.viewcode", "sphinxext.opengraph", "manim.utils.docbuild.manim_directive", + "manim.utils.docbuild.autocolor_directive", "sphinx.ext.graphviz", "sphinx.ext.inheritance_diagram", "sphinxcontrib.programoutput", diff --git a/manim/_config/utils.py b/manim/_config/utils.py index 67522906fa..a96440ba3b 100644 --- a/manim/_config/utils.py +++ b/manim/_config/utils.py @@ -23,11 +23,11 @@ from pathlib import Path from typing import Any, Iterable, Iterator -import colour import numpy as np from .. import constants from ..constants import RendererType +from ..utils.color import ManimColor from ..utils.tex import TexTemplate, TexTemplateFromFile from ..utils.tex_templates import TexTemplateLibrary @@ -1096,7 +1096,7 @@ def format(self, val: str) -> None: background_color = property( lambda self: self._d["background_color"], - lambda self, val: self._d.__setitem__("background_color", colour.Color(val)), + lambda self, val: self._d.__setitem__("background_color", ManimColor(val)), doc="Background color of the scene (-c).", ) diff --git a/manim/animation/changing.py b/manim/animation/changing.py index fbe3a4c0d2..0354a1c002 100644 --- a/manim/animation/changing.py +++ b/manim/animation/changing.py @@ -6,12 +6,17 @@ from typing import Callable -from colour import Color - from manim._config import config from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL from manim.mobject.types.vectorized_mobject import VGroup, VMobject -from manim.utils.color import BLUE_B, BLUE_D, BLUE_E, GREY_BROWN, WHITE +from manim.utils.color import ( + BLUE_B, + BLUE_D, + BLUE_E, + GREY_BROWN, + WHITE, + ParsableManimColor, +) from manim.utils.rate_functions import smooth @@ -140,7 +145,7 @@ def __init__( self, traced_point_func: Callable, stroke_width: float = 2, - stroke_color: Color = WHITE, + stroke_color: ParsableManimColor | None = WHITE, dissipating_time: float | None = None, **kwargs, ): diff --git a/manim/animation/creation.py b/manim/animation/creation.py index 2c8cae1424..a2e7f8a362 100644 --- a/manim/animation/creation.py +++ b/manim/animation/creation.py @@ -77,13 +77,13 @@ def construct(self): from typing import TYPE_CHECKING, Callable, Iterable, Sequence import numpy as np -from colour import Color if TYPE_CHECKING: from manim.mobject.text.text_mobject import Text from manim.mobject.opengl.opengl_surface import OpenGLSurface from manim.mobject.opengl.opengl_vectorized_mobject import OpenGLVMobject +from manim.utils.color import ManimColor from .. import config from ..animation.animation import Animation @@ -259,7 +259,7 @@ def get_outline(self) -> Mobject: sm.set_stroke(color=self.get_stroke_color(sm), width=self.stroke_width) return outline - def get_stroke_color(self, vmobject: VMobject | OpenGLVMobject) -> Color: + def get_stroke_color(self, vmobject: VMobject | OpenGLVMobject) -> ManimColor: if self.stroke_color: return self.stroke_color elif vmobject.get_stroke_width() > 0: diff --git a/manim/animation/indication.py b/manim/animation/indication.py index 405581025d..fa3d801b24 100644 --- a/manim/animation/indication.py +++ b/manim/animation/indication.py @@ -40,7 +40,6 @@ def construct(self): from typing import Callable, Iterable, Optional, Tuple, Type, Union import numpy as np -from colour import Color from manim.mobject.geometry.arc import Circle, Dot from manim.mobject.geometry.line import Line @@ -58,7 +57,7 @@ def construct(self): from ..mobject.mobject import Mobject from ..mobject.types.vectorized_mobject import VGroup, VMobject from ..utils.bezier import interpolate, inverse_interpolate -from ..utils.color import GREY, YELLOW +from ..utils.color import GREY, YELLOW, ParsableManimColor from ..utils.deprecation import deprecated from ..utils.rate_functions import smooth, there_and_back, wiggle from ..utils.space_ops import normalize @@ -609,7 +608,7 @@ def __init__( fade_out=False, time_width=0.3, buff: float = SMALL_BUFF, - color: Color = YELLOW, + color: ParsableManimColor = YELLOW, run_time=1, stroke_width=DEFAULT_STROKE_WIDTH, **kwargs diff --git a/manim/camera/camera.py b/manim/camera/camera.py index d5ebdc30a1..b26e4aec0e 100644 --- a/manim/camera/camera.py +++ b/manim/camera/camera.py @@ -24,7 +24,7 @@ from ..mobject.types.image_mobject import AbstractImageMobject from ..mobject.types.point_cloud_mobject import PMobject from ..mobject.types.vectorized_mobject import VMobject -from ..utils.color import color_to_int_rgba +from ..utils.color import ManimColor, ParsableManimColor, color_to_int_rgba from ..utils.family import extract_mobject_family_members from ..utils.images import get_full_raster_image_path from ..utils.iterables import list_difference_update @@ -75,6 +75,8 @@ def __init__( frame_height: float | None = None, frame_width: float | None = None, frame_rate: float | None = None, + background_color: ParsableManimColor | None = None, + background_opacity: float | None = None, **kwargs, ): self.background_image = background_image @@ -106,9 +108,14 @@ def __init__( frame_rate = config["frame_rate"] self.frame_rate = frame_rate - # TODO: change this to not use kwargs.get - for attr in ["background_color", "background_opacity"]: - setattr(self, f"_{attr}", kwargs.get(attr, config[attr])) + if background_color is None: + self._background_color = ManimColor.parse(config["background_color"]) + else: + self._background_color = ManimColor.parse(background_color) + if background_opacity is None: + self._background_opacity = config["background_opacity"] + else: + self._background_opacity = background_opacity # This one is in the same boat as the above, but it doesn't have the # same name as the corresponding key so it has to be handled on its own diff --git a/manim/communitycolors.py b/manim/communitycolors.py deleted file mode 100644 index c68d16e5ee..0000000000 --- a/manim/communitycolors.py +++ /dev/null @@ -1,9 +0,0 @@ -"""The colormap of manim community""" - -from __future__ import annotations - -LOGO_WHITE = "#ece6e2" -LOGO_GREEN = "#87c2a5" -LOGO_BLUE = "#525893" -LOGO_RED = "#e07a5f" -LOGO_BLACK = "#343434" diff --git a/manim/mobject/geometry/arc.py b/manim/mobject/geometry/arc.py index 395ae60292..5672907187 100644 --- a/manim/mobject/geometry/arc.py +++ b/manim/mobject/geometry/arc.py @@ -48,7 +48,6 @@ def construct(self): from typing import TYPE_CHECKING, Sequence import numpy as np -from colour import Color from manim.constants import * from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL @@ -492,7 +491,7 @@ def construct(self): def __init__( self, radius: float | None = None, - color: Color | str = RED, + color: ParsableManimColor = RED, **kwargs, ): super().__init__( @@ -658,7 +657,7 @@ def __init__( radius: float = DEFAULT_DOT_RADIUS, stroke_width: float = 0, fill_opacity: float = 1.0, - color: Color | str = WHITE, + color: ParsableManimColor = WHITE, **kwargs, ): super().__init__( diff --git a/manim/mobject/geometry/labeled.py b/manim/mobject/geometry/labeled.py index 91f8cb0912..1a39ee2771 100644 --- a/manim/mobject/geometry/labeled.py +++ b/manim/mobject/geometry/labeled.py @@ -12,7 +12,7 @@ ) from manim.mobject.text.tex_mobject import MathTex, Tex from manim.mobject.text.text_mobject import Text -from manim.utils.color import WHITE, Color +from manim.utils.color import WHITE, ManimColor, ParsableManimColor class LabeledLine(Line): @@ -26,11 +26,11 @@ class LabeledLine(Line): A ratio in the range [0-1] to indicate the position of the label with respect to the length of the line. Default value is 0.5. font_size : float | optional Control font size for the label. This parameter is only used when `label` is of type `str`. - label_color: numpy.ndarray | optional + label_color: ParsableManimColor | optional The color of the label's text. This parameter is only used when `label` is of type `str`. label_frame : Bool | optional Add a `SurroundingRectangle` frame to the label box. - frame_fill_color : numpy.ndarray | optional + frame_fill_color : ParsableManimColor | optional Background color to fill the label box. If no value is provided, the background color of the canvas will be used. frame_fill_opacity : float | optional Determine the opacity of the label box by passing a value in the range [0-1], where 0 indicates complete transparency and 1 means full opacity. @@ -65,13 +65,15 @@ def __init__( label: str | Tex | MathTex | Text, label_position: float = 0.5, font_size: float = DEFAULT_FONT_SIZE, - label_color: Color | str | None = WHITE, + label_color: ParsableManimColor = WHITE, label_frame: bool = True, - frame_fill_color: Color | str | None = None, + frame_fill_color: ParsableManimColor = None, frame_fill_opacity: float = 1, *args, **kwargs, ) -> None: + label_color = ManimColor(label_color) + frame_fill_color = ManimColor(frame_fill_color) if isinstance(label, str): from manim import MathTex @@ -120,11 +122,11 @@ class LabeledArrow(LabeledLine, Arrow): A ratio in the range [0-1] to indicate the position of the label with respect to the length of the line. Default value is 0.5. font_size : float | optional Control font size for the label. This parameter is only used when `label` is of type `str`. - label_color: numpy.ndarray | optional + label_color: ParsableManimColor | optional The color of the label's text. This parameter is only used when `label` is of type `str`. label_frame : Bool | optional Add a `SurroundingRectangle` frame to the label box. - frame_fill_color : numpy.ndarray | optional + frame_fill_color : ParsableManimColor | optional Background color to fill the label box. If no value is provided, the background color of the canvas will be used. frame_fill_opacity : float | optional Determine the opacity of the label box by passing a value in the range [0-1], where 0 indicates complete transparency and 1 means full opacity. diff --git a/manim/mobject/geometry/line.py b/manim/mobject/geometry/line.py index 695881ae9b..ce556081f4 100644 --- a/manim/mobject/geometry/line.py +++ b/manim/mobject/geometry/line.py @@ -17,7 +17,6 @@ from typing import Any, Sequence import numpy as np -from colour import Color from manim import config from manim.constants import * @@ -28,7 +27,6 @@ from manim.mobject.opengl.opengl_mobject import OpenGLMobject from manim.mobject.types.vectorized_mobject import DashedVMobject, VGroup, VMobject from manim.utils.color import * -from manim.utils.color import Colors from manim.utils.space_ops import angle_of_vector, line_intersection, normalize @@ -647,7 +645,7 @@ def coordinate_label( self, integer_labels: bool = True, n_dim: int = 2, - color: Color | None = None, + color: ParsableManimColor | None = None, **kwargs, ): """Creates a label based on the coordinates of the vector. @@ -879,7 +877,7 @@ def __init__( dot: bool = False, dot_radius: float | None = None, dot_distance: float = 0.55, - dot_color: Colors = WHITE, + dot_color: ParsableManimColor = WHITE, elbow: bool = False, **kwargs, ): diff --git a/manim/mobject/geometry/polygram.py b/manim/mobject/geometry/polygram.py index daaa67534d..5064ff737e 100644 --- a/manim/mobject/geometry/polygram.py +++ b/manim/mobject/geometry/polygram.py @@ -19,7 +19,6 @@ from typing import Iterable, Sequence import numpy as np -from colour import Color from manim.constants import * from manim.mobject.geometry.arc import ArcBetweenPoints @@ -597,7 +596,7 @@ def construct(self): def __init__( self, - color: Color = WHITE, + color: ParsableManimColor = WHITE, height: float = 2.0, width: float = 4.0, grid_xstep: float | None = None, diff --git a/manim/mobject/geometry/shape_matchers.py b/manim/mobject/geometry/shape_matchers.py index b2eec1c724..9462b3c113 100644 --- a/manim/mobject/geometry/shape_matchers.py +++ b/manim/mobject/geometry/shape_matchers.py @@ -10,7 +10,7 @@ from manim.mobject.geometry.polygram import RoundedRectangle from manim.mobject.mobject import Mobject from manim.mobject.types.vectorized_mobject import VGroup -from manim.utils.color import BLACK, RED, YELLOW, Color, Colors +from manim.utils.color import BLACK, RED, YELLOW, ParsableManimColor class SurroundingRectangle(RoundedRectangle): @@ -79,7 +79,7 @@ def construct(self): def __init__( self, mobject, - color: Colors | None = None, + color: ParsableManimColor | None = None, stroke_width: float = 0, stroke_opacity: float = 0, fill_opacity: float = 0.75, @@ -121,7 +121,7 @@ def set_style(self, fill_opacity, **kwargs): return self def get_fill_color(self): - return Color(self.color) + return self.color class Cross(VGroup): @@ -152,7 +152,7 @@ def construct(self): def __init__( self, mobject: Mobject | None = None, - stroke_color: Color = RED, + stroke_color: ParsableManimColor = RED, stroke_width: float = 6, scale_factor: float = 1, **kwargs, diff --git a/manim/mobject/graphing/coordinate_systems.py b/manim/mobject/graphing/coordinate_systems.py index 581e20d506..a4da38dcac 100644 --- a/manim/mobject/graphing/coordinate_systems.py +++ b/manim/mobject/graphing/coordinate_systems.py @@ -17,7 +17,6 @@ from typing import TYPE_CHECKING, Any, Callable, Iterable, Sequence import numpy as np -from colour import Color from manim import config from manim.constants import * @@ -44,6 +43,8 @@ GREEN, WHITE, YELLOW, + ManimColor, + ParsableManimColor, color_gradient, invert_color, ) @@ -431,7 +432,7 @@ def get_line_from_axis_to_point( point: Sequence[float], line_func: Line = DashedLine, line_config: dict | None = None, - color: Color | None = None, + color: ParsableManimColor | None = None, stroke_width: float = 2, ) -> Line: """Returns a straight line from a given axis to a point in the scene. @@ -467,7 +468,7 @@ def get_line_from_axis_to_point( if color is None: color = VMobject().color - line_config["color"] = color + line_config["color"] = ManimColor.parse(color) line_config["stroke_width"] = stroke_width axis = self.get_axis(index) @@ -823,7 +824,9 @@ def plot_surface( function: Callable[[float], float], u_range: Sequence[float] | None = None, v_range: Sequence[float] | None = None, - colorscale: Sequence[[color], float] | None = None, + colorscale: Sequence[ParsableManimColor] + | Sequence[tuple[ParsableManimColor, float]] + | None = None, colorscale_axis: int = 2, **kwargs, ): @@ -992,7 +995,7 @@ def get_graph_label( x_val: float | None = None, direction: Sequence[float] = RIGHT, buff: float = MED_SMALL_BUFF, - color: Color | None = None, + color: ParsableManimColor | None = None, dot: bool = False, dot_config: dict | None = None, ) -> Mobject: @@ -1044,7 +1047,8 @@ def construct(self): if dot_config is None: dot_config = {} - color = color or graph.get_color() + if color is None: + color = graph.get_color() label = self.x_axis._create_label_tex(label).set_color(color) if x_val is None: @@ -1074,9 +1078,9 @@ def get_riemann_rectangles( dx: float | None = 0.1, input_sample_type: str = "left", stroke_width: float = 1, - stroke_color: Color = BLACK, + stroke_color: ParsableManimColor = BLACK, fill_opacity: float = 1, - color: Iterable[Color] | Color = np.array((BLUE, GREEN)), + color: Iterable[ParsableManimColor] | ParsableManimColor = (BLUE, GREEN), show_signed_area: bool = True, bounded_graph: ParametricFunction = None, blend: bool = False, @@ -1175,11 +1179,12 @@ def construct(self): rectangles = VGroup() x_range = np.arange(*x_range) - # allows passing a string to color the graph - if type(color) is str: - colors = [color] * len(x_range) + if isinstance(color, (list, tuple)): + color = [ManimColor(c) for c in color] else: - colors = color_gradient(color, len(x_range)) + color = [ManimColor(color)] + + colors = color_gradient(color, len(x_range)) for x, color in zip(x_range, colors): if input_sample_type == "left": @@ -1234,7 +1239,7 @@ def get_area( self, graph: ParametricFunction, x_range: tuple[float, float] | None = None, - color: Color | Iterable[Color] = [BLUE, GREEN], + color: ParsableManimColor | Iterable[ParsableManimColor] = (BLUE, GREEN), opacity: float = 0.3, bounded_graph: ParametricFunction = None, **kwargs, @@ -1383,7 +1388,7 @@ def slope_of_tangent(self, x: float, graph: ParametricFunction, **kwargs) -> flo return np.tan(self.angle_of_tangent(x, graph, **kwargs)) def plot_derivative_graph( - self, graph: ParametricFunction, color: Color = GREEN, **kwargs + self, graph: ParametricFunction, color: ParsableManimColor = GREEN, **kwargs ) -> ParametricFunction: """Returns the curve of the derivative of the passed graph. @@ -1491,12 +1496,12 @@ def get_secant_slope_group( x: float, graph: ParametricFunction, dx: float | None = None, - dx_line_color: Color = YELLOW, - dy_line_color: Color | None = None, + dx_line_color: ParsableManimColor = YELLOW, + dy_line_color: ParsableManimColor | None = None, dx_label: float | str | None = None, dy_label: float | str | None = None, include_secant_line: bool = True, - secant_line_color: Color = GREEN, + secant_line_color: ParsableManimColor = GREEN, secant_line_length: float = 10, ) -> VGroup: """Creates two lines representing `dx` and `df`, the labels for `dx` and `df`, and @@ -1670,11 +1675,11 @@ def get_T_label( x_val: float, graph: ParametricFunction, label: float | str | Mobject | None = None, - label_color: Color | None = None, + label_color: ParsableManimColor | None = None, triangle_size: float = MED_SMALL_BUFF, - triangle_color: Color | None = WHITE, + triangle_color: ParsableManimColor | None = WHITE, line_func: Line = Line, - line_color: Color = YELLOW, + line_color: ParsableManimColor = YELLOW, ) -> VGroup: """Creates a labelled triangle marker with a vertical line from the x-axis to a curve at a given x-value. @@ -2153,7 +2158,7 @@ def plot_line_graph( x_values: Iterable[float], y_values: Iterable[float], z_values: Iterable[float] | None = None, - line_color: Color = YELLOW, + line_color: ParsableManimColor = YELLOW, add_vertex_dots: bool = True, vertex_dot_radius: float = DEFAULT_DOT_RADIUS, vertex_dot_style: dict | None = None, diff --git a/manim/mobject/graphing/probability.py b/manim/mobject/graphing/probability.py index f0e3a2c3f3..92fb7355e1 100644 --- a/manim/mobject/graphing/probability.py +++ b/manim/mobject/graphing/probability.py @@ -8,7 +8,6 @@ from typing import Iterable, MutableSequence, Sequence import numpy as np -from colour import Color from manim import config, logger from manim.constants import * @@ -26,6 +25,7 @@ LIGHT_GREY, MAROON_B, YELLOW, + ParsableManimColor, color_gradient, ) from manim.utils.iterables import tuplify @@ -401,7 +401,7 @@ def _add_bars(self) -> None: def get_bar_labels( self, - color: Color | None = None, + color: ParsableManimColor | None = None, font_size: float = 24, buff: float = MED_SMALL_BUFF, label_constructor: type[VMobject] = Tex, diff --git a/manim/mobject/mobject.py b/manim/mobject/mobject.py index 72382a622f..bd356f0884 100644 --- a/manim/mobject/mobject.py +++ b/manim/mobject/mobject.py @@ -1,4 +1,5 @@ """Base classes for objects that can be displayed.""" + from __future__ import annotations __all__ = ["Mobject", "Group", "override_animate"] @@ -29,7 +30,6 @@ ) import numpy as np -from colour import Color from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL @@ -39,7 +39,8 @@ BLACK, WHITE, YELLOW_C, - Colors, + ManimColor, + ParsableManimColor, color_gradient, interpolate_color, ) @@ -91,7 +92,14 @@ def __init_subclass__(cls, **kwargs): cls._add_intrinsic_animation_overrides() cls._original__init__ = cls.__init__ - def __init__(self, color=WHITE, name=None, dim=3, target=None, z_index=0): + def __init__( + self, + color: ParsableManimColor | list[ParsableManimColor] = WHITE, + name=None, + dim=3, + target=None, + z_index=0, + ): self.name = self.__class__.__name__ if name is None else name self.dim = dim self.target = target @@ -100,7 +108,7 @@ def __init__(self, color=WHITE, name=None, dim=3, target=None, z_index=0): self.submobjects = [] self.updaters = [] self.updating_suspended = False - self.color = Color(color) if color else None + self.color: ManimColor = ManimColor.parse(color) self.reset_points() self.generate_points() @@ -201,10 +209,10 @@ def set_default(cls, **kwargs): >>> from manim import Square, GREEN >>> Square.set_default(color=GREEN, fill_opacity=0.25) >>> s = Square(); s.color, s.fill_opacity - (, 0.25) + (ManimColor('#83C167'), 0.25) >>> Square.set_default() >>> s = Square(); s.color, s.fill_opacity - (, 0.0) + (ManimColor('#FFFFFF'), 0.0) .. manim:: ChangedDefaultTextcolor :save_last_frame: @@ -1687,7 +1695,7 @@ def put_start_and_end_on(self, start, end): # Background rectangle def add_background_rectangle( - self, color: Colors | None = None, opacity: float = 0.75, **kwargs + self, color: ParsableManimColor | None = None, opacity: float = 0.75, **kwargs ): """Add a BackgroundRectangle as submobject. @@ -1739,7 +1747,9 @@ def add_background_rectangle_to_family_members_with_points(self, **kwargs): # Color functions - def set_color(self, color: Color = YELLOW_C, family: bool = True): + def set_color( + self, color: ParsableManimColor = YELLOW_C, family: bool = True + ) -> Mobject: """Condition is function which takes in one arguments, (x, y, z). Here it just recurses to submobjects, but in subclasses this should be further implemented based on the the inner workings @@ -1748,19 +1758,30 @@ def set_color(self, color: Color = YELLOW_C, family: bool = True): if family: for submob in self.submobjects: submob.set_color(color, family=family) - self.color = Color(color) + + self.color = ManimColor.parse(color) return self - def set_color_by_gradient(self, *colors): + def set_color_by_gradient(self, *colors: Iterable[ParsableManimColor]): + """Set the color of this mobject's submobjects along the specified + gradient. + + Parameters + ---------- + colors + The colors to use for the gradient. Use like + ``set_color_by_gradient(RED, BLUE, GREEN)``. + + """ self.set_submobject_colors_by_gradient(*colors) return self def set_colors_by_radial_gradient( self, center=None, - radius=1, - inner_color=WHITE, - outer_color=BLACK, + radius: float = 1, + inner_color: ParsableManimColor = WHITE, + outer_color: ParsableManimColor = BLACK, ): self.set_submobject_colors_by_radial_gradient( center, @@ -1770,7 +1791,7 @@ def set_colors_by_radial_gradient( ) return self - def set_submobject_colors_by_gradient(self, *colors): + def set_submobject_colors_by_gradient(self, *colors: Iterable[ParsableManimColor]): if len(colors) == 0: raise ValueError("Need at least one color") elif len(colors) == 1: @@ -1786,9 +1807,9 @@ def set_submobject_colors_by_gradient(self, *colors): def set_submobject_colors_by_radial_gradient( self, center=None, - radius=1, - inner_color=WHITE, - outer_color=BLACK, + radius: float = 1, + inner_color: ParsableManimColor = WHITE, + outer_color: ParsableManimColor = BLACK, ): if center is None: center = self.get_center() @@ -1805,7 +1826,7 @@ def to_original_color(self): self.set_color(self.color) return self - def fade_to(self, color, alpha, family=True): + def fade_to(self, color: ParsableManimColor, alpha: float, family: bool = True): if self.get_num_points() > 0: new_color = interpolate_color(self.get_color(), color, alpha) self.set_color(new_color, family=False) @@ -1814,13 +1835,13 @@ def fade_to(self, color, alpha, family=True): submob.fade_to(color, alpha) return self - def fade(self, darkness=0.5, family=True): + def fade(self, darkness: float = 0.5, family: bool = True): if family: for submob in self.submobjects: submob.fade(darkness, family) return self - def get_color(self): + def get_color(self) -> ManimColor: """Returns the color of the :class:`~.Mobject`""" return self.color @@ -2169,7 +2190,7 @@ def get_family(self, recurse=True): all_mobjects = [self] + list(it.chain(*sub_families)) return remove_list_redundancies(all_mobjects) - def family_members_with_points(self): + def family_members_with_points(self) -> list[Mobject]: return [m for m in self.get_family() if m.get_num_points() > 0] def arrange( @@ -2760,7 +2781,7 @@ def set_z_index( self, z_index_value: float, family: bool = True, - ) -> VMobject: + ) -> T: """Sets the :class:`~.Mobject`'s :attr:`z_index` to the value specified in `z_index_value`. Parameters diff --git a/manim/mobject/opengl/opengl_mobject.py b/manim/mobject/opengl/opengl_mobject.py index 583dd4ef7e..c02ddd5c72 100644 --- a/manim/mobject/opengl/opengl_mobject.py +++ b/manim/mobject/opengl/opengl_mobject.py @@ -10,13 +10,11 @@ import moderngl import numpy as np -from colour import Color from manim import config, logger from manim.constants import * from manim.utils.bezier import integer_interpolate, interpolate from manim.utils.color import * -from manim.utils.color import Colors from manim.utils.config_ops import _Data, _Uniforms # from ..utils.iterables import batch_by_property @@ -146,7 +144,7 @@ def __init__( self.init_updaters() # self.init_event_listners() self.init_points() - self.color = Color(color) if color else None + self.color = ManimColor.parse(color) self.init_colors() self.shader_indices = None @@ -203,10 +201,10 @@ def set_default(cls, **kwargs): >>> from manim import Square, GREEN >>> Square.set_default(color=GREEN, fill_opacity=0.25) >>> s = Square(); s.color, s.fill_opacity - (, 0.25) + (ManimColor('#83C167'), 0.25) >>> Square.set_default() >>> s = Square(); s.color, s.fill_opacity - (, 0.0) + (ManimColor('#FFFFFF'), 0.0) .. manim:: ChangedDefaultTextcolor :save_last_frame: @@ -1971,12 +1969,12 @@ def set_rgba_array_direct(self, rgbas: np.ndarray, name="rgbas", recurse=True): for mob in self.get_family(recurse): mob.data[name] = rgbas.copy() - def set_color(self, color, opacity=None, recurse=True): + def set_color(self, color: ParsableManimColor | None, opacity=None, recurse=True): self.set_rgba_array(color, opacity, recurse=False) # Recurse to submobjects differently from how set_rgba_array # in case they implement set_color differently if color is not None: - self.color = Color(color) + self.color: ManimColor = ManimColor.parse(color) if opacity is not None: self.opacity = opacity if recurse: @@ -2037,7 +2035,7 @@ def set_shadow(self, shadow, recurse=True): # Background rectangle def add_background_rectangle( - self, color: Colors | None = None, opacity: float = 0.75, **kwargs + self, color: ParsableManimColor | None = None, opacity: float = 0.75, **kwargs ): # TODO, this does not behave well when the mobject has points, # since it gets displayed on top diff --git a/manim/mobject/opengl/opengl_vectorized_mobject.py b/manim/mobject/opengl/opengl_vectorized_mobject.py index 6365c1aeda..d486dc5c76 100644 --- a/manim/mobject/opengl/opengl_vectorized_mobject.py +++ b/manim/mobject/opengl/opengl_vectorized_mobject.py @@ -7,7 +7,6 @@ import moderngl import numpy as np -from colour import Color from manim import config from manim.constants import * @@ -81,9 +80,9 @@ class OpenGLVMobject(OpenGLMobject): def __init__( self, - fill_color: Color | None = None, + fill_color: ParsableManimColor | None = None, fill_opacity: float = 0.0, - stroke_color: Color | None = None, + stroke_color: ParsableManimColor | None = None, stroke_opacity: float = 1.0, stroke_width: float = DEFAULT_STROKE_WIDTH, draw_stroke_behind_fill: bool = False, @@ -146,10 +145,10 @@ def __init__( super().__init__(**kwargs) self.refresh_unit_normal() - if fill_color: - self.fill_color = Color(fill_color) - if stroke_color: - self.stroke_color = Color(stroke_color) + if fill_color is not None: + self.fill_color = ManimColor.parse(fill_color) + if stroke_color is not None: + self.stroke_color = ManimColor.parse(stroke_color) def get_group_class(self): return OpenGLVGroup @@ -184,7 +183,7 @@ def init_colors(self): def set_fill( self, - color: Color | None = None, + color: ParsableManimColor | None = None, opacity: float | None = None, recurse: bool = True, ) -> OpenGLVMobject: @@ -350,14 +349,15 @@ def fade(self, darkness=0.5, recurse=True): super().fade(darkness, recurse) return self + # Todo im not quite sure why we are doing this def get_fill_colors(self): - return [Color(rgb_to_hex(rgba[:3])) for rgba in self.fill_rgba] + return [ManimColor.from_rgb(rgba[:3]) for rgba in self.fill_rgba] def get_fill_opacities(self): return self.fill_rgba[:, 3] def get_stroke_colors(self): - return [Color(rgb_to_hex(rgba[:3])) for rgba in self.stroke_rgba] + return [ManimColor.from_rgb(rgba[:3]) for rgba in self.stroke_rgba] def get_stroke_opacities(self): return self.stroke_rgba[:, 3] @@ -1881,7 +1881,7 @@ def __init__( vmobject: OpenGLVMobject, num_dashes: int = 15, dashed_ratio: float = 0.5, - color: Color = WHITE, + color: ParsableManimColor = WHITE, **kwargs, ): self.dashed_ratio = dashed_ratio diff --git a/manim/mobject/table.py b/manim/mobject/table.py index 04e47b6663..ff0c0f0bd9 100644 --- a/manim/mobject/table.py +++ b/manim/mobject/table.py @@ -67,8 +67,6 @@ def construct(self): import itertools as it from typing import Callable, Iterable, Sequence -from colour import Color - from manim.mobject.geometry.line import Line from manim.mobject.geometry.polygram import Polygon from manim.mobject.geometry.shape_matchers import BackgroundRectangle @@ -82,7 +80,7 @@ def construct(self): from ..animation.creation import Create, Write from ..animation.fading import FadeIn from ..mobject.types.vectorized_mobject import VGroup, VMobject -from ..utils.color import BLACK, YELLOW +from ..utils.color import BLACK, YELLOW, ManimColor, ParsableManimColor from .utils import get_vectorized_mobject_class @@ -197,9 +195,9 @@ def __init__( h_buff: float = 1.3, include_outer_lines: bool = False, add_background_rectangles_to_entries: bool = False, - entries_background_color: Color = BLACK, + entries_background_color: ParsableManimColor = BLACK, include_background_rectangle: bool = False, - background_rectangle_color: Color = BLACK, + background_rectangle_color: ParsableManimColor = BLACK, element_to_mobject: Callable[ [float | str | VMobject], VMobject, @@ -218,9 +216,9 @@ def __init__( self.h_buff = h_buff self.include_outer_lines = include_outer_lines self.add_background_rectangles_to_entries = add_background_rectangles_to_entries - self.entries_background_color = entries_background_color + self.entries_background_color = ManimColor(entries_background_color) self.include_background_rectangle = include_background_rectangle - self.background_rectangle_color = background_rectangle_color + self.background_rectangle_color = ManimColor(background_rectangle_color) self.element_to_mobject = element_to_mobject self.element_to_mobject_config = element_to_mobject_config self.arrange_in_grid_config = arrange_in_grid_config @@ -504,7 +502,7 @@ def construct(self): """ return VGroup(*(VGroup(*row) for row in self.mob_table)) - def set_column_colors(self, *colors: Iterable[Color]) -> Table: + def set_column_colors(self, *colors: Iterable[ParsableManimColor]) -> Table: """Set individual colors for each column of the table. Parameters @@ -533,7 +531,7 @@ def construct(self): column.set_color(color) return self - def set_row_colors(self, *colors: Iterable[Color]) -> Table: + def set_row_colors(self, *colors: Iterable[ParsableManimColor]) -> Table: """Set individual colors for each row of the table. Parameters @@ -752,10 +750,10 @@ def construct(self): label_group.add(*label) return label_group - def add_background_to_entries(self, color: Color = BLACK) -> Table: + def add_background_to_entries(self, color: ParsableManimColor = BLACK) -> Table: """Adds a black :class:`~.BackgroundRectangle` to each entry of the table.""" for mob in self.get_entries(): - mob.add_background_rectangle(color=color) + mob.add_background_rectangle(color=ManimColor(color)) return self def get_cell(self, pos: Sequence[int] = (1, 1), **kwargs) -> Polygon: @@ -816,7 +814,7 @@ def construct(self): return rec def get_highlighted_cell( - self, pos: Sequence[int] = (1, 1), color: Color = YELLOW, **kwargs + self, pos: Sequence[int] = (1, 1), color: ParsableManimColor = YELLOW, **kwargs ) -> BackgroundRectangle: """Returns a :class:`~.BackgroundRectangle` of the cell at the given position. @@ -848,11 +846,11 @@ def construct(self): self.add(table) """ cell = self.get_cell(pos) - bg_cell = BackgroundRectangle(cell, color=color, **kwargs) + bg_cell = BackgroundRectangle(cell, color=ManimColor(color), **kwargs) return bg_cell def add_highlighted_cell( - self, pos: Sequence[int] = (1, 1), color: Color = YELLOW, **kwargs + self, pos: Sequence[int] = (1, 1), color: ParsableManimColor = YELLOW, **kwargs ) -> Table: """Highlights one cell at a specific position on the table by adding a :class:`~.BackgroundRectangle`. @@ -882,7 +880,7 @@ def construct(self): table.add_highlighted_cell((2,2), color=GREEN) self.add(table) """ - bg_cell = self.get_highlighted_cell(pos, color=color, **kwargs) + bg_cell = self.get_highlighted_cell(pos, color=ManimColor(color), **kwargs) self.add_to_back(bg_cell) entry = self.get_entries(pos) entry.background_rectangle = bg_cell diff --git a/manim/mobject/text/tex_mobject.py b/manim/mobject/text/tex_mobject.py index e265642ff0..71a31a72c4 100644 --- a/manim/mobject/text/tex_mobject.py +++ b/manim/mobject/text/tex_mobject.py @@ -12,6 +12,8 @@ from __future__ import annotations +from manim.utils.color import ManimColor + __all__ = [ "SingleStringMathTex", "MathTex", @@ -28,8 +30,6 @@ from textwrap import dedent from typing import Dict, Iterable, Optional -from colour import Color - from manim import config, logger from manim.constants import * from manim.mobject.geometry.line import Line @@ -253,7 +253,7 @@ def __init__( *tex_strings, arg_separator: str = " ", substrings_to_isolate: Iterable[str] | None = None, - tex_to_color_map: dict[str, Color] = None, + tex_to_color_map: dict[str, ManimColor] = None, tex_environment: str = "align*", **kwargs, ): diff --git a/manim/mobject/text/text_mobject.py b/manim/mobject/text/text_mobject.py index a39400f31c..497f03e560 100644 --- a/manim/mobject/text/text_mobject.py +++ b/manim/mobject/text/text_mobject.py @@ -63,7 +63,6 @@ def construct(self): import manimpango import numpy as np -from colour import Color from manimpango import MarkupUtils, PangoUtils, TextSetting from manim import config, logger @@ -71,7 +70,7 @@ def construct(self): from manim.mobject.geometry.arc import Dot from manim.mobject.svg.svg_mobject import SVGMobject from manim.mobject.types.vectorized_mobject import VGroup, VMobject -from manim.utils.color import Colors, color_gradient +from manim.utils.color import ManimColor, ParsableManimColor, color_gradient from manim.utils.deprecation import deprecated TEXT_MOB_SCALE_FACTOR = 0.05 @@ -148,7 +147,7 @@ def __init__( self, *text: Sequence[str], line_spacing: float = -1, - alignment: Optional[str] = None, + alignment: str | None = None, **kwargs, ) -> None: self.line_spacing = line_spacing @@ -413,7 +412,7 @@ def __init__( text: str, fill_opacity: float = 1.0, stroke_width: float = 0, - color: Color | str | None = None, + color: ParsableManimColor | None = None, font_size: float = DEFAULT_FONT_SIZE, line_spacing: float = -1, font: str = "", @@ -482,7 +481,7 @@ def __init__( else: self.line_spacing = self._font_size + self._font_size * self.line_spacing - color = Color(color) if color else VMobject().color + color: ManimColor = ManimColor(color) if color else VMobject().color file_name = self._text2svg(color) PangoUtils.remove_last_M(file_name) super().__init__( @@ -643,10 +642,10 @@ def _set_color_by_t2g(self, t2g=None): for start, end in self._find_indexes(word, self.text): self.chars[start:end].set_color_by_gradient(*gradient) - def _text2hash(self, color: Color): + def _text2hash(self, color: ManimColor): """Generates ``sha256`` hash for file name.""" settings = ( - "PANGO" + self.font + self.slant + self.weight + color.hex_l + "PANGO" + self.font + self.slant + self.weight + str(color) ) # to differentiate Text and CairoText settings += str(self.t2f) + str(self.t2s) + str(self.t2w) + str(self.t2c) settings += str(self.line_spacing) + str(self._font_size) @@ -691,7 +690,9 @@ def _get_settings_from_t2xs( t2xwords = set(chain(*([*t2x.keys()] for t2x, _ in t2xs))) for word in t2xwords: setting_args = { - arg: t2x[word] if word in t2x else default_args[arg] + arg: str(t2x[word]) if word in t2x else default_args[arg] + # NOTE: when t2x[word] is a ManimColor, str will yield the + # hex representation for t2x, arg in t2xs } @@ -707,13 +708,13 @@ def _get_settings_from_gradient( if self.gradient: colors = color_gradient(self.gradient, len(self.text)) for i in range(len(self.text)): - args["color"] = colors[i].hex + args["color"] = colors[i].to_hex() settings.append(TextSetting(i, i + 1, **args)) for word, gradient in self.t2g.items(): if isinstance(gradient, str) or len(gradient) == 1: color = gradient if isinstance(gradient, str) else gradient[0] - gradient = [Color(color)] + gradient = [ManimColor(color)] colors = ( color_gradient(gradient, len(word)) if len(gradient) != 1 @@ -721,11 +722,11 @@ def _get_settings_from_gradient( ) for start, end in self._find_indexes(word, self.text): for i in range(start, end): - args["color"] = colors[i - start].hex + args["color"] = colors[i - start].to_hex() settings.append(TextSetting(i, i + 1, **args)) return settings - def _text2settings(self, color: Color): + def _text2settings(self, color: str): """Converts the texts and styles to a setting for parsing.""" t2xs = [ (self.t2f, "font"), @@ -734,6 +735,7 @@ def _text2settings(self, color: Color): (self.t2c, "color"), ] # setting_args requires values to be strings + default_args = { arg: getattr(self, arg) if arg != "color" else str(color) for _, arg in t2xs } @@ -791,7 +793,7 @@ def _text2settings(self, color: Color): return settings - def _text2svg(self, color: Color): + def _text2svg(self, color: ManimColor): """Convert the text to SVG using Pango.""" size = self._font_size line_spacing = self.line_spacing @@ -1136,7 +1138,7 @@ def __init__( text: str, fill_opacity: float = 1, stroke_width: float = 0, - color: Color | None = None, + color: ParsableManimColor | None = None, font_size: float = DEFAULT_FONT_SIZE, line_spacing: int = -1, font: str = "", @@ -1189,7 +1191,7 @@ def __init__( else: self.line_spacing = self._font_size + self._font_size * self.line_spacing - color = Color(color) if color else VMobject().color + color: ManimColor = ManimColor(color) if color else VMobject().color file_name = self._text2svg(color) PangoUtils.remove_last_M(file_name) @@ -1305,10 +1307,14 @@ def font_size(self, font_val): else: self.scale(font_val / self.font_size) - def _text2hash(self, color: Color): + def _text2hash(self, color: ManimColor): """Generates ``sha256`` hash for file name.""" settings = ( - "MARKUPPANGO" + self.font + self.slant + self.weight + color.hex_l + "MARKUPPANGO" + + self.font + + self.slant + + self.weight + + ManimColor(color).to_hex().lower() ) # to differentiate from classical Pango Text settings += str(self.line_spacing) + str(self._font_size) settings += str(self.disable_ligatures) @@ -1318,7 +1324,7 @@ def _text2hash(self, color: Color): hasher.update(id_str.encode()) return hasher.hexdigest()[:16] - def _text2svg(self, color: Color | None): + def _text2svg(self, color: ManimColor): """Convert the text to SVG using Pango.""" size = self._font_size line_spacing = self.line_spacing @@ -1326,15 +1332,16 @@ def _text2svg(self, color: Color | None): line_spacing /= TEXT2SVG_ADJUSTMENT_FACTOR dir_name = config.get_dir("text_dir") - if not dir_name.exists(): + if not dir_name.is_dir(): dir_name.mkdir(parents=True) hash_name = self._text2hash(color) file_name = dir_name / (hash_name + ".svg") + if file_name.exists(): svg_file = str(file_name.resolve()) else: final_text = ( - f'{self.text}' + f'{self.text}' if color is not None else self.text ) @@ -1412,7 +1419,7 @@ def _parse_color(self, col): if re.match("#[0-9a-f]{6}", col): return col else: - return Colors[col.lower()].value + return ManimColor(col).to_hex() def _extract_color_tags(self): """Used to determine which parts (if any) of the string should be formatted diff --git a/manim/mobject/three_d/three_dimensions.py b/manim/mobject/three_d/three_dimensions.py index 57f0939c36..1ff7df118d 100644 --- a/manim/mobject/three_d/three_dimensions.py +++ b/manim/mobject/three_d/three_dimensions.py @@ -16,7 +16,7 @@ "Torus", ] -from typing import TYPE_CHECKING +from typing import Callable, Sequence import numpy as np @@ -28,15 +28,19 @@ from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL from manim.mobject.opengl.opengl_mobject import OpenGLMobject from manim.mobject.types.vectorized_mobject import VGroup, VMobject -from manim.utils.color import * +from manim.utils.color import ( + BLUE, + BLUE_D, + BLUE_E, + LIGHT_GREY, + WHITE, + ManimColor, + ParsableManimColor, + interpolate_color, +) from manim.utils.iterables import tuplify from manim.utils.space_ops import normalize, perpendicular_bisector, z_to_vector -if TYPE_CHECKING: - from typing import * - - from colour import Color - class ThreeDVMobject(VMobject, metaclass=ConvertToOpenGL): def __init__(self, shade_in_3d: bool = True, **kwargs): @@ -102,10 +106,10 @@ def __init__( v_range: Sequence[float] = [0, 1], resolution: Sequence[int] = 32, surface_piece_config: dict = {}, - fill_color: Color = BLUE_D, + fill_color: ParsableManimColor = BLUE_D, fill_opacity: float = 1.0, - checkerboard_colors: Sequence[Color] = [BLUE_D, BLUE_E], - stroke_color: Color = LIGHT_GREY, + checkerboard_colors: Sequence[ParsableManimColor] | bool = [BLUE_D, BLUE_E], + stroke_color: ParsableManimColor = LIGHT_GREY, stroke_width: float = 0.5, should_make_jagged: bool = False, pre_function_handle_to_anchor_scale_factor: float = 0.00001, @@ -116,10 +120,15 @@ def __init__( super().__init__(**kwargs) self.resolution = resolution self.surface_piece_config = surface_piece_config - self.fill_color = fill_color + self.fill_color: ManimColor = ManimColor(fill_color) self.fill_opacity = fill_opacity - self.checkerboard_colors = checkerboard_colors - self.stroke_color = stroke_color + if checkerboard_colors: + self.checkerboard_colors: list[ManimColor] = [ + ManimColor(x) for x in checkerboard_colors + ] + else: + self.checkerboard_colors = checkerboard_colors + self.stroke_color: ManimColor = ManimColor(stroke_color) self.stroke_width = stroke_width self.should_make_jagged = should_make_jagged self.pre_function_handle_to_anchor_scale_factor = ( @@ -188,7 +197,7 @@ def _setup_in_uv_space(self): self.set_fill_by_checkerboard(*self.checkerboard_colors) def set_fill_by_checkerboard( - self, *colors: Sequence[Color], opacity: float = None + self, *colors: Sequence[ParsableManimColor], opacity: float = None ) -> Mobject: """Sets the fill_color of each face of :class:`Surface` in an alternating pattern. @@ -215,7 +224,7 @@ def set_fill_by_checkerboard( def set_fill_by_value( self, axes: Mobject, - colorscale: Union[Iterable[Color], Color] | None = None, + colorscale: list[ParsableManimColor] | ParsableManimColor | None = None, axis: int = 2, **kwargs, ) -> Mobject: @@ -449,8 +458,8 @@ def __init__( self, point: list | np.ndarray = ORIGIN, radius: float = DEFAULT_DOT_RADIUS, - color: Color = WHITE, - resolution: Sequence[int] = (8, 8), + color: ParsableManimColor = WHITE, + resolution=(8, 8), **kwargs, ) -> None: super().__init__(center=point, radius=radius, resolution=resolution, **kwargs) @@ -491,7 +500,7 @@ def __init__( self, side_length: float = 2, fill_opacity: float = 0.75, - fill_color: Color = BLUE, + fill_color: ParsableManimColor = BLUE, stroke_width: float = 0, **kwargs, ) -> None: @@ -901,7 +910,7 @@ def __init__( start: np.ndarray = LEFT, end: np.ndarray = RIGHT, thickness: float = 0.02, - color: Color = None, + color: ParsableManimColor = None, **kwargs, ): self.thickness = thickness @@ -1124,7 +1133,7 @@ def __init__( thickness: float = 0.02, height: float = 0.3, base_radius: float = 0.08, - color: Color = WHITE, + color: ParsableManimColor = WHITE, **kwargs, ) -> None: super().__init__( diff --git a/manim/mobject/types/image_mobject.py b/manim/mobject/types/image_mobject.py index 25ff084d2a..5cefb1ac93 100644 --- a/manim/mobject/types/image_mobject.py +++ b/manim/mobject/types/image_mobject.py @@ -6,7 +6,6 @@ import pathlib -import colour import numpy as np from PIL import Image from PIL.Image import Resampling @@ -17,7 +16,7 @@ from ...constants import * from ...mobject.mobject import Mobject from ...utils.bezier import interpolate -from ...utils.color import WHITE, color_to_int_rgb +from ...utils.color import WHITE, ManimColor, color_to_int_rgb from ...utils.images import change_to_rgba_array, get_full_raster_image_path @@ -277,7 +276,7 @@ def interpolate_color( def get_style(self): return { - "fill_color": colour.rgb2hex(self.color.get_rgb()), + "fill_color": ManimColor(self.color.get_rgb()).to_hex(), "fill_opacity": self.fill_opacity, } diff --git a/manim/mobject/types/point_cloud_mobject.py b/manim/mobject/types/point_cloud_mobject.py index 354dff2e59..43e2ff08e2 100644 --- a/manim/mobject/types/point_cloud_mobject.py +++ b/manim/mobject/types/point_cloud_mobject.py @@ -5,7 +5,6 @@ __all__ = ["PMobject", "Mobject1D", "Mobject2D", "PGroup", "PointCloudDot", "Point"] import numpy as np -from colour import Color from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL from manim.mobject.opengl.opengl_point_cloud_mobject import OpenGLPMobject @@ -17,6 +16,7 @@ BLACK, WHITE, YELLOW, + ManimColor, color_gradient, color_to_rgba, rgba_to_color, @@ -76,7 +76,7 @@ def add_points(self, points, rgbas=None, color=None, alpha=1): num_new_points = len(points) self.points = np.append(self.points, points, axis=0) if rgbas is None: - color = Color(color) if color else self.color + color = ManimColor(color) if color else self.color rgbas = np.repeat([color_to_rgba(color, alpha)], num_new_points, axis=0) elif len(rgbas) != len(points): raise ValueError("points and rgbas must have same length") diff --git a/manim/mobject/types/vectorized_mobject.py b/manim/mobject/types/vectorized_mobject.py index 12b6a85b6e..da8e560b59 100644 --- a/manim/mobject/types/vectorized_mobject.py +++ b/manim/mobject/types/vectorized_mobject.py @@ -15,9 +15,8 @@ import itertools as it import sys import typing -from typing import Callable, Optional, Sequence, Union +from typing import Callable, Sequence -import colour import numpy as np from PIL.Image import Image @@ -38,8 +37,7 @@ partial_bezier_points, proportions_along_bezier_curve_for_point, ) -from ...utils.color import BLACK, WHITE, color_to_rgba -from ...utils.deprecation import deprecated +from ...utils.color import BLACK, WHITE, ManimColor, ParsableManimColor from ...utils.iterables import make_even, resize_array, stretch_array_to_length, tuplify from ...utils.space_ops import rotate_vector, shoelace_direction @@ -81,12 +79,12 @@ class VMobject(Mobject): def __init__( self, - fill_color=None, + fill_color: ParsableManimColor | None = None, fill_opacity=0.0, - stroke_color=None, + stroke_color: ParsableManimColor | None = None, stroke_opacity=1.0, stroke_width=DEFAULT_STROKE_WIDTH, - background_stroke_color=BLACK, + background_stroke_color: ParsableManimColor | None = BLACK, background_stroke_opacity=1.0, background_stroke_width=0, sheen_factor=0.0, @@ -105,7 +103,10 @@ def __init__( self.fill_opacity = fill_opacity self.stroke_opacity = stroke_opacity self.stroke_width = stroke_width - self.background_stroke_color = background_stroke_color + if background_stroke_color is not None: + self.background_stroke_color: ManimColor = ManimColor( + background_stroke_color + ) self.background_stroke_opacity = background_stroke_opacity self.background_stroke_width = background_stroke_width self.sheen_factor = sheen_factor @@ -123,11 +124,16 @@ def __init__( self.tolerance_for_point_equality = tolerance_for_point_equality self.n_points_per_cubic_curve = n_points_per_cubic_curve super().__init__(**kwargs) + self.submobjects: list[VMobject] - if fill_color: - self.fill_color = fill_color - if stroke_color: - self.stroke_color = stroke_color + # TODO: Find where color overwrites are happening and remove the color doubling + # if "color" in kwargs: + # fill_color = kwargs["color"] + # stroke_color = kwargs["color"] + if fill_color is not None: + self.fill_color = ManimColor.parse(fill_color) + if stroke_color is not None: + self.stroke_color = ManimColor.parse(stroke_color) # OpenGL compatibility @property @@ -172,7 +178,7 @@ def init_colors(self, propagate_colors=True): return self - def generate_rgbas_array(self, color, opacity): + def generate_rgbas_array(self, color: ManimColor | list[ManimColor], opacity): """ First arg can be either a color, or a tuple/list of colors. Likewise, opacity can either be a float, or a tuple of floats. @@ -180,10 +186,12 @@ def generate_rgbas_array(self, color, opacity): one color was passed in, a second slightly light color will automatically be added for the gradient """ - colors = [c if (c is not None) else BLACK for c in tuplify(color)] - opacities = [o if (o is not None) else 0 for o in tuplify(opacity)] + colors: list[ManimColor] = [ + ManimColor(c) if (c is not None) else BLACK for c in tuplify(color) + ] + opacities: list[float] = [o if (o is not None) else 0 for o in tuplify(opacity)] rgbas = np.array( - [color_to_rgba(c, o) for c, o in zip(*make_even(colors, opacities))], + [c.to_rgba_with_alpha(o) for c, o in zip(*make_even(colors, opacities))], ) sheen_factor = self.get_sheen_factor() @@ -194,7 +202,9 @@ def generate_rgbas_array(self, color, opacity): rgbas = np.append(rgbas, light_rgbas, axis=0) return rgbas - def update_rgbas_array(self, array_name, color=None, opacity=None): + def update_rgbas_array( + self, array_name, color: ManimColor | None = None, opacity=None + ): rgbas = self.generate_rgbas_array(color, opacity) if not hasattr(self, array_name): setattr(self, array_name, rgbas) @@ -217,7 +227,7 @@ def update_rgbas_array(self, array_name, color=None, opacity=None): def set_fill( self, - color: str | None = None, + color: ParsableManimColor | None = None, opacity: float | None = None, family: bool = True, ): @@ -266,7 +276,7 @@ def construct(self): def set_stroke( self, - color=None, + color: ParsableManimColor = None, width=None, opacity=None, background=False, @@ -289,7 +299,10 @@ def set_stroke( if opacity is not None: setattr(self, opacity_name, opacity) if color is not None and background: - self.background_stroke_color = color + if isinstance(color, (list, tuple)): + self.background_stroke_color = color + else: + self.background_stroke_color = ManimColor(color) return self def set_background_stroke(self, **kwargs): @@ -299,12 +312,12 @@ def set_background_stroke(self, **kwargs): def set_style( self, - fill_color=None, - fill_opacity=None, - stroke_color=None, + fill_color: ParsableManimColor | None = None, + fill_opacity: float | None = None, + stroke_color: ParsableManimColor | None = None, stroke_width=None, stroke_opacity=None, - background_stroke_color=None, + background_stroke_color: ParsableManimColor = None, background_stroke_width=None, background_stroke_opacity=None, sheen_factor=None, @@ -341,10 +354,11 @@ def get_style(self, simple=False): "stroke_width": self.get_stroke_width(), } + # TODO: FIX COLORS HERE if simple: - ret["fill_color"] = colour.rgb2hex(self.get_fill_color().get_rgb()) + ret["fill_color"] = self.get_fill_color() ret["fill_opacity"] = self.get_fill_opacity() - ret["stroke_color"] = colour.rgb2hex(self.get_stroke_color().get_rgb()) + ret["stroke_color"] = self.get_stroke_color() else: ret["fill_color"] = self.get_fill_colors() ret["fill_opacity"] = self.get_fill_opacities() @@ -373,7 +387,7 @@ def match_style(self, vmobject, family=True): sm1.match_style(sm2) return self - def set_color(self, color, family=True): + def set_color(self, color: ParsableManimColor, family=True): self.set_fill(color, family=family) self.set_stroke(color, family=family) return self @@ -417,9 +431,10 @@ def get_fill_opacity(self): """ return self.get_fill_opacities()[0] + # TODO: Does this just do a copy? def get_fill_colors(self): return [ - colour.Color(rgb=rgba[:3]) if rgba.any() else None + ManimColor(rgba[:3]) if rgba.any() else None for rgba in self.get_fill_rgbas() ] @@ -455,7 +470,7 @@ def get_stroke_opacity(self, background=False): def get_stroke_colors(self, background=False): return [ - colour.Color(rgb=rgba[:3]) if rgba.any() else None + ManimColor(rgba[:3]) if rgba.any() else None for rgba in self.get_stroke_rgbas(background) ] diff --git a/manim/mobject/vector_field.py b/manim/mobject/vector_field.py index 88388bd717..67bdd5e6a2 100644 --- a/manim/mobject/vector_field.py +++ b/manim/mobject/vector_field.py @@ -14,7 +14,6 @@ from typing import Callable, Iterable, Sequence import numpy as np -from colour import Color from PIL import Image from manim.animation.updaters.update import UpdateFromAlphaFunc @@ -30,7 +29,16 @@ from ..mobject.types.vectorized_mobject import VGroup from ..mobject.utils import get_vectorized_mobject_class from ..utils.bezier import interpolate, inverse_interpolate -from ..utils.color import BLUE_E, GREEN, RED, YELLOW, color_to_rgb, rgb_to_color +from ..utils.color import ( + BLUE_E, + GREEN, + RED, + YELLOW, + ManimColor, + ParsableManimColor, + color_to_rgb, + rgb_to_color, +) from ..utils.rate_functions import ease_out_sine, linear from ..utils.simple_functions import sigmoid @@ -66,11 +74,11 @@ class VectorField(VGroup): def __init__( self, func: Callable[[np.ndarray], np.ndarray], - color: Color | None = None, + color: ParsableManimColor | None = None, color_scheme: Callable[[np.ndarray], float] | None = None, min_color_scheme_value: float = 0, max_color_scheme_value: float = 2, - colors: Sequence[Color] = DEFAULT_SCALAR_FIELD_COLORS, + colors: Sequence[ParsableManimColor] = DEFAULT_SCALAR_FIELD_COLORS, **kwargs, ): super().__init__(**kwargs) @@ -107,7 +115,7 @@ def pos_to_rgb(pos: np.ndarray) -> tuple[float, float, float, float]: self.pos_to_color = lambda pos: rgb_to_color(self.pos_to_rgb(pos)) else: self.single_color = True - self.color = color + self.color = ManimColor.parse(color) self.submob_movement_updater = None @staticmethod @@ -409,7 +417,7 @@ def get_vectorized_rgba_gradient_function( self, start: float, end: float, - colors: Iterable, + colors: Iterable[ParsableManimColor], ): """ Generates a gradient of rgbas as a numpy array @@ -533,11 +541,11 @@ def construct(self): def __init__( self, func: Callable[[np.ndarray], np.ndarray], - color: Color | None = None, + color: ParsableManimColor | None = None, color_scheme: Callable[[np.ndarray], float] | None = None, min_color_scheme_value: float = 0, max_color_scheme_value: float = 2, - colors: Sequence[Color] = DEFAULT_SCALAR_FIELD_COLORS, + colors: Sequence[ParsableManimColor] = DEFAULT_SCALAR_FIELD_COLORS, # Determining Vector positions: x_range: Sequence[float] = None, y_range: Sequence[float] = None, @@ -707,11 +715,11 @@ def construct(self): def __init__( self, func: Callable[[np.ndarray], np.ndarray], - color: Color | None = None, + color: ParsableManimColor | None = None, color_scheme: Callable[[np.ndarray], float] | None = None, min_color_scheme_value: float = 0, max_color_scheme_value: float = 2, - colors: Sequence[Color] = DEFAULT_SCALAR_FIELD_COLORS, + colors: Sequence[ParsableManimColor] = DEFAULT_SCALAR_FIELD_COLORS, # Determining stream line starting positions: x_range: Sequence[float] = None, y_range: Sequence[float] = None, diff --git a/manim/plugins/import_plugins.py b/manim/plugins/import_plugins.py index 8cbb7f5644..1f11accbf9 100644 --- a/manim/plugins/import_plugins.py +++ b/manim/plugins/import_plugins.py @@ -9,7 +9,7 @@ __all__ = [] -plugins_requested: list = config["plugins"] +plugins_requested: list[str] = config["plugins"] if "" in plugins_requested: plugins_requested.remove("") for plugin in pkg_resources.iter_entry_points("manim.plugins"): diff --git a/manim/scene/vector_space_scene.py b/manim/scene/vector_space_scene.py index edea12354a..f651c2c86a 100644 --- a/manim/scene/vector_space_scene.py +++ b/manim/scene/vector_space_scene.py @@ -7,7 +7,6 @@ from typing import Callable import numpy as np -from colour import Color from manim.mobject.geometry.arc import Dot from manim.mobject.geometry.line import Arrow, Line, Vector @@ -28,7 +27,17 @@ from ..mobject.mobject import Mobject from ..mobject.types.vectorized_mobject import VGroup, VMobject from ..scene.scene import Scene -from ..utils.color import BLUE_D, GREEN_C, GREY, RED_C, WHITE, YELLOW +from ..utils.color import ( + BLACK, + BLUE_D, + GREEN_C, + GREY, + RED_C, + WHITE, + YELLOW, + ManimColor, + ParsableManimColor, +) from ..utils.rate_functions import rush_from, rush_into from ..utils.space_ops import angle_of_vector @@ -581,8 +590,8 @@ def __init__( show_coordinates: bool = False, show_basis_vectors: bool = True, basis_vector_stroke_width: float = 6, - i_hat_color: Color = X_COLOR, - j_hat_color: Color = Y_COLOR, + i_hat_color: ParsableManimColor = X_COLOR, + j_hat_color: ParsableManimColor = Y_COLOR, leave_ghost_vectors: bool = False, **kwargs, ): @@ -593,8 +602,8 @@ def __init__( self.show_coordinates = show_coordinates self.show_basis_vectors = show_basis_vectors self.basis_vector_stroke_width = basis_vector_stroke_width - self.i_hat_color = i_hat_color - self.j_hat_color = j_hat_color + self.i_hat_color = ManimColor(i_hat_color) + self.j_hat_color = ManimColor(j_hat_color) self.leave_ghost_vectors = leave_ghost_vectors self.background_plane_kwargs = { "color": GREY, diff --git a/manim/utils/color.py b/manim/utils/color.py deleted file mode 100644 index 6356fb3f04..0000000000 --- a/manim/utils/color.py +++ /dev/null @@ -1,552 +0,0 @@ -"""Colors and utility functions for conversion between different color models.""" - -from __future__ import annotations - -__all__ = [ - "color_to_rgb", - "color_to_rgba", - "rgb_to_color", - "rgba_to_color", - "rgb_to_hex", - "hex_to_rgb", - "invert_color", - "color_to_int_rgb", - "color_to_int_rgba", - "color_gradient", - "interpolate_color", - "average_color", - "random_bright_color", - "random_color", - "get_shaded_rgb", -] - -import random -from enum import Enum -from typing import Iterable - -import numpy as np -from colour import Color - -from ..utils.bezier import interpolate -from ..utils.space_ops import normalize - - -class Colors(Enum): - """A list of pre-defined colors. - - Examples - -------- - - .. manim:: ColorsOverview - :save_last_frame: - :hide_source: - - from manim.utils.color import Colors - class ColorsOverview(Scene): - def construct(self): - def color_group(color): - group = VGroup( - *[ - Line(ORIGIN, RIGHT * 1.5, stroke_width=35, color=Colors[name].value) - for name in subnames(color) - ] - ).arrange_submobjects(buff=0.4, direction=DOWN) - - name = Text(color).scale(0.6).next_to(group, UP, buff=0.3) - if any(decender in color for decender in "gjpqy"): - name.shift(DOWN * 0.08) - group.add(name) - return group - - def subnames(name): - return [name + "_" + char for char in "abcde"] - - color_groups = VGroup( - *[ - color_group(color) - for color in [ - "blue", - "teal", - "green", - "yellow", - "gold", - "red", - "maroon", - "purple", - ] - ] - ).arrange_submobjects(buff=0.2, aligned_edge=DOWN) - - for line, char in zip(color_groups[0], "abcde"): - color_groups.add(Text(char).scale(0.6).next_to(line, LEFT, buff=0.2)) - - def named_lines_group(length, colors, names, text_colors, align_to_block): - lines = VGroup( - *[ - Line( - ORIGIN, - RIGHT * length, - stroke_width=55, - color=Colors[color].value, - ) - for color in colors - ] - ).arrange_submobjects(buff=0.6, direction=DOWN) - - for line, name, color in zip(lines, names, text_colors): - line.add(Text(name, color=color).scale(0.6).move_to(line)) - lines.next_to(color_groups, DOWN, buff=0.5).align_to( - color_groups[align_to_block], LEFT - ) - return lines - - other_colors = ( - "pink", - "light_pink", - "orange", - "light_brown", - "dark_brown", - "gray_brown", - ) - - other_lines = named_lines_group( - 3.2, - other_colors, - other_colors, - [BLACK] * 4 + [WHITE] * 2, - 0, - ) - - gray_lines = named_lines_group( - 6.6, - ["white"] + subnames("gray") + ["black"], - [ - "white", - "lighter_gray / gray_a", - "light_gray / gray_b", - "gray / gray_c", - "dark_gray / gray_d", - "darker_gray / gray_e", - "black", - ], - [BLACK] * 3 + [WHITE] * 4, - 2, - ) - - pure_colors = ( - "pure_red", - "pure_green", - "pure_blue", - ) - - pure_lines = named_lines_group( - 3.2, - pure_colors, - pure_colors, - [BLACK, BLACK, WHITE], - 6, - ) - - self.add(color_groups, other_lines, gray_lines, pure_lines) - - VGroup(*self.mobjects).move_to(ORIGIN) - - - The preferred way of using these colors is by importing their constants from manim: - - .. code-block:: pycon - - >>> from manim import RED, GREEN, BLUE - >>> RED - '#FC6255' - - Note this way uses the name of the colors in UPPERCASE. - - Alternatively, you can also import this Enum directly and use its members - directly, through the use of :code:`color.value`. Note this way uses the - name of the colors in lowercase. - - .. code-block:: pycon - - >>> from manim.utils.color import Colors - >>> Colors.red.value - '#FC6255' - - .. note:: - - The colors of type "C" have an alias equal to the colorname without a letter, - e.g. GREEN = GREEN_C - - """ - - white: str = "#FFFFFF" - gray_a: str = "#DDDDDD" - gray_b: str = "#BBBBBB" - gray_c: str = "#888888" - gray_d: str = "#444444" - gray_e: str = "#222222" - black: str = "#000000" - lighter_gray: str = gray_a - light_gray: str = gray_b - gray: str = gray_c - dark_gray: str = gray_d - darker_gray: str = gray_e - - blue_a: str = "#C7E9F1" - blue_b: str = "#9CDCEB" - blue_c: str = "#58C4DD" - blue_d: str = "#29ABCA" - blue_e: str = "#236B8E" - pure_blue: str = "#0000FF" - blue: str = blue_c - dark_blue: str = blue_e - - teal_a: str = "#ACEAD7" - teal_b: str = "#76DDC0" - teal_c: str = "#5CD0B3" - teal_d: str = "#55C1A7" - teal_e: str = "#49A88F" - teal: str = teal_c - - green_a: str = "#C9E2AE" - green_b: str = "#A6CF8C" - green_c: str = "#83C167" - green_d: str = "#77B05D" - green_e: str = "#699C52" - pure_green: str = "#00FF00" - green: str = green_c - - yellow_a: str = "#FFF1B6" - yellow_b: str = "#FFEA94" - yellow_c: str = "#FFFF00" - yellow_d: str = "#F4D345" - yellow_e: str = "#E8C11C" - yellow: str = yellow_c - - gold_a: str = "#F7C797" - gold_b: str = "#F9B775" - gold_c: str = "#F0AC5F" - gold_d: str = "#E1A158" - gold_e: str = "#C78D46" - gold: str = gold_c - - red_a: str = "#F7A1A3" - red_b: str = "#FF8080" - red_c: str = "#FC6255" - red_d: str = "#E65A4C" - red_e: str = "#CF5044" - pure_red: str = "#FF0000" - red: str = red_c - - maroon_a: str = "#ECABC1" - maroon_b: str = "#EC92AB" - maroon_c: str = "#C55F73" - maroon_d: str = "#A24D61" - maroon_e: str = "#94424F" - maroon: str = maroon_c - - purple_a: str = "#CAA3E8" - purple_b: str = "#B189C6" - purple_c: str = "#9A72AC" - purple_d: str = "#715582" - purple_e: str = "#644172" - purple: str = purple_c - - pink: str = "#D147BD" - light_pink: str = "#DC75CD" - - orange: str = "#FF862F" - light_brown: str = "#CD853F" - dark_brown: str = "#8B4513" - gray_brown: str = "#736357" - - -def print_constant_definitions(): - """ - A simple function used to generate the constant values below. To run it - paste this function and the Colors class into a file and run them. - """ - constants_names: list[str] = [] - for name in Colors.__members__.keys(): - name_upper = name.upper() - - constants_names.append(name_upper) - print(f"{name_upper} = Colors.{name}") - - if "GRAY" in name_upper: - name_upper = name_upper.replace("GRAY", "GREY") - - constants_names.append(name_upper) - print(f"{name_upper} = Colors.{name}") - - constants_names_repr = '[\n "' + '",\n "'.join(constants_names) + '",\n]' - - print(f"\n__all__ += {constants_names_repr}") - - -WHITE: str = "#FFFFFF" -GRAY_A: str = "#DDDDDD" -GREY_A: str = "#DDDDDD" -GRAY_B: str = "#BBBBBB" -GREY_B: str = "#BBBBBB" -GRAY_C: str = "#888888" -GREY_C: str = "#888888" -GRAY_D: str = "#444444" -GREY_D: str = "#444444" -GRAY_E: str = "#222222" -GREY_E: str = "#222222" -BLACK: str = "#000000" -LIGHTER_GRAY: str = "#DDDDDD" -LIGHTER_GREY: str = "#DDDDDD" -LIGHT_GRAY: str = "#BBBBBB" -LIGHT_GREY: str = "#BBBBBB" -GRAY: str = "#888888" -GREY: str = "#888888" -DARK_GRAY: str = "#444444" -DARK_GREY: str = "#444444" -DARKER_GRAY: str = "#222222" -DARKER_GREY: str = "#222222" -BLUE_A: str = "#C7E9F1" -BLUE_B: str = "#9CDCEB" -BLUE_C: str = "#58C4DD" -BLUE_D: str = "#29ABCA" -BLUE_E: str = "#236B8E" -PURE_BLUE: str = "#0000FF" -BLUE: str = "#58C4DD" -DARK_BLUE: str = "#236B8E" -TEAL_A: str = "#ACEAD7" -TEAL_B: str = "#76DDC0" -TEAL_C: str = "#5CD0B3" -TEAL_D: str = "#55C1A7" -TEAL_E: str = "#49A88F" -TEAL: str = "#5CD0B3" -GREEN_A: str = "#C9E2AE" -GREEN_B: str = "#A6CF8C" -GREEN_C: str = "#83C167" -GREEN_D: str = "#77B05D" -GREEN_E: str = "#699C52" -PURE_GREEN: str = "#00FF00" -GREEN: str = "#83C167" -YELLOW_A: str = "#FFF1B6" -YELLOW_B: str = "#FFEA94" -YELLOW_C: str = "#FFFF00" -YELLOW_D: str = "#F4D345" -YELLOW_E: str = "#E8C11C" -YELLOW: str = "#FFFF00" -GOLD_A: str = "#F7C797" -GOLD_B: str = "#F9B775" -GOLD_C: str = "#F0AC5F" -GOLD_D: str = "#E1A158" -GOLD_E: str = "#C78D46" -GOLD: str = "#F0AC5F" -RED_A: str = "#F7A1A3" -RED_B: str = "#FF8080" -RED_C: str = "#FC6255" -RED_D: str = "#E65A4C" -RED_E: str = "#CF5044" -PURE_RED: str = "#FF0000" -RED: str = "#FC6255" -MAROON_A: str = "#ECABC1" -MAROON_B: str = "#EC92AB" -MAROON_C: str = "#C55F73" -MAROON_D: str = "#A24D61" -MAROON_E: str = "#94424F" -MAROON: str = "#C55F73" -PURPLE_A: str = "#CAA3E8" -PURPLE_B: str = "#B189C6" -PURPLE_C: str = "#9A72AC" -PURPLE_D: str = "#715582" -PURPLE_E: str = "#644172" -PURPLE: str = "#9A72AC" -PINK: str = "#D147BD" -LIGHT_PINK: str = "#DC75CD" -ORANGE: str = "#FF862F" -LIGHT_BROWN: str = "#CD853F" -DARK_BROWN: str = "#8B4513" -GRAY_BROWN: str = "#736357" -GREY_BROWN: str = "#736357" - -__all__ += [ - "WHITE", - "GRAY_A", - "GREY_A", - "GRAY_B", - "GREY_B", - "GRAY_C", - "GREY_C", - "GRAY_D", - "GREY_D", - "GRAY_E", - "GREY_E", - "BLACK", - "LIGHTER_GRAY", - "LIGHTER_GREY", - "LIGHT_GRAY", - "LIGHT_GREY", - "GRAY", - "GREY", - "DARK_GRAY", - "DARK_GREY", - "DARKER_GRAY", - "DARKER_GREY", - "BLUE_A", - "BLUE_B", - "BLUE_C", - "BLUE_D", - "BLUE_E", - "PURE_BLUE", - "BLUE", - "DARK_BLUE", - "TEAL_A", - "TEAL_B", - "TEAL_C", - "TEAL_D", - "TEAL_E", - "TEAL", - "GREEN_A", - "GREEN_B", - "GREEN_C", - "GREEN_D", - "GREEN_E", - "PURE_GREEN", - "GREEN", - "YELLOW_A", - "YELLOW_B", - "YELLOW_C", - "YELLOW_D", - "YELLOW_E", - "YELLOW", - "GOLD_A", - "GOLD_B", - "GOLD_C", - "GOLD_D", - "GOLD_E", - "GOLD", - "RED_A", - "RED_B", - "RED_C", - "RED_D", - "RED_E", - "PURE_RED", - "RED", - "MAROON_A", - "MAROON_B", - "MAROON_C", - "MAROON_D", - "MAROON_E", - "MAROON", - "PURPLE_A", - "PURPLE_B", - "PURPLE_C", - "PURPLE_D", - "PURPLE_E", - "PURPLE", - "PINK", - "LIGHT_PINK", - "ORANGE", - "LIGHT_BROWN", - "DARK_BROWN", - "GRAY_BROWN", - "GREY_BROWN", -] - - -def color_to_rgb(color: Color | str) -> np.ndarray: - if isinstance(color, str): - return hex_to_rgb(color) - elif isinstance(color, Color): - return np.array(color.get_rgb()) - else: - raise ValueError("Invalid color type: " + str(color)) - - -def color_to_rgba(color: Color | str, alpha: float = 1) -> np.ndarray: - return np.array([*color_to_rgb(color), alpha]) - - -def rgb_to_color(rgb: Iterable[float]) -> Color: - return Color(rgb=rgb) - - -def rgba_to_color(rgba: Iterable[float]) -> Color: - return rgb_to_color(rgba[:3]) - - -def rgb_to_hex(rgb: Iterable[float]) -> str: - return "#" + "".join("%02x" % round(255 * x) for x in rgb) - - -def hex_to_rgb(hex_code: str) -> np.ndarray: - hex_part = hex_code[1:] - if len(hex_part) == 3: - hex_part = "".join([2 * c for c in hex_part]) - return np.array([int(hex_part[i : i + 2], 16) / 255 for i in range(0, 6, 2)]) - - -def invert_color(color: Color) -> Color: - return rgb_to_color(1.0 - color_to_rgb(color)) - - -def color_to_int_rgb(color: Color) -> np.ndarray: - return (255 * color_to_rgb(color)).astype("uint8") - - -def color_to_int_rgba(color: Color, opacity: float = 1.0) -> np.ndarray: - alpha_multiplier = np.vectorize(lambda x: int(x * opacity)) - - return alpha_multiplier(np.append(color_to_int_rgb(color), 255)) - - -def color_gradient( - reference_colors: Iterable[Color], - length_of_output: int, -) -> list[Color]: - if length_of_output == 0: - return reference_colors[0] - rgbs = list(map(color_to_rgb, reference_colors)) - alphas = np.linspace(0, (len(rgbs) - 1), length_of_output) - floors = alphas.astype("int") - alphas_mod1 = alphas % 1 - # End edge case - alphas_mod1[-1] = 1 - floors[-1] = len(rgbs) - 2 - return [ - rgb_to_color(interpolate(rgbs[i], rgbs[i + 1], alpha)) - for i, alpha in zip(floors, alphas_mod1) - ] - - -def interpolate_color(color1: Color, color2: Color, alpha: float) -> Color: - rgb = interpolate(color_to_rgb(color1), color_to_rgb(color2), alpha) - return rgb_to_color(rgb) - - -def average_color(*colors: Color) -> Color: - rgbs = np.array(list(map(color_to_rgb, colors))) - mean_rgb = np.apply_along_axis(np.mean, 0, rgbs) - return rgb_to_color(mean_rgb) - - -def random_bright_color() -> Color: - color = random_color() - curr_rgb = color_to_rgb(color) - new_rgb = interpolate(curr_rgb, np.ones(len(curr_rgb)), 0.5) - return Color(rgb=new_rgb) - - -def random_color() -> Color: - return random.choice([c.value for c in list(Colors)]) - - -def get_shaded_rgb( - rgb: np.ndarray, - point: np.ndarray, - unit_normal_vect: np.ndarray, - light_source: np.ndarray, -) -> np.ndarray: - to_sun = normalize(light_source - point) - factor = 0.5 * np.dot(unit_normal_vect, to_sun) ** 3 - if factor < 0: - factor *= 0.5 - result = rgb + factor - return result diff --git a/manim/utils/color/AS2700.py b/manim/utils/color/AS2700.py new file mode 100644 index 0000000000..83a3e6abd0 --- /dev/null +++ b/manim/utils/color/AS2700.py @@ -0,0 +1,234 @@ +"""Australian Color Standard + +In 1985 the Australian Independent Color Standard AS 2700 was created. In +this standard, all colors can be identified via a category code (one of +B -- Blue, G -- Green, N -- Neutrals (grey), P -- Purple, R -- Red, T -- Blue/Green, +X -- Yellow/Red, Y -- Yellow) and a number. The colors also have (natural) names. + +To use the colors from this list, access them directly from the module (which +is exposed to Manim's global name space): + +.. code:: pycon + + >>> from manim import AS2700 + >>> AS2700.B23_BRIGHT_BLUE + ManimColor('#174F90') + +List of Color Constants +----------------------- + +These hex values (taken from https://www.w3schools.com/colors/colors_australia.asp) +are non official approximate values intended to simulate AS 2700 colors: + +.. automanimcolormodule:: manim.utils.color.AS2700 + +""" + +from .core import ManimColor + +B11_RICH_BLUE = ManimColor("#2B3770") +B12_ROYAL_BLUE = ManimColor("#2C3563") +B13_NAVY_BLUE = ManimColor("#28304D") +B14_SAPHHIRE = ManimColor("#28426B") +B15_MID_BLUE = ManimColor("#144B6F") +B21_ULTRAMARINE = ManimColor("#2C5098") +B22_HOMEBUSH_BLUE = ManimColor("#215097") +B23_BRIGHT_BLUE = ManimColor("#174F90") +B24_HARBOUR_BLUE = ManimColor("#1C6293") +B25_AQUA = ManimColor("#5097AC") +B32_POWDER_BLUE = ManimColor("#B7C8DB") +B33_MIST_BLUE = ManimColor("#E0E6E2") +B34_PARADISE_BLUE = ManimColor("#3499BA") +B35_PALE_BLUE = ManimColor("#CDE4E2") +B41_BLUEBELL = ManimColor("#5B94D1") +B42_PURPLE_BLUE = ManimColor("#5E7899") +B43_GREY_BLUE = ManimColor("#627C8D") +B44_LIGHT_GREY_BLUE = ManimColor("#C0C0C1") +B45_SKY_BLUE = ManimColor("#7DB7C7") +B51_PERIWINKLE = ManimColor("#3871AC") +B53_DARK_GREY_BLUE = ManimColor("#4F6572") +B55_STORM_BLUE = ManimColor("#3F7C94") +B61_CORAL_SEA = ManimColor("#2B3873") +B62_MIDNIGHT_BLUE = ManimColor("#292A34") +B64_CHARCOAL = ManimColor("#363E45") +G11_BOTTLE_GREEN = ManimColor("#253A32") +G12_HOLLY = ManimColor("#21432D") +G13_EMERALD = ManimColor("#195F35") +G14_MOSS_GREEN = ManimColor("#33572D") +G15_RAINFOREST_GREEN = ManimColor("#3D492D") +G16_TRAFFIC_GREEN = ManimColor("#305442") +G17_MINT_GREEN = ManimColor("#006B45") +G21_JADE = ManimColor("#127453") +G22_SERPENTINE = ManimColor("#78A681") +G23_SHAMROCK = ManimColor("#336634") +G24_FERN_TREE = ManimColor("#477036") +G25_OLIVE = ManimColor("#595B2A") +G26_APPLE_GREEN = ManimColor("#4E9843") +G27_HOMEBUSH_GREEN = ManimColor("#017F4D") +G31_VERTIGRIS = ManimColor("#468A65") +G32_OPALINE = ManimColor("#AFCBB8") +G33_LETTUCE = ManimColor("#7B9954") +G34_AVOCADO = ManimColor("#757C4C") +G35_LIME_GREEN = ManimColor("#89922E") +G36_KIKUYU = ManimColor("#95B43B") +G37_BEANSTALK = ManimColor("#45A56A") +G41_LAWN_GREEN = ManimColor("#0D875D") +G42_GLACIER = ManimColor("#D5E1D2") +G43_SURF_GREEN = ManimColor("#C8C8A7") +G44_PALM_GREEN = ManimColor("#99B179") +G45_CHARTREUSE = ManimColor("#C7C98D") +G46_CITRONELLA = ManimColor("#BFC83E") +G47_CRYSTAL_GREEN = ManimColor("#ADCCA8") +G51_SPRUCE = ManimColor("#05674F") +G52_EUCALYPTUS = ManimColor("#66755B") +G53_BANKSIA = ManimColor("#929479") +G54_MIST_GREEN = ManimColor("#7A836D") +G55_LICHEN = ManimColor("#A7A98C") +G56_SAGE_GREEN = ManimColor("#677249") +G61_DARK_GREEN = ManimColor("#283533") +G62_RIVERGUM = ManimColor("#617061") +G63_DEEP_BRONZE_GREEN = ManimColor("#333334") +G64_SLATE = ManimColor("#5E6153") +G65_TI_TREE = ManimColor("#5D5F4E") +G66_ENVIRONMENT_GREEN = ManimColor("#484C3F") +G67_ZUCCHINI = ManimColor("#2E443A") +N11_PEARL_GREY = ManimColor("#D8D3C7") +N12_PASTEL_GREY = ManimColor("#CCCCCC") +N14_WHITE = ManimColor("#FFFFFF") +N15_HOMEBUSH_GREY = ManimColor("#A29B93") +N22_CLOUD_GREY = ManimColor("#C4C1B9") +N23_NEUTRAL_GREY = ManimColor("#CCCCCC") +N24_SILVER_GREY = ManimColor("#BDC7C5") +N25_BIRCH_GREY = ManimColor("#ABA498") +N32_GREEN_GREY = ManimColor("#8E9282") +N33_LIGHTBOX_GREY = ManimColor("#ACADAD") +N35_LIGHT_GREY = ManimColor("#A6A7A1") +N41_OYSTER = ManimColor("#998F78") +N42_STORM_GREY = ManimColor("#858F88") +N43_PIPELINE_GREY = ManimColor("#999999") +N44_BRIDGE_GREY = ManimColor("#767779") +N45_KOALA_GREY = ManimColor("#928F88") +N52_MID_GREY = ManimColor("#727A77") +N53_BLUE_GREY = ManimColor("#7C8588") +N54_BASALT = ManimColor("#585C63") +N55_LEAD_GREY = ManimColor("#5E5C58") +N61_BLACK = ManimColor("#2A2A2C") +N63_PEWTER = ManimColor("#596064") +N64_DARK_GREY = ManimColor("#4B5259") +N65_GRAPHITE_GREY = ManimColor("#45474A") +P11_MAGENTA = ManimColor("#7B2B48") +P12_PURPLE = ManimColor("#85467B") +P13_VIOLET = ManimColor("#5D3A61") +P14_BLUEBERRY = ManimColor("#4C4176") +P21_SUNSET_PINK = ManimColor("#E3BBBD") +P22_CYCLAMEN = ManimColor("#83597D") +P23_LILAC = ManimColor("#A69FB1") +P24_JACKARANDA = ManimColor("#795F91") +P31_DUSTY_PINK = ManimColor("#DBBEBC") +P33_RIBBON_PINK = ManimColor("#D1BCC9") +P41_ERICA_PINK = ManimColor("#C55A83") +P42_MULBERRY = ManimColor("#A06574") +P43_WISTERIA = ManimColor("#756D91") +P52_PLUM = ManimColor("#6E3D4B") +R11_INTERNATIONAL_ORANGE = ManimColor("#CE482A") +R12_SCARLET = ManimColor("#CD392A") +R13_SIGNAL_RED = ManimColor("#BA312B") +R14_WARATAH = ManimColor("#AA2429") +R15_CRIMSON = ManimColor("#9E2429") +R21_TANGERINE = ManimColor("#E96957") +R22_HOMEBUSH_RED = ManimColor("#D83A2D") +R23_LOLLIPOP = ManimColor("#CC5058") +R24_STRAWBERRY = ManimColor("#B4292A") +R25_ROSE_PINK = ManimColor("#E8919C") +R32_APPLE_BLOSSOM = ManimColor("#F2E1D8") +R33_GHOST_GUM = ManimColor("#E8DAD4") +R34_MUSHROOM = ManimColor("#D7C0B6") +R35_DEEP_ROSE = ManimColor("#CD6D71") +R41_SHELL_PINK = ManimColor("#F9D9BB") +R42_SALMON_PINK = ManimColor("#D99679") +R43_RED_DUST = ManimColor("#D0674F") +R44_POSSUM = ManimColor("#A18881") +R45_RUBY = ManimColor("#8F3E5C") +R51_BURNT_PINK = ManimColor("#E19B8E") +R52_TERRACOTTA = ManimColor("#A04C36") +R53_RED_GUM = ManimColor("#8D4338") +R54_RASPBERRY = ManimColor("#852F31") +R55_CLARET = ManimColor("#67292D") +R62_VENETIAN_RED = ManimColor("#77372B") +R63_RED_OXIDE = ManimColor("#663334") +R64_DEEP_INDIAN_RED = ManimColor("#542E2B") +R65_MAROON = ManimColor("#3F2B3C") +T11_TROPICAL_BLUE = ManimColor("#006698") +T12_DIAMANTIA = ManimColor("#006C74") +T14_MALACHITE = ManimColor("#105154") +T15_TURQUOISE = ManimColor("#098587") +T22_ORIENTAL_BLUE = ManimColor("#358792") +T24_BLUE_JADE = ManimColor("#427F7E") +T32_HUON_GREEN = ManimColor("#72B3B1") +T33_SMOKE_BLUE = ManimColor("#9EB6B2") +T35_GREEN_ICE = ManimColor("#78AEA2") +T44_BLUE_GUM = ManimColor("#6A8A88") +T45_COOTAMUNDRA = ManimColor("#759E91") +T51_MOUNTAIN_BLUE = ManimColor("#295668") +T53_PEACOCK_BLUE = ManimColor("#245764") +T63_TEAL = ManimColor("#183F4E") +X11_BUTTERSCOTCH = ManimColor("#D38F43") +X12_PUMPKIN = ManimColor("#DD7E1A") +X13_MARIGOLD = ManimColor("#ED7F15") +X14_MANDARIN = ManimColor("#E45427") +X15_ORANGE = ManimColor("#E36C2B") +X21_PALE_OCHRE = ManimColor("#DAA45F") +X22_SAFFRON = ManimColor("#F6AA51") +X23_APRICOT = ManimColor("#FEB56D") +X24_ROCKMELON = ManimColor("#F6894B") +X31_RAFFIA = ManimColor("#EBC695") +X32_MAGNOLIA = ManimColor("#F1DEBE") +X33_WARM_WHITE = ManimColor("#F3E7D4") +X34_DRIFTWOOD = ManimColor("#D5C4AE") +X41_BUFF = ManimColor("#C28A44") +X42_BISCUIT = ManimColor("#DEBA92") +X43_BEIGE = ManimColor("#C9AA8C") +X45_CINNAMON = ManimColor("#AC826D") +X51_TAN = ManimColor("#8F5F32") +X52_COFFEE = ManimColor("#AD7948") +X53_GOLDEN_TAN = ManimColor("#925629") +X54_BROWN = ManimColor("#68452C") +X55_NUT_BROWN = ManimColor("#764832") +X61_WOMBAT = ManimColor("#6E5D52") +X62_DARK_EARTH = ManimColor("#6E5D52") +X63_IRONBARK = ManimColor("#443B36") +X64_CHOCOLATE = ManimColor("#4A3B31") +X65_DARK_BROWN = ManimColor("#4F372D") +Y11_CANARY = ManimColor("#E7BD11") +Y12_WATTLE = ManimColor("#E8AF01") +Y13_VIVID_YELLOW = ManimColor("#FCAE01") +Y14_GOLDEN_YELLOW = ManimColor("#F5A601") +Y15_SUNFLOWER = ManimColor("#FFA709") +Y16_INCA_GOLD = ManimColor("#DF8C19") +Y21_PRIMROSE = ManimColor("#F5CF5B") +Y22_CUSTARD = ManimColor("#EFD25C") +Y23_BUTTERCUP = ManimColor("#E0CD41") +Y24_STRAW = ManimColor("#E3C882") +Y25_DEEP_CREAM = ManimColor("#F3C968") +Y26_HOMEBUSH_GOLD = ManimColor("#FCC51A") +Y31_LILY_GREEN = ManimColor("#E3E3CD") +Y32_FLUMMERY = ManimColor("#E6DF9E") +Y33_PALE_PRIMROSE = ManimColor("#F5F3CE") +Y34_CREAM = ManimColor("#EFE3BE") +Y35_OFF_WHITE = ManimColor("#F1E9D5") +Y41_OLIVE_YELLOW = ManimColor("#8E7426") +Y42_MUSTARD = ManimColor("#C4A32E") +Y43_PARCHMENT = ManimColor("#D4C9A3") +Y44_SAND = ManimColor("#DCC18B") +Y45_MANILLA = ManimColor("#E5D0A7") +Y51_BRONZE_OLIVE = ManimColor("#695D3E") +Y52_CHAMOIS = ManimColor("#BEA873") +Y53_SANDSTONE = ManimColor("#D5BF8E") +Y54_OATMEAL = ManimColor("#CAAE82") +Y55_DEEP_STONE = ManimColor("#BC9969") +Y56_MERINO = ManimColor("#C9B79E") +Y61_BLACK_OLIVE = ManimColor("#47473B") +Y62_SUGAR_CANE = ManimColor("#BCA55C") +Y63_KHAKI = ManimColor("#826843") +Y65_MUSHROOM = ManimColor("#A39281") +Y66_MUDSTONE = ManimColor("#574E45") diff --git a/manim/utils/color/BS381.py b/manim/utils/color/BS381.py new file mode 100644 index 0000000000..5d09a6f1b3 --- /dev/null +++ b/manim/utils/color/BS381.py @@ -0,0 +1,315 @@ +"""British Color Standard + +This module contains colors defined in one of the British Standards +for colors, BS381C. This standard specifies colors used in identification, +coding, and other special purposes. See https://www.britishstandardcolour.com/ +for more information. + +To use the colors from this list, access them directly from the module (which +is exposed to Manim's global name space): + +.. code:: pycon + + >>> from manim import BS381 + >>> BS381.OXFORD_BLUE + ManimColor('#1F3057') + +List of Color Constants +----------------------- + +These hex values (taken from https://www.w3schools.com/colors/colors_british.asp) +are non official approximate values intended to simulate the ones defined +in the standard: + +.. automanimcolormodule:: manim.utils.color.BS381 + +""" +from .core import ManimColor + +BS381_101 = ManimColor("#94BFAC") +SKY_BLUE = ManimColor("#94BFAC") +BS381_102 = ManimColor("#5B9291") +TURQUOISE_BLUE = ManimColor("#5B9291") +BS381_103 = ManimColor("#3B6879") +PEACOCK_BLUE = ManimColor("#3B6879") +BS381_104 = ManimColor("#264D7E") +AZURE_BLUE = ManimColor("#264D7E") +BS381_105 = ManimColor("#1F3057") +OXFORD_BLUE = ManimColor("#1F3057") +BS381_106 = ManimColor("#2A283D") +ROYAL_BLUE = ManimColor("#2A283D") +BS381_107 = ManimColor("#3A73A9") +STRONG_BLUE = ManimColor("#3A73A9") +BS381_108 = ManimColor("#173679") +AIRCRAFT_BLUE = ManimColor("#173679") +BS381_109 = ManimColor("#1C5680") +MIDDLE_BLUE = ManimColor("#1C5680") +BS381_110 = ManimColor("#2C3E75") +ROUNDEL_BLUE = ManimColor("#2C3E75") +BS381_111 = ManimColor("#8CC5BB") +PALE_BLUE = ManimColor("#8CC5BB") +BS381_112 = ManimColor("#78ADC2") +ARCTIC_BLUE = ManimColor("#78ADC2") +FIESTA_BLUE = ManimColor("#78ADC2") +BS381_113 = ManimColor("#3F687D") +DEEP_SAXE_BLUE = ManimColor("#3F687D") +BS381_114 = ManimColor("#1F4B61") +RAIL_BLUE = ManimColor("#1F4B61") +BS381_115 = ManimColor("#5F88C1") +COBALT_BLUE = ManimColor("#5F88C1") +BS381_166 = ManimColor("#2458AF") +FRENCH_BLUE = ManimColor("#2458AF") +BS381_169 = ManimColor("#135B75") +TRAFFIC_BLUE = ManimColor("#135B75") +BS381_172 = ManimColor("#A7C6EB") +PALE_ROUNDEL_BLUE = ManimColor("#A7C6EB") +BS381_174 = ManimColor("#64A0AA") +ORIENT_BLUE = ManimColor("#64A0AA") +BS381_175 = ManimColor("#4F81C5") +LIGHT_FRENCH_BLUE = ManimColor("#4F81C5") +BS381_210 = ManimColor("#BBC9A5") +SKY = ManimColor("#BBC9A5") +BS381_216 = ManimColor("#BCD890") +EAU_DE_NIL = ManimColor("#BCD890") +BS381_217 = ManimColor("#96BF65") +SEA_GREEN = ManimColor("#96BF65") +BS381_218 = ManimColor("#698B47") +GRASS_GREEN = ManimColor("#698B47") +BS381_219 = ManimColor("#757639") +SAGE_GREEN = ManimColor("#757639") +BS381_220 = ManimColor("#4B5729") +OLIVE_GREEN = ManimColor("#4B5729") +BS381_221 = ManimColor("#507D3A") +BRILLIANT_GREEN = ManimColor("#507D3A") +BS381_222 = ManimColor("#6A7031") +LIGHT_BRONZE_GREEN = ManimColor("#6A7031") +BS381_223 = ManimColor("#49523A") +MIDDLE_BRONZE_GREEN = ManimColor("#49523A") +BS381_224 = ManimColor("#3E4630") +DEEP_BRONZE_GREEN = ManimColor("#3E4630") +BS381_225 = ManimColor("#406A28") +LIGHT_BRUNSWICK_GREEN = ManimColor("#406A28") +BS381_226 = ManimColor("#33533B") +MID_BRUNSWICK_GREEN = ManimColor("#33533B") +BS381_227 = ManimColor("#254432") +DEEP_BRUNSWICK_GREEN = ManimColor("#254432") +BS381_228 = ManimColor("#428B64") +EMERALD_GREEN = ManimColor("#428B64") +BS381_241 = ManimColor("#4F5241") +DARK_GREEN = ManimColor("#4F5241") +BS381_262 = ManimColor("#44945E") +BOLD_GREEN = ManimColor("#44945E") +BS381_267 = ManimColor("#476A4C") +DEEP_CHROME_GREEN = ManimColor("#476A4C") +TRAFFIC_GREEN = ManimColor("#476A4C") +BS381_275 = ManimColor("#8FC693") +OPALINE_GREEN = ManimColor("#8FC693") +BS381_276 = ManimColor("#2E4C1E") +LINCON_GREEN = ManimColor("#2E4C1E") +BS381_277 = ManimColor("#364A20") +CYPRESS_GREEN = ManimColor("#364A20") +BS381_278 = ManimColor("#87965A") +LIGHT_OLIVE_GREEN = ManimColor("#87965A") +BS381_279 = ManimColor("#3B3629") +STEEL_FURNITURE_GREEN = ManimColor("#3B3629") +BS381_280 = ManimColor("#68AB77") +VERDIGRIS_GREEN = ManimColor("#68AB77") +BS381_282 = ManimColor("#506B52") +FOREST_GREEN = ManimColor("#506B52") +BS381_283 = ManimColor("#7E8F6E") +AIRCRAFT_GREY_GREEN = ManimColor("#7E8F6E") +BS381_284 = ManimColor("#6B6F5A") +SPRUCE_GREEN = ManimColor("#6B6F5A") +BS381_285 = ManimColor("#5F5C4B") +NATO_GREEN = ManimColor("#5F5C4B") +BS381_298 = ManimColor("#4F5138") +OLIVE_DRAB = ManimColor("#4F5138") +BS381_309 = ManimColor("#FEEC04") +CANARY_YELLOW = ManimColor("#FEEC04") +BS381_310 = ManimColor("#FEF963") +PRIMROSE = ManimColor("#FEF963") +BS381_315 = ManimColor("#FEF96A") +GRAPEFRUIT = ManimColor("#FEF96A") +BS381_320 = ManimColor("#9E7339") +LIGHT_BROWN = ManimColor("#9E7339") +BS381_337 = ManimColor("#4C4A3C") +VERY_DARK_DRAB = ManimColor("#4C4A3C") +BS381_350 = ManimColor("#7B6B4F") +DARK_EARTH = ManimColor("#7B6B4F") +BS381_352 = ManimColor("#FCED96") +PALE_CREAM = ManimColor("#FCED96") +BS381_353 = ManimColor("#FDF07A") +DEEP_CREAM = ManimColor("#FDF07A") +BS381_354 = ManimColor("#E9BB43") +PRIMROSE_2 = ManimColor("#E9BB43") +BS381_355 = ManimColor("#FDD906") +LEMON = ManimColor("#FDD906") +BS381_356 = ManimColor("#FCC808") +GOLDEN_YELLOW = ManimColor("#FCC808") +BS381_358 = ManimColor("#F6C870") +LIGHT_BUFF = ManimColor("#F6C870") +BS381_359 = ManimColor("#DBAC50") +MIDDLE_BUFF = ManimColor("#DBAC50") +BS381_361 = ManimColor("#D4B97D") +LIGHT_STONE = ManimColor("#D4B97D") +BS381_362 = ManimColor("#AC7C42") +MIDDLE_STONE = ManimColor("#AC7C42") +BS381_363 = ManimColor("#FDE706") +BOLD_YELLOW = ManimColor("#FDE706") +BS381_364 = ManimColor("#CEC093") +PORTLAND_STONE = ManimColor("#CEC093") +BS381_365 = ManimColor("#F4F0BD") +VELLUM = ManimColor("#F4F0BD") +BS381_366 = ManimColor("#F5E7A1") +LIGHT_BEIGE = ManimColor("#F5E7A1") +BS381_367 = ManimColor("#FEF6BF") +MANILLA = ManimColor("#fef6bf") +BS381_368 = ManimColor("#DD7B00") +TRAFFIC_YELLOW = ManimColor("#DD7B00") +BS381_369 = ManimColor("#FEEBA8") +BISCUIT = ManimColor("#feeba8") +BS381_380 = ManimColor("#BBA38A") +CAMOUFLAGE_DESERT_SAND = ManimColor("#BBA38A") +BS381_384 = ManimColor("#EEDFA5") +LIGHT_STRAW = ManimColor("#EEDFA5") +BS381_385 = ManimColor("#E8C88F") +LIGHT_BISCUIT = ManimColor("#E8C88F") +BS381_386 = ManimColor("#E6C18D") +CHAMPAGNE = ManimColor("#e6c18d") +BS381_387 = ManimColor("#CFB48A") +SUNRISE = ManimColor("#cfb48a") +SUNSHINE = ManimColor("#cfb48a") +BS381_388 = ManimColor("#E4CF93") +BEIGE = ManimColor("#e4cf93") +BS381_389 = ManimColor("#B2A788") +CAMOUFLAGE_BEIGE = ManimColor("#B2A788") +BS381_397 = ManimColor("#F3D163") +JASMINE_YELLOW = ManimColor("#F3D163") +BS381_411 = ManimColor("#74542F") +MIDDLE_BROWN = ManimColor("#74542F") +BS381_412 = ManimColor("#5C422E") +DARK_BROWN = ManimColor("#5C422E") +BS381_413 = ManimColor("#402D21") +NUT_BROWN = ManimColor("#402D21") +BS381_414 = ManimColor("#A86C29") +GOLDEN_BROWN = ManimColor("#A86C29") +BS381_415 = ManimColor("#61361E") +IMPERIAL_BROWN = ManimColor("#61361E") +BS381_420 = ManimColor("#A89177") +DARK_CAMOUFLAGE_DESERT_SAND = ManimColor("#A89177") +BS381_435 = ManimColor("#845B4D") +CAMOUFLAGE_RED = ManimColor("#845B4D") +BS381_436 = ManimColor("#564B47") +DARK_CAMOUFLAGE_BROWN = ManimColor("#564B47") +BS381_439 = ManimColor("#753B1E") +ORANGE_BROWN = ManimColor("#753B1E") +BS381_443 = ManimColor("#C98A71") +SALMON = ManimColor("#c98a71") +BS381_444 = ManimColor("#A65341") +TERRACOTTA = ManimColor("#a65341") +BS381_445 = ManimColor("#83422B") +VENETIAN_RED = ManimColor("#83422B") +BS381_446 = ManimColor("#774430") +RED_OXIDE = ManimColor("#774430") +BS381_447 = ManimColor("#F3B28B") +SALMON_PINK = ManimColor("#F3B28B") +BS381_448 = ManimColor("#67403A") +DEEP_INDIAN_RED = ManimColor("#67403A") +BS381_449 = ManimColor("#693B3F") +LIGHT_PURPLE_BROWN = ManimColor("#693B3F") +BS381_452 = ManimColor("#613339") +DARK_CRIMSON = ManimColor("#613339") +BS381_453 = ManimColor("#FBDED6") +SHELL_PINK = ManimColor("#FBDED6") +BS381_454 = ManimColor("#E8A1A2") +PALE_ROUNDEL_RED = ManimColor("#E8A1A2") +BS381_460 = ManimColor("#BD8F56") +DEEP_BUFF = ManimColor("#BD8F56") +BS381_473 = ManimColor("#793932") +GULF_RED = ManimColor("#793932") +BS381_489 = ManimColor("#8D5B41") +LEAF_BROWN = ManimColor("#8D5B41") +BS381_490 = ManimColor("#573320") +BEECH_BROWN = ManimColor("#573320") +BS381_499 = ManimColor("#59493E") +SERVICE_BROWN = ManimColor("#59493E") +BS381_536 = ManimColor("#BB3016") +POPPY = ManimColor("#bb3016") +BS381_537 = ManimColor("#DD3420") +SIGNAL_RED = ManimColor("#DD3420") +BS381_538 = ManimColor("#C41C22") +POST_OFFICE_RED = ManimColor("#C41C22") +CHERRY = ManimColor("#c41c22") +BS381_539 = ManimColor("#D21E2B") +CURRANT_RED = ManimColor("#D21E2B") +BS381_540 = ManimColor("#8B1A32") +CRIMSON = ManimColor("#8b1a32") +BS381_541 = ManimColor("#471B21") +MAROON = ManimColor("#471b21") +BS381_542 = ManimColor("#982D57") +RUBY = ManimColor("#982d57") +BS381_557 = ManimColor("#EF841E") +LIGHT_ORANGE = ManimColor("#EF841E") +BS381_564 = ManimColor("#DD3524") +BOLD_RED = ManimColor("#DD3524") +BS381_568 = ManimColor("#FB9C06") +APRICOT = ManimColor("#fb9c06") +BS381_570 = ManimColor("#A83C19") +TRAFFIC_RED = ManimColor("#A83C19") +BS381_591 = ManimColor("#D04E09") +DEEP_ORANGE = ManimColor("#D04E09") +BS381_592 = ManimColor("#E45523") +INTERNATIONAL_ORANGE = ManimColor("#E45523") +BS381_593 = ManimColor("#F24816") +RAIL_RED = ManimColor("#F24816") +AZO_ORANGE = ManimColor("#F24816") +BS381_626 = ManimColor("#A0A9AA") +CAMOUFLAGE_GREY = ManimColor("#A0A9AA") +BS381_627 = ManimColor("#BEC0B8") +LIGHT_AIRCRAFT_GREY = ManimColor("#BEC0B8") +BS381_628 = ManimColor("#9D9D7E") +SILVER_GREY = ManimColor("#9D9D7E") +BS381_629 = ManimColor("#7A838B") +DARK_CAMOUFLAGE_GREY = ManimColor("#7A838B") +BS381_630 = ManimColor("#A5AD98") +FRENCH_GREY = ManimColor("#A5AD98") +BS381_631 = ManimColor("#9AAA9F") +LIGHT_GREY = ManimColor("#9AAA9F") +BS381_632 = ManimColor("#6B7477") +DARK_ADMIRALTY_GREY = ManimColor("#6B7477") +BS381_633 = ManimColor("#424C53") +RAF_BLUE_GREY = ManimColor("#424C53") +BS381_634 = ManimColor("#6F7264") +SLATE = ManimColor("#6f7264") +BS381_635 = ManimColor("#525B55") +LEAD = ManimColor("#525b55") +BS381_636 = ManimColor("#5F7682") +PRU_BLUE = ManimColor("#5F7682") +BS381_637 = ManimColor("#8E9B9C") +MEDIUM_SEA_GREY = ManimColor("#8E9B9C") +BS381_638 = ManimColor("#6C7377") +DARK_SEA_GREY = ManimColor("#6C7377") +BS381_639 = ManimColor("#667563") +LIGHT_SLATE_GREY = ManimColor("#667563") +BS381_640 = ManimColor("#566164") +EXTRA_DARK_SEA_GREY = ManimColor("#566164") +BS381_642 = ManimColor("#282B2F") +NIGHT = ManimColor("#282b2f") +BS381_671 = ManimColor("#4E5355") +MIDDLE_GRAPHITE = ManimColor("#4E5355") +BS381_676 = ManimColor("#A9B7B9") +LIGHT_WEATHERWORK_GREY = ManimColor("#A9B7B9") +BS381_677 = ManimColor("#676F76") +DARK_WEATHERWORK_GREY = ManimColor("#676F76") +BS381_692 = ManimColor("#7B93A3") +SMOKE_GREY = ManimColor("#7B93A3") +BS381_693 = ManimColor("#88918D") +AIRCRAFT_GREY = ManimColor("#88918D") +BS381_694 = ManimColor("#909A92") +DOVE_GREY = ManimColor("#909A92") +BS381_697 = ManimColor("#B6D3CC") +LIGHT_ADMIRALTY_GREY = ManimColor("#B6D3CC") +BS381_796 = ManimColor("#6E4A75") +DARK_VIOLET = ManimColor("#6E4A75") +BS381_797 = ManimColor("#C9A8CE") +LIGHT_VIOLET = ManimColor("#C9A8CE") diff --git a/manim/utils/color/X11.py b/manim/utils/color/X11.py new file mode 100644 index 0000000000..06d7c7575f --- /dev/null +++ b/manim/utils/color/X11.py @@ -0,0 +1,530 @@ +# from https://www.w3schools.com/colors/colors_x11.asp + +"""X11 Colors + +These color and their names (taken from +https://www.w3schools.com/colors/colors_x11.asp) were developed at the +Massachusetts Intitute of Technology (MIT) during +the development of color based computer display system. + +To use the colors from this list, access them directly from the module (which +is exposed to Manim's global name space): + +.. code:: pycon + + >>> from manim import X11 + >>> X11.BEIGE + ManimColor('#F5F5DC') + + +List of Color Constants +----------------------- + +.. automanimcolormodule:: manim.utils.color.X11 +""" +from .core import ManimColor + +ALICEBLUE = ManimColor("#F0F8FF") +ANTIQUEWHITE = ManimColor("#FAEBD7") +ANTIQUEWHITE1 = ManimColor("#FFEFDB") +ANTIQUEWHITE2 = ManimColor("#EEDFCC") +ANTIQUEWHITE3 = ManimColor("#CDC0B0") +ANTIQUEWHITE4 = ManimColor("#8B8378") +AQUAMARINE1 = ManimColor("#7FFFD4") +AQUAMARINE2 = ManimColor("#76EEC6") +AQUAMARINE4 = ManimColor("#458B74") +AZURE1 = ManimColor("#F0FFFF") +AZURE2 = ManimColor("#E0EEEE") +AZURE3 = ManimColor("#C1CDCD") +AZURE4 = ManimColor("#838B8B") +BEIGE = ManimColor("#F5F5DC") +BISQUE1 = ManimColor("#FFE4C4") +BISQUE2 = ManimColor("#EED5B7") +BISQUE3 = ManimColor("#CDB79E") +BISQUE4 = ManimColor("#8B7D6B") +BLACK = ManimColor("#000000") +BLANCHEDALMOND = ManimColor("#FFEBCD") +BLUE1 = ManimColor("#0000FF") +BLUE2 = ManimColor("#0000EE") +BLUE4 = ManimColor("#00008B") +BLUEVIOLET = ManimColor("#8A2BE2") +BROWN = ManimColor("#A52A2A") +BROWN1 = ManimColor("#FF4040") +BROWN2 = ManimColor("#EE3B3B") +BROWN3 = ManimColor("#CD3333") +BROWN4 = ManimColor("#8B2323") +BURLYWOOD = ManimColor("#DEB887") +BURLYWOOD1 = ManimColor("#FFD39B") +BURLYWOOD2 = ManimColor("#EEC591") +BURLYWOOD3 = ManimColor("#CDAA7D") +BURLYWOOD4 = ManimColor("#8B7355") +CADETBLUE = ManimColor("#5F9EA0") +CADETBLUE1 = ManimColor("#98F5FF") +CADETBLUE2 = ManimColor("#8EE5EE") +CADETBLUE3 = ManimColor("#7AC5CD") +CADETBLUE4 = ManimColor("#53868B") +CHARTREUSE1 = ManimColor("#7FFF00") +CHARTREUSE2 = ManimColor("#76EE00") +CHARTREUSE3 = ManimColor("#66CD00") +CHARTREUSE4 = ManimColor("#458B00") +CHOCOLATE = ManimColor("#D2691E") +CHOCOLATE1 = ManimColor("#FF7F24") +CHOCOLATE2 = ManimColor("#EE7621") +CHOCOLATE3 = ManimColor("#CD661D") +CORAL = ManimColor("#FF7F50") +CORAL1 = ManimColor("#FF7256") +CORAL2 = ManimColor("#EE6A50") +CORAL3 = ManimColor("#CD5B45") +CORAL4 = ManimColor("#8B3E2F") +CORNFLOWERBLUE = ManimColor("#6495ED") +CORNSILK1 = ManimColor("#FFF8DC") +CORNSILK2 = ManimColor("#EEE8CD") +CORNSILK3 = ManimColor("#CDC8B1") +CORNSILK4 = ManimColor("#8B8878") +CYAN1 = ManimColor("#00FFFF") +CYAN2 = ManimColor("#00EEEE") +CYAN3 = ManimColor("#00CDCD") +CYAN4 = ManimColor("#008B8B") +DARKGOLDENROD = ManimColor("#B8860B") +DARKGOLDENROD1 = ManimColor("#FFB90F") +DARKGOLDENROD2 = ManimColor("#EEAD0E") +DARKGOLDENROD3 = ManimColor("#CD950C") +DARKGOLDENROD4 = ManimColor("#8B6508") +DARKGREEN = ManimColor("#006400") +DARKKHAKI = ManimColor("#BDB76B") +DARKOLIVEGREEN = ManimColor("#556B2F") +DARKOLIVEGREEN1 = ManimColor("#CAFF70") +DARKOLIVEGREEN2 = ManimColor("#BCEE68") +DARKOLIVEGREEN3 = ManimColor("#A2CD5A") +DARKOLIVEGREEN4 = ManimColor("#6E8B3D") +DARKORANGE = ManimColor("#FF8C00") +DARKORANGE1 = ManimColor("#FF7F00") +DARKORANGE2 = ManimColor("#EE7600") +DARKORANGE3 = ManimColor("#CD6600") +DARKORANGE4 = ManimColor("#8B4500") +DARKORCHID = ManimColor("#9932CC") +DARKORCHID1 = ManimColor("#BF3EFF") +DARKORCHID2 = ManimColor("#B23AEE") +DARKORCHID3 = ManimColor("#9A32CD") +DARKORCHID4 = ManimColor("#68228B") +DARKSALMON = ManimColor("#E9967A") +DARKSEAGREEN = ManimColor("#8FBC8F") +DARKSEAGREEN1 = ManimColor("#C1FFC1") +DARKSEAGREEN2 = ManimColor("#B4EEB4") +DARKSEAGREEN3 = ManimColor("#9BCD9B") +DARKSEAGREEN4 = ManimColor("#698B69") +DARKSLATEBLUE = ManimColor("#483D8B") +DARKSLATEGRAY = ManimColor("#2F4F4F") +DARKSLATEGRAY1 = ManimColor("#97FFFF") +DARKSLATEGRAY2 = ManimColor("#8DEEEE") +DARKSLATEGRAY3 = ManimColor("#79CDCD") +DARKSLATEGRAY4 = ManimColor("#528B8B") +DARKTURQUOISE = ManimColor("#00CED1") +DARKVIOLET = ManimColor("#9400D3") +DEEPPINK1 = ManimColor("#FF1493") +DEEPPINK2 = ManimColor("#EE1289") +DEEPPINK3 = ManimColor("#CD1076") +DEEPPINK4 = ManimColor("#8B0A50") +DEEPSKYBLUE1 = ManimColor("#00BFFF") +DEEPSKYBLUE2 = ManimColor("#00B2EE") +DEEPSKYBLUE3 = ManimColor("#009ACD") +DEEPSKYBLUE4 = ManimColor("#00688B") +DIMGRAY = ManimColor("#696969") +DODGERBLUE1 = ManimColor("#1E90FF") +DODGERBLUE2 = ManimColor("#1C86EE") +DODGERBLUE3 = ManimColor("#1874CD") +DODGERBLUE4 = ManimColor("#104E8B") +FIREBRICK = ManimColor("#B22222") +FIREBRICK1 = ManimColor("#FF3030") +FIREBRICK2 = ManimColor("#EE2C2C") +FIREBRICK3 = ManimColor("#CD2626") +FIREBRICK4 = ManimColor("#8B1A1A") +FLORALWHITE = ManimColor("#FFFAF0") +FORESTGREEN = ManimColor("#228B22") +GAINSBORO = ManimColor("#DCDCDC") +GHOSTWHITE = ManimColor("#F8F8FF") +GOLD1 = ManimColor("#FFD700") +GOLD2 = ManimColor("#EEC900") +GOLD3 = ManimColor("#CDAD00") +GOLD4 = ManimColor("#8B7500") +GOLDENROD = ManimColor("#DAA520") +GOLDENROD1 = ManimColor("#FFC125") +GOLDENROD2 = ManimColor("#EEB422") +GOLDENROD3 = ManimColor("#CD9B1D") +GOLDENROD4 = ManimColor("#8B6914") +GRAY = ManimColor("#BEBEBE") +GRAY1 = ManimColor("#030303") +GRAY2 = ManimColor("#050505") +GRAY3 = ManimColor("#080808") +GRAY4 = ManimColor("#0A0A0A") +GRAY5 = ManimColor("#0D0D0D") +GRAY6 = ManimColor("#0F0F0F") +GRAY7 = ManimColor("#121212") +GRAY8 = ManimColor("#141414") +GRAY9 = ManimColor("#171717") +GRAY10 = ManimColor("#1A1A1A") +GRAY11 = ManimColor("#1C1C1C") +GRAY12 = ManimColor("#1F1F1F") +GRAY13 = ManimColor("#212121") +GRAY14 = ManimColor("#242424") +GRAY15 = ManimColor("#262626") +GRAY16 = ManimColor("#292929") +GRAY17 = ManimColor("#2B2B2B") +GRAY18 = ManimColor("#2E2E2E") +GRAY19 = ManimColor("#303030") +GRAY20 = ManimColor("#333333") +GRAY21 = ManimColor("#363636") +GRAY22 = ManimColor("#383838") +GRAY23 = ManimColor("#3B3B3B") +GRAY24 = ManimColor("#3D3D3D") +GRAY25 = ManimColor("#404040") +GRAY26 = ManimColor("#424242") +GRAY27 = ManimColor("#454545") +GRAY28 = ManimColor("#474747") +GRAY29 = ManimColor("#4A4A4A") +GRAY30 = ManimColor("#4D4D4D") +GRAY31 = ManimColor("#4F4F4F") +GRAY32 = ManimColor("#525252") +GRAY33 = ManimColor("#545454") +GRAY34 = ManimColor("#575757") +GRAY35 = ManimColor("#595959") +GRAY36 = ManimColor("#5C5C5C") +GRAY37 = ManimColor("#5E5E5E") +GRAY38 = ManimColor("#616161") +GRAY39 = ManimColor("#636363") +GRAY40 = ManimColor("#666666") +GRAY41 = ManimColor("#696969") +GRAY42 = ManimColor("#6B6B6B") +GRAY43 = ManimColor("#6E6E6E") +GRAY44 = ManimColor("#707070") +GRAY45 = ManimColor("#737373") +GRAY46 = ManimColor("#757575") +GRAY47 = ManimColor("#787878") +GRAY48 = ManimColor("#7A7A7A") +GRAY49 = ManimColor("#7D7D7D") +GRAY50 = ManimColor("#7F7F7F") +GRAY51 = ManimColor("#828282") +GRAY52 = ManimColor("#858585") +GRAY53 = ManimColor("#878787") +GRAY54 = ManimColor("#8A8A8A") +GRAY55 = ManimColor("#8C8C8C") +GRAY56 = ManimColor("#8F8F8F") +GRAY57 = ManimColor("#919191") +GRAY58 = ManimColor("#949494") +GRAY59 = ManimColor("#969696") +GRAY60 = ManimColor("#999999") +GRAY61 = ManimColor("#9C9C9C") +GRAY62 = ManimColor("#9E9E9E") +GRAY63 = ManimColor("#A1A1A1") +GRAY64 = ManimColor("#A3A3A3") +GRAY65 = ManimColor("#A6A6A6") +GRAY66 = ManimColor("#A8A8A8") +GRAY67 = ManimColor("#ABABAB") +GRAY68 = ManimColor("#ADADAD") +GRAY69 = ManimColor("#B0B0B0") +GRAY70 = ManimColor("#B3B3B3") +GRAY71 = ManimColor("#B5B5B5") +GRAY72 = ManimColor("#B8B8B8") +GRAY73 = ManimColor("#BABABA") +GRAY74 = ManimColor("#BDBDBD") +GRAY75 = ManimColor("#BFBFBF") +GRAY76 = ManimColor("#C2C2C2") +GRAY77 = ManimColor("#C4C4C4") +GRAY78 = ManimColor("#C7C7C7") +GRAY79 = ManimColor("#C9C9C9") +GRAY80 = ManimColor("#CCCCCC") +GRAY81 = ManimColor("#CFCFCF") +GRAY82 = ManimColor("#D1D1D1") +GRAY83 = ManimColor("#D4D4D4") +GRAY84 = ManimColor("#D6D6D6") +GRAY85 = ManimColor("#D9D9D9") +GRAY86 = ManimColor("#DBDBDB") +GRAY87 = ManimColor("#DEDEDE") +GRAY88 = ManimColor("#E0E0E0") +GRAY89 = ManimColor("#E3E3E3") +GRAY90 = ManimColor("#E5E5E5") +GRAY91 = ManimColor("#E8E8E8") +GRAY92 = ManimColor("#EBEBEB") +GRAY93 = ManimColor("#EDEDED") +GRAY94 = ManimColor("#F0F0F0") +GRAY95 = ManimColor("#F2F2F2") +GRAY97 = ManimColor("#F7F7F7") +GRAY98 = ManimColor("#FAFAFA") +GRAY99 = ManimColor("#FCFCFC") +GREEN1 = ManimColor("#00FF00") +GREEN2 = ManimColor("#00EE00") +GREEN3 = ManimColor("#00CD00") +GREEN4 = ManimColor("#008B00") +GREENYELLOW = ManimColor("#ADFF2F") +HONEYDEW1 = ManimColor("#F0FFF0") +HONEYDEW2 = ManimColor("#E0EEE0") +HONEYDEW3 = ManimColor("#C1CDC1") +HONEYDEW4 = ManimColor("#838B83") +HOTPINK = ManimColor("#FF69B4") +HOTPINK1 = ManimColor("#FF6EB4") +HOTPINK2 = ManimColor("#EE6AA7") +HOTPINK3 = ManimColor("#CD6090") +HOTPINK4 = ManimColor("#8B3A62") +INDIANRED = ManimColor("#CD5C5C") +INDIANRED1 = ManimColor("#FF6A6A") +INDIANRED2 = ManimColor("#EE6363") +INDIANRED3 = ManimColor("#CD5555") +INDIANRED4 = ManimColor("#8B3A3A") +IVORY1 = ManimColor("#FFFFF0") +IVORY2 = ManimColor("#EEEEE0") +IVORY3 = ManimColor("#CDCDC1") +IVORY4 = ManimColor("#8B8B83") +KHAKI = ManimColor("#F0E68C") +KHAKI1 = ManimColor("#FFF68F") +KHAKI2 = ManimColor("#EEE685") +KHAKI3 = ManimColor("#CDC673") +KHAKI4 = ManimColor("#8B864E") +LAVENDER = ManimColor("#E6E6FA") +LAVENDERBLUSH1 = ManimColor("#FFF0F5") +LAVENDERBLUSH2 = ManimColor("#EEE0E5") +LAVENDERBLUSH3 = ManimColor("#CDC1C5") +LAVENDERBLUSH4 = ManimColor("#8B8386") +LAWNGREEN = ManimColor("#7CFC00") +LEMONCHIFFON1 = ManimColor("#FFFACD") +LEMONCHIFFON2 = ManimColor("#EEE9BF") +LEMONCHIFFON3 = ManimColor("#CDC9A5") +LEMONCHIFFON4 = ManimColor("#8B8970") +LIGHT = ManimColor("#EEDD82") +LIGHTBLUE = ManimColor("#ADD8E6") +LIGHTBLUE1 = ManimColor("#BFEFFF") +LIGHTBLUE2 = ManimColor("#B2DFEE") +LIGHTBLUE3 = ManimColor("#9AC0CD") +LIGHTBLUE4 = ManimColor("#68838B") +LIGHTCORAL = ManimColor("#F08080") +LIGHTCYAN1 = ManimColor("#E0FFFF") +LIGHTCYAN2 = ManimColor("#D1EEEE") +LIGHTCYAN3 = ManimColor("#B4CDCD") +LIGHTCYAN4 = ManimColor("#7A8B8B") +LIGHTGOLDENROD1 = ManimColor("#FFEC8B") +LIGHTGOLDENROD2 = ManimColor("#EEDC82") +LIGHTGOLDENROD3 = ManimColor("#CDBE70") +LIGHTGOLDENROD4 = ManimColor("#8B814C") +LIGHTGOLDENRODYELLOW = ManimColor("#FAFAD2") +LIGHTGRAY = ManimColor("#D3D3D3") +LIGHTPINK = ManimColor("#FFB6C1") +LIGHTPINK1 = ManimColor("#FFAEB9") +LIGHTPINK2 = ManimColor("#EEA2AD") +LIGHTPINK3 = ManimColor("#CD8C95") +LIGHTPINK4 = ManimColor("#8B5F65") +LIGHTSALMON1 = ManimColor("#FFA07A") +LIGHTSALMON2 = ManimColor("#EE9572") +LIGHTSALMON3 = ManimColor("#CD8162") +LIGHTSALMON4 = ManimColor("#8B5742") +LIGHTSEAGREEN = ManimColor("#20B2AA") +LIGHTSKYBLUE = ManimColor("#87CEFA") +LIGHTSKYBLUE1 = ManimColor("#B0E2FF") +LIGHTSKYBLUE2 = ManimColor("#A4D3EE") +LIGHTSKYBLUE3 = ManimColor("#8DB6CD") +LIGHTSKYBLUE4 = ManimColor("#607B8B") +LIGHTSLATEBLUE = ManimColor("#8470FF") +LIGHTSLATEGRAY = ManimColor("#778899") +LIGHTSTEELBLUE = ManimColor("#B0C4DE") +LIGHTSTEELBLUE1 = ManimColor("#CAE1FF") +LIGHTSTEELBLUE2 = ManimColor("#BCD2EE") +LIGHTSTEELBLUE3 = ManimColor("#A2B5CD") +LIGHTSTEELBLUE4 = ManimColor("#6E7B8B") +LIGHTYELLOW1 = ManimColor("#FFFFE0") +LIGHTYELLOW2 = ManimColor("#EEEED1") +LIGHTYELLOW3 = ManimColor("#CDCDB4") +LIGHTYELLOW4 = ManimColor("#8B8B7A") +LIMEGREEN = ManimColor("#32CD32") +LINEN = ManimColor("#FAF0E6") +MAGENTA = ManimColor("#FF00FF") +MAGENTA2 = ManimColor("#EE00EE") +MAGENTA3 = ManimColor("#CD00CD") +MAGENTA4 = ManimColor("#8B008B") +MAROON = ManimColor("#B03060") +MAROON1 = ManimColor("#FF34B3") +MAROON2 = ManimColor("#EE30A7") +MAROON3 = ManimColor("#CD2990") +MAROON4 = ManimColor("#8B1C62") +MEDIUM = ManimColor("#66CDAA") +MEDIUMAQUAMARINE = ManimColor("#66CDAA") +MEDIUMBLUE = ManimColor("#0000CD") +MEDIUMORCHID = ManimColor("#BA55D3") +MEDIUMORCHID1 = ManimColor("#E066FF") +MEDIUMORCHID2 = ManimColor("#D15FEE") +MEDIUMORCHID3 = ManimColor("#B452CD") +MEDIUMORCHID4 = ManimColor("#7A378B") +MEDIUMPURPLE = ManimColor("#9370DB") +MEDIUMPURPLE1 = ManimColor("#AB82FF") +MEDIUMPURPLE2 = ManimColor("#9F79EE") +MEDIUMPURPLE3 = ManimColor("#8968CD") +MEDIUMPURPLE4 = ManimColor("#5D478B") +MEDIUMSEAGREEN = ManimColor("#3CB371") +MEDIUMSLATEBLUE = ManimColor("#7B68EE") +MEDIUMSPRINGGREEN = ManimColor("#00FA9A") +MEDIUMTURQUOISE = ManimColor("#48D1CC") +MEDIUMVIOLETRED = ManimColor("#C71585") +MIDNIGHTBLUE = ManimColor("#191970") +MINTCREAM = ManimColor("#F5FFFA") +MISTYROSE1 = ManimColor("#FFE4E1") +MISTYROSE2 = ManimColor("#EED5D2") +MISTYROSE3 = ManimColor("#CDB7B5") +MISTYROSE4 = ManimColor("#8B7D7B") +MOCCASIN = ManimColor("#FFE4B5") +NAVAJOWHITE1 = ManimColor("#FFDEAD") +NAVAJOWHITE2 = ManimColor("#EECFA1") +NAVAJOWHITE3 = ManimColor("#CDB38B") +NAVAJOWHITE4 = ManimColor("#8B795E") +NAVYBLUE = ManimColor("#000080") +OLDLACE = ManimColor("#FDF5E6") +OLIVEDRAB = ManimColor("#6B8E23") +OLIVEDRAB1 = ManimColor("#C0FF3E") +OLIVEDRAB2 = ManimColor("#B3EE3A") +OLIVEDRAB4 = ManimColor("#698B22") +ORANGE1 = ManimColor("#FFA500") +ORANGE2 = ManimColor("#EE9A00") +ORANGE3 = ManimColor("#CD8500") +ORANGE4 = ManimColor("#8B5A00") +ORANGERED1 = ManimColor("#FF4500") +ORANGERED2 = ManimColor("#EE4000") +ORANGERED3 = ManimColor("#CD3700") +ORANGERED4 = ManimColor("#8B2500") +ORCHID = ManimColor("#DA70D6") +ORCHID1 = ManimColor("#FF83FA") +ORCHID2 = ManimColor("#EE7AE9") +ORCHID3 = ManimColor("#CD69C9") +ORCHID4 = ManimColor("#8B4789") +PALE = ManimColor("#DB7093") +PALEGOLDENROD = ManimColor("#EEE8AA") +PALEGREEN = ManimColor("#98FB98") +PALEGREEN1 = ManimColor("#9AFF9A") +PALEGREEN2 = ManimColor("#90EE90") +PALEGREEN3 = ManimColor("#7CCD7C") +PALEGREEN4 = ManimColor("#548B54") +PALETURQUOISE = ManimColor("#AFEEEE") +PALETURQUOISE1 = ManimColor("#BBFFFF") +PALETURQUOISE2 = ManimColor("#AEEEEE") +PALETURQUOISE3 = ManimColor("#96CDCD") +PALETURQUOISE4 = ManimColor("#668B8B") +PALEVIOLETRED = ManimColor("#DB7093") +PALEVIOLETRED1 = ManimColor("#FF82AB") +PALEVIOLETRED2 = ManimColor("#EE799F") +PALEVIOLETRED3 = ManimColor("#CD6889") +PALEVIOLETRED4 = ManimColor("#8B475D") +PAPAYAWHIP = ManimColor("#FFEFD5") +PEACHPUFF1 = ManimColor("#FFDAB9") +PEACHPUFF2 = ManimColor("#EECBAD") +PEACHPUFF3 = ManimColor("#CDAF95") +PEACHPUFF4 = ManimColor("#8B7765") +PINK = ManimColor("#FFC0CB") +PINK1 = ManimColor("#FFB5C5") +PINK2 = ManimColor("#EEA9B8") +PINK3 = ManimColor("#CD919E") +PINK4 = ManimColor("#8B636C") +PLUM = ManimColor("#DDA0DD") +PLUM1 = ManimColor("#FFBBFF") +PLUM2 = ManimColor("#EEAEEE") +PLUM3 = ManimColor("#CD96CD") +PLUM4 = ManimColor("#8B668B") +POWDERBLUE = ManimColor("#B0E0E6") +PURPLE = ManimColor("#A020F0") +PURPLE1 = ManimColor("#9B30FF") +PURPLE2 = ManimColor("#912CEE") +PURPLE3 = ManimColor("#7D26CD") +PURPLE4 = ManimColor("#551A8B") +RED1 = ManimColor("#FF0000") +RED2 = ManimColor("#EE0000") +RED3 = ManimColor("#CD0000") +RED4 = ManimColor("#8B0000") +ROSYBROWN = ManimColor("#BC8F8F") +ROSYBROWN1 = ManimColor("#FFC1C1") +ROSYBROWN2 = ManimColor("#EEB4B4") +ROSYBROWN3 = ManimColor("#CD9B9B") +ROSYBROWN4 = ManimColor("#8B6969") +ROYALBLUE = ManimColor("#4169E1") +ROYALBLUE1 = ManimColor("#4876FF") +ROYALBLUE2 = ManimColor("#436EEE") +ROYALBLUE3 = ManimColor("#3A5FCD") +ROYALBLUE4 = ManimColor("#27408B") +SADDLEBROWN = ManimColor("#8B4513") +SALMON = ManimColor("#FA8072") +SALMON1 = ManimColor("#FF8C69") +SALMON2 = ManimColor("#EE8262") +SALMON3 = ManimColor("#CD7054") +SALMON4 = ManimColor("#8B4C39") +SANDYBROWN = ManimColor("#F4A460") +SEAGREEN1 = ManimColor("#54FF9F") +SEAGREEN2 = ManimColor("#4EEE94") +SEAGREEN3 = ManimColor("#43CD80") +SEAGREEN4 = ManimColor("#2E8B57") +SEASHELL1 = ManimColor("#FFF5EE") +SEASHELL2 = ManimColor("#EEE5DE") +SEASHELL3 = ManimColor("#CDC5BF") +SEASHELL4 = ManimColor("#8B8682") +SIENNA = ManimColor("#A0522D") +SIENNA1 = ManimColor("#FF8247") +SIENNA2 = ManimColor("#EE7942") +SIENNA3 = ManimColor("#CD6839") +SIENNA4 = ManimColor("#8B4726") +SKYBLUE = ManimColor("#87CEEB") +SKYBLUE1 = ManimColor("#87CEFF") +SKYBLUE2 = ManimColor("#7EC0EE") +SKYBLUE3 = ManimColor("#6CA6CD") +SKYBLUE4 = ManimColor("#4A708B") +SLATEBLUE = ManimColor("#6A5ACD") +SLATEBLUE1 = ManimColor("#836FFF") +SLATEBLUE2 = ManimColor("#7A67EE") +SLATEBLUE3 = ManimColor("#6959CD") +SLATEBLUE4 = ManimColor("#473C8B") +SLATEGRAY = ManimColor("#708090") +SLATEGRAY1 = ManimColor("#C6E2FF") +SLATEGRAY2 = ManimColor("#B9D3EE") +SLATEGRAY3 = ManimColor("#9FB6CD") +SLATEGRAY4 = ManimColor("#6C7B8B") +SNOW1 = ManimColor("#FFFAFA") +SNOW2 = ManimColor("#EEE9E9") +SNOW3 = ManimColor("#CDC9C9") +SNOW4 = ManimColor("#8B8989") +SPRINGGREEN1 = ManimColor("#00FF7F") +SPRINGGREEN2 = ManimColor("#00EE76") +SPRINGGREEN3 = ManimColor("#00CD66") +SPRINGGREEN4 = ManimColor("#008B45") +STEELBLUE = ManimColor("#4682B4") +STEELBLUE1 = ManimColor("#63B8FF") +STEELBLUE2 = ManimColor("#5CACEE") +STEELBLUE3 = ManimColor("#4F94CD") +STEELBLUE4 = ManimColor("#36648B") +TAN = ManimColor("#D2B48C") +TAN1 = ManimColor("#FFA54F") +TAN2 = ManimColor("#EE9A49") +TAN3 = ManimColor("#CD853F") +TAN4 = ManimColor("#8B5A2B") +THISTLE = ManimColor("#D8BFD8") +THISTLE1 = ManimColor("#FFE1FF") +THISTLE2 = ManimColor("#EED2EE") +THISTLE3 = ManimColor("#CDB5CD") +THISTLE4 = ManimColor("#8B7B8B") +TOMATO1 = ManimColor("#FF6347") +TOMATO2 = ManimColor("#EE5C42") +TOMATO3 = ManimColor("#CD4F39") +TOMATO4 = ManimColor("#8B3626") +TURQUOISE = ManimColor("#40E0D0") +TURQUOISE1 = ManimColor("#00F5FF") +TURQUOISE2 = ManimColor("#00E5EE") +TURQUOISE3 = ManimColor("#00C5CD") +TURQUOISE4 = ManimColor("#00868B") +VIOLET = ManimColor("#EE82EE") +VIOLETRED = ManimColor("#D02090") +VIOLETRED1 = ManimColor("#FF3E96") +VIOLETRED2 = ManimColor("#EE3A8C") +VIOLETRED3 = ManimColor("#CD3278") +VIOLETRED4 = ManimColor("#8B2252") +WHEAT = ManimColor("#F5DEB3") +WHEAT1 = ManimColor("#FFE7BA") +WHEAT2 = ManimColor("#EED8AE") +WHEAT3 = ManimColor("#CDBA96") +WHEAT4 = ManimColor("#8B7E66") +WHITE = ManimColor("#FFFFFF") +WHITESMOKE = ManimColor("#F5F5F5") +YELLOW1 = ManimColor("#FFFF00") +YELLOW2 = ManimColor("#EEEE00") +YELLOW3 = ManimColor("#CDCD00") +YELLOW4 = ManimColor("#8B8B00") +YELLOWGREEN = ManimColor("#9ACD32") diff --git a/manim/utils/color/XKCD.py b/manim/utils/color/XKCD.py new file mode 100644 index 0000000000..d8ee93bac5 --- /dev/null +++ b/manim/utils/color/XKCD.py @@ -0,0 +1,949 @@ +"""Colors from the XKCD Color Name Survey + +XKCD is a popular `web comic `__ created by Randall Munroe. +His "`Color Name Survey `__" (with +200000 participants) resulted in a list of nearly 1000 color names. + +While the ``XKCD`` module is exposed to Manim's global name space, the colors included +in it are not. This means that in order to use the colors, access them via the module name: + +.. code:: pycon + + >>> from manim import XKCD + >>> XKCD.MANGO + ManimColor('#FFA62B') + + +List of Color Constants +----------------------- + +These hex values are non official approximate values intended to simulate the colors in HTML, +taken from https://www.w3schools.com/colors/colors_xkcd.asp. + +.. automanimcolormodule:: manim.utils.color.XKCD + +""" +from .core import ManimColor + +ACIDGREEN = ManimColor("#8FFE09") +ADOBE = ManimColor("#BD6C48") +ALGAE = ManimColor("#54AC68") +ALGAEGREEN = ManimColor("#21C36F") +ALMOSTBLACK = ManimColor("#070D0D") +AMBER = ManimColor("#FEB308") +AMETHYST = ManimColor("#9B5FC0") +APPLE = ManimColor("#6ECB3C") +APPLEGREEN = ManimColor("#76CD26") +APRICOT = ManimColor("#FFB16D") +AQUA = ManimColor("#13EAC9") +AQUABLUE = ManimColor("#02D8E9") +AQUAGREEN = ManimColor("#12E193") +AQUAMARINE = ManimColor("#2EE8BB") +ARMYGREEN = ManimColor("#4B5D16") +ASPARAGUS = ManimColor("#77AB56") +AUBERGINE = ManimColor("#3D0734") +AUBURN = ManimColor("#9A3001") +AVOCADO = ManimColor("#90B134") +AVOCADOGREEN = ManimColor("#87A922") +AZUL = ManimColor("#1D5DEC") +AZURE = ManimColor("#069AF3") +BABYBLUE = ManimColor("#A2CFFE") +BABYGREEN = ManimColor("#8CFF9E") +BABYPINK = ManimColor("#FFB7CE") +BABYPOO = ManimColor("#AB9004") +BABYPOOP = ManimColor("#937C00") +BABYPOOPGREEN = ManimColor("#8F9805") +BABYPUKEGREEN = ManimColor("#B6C406") +BABYPURPLE = ManimColor("#CA9BF7") +BABYSHITBROWN = ManimColor("#AD900D") +BABYSHITGREEN = ManimColor("#889717") +BANANA = ManimColor("#FFFF7E") +BANANAYELLOW = ManimColor("#FAFE4B") +BARBIEPINK = ManimColor("#FE46A5") +BARFGREEN = ManimColor("#94AC02") +BARNEY = ManimColor("#AC1DB8") +BARNEYPURPLE = ManimColor("#A00498") +BATTLESHIPGREY = ManimColor("#6B7C85") +BEIGE = ManimColor("#E6DAA6") +BERRY = ManimColor("#990F4B") +BILE = ManimColor("#B5C306") +BLACK = ManimColor("#000000") +BLAND = ManimColor("#AFA88B") +BLOOD = ManimColor("#770001") +BLOODORANGE = ManimColor("#FE4B03") +BLOODRED = ManimColor("#980002") +BLUE = ManimColor("#0343DF") +BLUEBERRY = ManimColor("#464196") +BLUEBLUE = ManimColor("#2242C7") +BLUEGREEN = ManimColor("#0F9B8E") +BLUEGREY = ManimColor("#85A3B2") +BLUEPURPLE = ManimColor("#5A06EF") +BLUEVIOLET = ManimColor("#5D06E9") +BLUEWITHAHINTOFPURPLE = ManimColor("#533CC6") +BLUEYGREEN = ManimColor("#2BB179") +BLUEYGREY = ManimColor("#89A0B0") +BLUEYPURPLE = ManimColor("#6241C7") +BLUISH = ManimColor("#2976BB") +BLUISHGREEN = ManimColor("#10A674") +BLUISHGREY = ManimColor("#748B97") +BLUISHPURPLE = ManimColor("#703BE7") +BLURPLE = ManimColor("#5539CC") +BLUSH = ManimColor("#F29E8E") +BLUSHPINK = ManimColor("#FE828C") +BOOGER = ManimColor("#9BB53C") +BOOGERGREEN = ManimColor("#96B403") +BORDEAUX = ManimColor("#7B002C") +BORINGGREEN = ManimColor("#63B365") +BOTTLEGREEN = ManimColor("#044A05") +BRICK = ManimColor("#A03623") +BRICKORANGE = ManimColor("#C14A09") +BRICKRED = ManimColor("#8F1402") +BRIGHTAQUA = ManimColor("#0BF9EA") +BRIGHTBLUE = ManimColor("#0165FC") +BRIGHTCYAN = ManimColor("#41FDFE") +BRIGHTGREEN = ManimColor("#01FF07") +BRIGHTLAVENDER = ManimColor("#C760FF") +BRIGHTLIGHTBLUE = ManimColor("#26F7FD") +BRIGHTLIGHTGREEN = ManimColor("#2DFE54") +BRIGHTLILAC = ManimColor("#C95EFB") +BRIGHTLIME = ManimColor("#87FD05") +BRIGHTLIMEGREEN = ManimColor("#65FE08") +BRIGHTMAGENTA = ManimColor("#FF08E8") +BRIGHTOLIVE = ManimColor("#9CBB04") +BRIGHTORANGE = ManimColor("#FF5B00") +BRIGHTPINK = ManimColor("#FE01B1") +BRIGHTPURPLE = ManimColor("#BE03FD") +BRIGHTRED = ManimColor("#FF000D") +BRIGHTSEAGREEN = ManimColor("#05FFA6") +BRIGHTSKYBLUE = ManimColor("#02CCFE") +BRIGHTTEAL = ManimColor("#01F9C6") +BRIGHTTURQUOISE = ManimColor("#0FFEF9") +BRIGHTVIOLET = ManimColor("#AD0AFD") +BRIGHTYELLOW = ManimColor("#FFFD01") +BRIGHTYELLOWGREEN = ManimColor("#9DFF00") +BRITISHRACINGGREEN = ManimColor("#05480D") +BRONZE = ManimColor("#A87900") +BROWN = ManimColor("#653700") +BROWNGREEN = ManimColor("#706C11") +BROWNGREY = ManimColor("#8D8468") +BROWNISH = ManimColor("#9C6D57") +BROWNISHGREEN = ManimColor("#6A6E09") +BROWNISHGREY = ManimColor("#86775F") +BROWNISHORANGE = ManimColor("#CB7723") +BROWNISHPINK = ManimColor("#C27E79") +BROWNISHPURPLE = ManimColor("#76424E") +BROWNISHRED = ManimColor("#9E3623") +BROWNISHYELLOW = ManimColor("#C9B003") +BROWNORANGE = ManimColor("#B96902") +BROWNRED = ManimColor("#922B05") +BROWNYELLOW = ManimColor("#B29705") +BROWNYGREEN = ManimColor("#6F6C0A") +BROWNYORANGE = ManimColor("#CA6B02") +BRUISE = ManimColor("#7E4071") +BUBBLEGUM = ManimColor("#FF6CB5") +BUBBLEGUMPINK = ManimColor("#FF69AF") +BUFF = ManimColor("#FEF69E") +BURGUNDY = ManimColor("#610023") +BURNTORANGE = ManimColor("#C04E01") +BURNTRED = ManimColor("#9F2305") +BURNTSIENA = ManimColor("#B75203") +BURNTSIENNA = ManimColor("#B04E0F") +BURNTUMBER = ManimColor("#A0450E") +BURNTYELLOW = ManimColor("#D5AB09") +BURPLE = ManimColor("#6832E3") +BUTTER = ManimColor("#FFFF81") +BUTTERSCOTCH = ManimColor("#FDB147") +BUTTERYELLOW = ManimColor("#FFFD74") +CADETBLUE = ManimColor("#4E7496") +CAMEL = ManimColor("#C69F59") +CAMO = ManimColor("#7F8F4E") +CAMOGREEN = ManimColor("#526525") +CAMOUFLAGEGREEN = ManimColor("#4B6113") +CANARY = ManimColor("#FDFF63") +CANARYYELLOW = ManimColor("#FFFE40") +CANDYPINK = ManimColor("#FF63E9") +CARAMEL = ManimColor("#AF6F09") +CARMINE = ManimColor("#9D0216") +CARNATION = ManimColor("#FD798F") +CARNATIONPINK = ManimColor("#FF7FA7") +CAROLINABLUE = ManimColor("#8AB8FE") +CELADON = ManimColor("#BEFDB7") +CELERY = ManimColor("#C1FD95") +CEMENT = ManimColor("#A5A391") +CERISE = ManimColor("#DE0C62") +CERULEAN = ManimColor("#0485D1") +CERULEANBLUE = ManimColor("#056EEE") +CHARCOAL = ManimColor("#343837") +CHARCOALGREY = ManimColor("#3C4142") +CHARTREUSE = ManimColor("#C1F80A") +CHERRY = ManimColor("#CF0234") +CHERRYRED = ManimColor("#F7022A") +CHESTNUT = ManimColor("#742802") +CHOCOLATE = ManimColor("#3D1C02") +CHOCOLATEBROWN = ManimColor("#411900") +CINNAMON = ManimColor("#AC4F06") +CLARET = ManimColor("#680018") +CLAY = ManimColor("#B66A50") +CLAYBROWN = ManimColor("#B2713D") +CLEARBLUE = ManimColor("#247AFD") +COBALT = ManimColor("#1E488F") +COBALTBLUE = ManimColor("#030AA7") +COCOA = ManimColor("#875F42") +COFFEE = ManimColor("#A6814C") +COOLBLUE = ManimColor("#4984B8") +COOLGREEN = ManimColor("#33B864") +COOLGREY = ManimColor("#95A3A6") +COPPER = ManimColor("#B66325") +CORAL = ManimColor("#FC5A50") +CORALPINK = ManimColor("#FF6163") +CORNFLOWER = ManimColor("#6A79F7") +CORNFLOWERBLUE = ManimColor("#5170D7") +CRANBERRY = ManimColor("#9E003A") +CREAM = ManimColor("#FFFFC2") +CREME = ManimColor("#FFFFB6") +CRIMSON = ManimColor("#8C000F") +CUSTARD = ManimColor("#FFFD78") +CYAN = ManimColor("#00FFFF") +DANDELION = ManimColor("#FEDF08") +DARK = ManimColor("#1B2431") +DARKAQUA = ManimColor("#05696B") +DARKAQUAMARINE = ManimColor("#017371") +DARKBEIGE = ManimColor("#AC9362") +DARKBLUE = ManimColor("#030764") +DARKBLUEGREEN = ManimColor("#005249") +DARKBLUEGREY = ManimColor("#1F3B4D") +DARKBROWN = ManimColor("#341C02") +DARKCORAL = ManimColor("#CF524E") +DARKCREAM = ManimColor("#FFF39A") +DARKCYAN = ManimColor("#0A888A") +DARKFORESTGREEN = ManimColor("#002D04") +DARKFUCHSIA = ManimColor("#9D0759") +DARKGOLD = ManimColor("#B59410") +DARKGRASSGREEN = ManimColor("#388004") +DARKGREEN = ManimColor("#054907") +DARKGREENBLUE = ManimColor("#1F6357") +DARKGREY = ManimColor("#363737") +DARKGREYBLUE = ManimColor("#29465B") +DARKHOTPINK = ManimColor("#D90166") +DARKINDIGO = ManimColor("#1F0954") +DARKISHBLUE = ManimColor("#014182") +DARKISHGREEN = ManimColor("#287C37") +DARKISHPINK = ManimColor("#DA467D") +DARKISHPURPLE = ManimColor("#751973") +DARKISHRED = ManimColor("#A90308") +DARKKHAKI = ManimColor("#9B8F55") +DARKLAVENDER = ManimColor("#856798") +DARKLILAC = ManimColor("#9C6DA5") +DARKLIME = ManimColor("#84B701") +DARKLIMEGREEN = ManimColor("#7EBD01") +DARKMAGENTA = ManimColor("#960056") +DARKMAROON = ManimColor("#3C0008") +DARKMAUVE = ManimColor("#874C62") +DARKMINT = ManimColor("#48C072") +DARKMINTGREEN = ManimColor("#20C073") +DARKMUSTARD = ManimColor("#A88905") +DARKNAVY = ManimColor("#000435") +DARKNAVYBLUE = ManimColor("#00022E") +DARKOLIVE = ManimColor("#373E02") +DARKOLIVEGREEN = ManimColor("#3C4D03") +DARKORANGE = ManimColor("#C65102") +DARKPASTELGREEN = ManimColor("#56AE57") +DARKPEACH = ManimColor("#DE7E5D") +DARKPERIWINKLE = ManimColor("#665FD1") +DARKPINK = ManimColor("#CB416B") +DARKPLUM = ManimColor("#3F012C") +DARKPURPLE = ManimColor("#35063E") +DARKRED = ManimColor("#840000") +DARKROSE = ManimColor("#B5485D") +DARKROYALBLUE = ManimColor("#02066F") +DARKSAGE = ManimColor("#598556") +DARKSALMON = ManimColor("#C85A53") +DARKSAND = ManimColor("#A88F59") +DARKSEAFOAM = ManimColor("#1FB57A") +DARKSEAFOAMGREEN = ManimColor("#3EAF76") +DARKSEAGREEN = ManimColor("#11875D") +DARKSKYBLUE = ManimColor("#448EE4") +DARKSLATEBLUE = ManimColor("#214761") +DARKTAN = ManimColor("#AF884A") +DARKTAUPE = ManimColor("#7F684E") +DARKTEAL = ManimColor("#014D4E") +DARKTURQUOISE = ManimColor("#045C5A") +DARKVIOLET = ManimColor("#34013F") +DARKYELLOW = ManimColor("#D5B60A") +DARKYELLOWGREEN = ManimColor("#728F02") +DEEPAQUA = ManimColor("#08787F") +DEEPBLUE = ManimColor("#040273") +DEEPBROWN = ManimColor("#410200") +DEEPGREEN = ManimColor("#02590F") +DEEPLAVENDER = ManimColor("#8D5EB7") +DEEPLILAC = ManimColor("#966EBD") +DEEPMAGENTA = ManimColor("#A0025C") +DEEPORANGE = ManimColor("#DC4D01") +DEEPPINK = ManimColor("#CB0162") +DEEPPURPLE = ManimColor("#36013F") +DEEPRED = ManimColor("#9A0200") +DEEPROSE = ManimColor("#C74767") +DEEPSEABLUE = ManimColor("#015482") +DEEPSKYBLUE = ManimColor("#0D75F8") +DEEPTEAL = ManimColor("#00555A") +DEEPTURQUOISE = ManimColor("#017374") +DEEPVIOLET = ManimColor("#490648") +DENIM = ManimColor("#3B638C") +DENIMBLUE = ManimColor("#3B5B92") +DESERT = ManimColor("#CCAD60") +DIARRHEA = ManimColor("#9F8303") +DIRT = ManimColor("#8A6E45") +DIRTBROWN = ManimColor("#836539") +DIRTYBLUE = ManimColor("#3F829D") +DIRTYGREEN = ManimColor("#667E2C") +DIRTYORANGE = ManimColor("#C87606") +DIRTYPINK = ManimColor("#CA7B80") +DIRTYPURPLE = ManimColor("#734A65") +DIRTYYELLOW = ManimColor("#CDC50A") +DODGERBLUE = ManimColor("#3E82FC") +DRAB = ManimColor("#828344") +DRABGREEN = ManimColor("#749551") +DRIEDBLOOD = ManimColor("#4B0101") +DUCKEGGBLUE = ManimColor("#C3FBF4") +DULLBLUE = ManimColor("#49759C") +DULLBROWN = ManimColor("#876E4B") +DULLGREEN = ManimColor("#74A662") +DULLORANGE = ManimColor("#D8863B") +DULLPINK = ManimColor("#D5869D") +DULLPURPLE = ManimColor("#84597E") +DULLRED = ManimColor("#BB3F3F") +DULLTEAL = ManimColor("#5F9E8F") +DULLYELLOW = ManimColor("#EEDC5B") +DUSK = ManimColor("#4E5481") +DUSKBLUE = ManimColor("#26538D") +DUSKYBLUE = ManimColor("#475F94") +DUSKYPINK = ManimColor("#CC7A8B") +DUSKYPURPLE = ManimColor("#895B7B") +DUSKYROSE = ManimColor("#BA6873") +DUST = ManimColor("#B2996E") +DUSTYBLUE = ManimColor("#5A86AD") +DUSTYGREEN = ManimColor("#76A973") +DUSTYLAVENDER = ManimColor("#AC86A8") +DUSTYORANGE = ManimColor("#F0833A") +DUSTYPINK = ManimColor("#D58A94") +DUSTYPURPLE = ManimColor("#825F87") +DUSTYRED = ManimColor("#B9484E") +DUSTYROSE = ManimColor("#C0737A") +DUSTYTEAL = ManimColor("#4C9085") +EARTH = ManimColor("#A2653E") +EASTERGREEN = ManimColor("#8CFD7E") +EASTERPURPLE = ManimColor("#C071FE") +ECRU = ManimColor("#FEFFCA") +EGGPLANT = ManimColor("#380835") +EGGPLANTPURPLE = ManimColor("#430541") +EGGSHELL = ManimColor("#FFFCC4") +EGGSHELLBLUE = ManimColor("#C4FFF7") +ELECTRICBLUE = ManimColor("#0652FF") +ELECTRICGREEN = ManimColor("#21FC0D") +ELECTRICLIME = ManimColor("#A8FF04") +ELECTRICPINK = ManimColor("#FF0490") +ELECTRICPURPLE = ManimColor("#AA23FF") +EMERALD = ManimColor("#01A049") +EMERALDGREEN = ManimColor("#028F1E") +EVERGREEN = ManimColor("#05472A") +FADEDBLUE = ManimColor("#658CBB") +FADEDGREEN = ManimColor("#7BB274") +FADEDORANGE = ManimColor("#F0944D") +FADEDPINK = ManimColor("#DE9DAC") +FADEDPURPLE = ManimColor("#916E99") +FADEDRED = ManimColor("#D3494E") +FADEDYELLOW = ManimColor("#FEFF7F") +FAWN = ManimColor("#CFAF7B") +FERN = ManimColor("#63A950") +FERNGREEN = ManimColor("#548D44") +FIREENGINERED = ManimColor("#FE0002") +FLATBLUE = ManimColor("#3C73A8") +FLATGREEN = ManimColor("#699D4C") +FLUORESCENTGREEN = ManimColor("#08FF08") +FLUROGREEN = ManimColor("#0AFF02") +FOAMGREEN = ManimColor("#90FDA9") +FOREST = ManimColor("#0B5509") +FORESTGREEN = ManimColor("#06470C") +FORRESTGREEN = ManimColor("#154406") +FRENCHBLUE = ManimColor("#436BAD") +FRESHGREEN = ManimColor("#69D84F") +FROGGREEN = ManimColor("#58BC08") +FUCHSIA = ManimColor("#ED0DD9") +GOLD = ManimColor("#DBB40C") +GOLDEN = ManimColor("#F5BF03") +GOLDENBROWN = ManimColor("#B27A01") +GOLDENROD = ManimColor("#F9BC08") +GOLDENYELLOW = ManimColor("#FEC615") +GRAPE = ManimColor("#6C3461") +GRAPEFRUIT = ManimColor("#FD5956") +GRAPEPURPLE = ManimColor("#5D1451") +GRASS = ManimColor("#5CAC2D") +GRASSGREEN = ManimColor("#3F9B0B") +GRASSYGREEN = ManimColor("#419C03") +GREEN = ManimColor("#15B01A") +GREENAPPLE = ManimColor("#5EDC1F") +GREENBLUE = ManimColor("#01C08D") +GREENBROWN = ManimColor("#544E03") +GREENGREY = ManimColor("#77926F") +GREENISH = ManimColor("#40A368") +GREENISHBEIGE = ManimColor("#C9D179") +GREENISHBLUE = ManimColor("#0B8B87") +GREENISHBROWN = ManimColor("#696112") +GREENISHCYAN = ManimColor("#2AFEB7") +GREENISHGREY = ManimColor("#96AE8D") +GREENISHTAN = ManimColor("#BCCB7A") +GREENISHTEAL = ManimColor("#32BF84") +GREENISHTURQUOISE = ManimColor("#00FBB0") +GREENISHYELLOW = ManimColor("#CDFD02") +GREENTEAL = ManimColor("#0CB577") +GREENYBLUE = ManimColor("#42B395") +GREENYBROWN = ManimColor("#696006") +GREENYELLOW = ManimColor("#B5CE08") +GREENYGREY = ManimColor("#7EA07A") +GREENYYELLOW = ManimColor("#C6F808") +GREY = ManimColor("#929591") +GREYBLUE = ManimColor("#647D8E") +GREYBROWN = ManimColor("#7F7053") +GREYGREEN = ManimColor("#86A17D") +GREYISH = ManimColor("#A8A495") +GREYISHBLUE = ManimColor("#5E819D") +GREYISHBROWN = ManimColor("#7A6A4F") +GREYISHGREEN = ManimColor("#82A67D") +GREYISHPINK = ManimColor("#C88D94") +GREYISHPURPLE = ManimColor("#887191") +GREYISHTEAL = ManimColor("#719F91") +GREYPINK = ManimColor("#C3909B") +GREYPURPLE = ManimColor("#826D8C") +GREYTEAL = ManimColor("#5E9B8A") +GROSSGREEN = ManimColor("#A0BF16") +GUNMETAL = ManimColor("#536267") +HAZEL = ManimColor("#8E7618") +HEATHER = ManimColor("#A484AC") +HELIOTROPE = ManimColor("#D94FF5") +HIGHLIGHTERGREEN = ManimColor("#1BFC06") +HOSPITALGREEN = ManimColor("#9BE5AA") +HOTGREEN = ManimColor("#25FF29") +HOTMAGENTA = ManimColor("#F504C9") +HOTPINK = ManimColor("#FF028D") +HOTPURPLE = ManimColor("#CB00F5") +HUNTERGREEN = ManimColor("#0B4008") +ICE = ManimColor("#D6FFFA") +ICEBLUE = ManimColor("#D7FFFE") +ICKYGREEN = ManimColor("#8FAE22") +INDIANRED = ManimColor("#850E04") +INDIGO = ManimColor("#380282") +INDIGOBLUE = ManimColor("#3A18B1") +IRIS = ManimColor("#6258C4") +IRISHGREEN = ManimColor("#019529") +IVORY = ManimColor("#FFFFCB") +JADE = ManimColor("#1FA774") +JADEGREEN = ManimColor("#2BAF6A") +JUNGLEGREEN = ManimColor("#048243") +KELLEYGREEN = ManimColor("#009337") +KELLYGREEN = ManimColor("#02AB2E") +KERMITGREEN = ManimColor("#5CB200") +KEYLIME = ManimColor("#AEFF6E") +KHAKI = ManimColor("#AAA662") +KHAKIGREEN = ManimColor("#728639") +KIWI = ManimColor("#9CEF43") +KIWIGREEN = ManimColor("#8EE53F") +LAVENDER = ManimColor("#C79FEF") +LAVENDERBLUE = ManimColor("#8B88F8") +LAVENDERPINK = ManimColor("#DD85D7") +LAWNGREEN = ManimColor("#4DA409") +LEAF = ManimColor("#71AA34") +LEAFGREEN = ManimColor("#5CA904") +LEAFYGREEN = ManimColor("#51B73B") +LEATHER = ManimColor("#AC7434") +LEMON = ManimColor("#FDFF52") +LEMONGREEN = ManimColor("#ADF802") +LEMONLIME = ManimColor("#BFFE28") +LEMONYELLOW = ManimColor("#FDFF38") +LICHEN = ManimColor("#8FB67B") +LIGHTAQUA = ManimColor("#8CFFDB") +LIGHTAQUAMARINE = ManimColor("#7BFDC7") +LIGHTBEIGE = ManimColor("#FFFEB6") +LIGHTBLUE = ManimColor("#7BC8F6") +LIGHTBLUEGREEN = ManimColor("#7EFBB3") +LIGHTBLUEGREY = ManimColor("#B7C9E2") +LIGHTBLUISHGREEN = ManimColor("#76FDA8") +LIGHTBRIGHTGREEN = ManimColor("#53FE5C") +LIGHTBROWN = ManimColor("#AD8150") +LIGHTBURGUNDY = ManimColor("#A8415B") +LIGHTCYAN = ManimColor("#ACFFFC") +LIGHTEGGPLANT = ManimColor("#894585") +LIGHTERGREEN = ManimColor("#75FD63") +LIGHTERPURPLE = ManimColor("#A55AF4") +LIGHTFORESTGREEN = ManimColor("#4F9153") +LIGHTGOLD = ManimColor("#FDDC5C") +LIGHTGRASSGREEN = ManimColor("#9AF764") +LIGHTGREEN = ManimColor("#76FF7B") +LIGHTGREENBLUE = ManimColor("#56FCA2") +LIGHTGREENISHBLUE = ManimColor("#63F7B4") +LIGHTGREY = ManimColor("#D8DCD6") +LIGHTGREYBLUE = ManimColor("#9DBCD4") +LIGHTGREYGREEN = ManimColor("#B7E1A1") +LIGHTINDIGO = ManimColor("#6D5ACF") +LIGHTISHBLUE = ManimColor("#3D7AFD") +LIGHTISHGREEN = ManimColor("#61E160") +LIGHTISHPURPLE = ManimColor("#A552E6") +LIGHTISHRED = ManimColor("#FE2F4A") +LIGHTKHAKI = ManimColor("#E6F2A2") +LIGHTLAVENDAR = ManimColor("#EFC0FE") +LIGHTLAVENDER = ManimColor("#DFC5FE") +LIGHTLIGHTBLUE = ManimColor("#CAFFFB") +LIGHTLIGHTGREEN = ManimColor("#C8FFB0") +LIGHTLILAC = ManimColor("#EDC8FF") +LIGHTLIME = ManimColor("#AEFD6C") +LIGHTLIMEGREEN = ManimColor("#B9FF66") +LIGHTMAGENTA = ManimColor("#FA5FF7") +LIGHTMAROON = ManimColor("#A24857") +LIGHTMAUVE = ManimColor("#C292A1") +LIGHTMINT = ManimColor("#B6FFBB") +LIGHTMINTGREEN = ManimColor("#A6FBB2") +LIGHTMOSSGREEN = ManimColor("#A6C875") +LIGHTMUSTARD = ManimColor("#F7D560") +LIGHTNAVY = ManimColor("#155084") +LIGHTNAVYBLUE = ManimColor("#2E5A88") +LIGHTNEONGREEN = ManimColor("#4EFD54") +LIGHTOLIVE = ManimColor("#ACBF69") +LIGHTOLIVEGREEN = ManimColor("#A4BE5C") +LIGHTORANGE = ManimColor("#FDAA48") +LIGHTPASTELGREEN = ManimColor("#B2FBA5") +LIGHTPEACH = ManimColor("#FFD8B1") +LIGHTPEAGREEN = ManimColor("#C4FE82") +LIGHTPERIWINKLE = ManimColor("#C1C6FC") +LIGHTPINK = ManimColor("#FFD1DF") +LIGHTPLUM = ManimColor("#9D5783") +LIGHTPURPLE = ManimColor("#BF77F6") +LIGHTRED = ManimColor("#FF474C") +LIGHTROSE = ManimColor("#FFC5CB") +LIGHTROYALBLUE = ManimColor("#3A2EFE") +LIGHTSAGE = ManimColor("#BCECAC") +LIGHTSALMON = ManimColor("#FEA993") +LIGHTSEAFOAM = ManimColor("#A0FEBF") +LIGHTSEAFOAMGREEN = ManimColor("#a7ffb5") +LIGHTSEAGREEN = ManimColor("#98F6B0") +LIGHTSKYBLUE = ManimColor("#C6FCFF") +LIGHTTAN = ManimColor("#FBEEAC") +LIGHTTEAL = ManimColor("#90E4C1") +LIGHTTURQUOISE = ManimColor("#7EF4CC") +LIGHTURPLE = ManimColor("#B36FF6") +LIGHTVIOLET = ManimColor("#D6B4FC") +LIGHTYELLOW = ManimColor("#FFFE7A") +LIGHTYELLOWGREEN = ManimColor("#CCFD7F") +LIGHTYELLOWISHGREEN = ManimColor("#C2FF89") +LILAC = ManimColor("#CEA2FD") +LILIAC = ManimColor("#C48EFD") +LIME = ManimColor("#AAFF32") +LIMEGREEN = ManimColor("#89FE05") +LIMEYELLOW = ManimColor("#D0FE1D") +LIPSTICK = ManimColor("#D5174E") +LIPSTICKRED = ManimColor("#C0022F") +MACARONIANDCHEESE = ManimColor("#EFB435") +MAGENTA = ManimColor("#C20078") +MAHOGANY = ManimColor("#4A0100") +MAIZE = ManimColor("#F4D054") +MANGO = ManimColor("#FFA62B") +MANILLA = ManimColor("#FFFA86") +MARIGOLD = ManimColor("#FCC006") +MARINE = ManimColor("#042E60") +MARINEBLUE = ManimColor("#01386A") +MAROON = ManimColor("#650021") +MAUVE = ManimColor("#AE7181") +MEDIUMBLUE = ManimColor("#2C6FBB") +MEDIUMBROWN = ManimColor("#7F5112") +MEDIUMGREEN = ManimColor("#39AD48") +MEDIUMGREY = ManimColor("#7D7F7C") +MEDIUMPINK = ManimColor("#F36196") +MEDIUMPURPLE = ManimColor("#9E43A2") +MELON = ManimColor("#FF7855") +MERLOT = ManimColor("#730039") +METALLICBLUE = ManimColor("#4F738E") +MIDBLUE = ManimColor("#276AB3") +MIDGREEN = ManimColor("#50A747") +MIDNIGHT = ManimColor("#03012D") +MIDNIGHTBLUE = ManimColor("#020035") +MIDNIGHTPURPLE = ManimColor("#280137") +MILITARYGREEN = ManimColor("#667C3E") +MILKCHOCOLATE = ManimColor("#7F4E1E") +MINT = ManimColor("#9FFEB0") +MINTGREEN = ManimColor("#8FFF9F") +MINTYGREEN = ManimColor("#0BF77D") +MOCHA = ManimColor("#9D7651") +MOSS = ManimColor("#769958") +MOSSGREEN = ManimColor("#658B38") +MOSSYGREEN = ManimColor("#638B27") +MUD = ManimColor("#735C12") +MUDBROWN = ManimColor("#60460F") +MUDDYBROWN = ManimColor("#886806") +MUDDYGREEN = ManimColor("#657432") +MUDDYYELLOW = ManimColor("#BFAC05") +MUDGREEN = ManimColor("#606602") +MULBERRY = ManimColor("#920A4E") +MURKYGREEN = ManimColor("#6C7A0E") +MUSHROOM = ManimColor("#BA9E88") +MUSTARD = ManimColor("#CEB301") +MUSTARDBROWN = ManimColor("#AC7E04") +MUSTARDGREEN = ManimColor("#A8B504") +MUSTARDYELLOW = ManimColor("#D2BD0A") +MUTEDBLUE = ManimColor("#3B719F") +MUTEDGREEN = ManimColor("#5FA052") +MUTEDPINK = ManimColor("#D1768F") +MUTEDPURPLE = ManimColor("#805B87") +NASTYGREEN = ManimColor("#70B23F") +NAVY = ManimColor("#01153E") +NAVYBLUE = ManimColor("#001146") +NAVYGREEN = ManimColor("#35530A") +NEONBLUE = ManimColor("#04D9FF") +NEONGREEN = ManimColor("#0CFF0C") +NEONPINK = ManimColor("#FE019A") +NEONPURPLE = ManimColor("#BC13FE") +NEONRED = ManimColor("#FF073A") +NEONYELLOW = ManimColor("#CFFF04") +NICEBLUE = ManimColor("#107AB0") +NIGHTBLUE = ManimColor("#040348") +OCEAN = ManimColor("#017B92") +OCEANBLUE = ManimColor("#03719C") +OCEANGREEN = ManimColor("#3D9973") +OCHER = ManimColor("#BF9B0C") +OCHRE = ManimColor("#BF9005") +OCRE = ManimColor("#C69C04") +OFFBLUE = ManimColor("#5684AE") +OFFGREEN = ManimColor("#6BA353") +OFFWHITE = ManimColor("#FFFFE4") +OFFYELLOW = ManimColor("#F1F33F") +OLDPINK = ManimColor("#C77986") +OLDROSE = ManimColor("#C87F89") +OLIVE = ManimColor("#6E750E") +OLIVEBROWN = ManimColor("#645403") +OLIVEDRAB = ManimColor("#6F7632") +OLIVEGREEN = ManimColor("#677A04") +OLIVEYELLOW = ManimColor("#C2B709") +ORANGE = ManimColor("#F97306") +ORANGEBROWN = ManimColor("#BE6400") +ORANGEISH = ManimColor("#FD8D49") +ORANGEPINK = ManimColor("#FF6F52") +ORANGERED = ManimColor("#FE420F") +ORANGEYBROWN = ManimColor("#B16002") +ORANGEYELLOW = ManimColor("#FFAD01") +ORANGEYRED = ManimColor("#FA4224") +ORANGEYYELLOW = ManimColor("#FDB915") +ORANGISH = ManimColor("#FC824A") +ORANGISHBROWN = ManimColor("#B25F03") +ORANGISHRED = ManimColor("#F43605") +ORCHID = ManimColor("#C875C4") +PALE = ManimColor("#FFF9D0") +PALEAQUA = ManimColor("#B8FFEB") +PALEBLUE = ManimColor("#D0FEFE") +PALEBROWN = ManimColor("#B1916E") +PALECYAN = ManimColor("#B7FFFA") +PALEGOLD = ManimColor("#FDDE6C") +PALEGREEN = ManimColor("#C7FDB5") +PALEGREY = ManimColor("#FDFDFE") +PALELAVENDER = ManimColor("#EECFFE") +PALELIGHTGREEN = ManimColor("#B1FC99") +PALELILAC = ManimColor("#E4CBFF") +PALELIME = ManimColor("#BEFD73") +PALELIMEGREEN = ManimColor("#B1FF65") +PALEMAGENTA = ManimColor("#D767AD") +PALEMAUVE = ManimColor("#FED0FC") +PALEOLIVE = ManimColor("#B9CC81") +PALEOLIVEGREEN = ManimColor("#B1D27B") +PALEORANGE = ManimColor("#FFA756") +PALEPEACH = ManimColor("#FFE5AD") +PALEPINK = ManimColor("#FFCFDC") +PALEPURPLE = ManimColor("#B790D4") +PALERED = ManimColor("#D9544D") +PALEROSE = ManimColor("#FDC1C5") +PALESALMON = ManimColor("#FFB19A") +PALESKYBLUE = ManimColor("#BDF6FE") +PALETEAL = ManimColor("#82CBB2") +PALETURQUOISE = ManimColor("#A5FBD5") +PALEVIOLET = ManimColor("#CEAEFA") +PALEYELLOW = ManimColor("#FFFF84") +PARCHMENT = ManimColor("#FEFCAF") +PASTELBLUE = ManimColor("#A2BFFE") +PASTELGREEN = ManimColor("#B0FF9D") +PASTELORANGE = ManimColor("#FF964F") +PASTELPINK = ManimColor("#FFBACD") +PASTELPURPLE = ManimColor("#CAA0FF") +PASTELRED = ManimColor("#DB5856") +PASTELYELLOW = ManimColor("#FFFE71") +PEA = ManimColor("#A4BF20") +PEACH = ManimColor("#FFB07C") +PEACHYPINK = ManimColor("#FF9A8A") +PEACOCKBLUE = ManimColor("#016795") +PEAGREEN = ManimColor("#8EAB12") +PEAR = ManimColor("#CBF85F") +PEASOUP = ManimColor("#929901") +PEASOUPGREEN = ManimColor("#94A617") +PERIWINKLE = ManimColor("#8E82FE") +PERIWINKLEBLUE = ManimColor("#8F99FB") +PERRYWINKLE = ManimColor("#8F8CE7") +PETROL = ManimColor("#005F6A") +PIGPINK = ManimColor("#E78EA5") +PINE = ManimColor("#2B5D34") +PINEGREEN = ManimColor("#0A481E") +PINK = ManimColor("#FF81C0") +PINKISH = ManimColor("#D46A7E") +PINKISHBROWN = ManimColor("#B17261") +PINKISHGREY = ManimColor("#C8ACA9") +PINKISHORANGE = ManimColor("#FF724C") +PINKISHPURPLE = ManimColor("#D648D7") +PINKISHRED = ManimColor("#F10C45") +PINKISHTAN = ManimColor("#D99B82") +PINKPURPLE = ManimColor("#EF1DE7") +PINKRED = ManimColor("#F5054F") +PINKY = ManimColor("#FC86AA") +PINKYPURPLE = ManimColor("#C94CBE") +PINKYRED = ManimColor("#FC2647") +PISSYELLOW = ManimColor("#DDD618") +PISTACHIO = ManimColor("#C0FA8B") +PLUM = ManimColor("#580F41") +PLUMPURPLE = ManimColor("#4E0550") +POISONGREEN = ManimColor("#40FD14") +POO = ManimColor("#8F7303") +POOBROWN = ManimColor("#885F01") +POOP = ManimColor("#7F5E00") +POOPBROWN = ManimColor("#7A5901") +POOPGREEN = ManimColor("#6F7C00") +POWDERBLUE = ManimColor("#B1D1FC") +POWDERPINK = ManimColor("#FFB2D0") +PRIMARYBLUE = ManimColor("#0804F9") +PRUSSIANBLUE = ManimColor("#004577") +PUCE = ManimColor("#A57E52") +PUKE = ManimColor("#A5A502") +PUKEBROWN = ManimColor("#947706") +PUKEGREEN = ManimColor("#9AAE07") +PUKEYELLOW = ManimColor("#C2BE0E") +PUMPKIN = ManimColor("#E17701") +PUMPKINORANGE = ManimColor("#FB7D07") +PUREBLUE = ManimColor("#0203E2") +PURPLE = ManimColor("#7E1E9C") +PURPLEBLUE = ManimColor("#5D21D0") +PURPLEBROWN = ManimColor("#673A3F") +PURPLEGREY = ManimColor("#866F85") +PURPLEISH = ManimColor("#98568D") +PURPLEISHBLUE = ManimColor("#6140EF") +PURPLEISHPINK = ManimColor("#DF4EC8") +PURPLEPINK = ManimColor("#D725DE") +PURPLERED = ManimColor("#990147") +PURPLEY = ManimColor("#8756E4") +PURPLEYBLUE = ManimColor("#5F34E7") +PURPLEYGREY = ManimColor("#947E94") +PURPLEYPINK = ManimColor("#C83CB9") +PURPLISH = ManimColor("#94568C") +PURPLISHBLUE = ManimColor("#601EF9") +PURPLISHBROWN = ManimColor("#6B4247") +PURPLISHGREY = ManimColor("#7A687F") +PURPLISHPINK = ManimColor("#CE5DAE") +PURPLISHRED = ManimColor("#B0054B") +PURPLY = ManimColor("#983FB2") +PURPLYBLUE = ManimColor("#661AEE") +PURPLYPINK = ManimColor("#F075E6") +PUTTY = ManimColor("#BEAE8A") +RACINGGREEN = ManimColor("#014600") +RADIOACTIVEGREEN = ManimColor("#2CFA1F") +RASPBERRY = ManimColor("#B00149") +RAWSIENNA = ManimColor("#9A6200") +RAWUMBER = ManimColor("#A75E09") +REALLYLIGHTBLUE = ManimColor("#D4FFFF") +RED = ManimColor("#E50000") +REDBROWN = ManimColor("#8B2E16") +REDDISH = ManimColor("#C44240") +REDDISHBROWN = ManimColor("#7F2B0A") +REDDISHGREY = ManimColor("#997570") +REDDISHORANGE = ManimColor("#F8481C") +REDDISHPINK = ManimColor("#FE2C54") +REDDISHPURPLE = ManimColor("#910951") +REDDYBROWN = ManimColor("#6E1005") +REDORANGE = ManimColor("#FD3C06") +REDPINK = ManimColor("#FA2A55") +REDPURPLE = ManimColor("#820747") +REDVIOLET = ManimColor("#9E0168") +REDWINE = ManimColor("#8C0034") +RICHBLUE = ManimColor("#021BF9") +RICHPURPLE = ManimColor("#720058") +ROBINEGGBLUE = ManimColor("#8AF1FE") +ROBINSEGG = ManimColor("#6DEDFD") +ROBINSEGGBLUE = ManimColor("#98EFF9") +ROSA = ManimColor("#FE86A4") +ROSE = ManimColor("#CF6275") +ROSEPINK = ManimColor("#F7879A") +ROSERED = ManimColor("#BE013C") +ROSYPINK = ManimColor("#F6688E") +ROGUE = ManimColor("#AB1239") +ROYAL = ManimColor("#0C1793") +ROYALBLUE = ManimColor("#0504AA") +ROYALPURPLE = ManimColor("#4B006E") +RUBY = ManimColor("#CA0147") +RUSSET = ManimColor("#A13905") +RUST = ManimColor("#A83C09") +RUSTBROWN = ManimColor("#8B3103") +RUSTORANGE = ManimColor("#C45508") +RUSTRED = ManimColor("#AA2704") +RUSTYORANGE = ManimColor("#CD5909") +RUSTYRED = ManimColor("#AF2F0D") +SAFFRON = ManimColor("#FEB209") +SAGE = ManimColor("#87AE73") +SAGEGREEN = ManimColor("#88B378") +SALMON = ManimColor("#FF796C") +SALMONPINK = ManimColor("#FE7B7C") +SAND = ManimColor("#E2CA76") +SANDBROWN = ManimColor("#CBA560") +SANDSTONE = ManimColor("#C9AE74") +SANDY = ManimColor("#F1DA7A") +SANDYBROWN = ManimColor("#C4A661") +SANDYELLOW = ManimColor("#FCE166") +SANDYYELLOW = ManimColor("#FDEE73") +SAPGREEN = ManimColor("#5C8B15") +SAPPHIRE = ManimColor("#2138AB") +SCARLET = ManimColor("#BE0119") +SEA = ManimColor("#3C9992") +SEABLUE = ManimColor("#047495") +SEAFOAM = ManimColor("#80F9AD") +SEAFOAMBLUE = ManimColor("#78D1B6") +SEAFOAMGREEN = ManimColor("#7AF9AB") +SEAGREEN = ManimColor("#53FCA1") +SEAWEED = ManimColor("#18D17B") +SEAWEEDGREEN = ManimColor("#35AD6B") +SEPIA = ManimColor("#985E2B") +SHAMROCK = ManimColor("#01B44C") +SHAMROCKGREEN = ManimColor("#02C14D") +SHIT = ManimColor("#7F5F00") +SHITBROWN = ManimColor("#7B5804") +SHITGREEN = ManimColor("#758000") +SHOCKINGPINK = ManimColor("#FE02A2") +SICKGREEN = ManimColor("#9DB92C") +SICKLYGREEN = ManimColor("#94B21C") +SICKLYYELLOW = ManimColor("#D0E429") +SIENNA = ManimColor("#A9561E") +SILVER = ManimColor("#C5C9C7") +SKY = ManimColor("#82CAFC") +SKYBLUE = ManimColor("#75BBFD") +SLATE = ManimColor("#516572") +SLATEBLUE = ManimColor("#5B7C99") +SLATEGREEN = ManimColor("#658D6D") +SLATEGREY = ManimColor("#59656D") +SLIMEGREEN = ManimColor("#99CC04") +SNOT = ManimColor("#ACBB0D") +SNOTGREEN = ManimColor("#9DC100") +SOFTBLUE = ManimColor("#6488EA") +SOFTGREEN = ManimColor("#6FC276") +SOFTPINK = ManimColor("#FDB0C0") +SOFTPURPLE = ManimColor("#A66FB5") +SPEARMINT = ManimColor("#1EF876") +SPRINGGREEN = ManimColor("#A9F971") +SPRUCE = ManimColor("#0A5F38") +SQUASH = ManimColor("#F2AB15") +STEEL = ManimColor("#738595") +STEELBLUE = ManimColor("#5A7D9A") +STEELGREY = ManimColor("#6F828A") +STONE = ManimColor("#ADA587") +STORMYBLUE = ManimColor("#507B9C") +STRAW = ManimColor("#FCF679") +STRAWBERRY = ManimColor("#FB2943") +STRONGBLUE = ManimColor("#0C06F7") +STRONGPINK = ManimColor("#FF0789") +SUNFLOWER = ManimColor("#FFC512") +SUNFLOWERYELLOW = ManimColor("#FFDA03") +SUNNYYELLOW = ManimColor("#FFF917") +SUNSHINEYELLOW = ManimColor("#FFFD37") +SUNYELLOW = ManimColor("#FFDF22") +SWAMP = ManimColor("#698339") +SWAMPGREEN = ManimColor("#748500") +TAN = ManimColor("#D1B26F") +TANBROWN = ManimColor("#AB7E4C") +TANGERINE = ManimColor("#FF9408") +TANGREEN = ManimColor("#A9BE70") +TAUPE = ManimColor("#B9A281") +TEA = ManimColor("#65AB7C") +TEAGREEN = ManimColor("#BDF8A3") +TEAL = ManimColor("#029386") +TEALBLUE = ManimColor("#01889F") +TEALGREEN = ManimColor("#25A36F") +TEALISH = ManimColor("#24BCA8") +TEALISHGREEN = ManimColor("#0CDC73") +TERRACOTA = ManimColor("#CB6843") +TERRACOTTA = ManimColor("#C9643B") +TIFFANYBLUE = ManimColor("#7BF2DA") +TOMATO = ManimColor("#EF4026") +TOMATORED = ManimColor("#EC2D01") +TOPAZ = ManimColor("#13BBAF") +TOUPE = ManimColor("#C7AC7D") +TOXICGREEN = ManimColor("#61DE2A") +TREEGREEN = ManimColor("#2A7E19") +TRUEBLUE = ManimColor("#010FCC") +TRUEGREEN = ManimColor("#089404") +TURQUOISE = ManimColor("#06C2AC") +TURQUOISEBLUE = ManimColor("#06B1C4") +TURQUOISEGREEN = ManimColor("#04F489") +TURTLEGREEN = ManimColor("#75B84F") +TWILIGHT = ManimColor("#4E518B") +TWILIGHTBLUE = ManimColor("#0A437A") +UGLYBLUE = ManimColor("#31668A") +UGLYBROWN = ManimColor("#7D7103") +UGLYGREEN = ManimColor("#7A9703") +UGLYPINK = ManimColor("#CD7584") +UGLYPURPLE = ManimColor("#A442A0") +UGLYYELLOW = ManimColor("#D0C101") +ULTRAMARINE = ManimColor("#2000B1") +ULTRAMARINEBLUE = ManimColor("#1805DB") +UMBER = ManimColor("#B26400") +VELVET = ManimColor("#750851") +VERMILION = ManimColor("#F4320C") +VERYDARKBLUE = ManimColor("#000133") +VERYDARKBROWN = ManimColor("#1D0200") +VERYDARKGREEN = ManimColor("#062E03") +VERYDARKPURPLE = ManimColor("#2A0134") +VERYLIGHTBLUE = ManimColor("#D5FFFF") +VERYLIGHTBROWN = ManimColor("#D3B683") +VERYLIGHTGREEN = ManimColor("#D1FFBD") +VERYLIGHTPINK = ManimColor("#FFF4F2") +VERYLIGHTPURPLE = ManimColor("#F6CEFC") +VERYPALEBLUE = ManimColor("#D6FFFE") +VERYPALEGREEN = ManimColor("#CFFDBC") +VIBRANTBLUE = ManimColor("#0339F8") +VIBRANTGREEN = ManimColor("#0ADD08") +VIBRANTPURPLE = ManimColor("#AD03DE") +VIOLET = ManimColor("#9A0EEA") +VIOLETBLUE = ManimColor("#510AC9") +VIOLETPINK = ManimColor("#FB5FFC") +VIOLETRED = ManimColor("#A50055") +VIRIDIAN = ManimColor("#1E9167") +VIVIDBLUE = ManimColor("#152EFF") +VIVIDGREEN = ManimColor("#2FEF10") +VIVIDPURPLE = ManimColor("#9900FA") +VOMIT = ManimColor("#A2A415") +VOMITGREEN = ManimColor("#89A203") +VOMITYELLOW = ManimColor("#C7C10C") +WARMBLUE = ManimColor("#4B57DB") +WARMBROWN = ManimColor("#964E02") +WARMGREY = ManimColor("#978A84") +WARMPINK = ManimColor("#FB5581") +WARMPURPLE = ManimColor("#952E8F") +WASHEDOUTGREEN = ManimColor("#BCF5A6") +WATERBLUE = ManimColor("#0E87CC") +WATERMELON = ManimColor("#FD4659") +WEIRDGREEN = ManimColor("#3AE57F") +WHEAT = ManimColor("#FBDD7E") +WHITE = ManimColor("#FFFFFF") +WINDOWSBLUE = ManimColor("#3778BF") +WINE = ManimColor("#80013F") +WINERED = ManimColor("#7B0323") +WINTERGREEN = ManimColor("#20F986") +WISTERIA = ManimColor("#A87DC2") +YELLOW = ManimColor("#FFFF14") +YELLOWBROWN = ManimColor("#B79400") +YELLOWGREEN = ManimColor("#BBF90F") +YELLOWISH = ManimColor("#FAEE66") +YELLOWISHBROWN = ManimColor("#9B7A01") +YELLOWISHGREEN = ManimColor("#B0DD16") +YELLOWISHORANGE = ManimColor("#FFAB0F") +YELLOWISHTAN = ManimColor("#FCFC81") +YELLOWOCHRE = ManimColor("#CB9D06") +YELLOWORANGE = ManimColor("#FCB001") +YELLOWTAN = ManimColor("#FFE36E") +YELLOWYBROWN = ManimColor("#AE8B0C") +YELLOWYGREEN = ManimColor("#BFF128") diff --git a/manim/utils/color/__init__.py b/manim/utils/color/__init__.py new file mode 100644 index 0000000000..6e0f36ff44 --- /dev/null +++ b/manim/utils/color/__init__.py @@ -0,0 +1,58 @@ +"""Utilities for working with colors and predefined color constants. + +Color data structure +-------------------- + +.. autosummary:: + :toctree: ../reference + + core + + +Predefined colors +----------------- + +There are several predefined colors available in Manim: + +- The colors listed in :mod:`.color.manim_colors` are loaded into + Manim's global name space. +- The colors in :mod:`.color.AS2700`, :mod:`.color.BS381`, :mod:`.color.X11`, + and :mod:`.color.XKCD` need to be accessed via their module (which are available + in Manim's global name space), or imported separately. For example: + + .. code:: pycon + + >>> from manim import XKCD + >>> XKCD.AVOCADO + ManimColor('#90B134') + + Or, alternatively: + + .. code:: pycon + + >>> from manim.utils.color.XKCD import AVOCADO + >>> AVOCADO + ManimColor('#90B134') + +The following modules contain the predefined color constants: + +.. autosummary:: + :toctree: ../reference + + manim_colors + AS2700 + BS381 + XKCD + X11 + +""" + +from typing import Dict, List + +from . import AS2700, BS381, X11, XKCD +from .core import * +from .manim_colors import * + +_all_color_dict: Dict[str, ManimColor] = { + k: v for k, v in globals().items() if isinstance(v, ManimColor) +} diff --git a/manim/utils/color/core.py b/manim/utils/color/core.py new file mode 100644 index 0000000000..2994504ce5 --- /dev/null +++ b/manim/utils/color/core.py @@ -0,0 +1,998 @@ +"""Manim's (internal) color data structure and some utilities for +color conversion. + +This module contains the implementation of :class:`.ManimColor`, +the data structure internally used to represent colors. +""" + + +from __future__ import annotations + +# logger = _config.logger +import colorsys +import random +from typing import Any, Sequence, Union + +import numpy as np +from typing_extensions import Literal, TypeAlias + +from ...utils.space_ops import normalize + +ManimColorDType: TypeAlias = np.float64 +ManimFloat: TypeAlias = np.float64 +ManimInt: TypeAlias = np.int64 + +RGB_Array_Float: TypeAlias = "np.ndarray[Literal[3], np.dtype[ManimFloat]]" +RGB_Tuple_Float: TypeAlias = "tuple[float, float, float]" + +RGB_Array_Int: TypeAlias = "np.ndarray[Literal[3], np.dtype[ManimInt]]" +RGB_Tuple_Int: TypeAlias = "tuple[int, int, int]" + +RGBA_Array_Float: TypeAlias = "np.ndarray[Literal[4], np.dtype[ManimFloat]]" +RGBA_Tuple_Float: TypeAlias = "tuple[float, float, float, float]" + +RGBA_Array_Int: TypeAlias = "np.ndarray[Literal[4], np.dtype[ManimInt]]" +RGBA_Tuple_Int: TypeAlias = "tuple[int, int, int, int]" + +HSV_Array_Float: TypeAlias = RGB_Array_Float +HSV_Tuple_Float: TypeAlias = RGB_Tuple_Float + +ManimColorInternal: TypeAlias = "np.ndarray[Literal[4], np.dtype[ManimColorDType]]" + +import re + +re_hex = re.compile("((?<=#)|(?<=0x))[A-F0-9]{6,8}", re.IGNORECASE) + + +class ManimColor: + """Internal representation of a color. + + The ManimColor class is the main class for the representation of a color. + It's internal representation is a 4 element array of floats corresponding + to a [r,g,b,a] value where r,g,b,a can be between 0 to 1. + + This is done in order to reduce the amount of color inconsitencies by constantly + casting between integers and floats which introduces errors. + + The class can accept any value of type :class:`ParsableManimColor` i.e. + + ManimColor, int, str, RGB_Tuple_Int, RGB_Tuple_Float, RGBA_Tuple_Int, RGBA_Tuple_Float, RGB_Array_Int, + RGB_Array_Float, RGBA_Array_Int, RGBA_Array_Float + + ManimColor itself only accepts singular values and will directly interpret them into a single color if possible + Be careful when passing strings to ManimColor it can create a big overhead for the color processing. + + If you want to parse a list of colors use the function :meth:`parse` in :class:`ManimColor` which assumes that + you are going to pass a list of color so arrays will not bei interpreted as a single color. + + .. warning:: + If you pass an array of numbers to :meth:`parse` it will interpret the r,g,b,a numbers in that array as colors + so instead of the expect singular color you get and array with 4 colors. + + For conversion behaviors see the _internal functions for further documentation + + Parameters + ---------- + value + Some representation of a color (e.g., a string or + a suitable tuple). + alpha + The opacity of the color. By default, colors are + fully opaque (value 1.0). + """ + + def __init__( + self, + value: ParsableManimColor, + alpha: float = 1.0, + ) -> None: + if value is None: + self._internal_value = np.array((0, 0, 0, alpha), dtype=ManimColorDType) + elif isinstance(value, ManimColor): + # logger.info( + # "ManimColor was passed another ManimColor. This is probably not what " + # "you want. Created a copy of the passed ManimColor instead." + # ) + self._internal_value = value._internal_value + elif isinstance(value, int): + self._internal_value = ManimColor._internal_from_integer(value, alpha) + elif isinstance(value, str): + result = re_hex.search(value) + if result is not None: + self._internal_value = ManimColor._internal_from_hex_string( + result.group(), alpha + ) + else: + # This is not expected to be called on module initialization time + # It can be horribly slow to convert a string to a color because + # it has to access the dictionary of colors and find the right color + self._internal_value = ManimColor._internal_from_string(value) + elif isinstance(value, (list, tuple, np.ndarray)): + length = len(value) + if all(isinstance(x, float) for x in value): + if length == 3: + self._internal_value = ManimColor._internal_from_rgb(value, alpha) # type: ignore + elif length == 4: + self._internal_value = ManimColor._internal_from_rgba(value) # type: ignore + else: + raise ValueError( + f"ManimColor only accepts lists/tuples/arrays of length 3 or 4, not {length}" + ) + else: + if length == 3: + self._internal_value = ManimColor._internal_from_int_rgb( + value, alpha # type: ignore + ) + elif length == 4: + self._internal_value = ManimColor._internal_from_int_rgba(value) # type: ignore + else: + raise ValueError( + f"ManimColor only accepts lists/tuples/arrays of length 3 or 4, not {length}" + ) + elif hasattr(value, "get_hex") and callable(value.get_hex): + result = re_hex.search(value.get_hex()) + if result is None: + raise ValueError(f"Failed to parse a color from {value}") + + self._internal_value = ManimColor._internal_from_hex_string( + result.group(), alpha + ) + else: + # logger.error(f"Invalid color value: {value}") + raise TypeError( + "ManimColor only accepts int, str, list[int, int, int], " + "list[int, int, int, int], list[float, float, float], " + f"list[float, float, float, float], not {type(value)}" + ) + + @property + def _internal_value(self) -> ManimColorInternal: + """Returns the internal value of the current Manim color [r,g,b,a] float array + + Returns + ------- + ManimColorInternal + internal color representation + """ + return self.__value + + @_internal_value.setter + def _internal_value(self, value: ManimColorInternal) -> None: + """Overwrites the internal color value of the ManimColor object + + Parameters + ---------- + value : ManimColorInternal + The value which will overwrite the current color + + Raises + ------ + TypeError + Raises a TypeError if an invalid array is passed + """ + if not isinstance(value, np.ndarray): + raise TypeError("value must be a numpy array") + if value.shape[0] != 4: + raise TypeError("Array must have 4 values exactly") + self.__value: ManimColorInternal = value + + @staticmethod + def _internal_from_integer(value: int, alpha: float) -> ManimColorInternal: + return np.asarray( + ( + ((value >> 16) & 0xFF) / 255, + ((value >> 8) & 0xFF) / 255, + ((value >> 0) & 0xFF) / 255, + alpha, + ), + dtype=ManimColorDType, + ) + + # TODO: Maybe make 8 nibble hex also convertible ? + @staticmethod + def _internal_from_hex_string(hex: str, alpha: float) -> ManimColorInternal: + """Internal function for converting a hex string into the internal representation of a ManimColor. + + .. warning:: + This does not accept any prefixes like # or similar in front of the hex string. + This is just intended for the raw hex part + + *For internal use only* + + Parameters + ---------- + hex : str + hex string to be parsed + alpha : float + alpha value used for the color + + Returns + ------- + ManimColorInternal + Internal color representation + """ + if len(hex) == 6: + hex += "00" + tmp = int(hex, 16) + return np.asarray( + ( + ((tmp >> 24) & 0xFF) / 255, + ((tmp >> 16) & 0xFF) / 255, + ((tmp >> 8) & 0xFF) / 255, + alpha, + ), + dtype=ManimColorDType, + ) + + @staticmethod + def _internal_from_int_rgb( + rgb: RGB_Tuple_Int, alpha: float = 1.0 + ) -> ManimColorInternal: + """Internal function for converting a rgb tuple of integers into the internal representation of a ManimColor. + + *For internal use only* + + Parameters + ---------- + rgb : RGB_Tuple_Int + integer rgb tuple to be parsed + alpha : float, optional + optional alpha value, by default 1.0 + + Returns + ------- + ManimColorInternal + Internal color representation + + """ + value: np.ndarray = np.asarray(rgb, dtype=ManimColorDType).copy() / 255 + value.resize(4, refcheck=False) + value[3] = alpha + return value + + @staticmethod + def _internal_from_rgb( + rgb: RGB_Tuple_Float, alpha: float = 1.0 + ) -> ManimColorInternal: + """Internal function for converting a rgb tuple of floats into the internal representation of a ManimColor. + + *For internal use only* + + Parameters + ---------- + rgb : RGB_Tuple_Float + float rgb tuple to be parsed + + alpha : float, optional + optional alpha value, by default 1.0 + + Returns + ------- + ManimColorInternal + Internal color representation + """ + value: np.ndarray = np.asarray(rgb, dtype=ManimColorDType).copy() + value.resize(4, refcheck=False) + value[3] = alpha + return value + + @staticmethod + def _internal_from_int_rgba(rgba: RGBA_Tuple_Int) -> ManimColorInternal: + """Internal function for converting a rgba tuple of integers into the internal representation of a ManimColor. + + *For internal use only* + + Parameters + ---------- + rgba : RGBA_Tuple_Int + int rgba tuple to be parsed + + Returns + ------- + ManimColorInternal + Internal color representation + """ + return np.asarray(rgba, dtype=ManimColorDType) / 255 + + @staticmethod + def _internal_from_rgba(rgba: RGBA_Tuple_Float) -> ManimColorInternal: + """Internal function for converting a rgba tuple of floats into the internal representation of a ManimColor. + + *For internal use only* + + Parameters + ---------- + rgba : RGBA_Tuple_Float + int rgba tuple to be parsed + + Returns + ------- + ManimColorInternal + Internal color representation + """ + return np.asarray(rgba, dtype=ManimColorDType) + + @staticmethod + def _internal_from_string(name: str) -> ManimColorInternal: + """Internal function for converting a string into the internal representation of a ManimColor. + This is not used for hex strings, please refer to :meth:`_internal_from_hex` for this functionality. + + *For internal use only* + + Parameters + ---------- + name : str + The color name to be parsed into a color. Refer to the different color Modules in the documentation Page to + find the corresponding Color names. + + Returns + ------- + ManimColorInternal + Internal color representation + + Raises + ------ + ValueError + Raises a ValueError if the color name is not present with manim + """ + from . import _all_color_dict + + upper_name = name.upper() + + if upper_name in _all_color_dict: + return _all_color_dict[upper_name]._internal_value + else: + raise ValueError(f"Color {name} not found") + + def to_integer(self) -> int: + """Converts the current ManimColor into an integer + + Returns + ------- + int + integer representation of the color + + .. warning:: + This will return only the rgb part of the color + """ + return int.from_bytes( + (self._internal_value[:3] * 255).astype(int).tobytes(), "big" + ) + + def to_rgb(self) -> RGB_Array_Float: + """Converts the current ManimColor into a rgb array of floats + + Returns + ------- + RGB_Array_Float + rgb array with 3 elements of type float + """ + return self._internal_value[:3] + + def to_int_rgb(self) -> RGB_Array_Int: + """Converts the current ManimColor into a rgb array of int + + Returns + ------- + RGB_Array_Int + rgb array with 3 elements of type int + """ + return (self._internal_value[:3] * 255).astype(int) + + def to_rgba(self) -> RGBA_Array_Float: + """Converts the current ManimColor into a rgba array of floats + + Returns + ------- + RGBA_Array_Float + rgba array with 4 elements of type float + """ + return self._internal_value + + def to_int_rgba(self) -> RGBA_Array_Int: + """Converts the current ManimColor into a rgba array of int + + + Returns + ------- + RGBA_Array_Int + rgba array with 4 elements of type int + """ + return (self._internal_value * 255).astype(int) + + def to_rgba_with_alpha(self, alpha: float) -> RGBA_Array_Float: + """Converts the current ManimColor into a rgba array of float as :meth:`to_rgba` but you can change the alpha + value. + + Parameters + ---------- + alpha : float + alpha value to be used in the return value + + Returns + ------- + RGBA_Array_Float + rgba array with 4 elements of type float + """ + return np.fromiter((*self._internal_value[:3], alpha), dtype=ManimColorDType) + + def to_int_rgba_with_alpha(self, alpha: float) -> RGBA_Array_Int: + """Converts the current ManimColor into a rgba array of integers as :meth:`to_int_rgba` but you can change the alpha + value. + + Parameters + ---------- + alpha : float + alpha value to be used for the return value. (Will automatically be scaled from 0-1 to 0-255 so just pass 0-1) + + Returns + ------- + RGBA_Array_Int + rgba array with 4 elements of type int + """ + tmp = self._internal_value * 255 + tmp[3] = alpha * 255 + return tmp.astype(int) + + def to_hex(self, with_alpha: bool = False) -> str: + """Converts the manim color to a hexadecimal representation of the color + + Parameters + ---------- + with_alpha : bool, optional + Changes the result from 6 to 8 values where the last 2 nibbles represent the alpha value of 0-255, + by default False + + Returns + ------- + str + A hex string starting with a # with either 6 or 8 nibbles depending on your input, by default 6 i.e #XXXXXX + """ + tmp = f"#{int(self._internal_value[0]*255):02X}{int(self._internal_value[1]*255):02X}{int(self._internal_value[2]*255):02X}" + if with_alpha: + tmp += f"{int(self._internal_value[3]*255):02X}" + return tmp + + def to_hsv(self) -> HSV_Array_Float: + """Converts the Manim Color to HSV array. + + .. note:: + Be careful this returns an array in the form `[h, s, v]` where the elements are floats. + This might be confusing because rgb can also be an array of floats so you might want to annotate the usage + of this function in your code by typing the variables with :class:`HSV_Array_Float` in order to differentiate + between rgb arrays and hsv arrays + + Returns + ------- + HSV_Array_Float + A hsv array containing 3 elements of type float ranging from 0 to 1 + """ + return colorsys.rgb_to_hsv(*self.to_rgb()) + + def invert(self, with_alpha=False) -> ManimColor: + """Returns an linearly inverted version of the color (no inplace changes) + + Parameters + ---------- + with_alpha : bool, optional + if true the alpha value will be inverted too, by default False + + .. note:: + This can result in unintended behavior where objects are not displayed because their alpha + value is suddenly 0 or very low. Please keep that in mind when setting this to true + + Returns + ------- + ManimColor + The linearly inverted ManimColor + """ + return ManimColor(1.0 - self._internal_value, with_alpha) + + def interpolate(self, other: ManimColor, alpha: float) -> ManimColor: + """Interpolates between the current and the given ManimColor an returns the interpolated color + + Parameters + ---------- + other : ManimColor + The other ManimColor to be used for interpolation + alpha : float + A point on the line in rgba colorspace connecting the two colors i.e. the interpolation point + + 0 corresponds to the current ManimColor and 1 corresponds to the other ManimColor + + Returns + ------- + ManimColor + The interpolated ManimColor + """ + return ManimColor( + self._internal_value * (1 - alpha) + other._internal_value * alpha + ) + + @classmethod + def from_rgb( + cls, + rgb: RGB_Array_Float | RGB_Tuple_Float | RGB_Array_Int | RGB_Tuple_Int, + alpha: float = 1.0, + ) -> ManimColor: + """Creates a ManimColor from an RGB Array. Automagically decides which type it is int/float + + .. warning:: + Please make sure that your elements are not floats if you want integers. A 5.0 will result in the input + being interpreted as if it was a float rgb array with the value 5.0 and not the integer 5 + + + Parameters + ---------- + rgb : RGB_Array_Float | RGB_Tuple_Float | RGB_Array_Int | RGB_Tuple_Int + Any 3 Element Iterable + alpha : float, optional + alpha value to be used in the color, by default 1.0 + + Returns + ------- + ManimColor + Returns the ManimColor object + """ + return cls(rgb, alpha) + + @classmethod + def from_rgba( + cls, rgba: RGBA_Array_Float | RGBA_Tuple_Float | RGBA_Array_Int | RGBA_Tuple_Int + ) -> ManimColor: + """Creates a ManimColor from an RGBA Array. Automagically decides which type it is int/float + + .. warning:: + Please make sure that your elements are not floats if you want integers. A 5.0 will result in the input + being interpreted as if it was a float rgb array with the value 5.0 and not the integer 5 + + Parameters + ---------- + rgba : RGBA_Array_Float | RGBA_Tuple_Float | RGBA_Array_Int | RGBA_Tuple_Int + Any 4 Element Iterable + + Returns + ------- + ManimColor + Returns the ManimColor object + """ + return cls(rgba) + + @classmethod + def from_hex(cls, hex: str, alpha: float = 1.0) -> ManimColor: + """Creates a Manim Color from a hex string, prefixes allowed # and 0x + + Parameters + ---------- + hex : str + The hex string to be converted (currently only supports 6 nibbles) + alpha : float, optional + alpha value to be used for the hex string, by default 1.0 + + Returns + ------- + ManimColor + The ManimColor represented by the hex string + """ + return cls(hex, alpha) + + @classmethod + def from_hsv( + cls, hsv: HSV_Array_Float | HSV_Tuple_Float, alpha: float = 1.0 + ) -> ManimColor: + """Creates a ManimColor from an HSV Array + + Parameters + ---------- + hsv : HSV_Array_Float | HSV_Tuple_Float + Any 3 Element Iterable containing floats from 0-1 + alpha : float, optional + the alpha value to be used, by default 1.0 + + Returns + ------- + ManimColor + The ManimColor with the corresponding RGB values to the HSV + """ + rgb = colorsys.hsv_to_rgb(*hsv) + return cls(rgb, alpha) + + @classmethod + def parse( + cls, + color: ParsableManimColor | list[ParsableManimColor] | None, + alpha: float = 1.0, + ) -> ManimColor | list[ManimColor]: + """ + Handles the parsing of a list of colors or a single color. + + Parameters + ---------- + color + The color or list of colors to parse. Note that this function can not accept rgba tuples. It will assume that you mean list[ManimColor] and will return a list of ManimColors. + alpha + The alpha value to use if a single color is passed. or if a list of colors is passed to set the value of all colors. + + Returns + ------- + ManimColor + Either a list of colors or a singular color depending on the input + """ + if isinstance(color, (list, tuple)): + return [cls(c, alpha) for c in color] # type: ignore + return cls(color, alpha) # type: ignore + + @staticmethod + def gradient(colors: list[ManimColor], length: int): + """This is not implemented by now refer to :func:`color_gradient` for a working implementation for now""" + # TODO: implement proper gradient, research good implementation for this or look at 3b1b implementation + raise NotImplementedError + + def __repr__(self) -> str: + return f"{self.__class__.__name__}('{self.to_hex()}')" + + def __str__(self) -> str: + return f"{self.to_hex()}" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, ManimColor): + raise TypeError( + f"Cannot compare {self.__class__.__name__} with {other.__class__.__name__}" + ) + return np.allclose(self._internal_value, other._internal_value) + + def __add__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value + other._internal_value) + + def __sub__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value - other._internal_value) + + def __mul__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value * other._internal_value) + + def __truediv__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value / other._internal_value) + + def __floordiv__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value // other._internal_value) + + def __mod__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value % other._internal_value) + + def __pow__(self, other: ManimColor) -> ManimColor: + return ManimColor(self._internal_value**other._internal_value) + + def __and__(self, other: ManimColor) -> ManimColor: + return ManimColor(self.to_integer() & other.to_integer()) + + def __or__(self, other: ManimColor) -> ManimColor: + return ManimColor(self.to_integer() | other.to_integer()) + + def __xor__(self, other: ManimColor) -> ManimColor: + return ManimColor(self.to_integer() ^ other.to_integer()) + + +ParsableManimColor: TypeAlias = Union[ + ManimColor, + int, + str, + RGB_Tuple_Int, + RGB_Tuple_Float, + RGBA_Tuple_Int, + RGBA_Tuple_Float, + RGB_Array_Int, + RGB_Array_Float, + RGBA_Array_Int, + RGBA_Array_Float, +] +"""ParsableManimColor is the representation for all types that are parsable to a color in manim""" + + +def color_to_rgb(color: ParsableManimColor) -> RGB_Array_Float: + """Helper function for use in functional style programming refer to :meth:`to_rgb` in :class:`ManimColor` + + Parameters + ---------- + color : ParsableManimColor + A color + + Returns + ------- + RGB_Array_Float + the corresponding rgb array + """ + return ManimColor(color).to_rgb() + + +def color_to_rgba(color: ParsableManimColor, alpha: float = 1) -> RGBA_Array_Float: + """Helper function for use in functional style programming refer to :meth:`to_rgba_with_alpha` in :class:`ManimColor` + + Parameters + ---------- + color : ParsableManimColor + A color + alpha : float, optional + alpha value to be used in the color, by default 1 + + Returns + ------- + RGBA_Array_Float + the corresponding rgba array + """ + return ManimColor(color).to_rgba_with_alpha(alpha) + + +def color_to_int_rgb(color: ManimColor) -> RGB_Array_Int: + """Helper function for use in functional style programming refer to :meth:`to_int_rgb` in :class:`ManimColor` + + Parameters + ---------- + color : ManimColor + A color + + Returns + ------- + RGB_Array_Int + the corresponding int rgb array + """ + return ManimColor(color).to_int_rgb() + + +def color_to_int_rgba(color: ManimColor, alpha: float = 1.0) -> RGBA_Array_Int: + """Helper function for use in functional style programming refer to :meth:`to_int_rgba_with_alpha` in :class:`ManimColor` + + Parameters + ---------- + color : ManimColor + A color + alpha : float, optional + alpha value to be used in the color, by default 1.0 + + Returns + ------- + RGBA_Array_Int + the corresponding int rgba array + """ + return ManimColor(color).to_int_rgba_with_alpha(alpha) + + +def rgb_to_color(rgb: RGB_Array_Float | RGB_Tuple_Float) -> ManimColor: + """Helper function for use in functional style programming refer to :meth:`from_rgb` in :class:`ManimColor` + + Parameters + ---------- + rgb : RGB_Array_Float | RGB_Tuple_Float + A 3 element iterable + + Returns + ------- + ManimColor + A ManimColor with the corresponding value + """ + return ManimColor.from_rgb(rgb) + + +def rgba_to_color(rgba: RGBA_Array_Float | RGBA_Tuple_Float) -> ManimColor: + """Helper function for use in functional style programming refer to :meth:`from_rgba` in :class:`ManimColor` + + Parameters + ---------- + rgba : RGBA_Array_Float | RGBA_Tuple_Float + A 4 element iterable + + Returns + ------- + ManimColor + A ManimColor with the corresponding value + """ + return ManimColor.from_rgba(rgba) + + +def rgb_to_hex(rgb: RGB_Array_Float | RGB_Tuple_Float) -> str: + """Helper function for use in functional style programming refer to :meth:`from_rgb` in :class:`ManimColor` + + Parameters + ---------- + rgb : RGB_Array_Float | RGB_Tuple_Float + A 3 element iterable + + Returns + ------- + str + A hex representation of the color, refer to :meth:`to_hex` in :class:`ManimColor` + """ + return ManimColor.from_rgb(rgb).to_hex() + + +def hex_to_rgb(hex_code: str) -> RGB_Array_Float: + """Helper function for use in functional style programming refer to :meth:`to_hex` in :class:`ManimColor` + + Parameters + ---------- + hex_code : str + A hex string representing a color + + Returns + ------- + RGB_Array_Float + RGB array representing the color + """ + return ManimColor(hex_code).to_rgb() + + +def invert_color(color: ManimColor) -> ManimColor: + """Helper function for use in functional style programming refer to :meth:`invert` in :class:`ManimColor` + + Parameters + ---------- + color : ManimColor + A ManimColor + + Returns + ------- + ManimColor + The linearly inverted ManimColor + """ + return color.invert() + + +def interpolate_arrays( + arr1: np.ndarray[Any, Any], arr2: np.ndarray[Any, Any], alpha: float +) -> np.ndarray: + """Helper function used in Manim to fade between two objects smoothly + + Parameters + ---------- + arr1 : np.ndarray[Any, Any] + The first array of colors + arr2 : np.ndarray[Any, Any] + The second array of colors + alpha : float + The alpha value corresponding to the interpolation point between the two inputs + + Returns + ------- + np.ndarray + The interpolated value of the to arrays + """ + return (1 - alpha) * arr1 + alpha * arr2 + + +def color_gradient( + reference_colors: Sequence[ParsableManimColor], + length_of_output: int, +) -> list[ManimColor] | ManimColor: + """Creates a list of colors interpolated between the input array of colors with a specific number of colors + + Parameters + ---------- + reference_colors : Sequence[ParsableManimColor] + The colors to be interpolated between or spread apart + length_of_output : int + The number of colors that the output should have, ideally more than the input + + Returns + ------- + list[ManimColor] | ManimColor + A list of ManimColor's which has the interpolated colors + """ + if length_of_output == 0: + return ManimColor(reference_colors[0]) + if len(reference_colors) == 1: + return [ManimColor(reference_colors[0])] * length_of_output + rgbs = list(map(color_to_rgb, reference_colors)) + alphas = np.linspace(0, (len(rgbs) - 1), length_of_output) + floors = alphas.astype("int") + alphas_mod1 = alphas % 1 + # End edge case + alphas_mod1[-1] = 1 + floors[-1] = len(rgbs) - 2 + return [ + rgb_to_color((rgbs[i] * (1 - alpha)) + (rgbs[i + 1] * alpha)) + for i, alpha in zip(floors, alphas_mod1) + ] + + +def interpolate_color( + color1: ManimColor, color2: ManimColor, alpha: float +) -> ManimColor: + """Standalone function to interpolate two ManimColors and get the result refer to :meth:`interpolate` in :class:`ManimColor` + + Parameters + ---------- + color1 : ManimColor + First ManimColor + color2 : ManimColor + Second ManimColor + alpha : float + The alpha value determining the point of interpolation between the colors + + Returns + ------- + ManimColor + The interpolated ManimColor + """ + return color1.interpolate(color2, alpha) + + +def average_color(*colors: ManimColor) -> ManimColor: + """Determines the Average color of the given parameters + + Returns + ------- + ManimColor + The average color of the input + """ + rgbs = np.array(list(map(color_to_rgb, colors))) + mean_rgb = np.apply_along_axis(np.mean, 0, rgbs) + return rgb_to_color(mean_rgb) + + +def random_bright_color() -> ManimColor: + """Returns you a random bright color + + .. warning:: + This operation is very expensive please keep in mind the performance loss. + + Returns + ------- + ManimColor + A bright ManimColor + """ + color = random_color() + curr_rgb = color_to_rgb(color) + new_rgb = interpolate_arrays(curr_rgb, np.ones(len(curr_rgb)), 0.5) + return ManimColor(new_rgb) + + +def random_color() -> ManimColor: + """Return you a random ManimColor + + .. warning:: + This operation is very expensive please keep in mind the performance loss. + + Returns + ------- + ManimColor + _description_ + """ + import manim.utils.color.manim_colors as manim_colors + + return random.choice(manim_colors._all_manim_colors) + + +def get_shaded_rgb( + rgb: np.ndarray, + point: np.ndarray, + unit_normal_vect: np.ndarray, + light_source: np.ndarray, +) -> RGBA_Array_Float: + to_sun = normalize(light_source - point) + factor = 0.5 * np.dot(unit_normal_vect, to_sun) ** 3 + if factor < 0: + factor *= 0.5 + result = rgb + factor + return result + + +__all__ = [ + "ManimColor", + "ManimColorDType", + "ParsableManimColor", + "color_to_rgb", + "color_to_rgba", + "color_to_int_rgb", + "color_to_int_rgba", + "rgb_to_color", + "rgba_to_color", + "rgb_to_hex", + "hex_to_rgb", + "invert_color", + "interpolate_arrays", + "color_gradient", + "interpolate_color", + "average_color", + "random_bright_color", + "random_color", + "get_shaded_rgb", +] diff --git a/manim/utils/color/manim_colors.py b/manim/utils/color/manim_colors.py new file mode 100644 index 0000000000..f36925e035 --- /dev/null +++ b/manim/utils/color/manim_colors.py @@ -0,0 +1,220 @@ +"""Colors included in the global name space. + +These colors form Manim's default color space. + +.. manim:: ColorsOverview + :save_last_frame: + :hide_source: + + import manim.utils.color.manim_colors as Colors + + class ColorsOverview(Scene): + def construct(self): + def color_group(color): + group = VGroup( + *[ + Line(ORIGIN, RIGHT * 1.5, stroke_width=35, color=getattr(Colors, name.upper())) + for name in subnames(color) + ] + ).arrange_submobjects(buff=0.4, direction=DOWN) + + name = Text(color).scale(0.6).next_to(group, UP, buff=0.3) + if any(decender in color for decender in "gjpqy"): + name.shift(DOWN * 0.08) + group.add(name) + return group + + def subnames(name): + return [name + "_" + char for char in "abcde"] + + color_groups = VGroup( + *[ + color_group(color) + for color in [ + "blue", + "teal", + "green", + "yellow", + "gold", + "red", + "maroon", + "purple", + ] + ] + ).arrange_submobjects(buff=0.2, aligned_edge=DOWN) + + for line, char in zip(color_groups[0], "abcde"): + color_groups.add(Text(char).scale(0.6).next_to(line, LEFT, buff=0.2)) + + def named_lines_group(length, colors, names, text_colors, align_to_block): + lines = VGroup( + *[ + Line( + ORIGIN, + RIGHT * length, + stroke_width=55, + color=getattr(Colors, color.upper()), + ) + for color in colors + ] + ).arrange_submobjects(buff=0.6, direction=DOWN) + + for line, name, color in zip(lines, names, text_colors): + line.add(Text(name, color=color).scale(0.6).move_to(line)) + lines.next_to(color_groups, DOWN, buff=0.5).align_to( + color_groups[align_to_block], LEFT + ) + return lines + + other_colors = ( + "pink", + "light_pink", + "orange", + "light_brown", + "dark_brown", + "gray_brown", + ) + + other_lines = named_lines_group( + 3.2, + other_colors, + other_colors, + [BLACK] * 4 + [WHITE] * 2, + 0, + ) + + gray_lines = named_lines_group( + 6.6, + ["white"] + subnames("gray") + ["black"], + [ + "white", + "lighter_gray / gray_a", + "light_gray / gray_b", + "gray / gray_c", + "dark_gray / gray_d", + "darker_gray / gray_e", + "black", + ], + [BLACK] * 3 + [WHITE] * 4, + 2, + ) + + pure_colors = ( + "pure_red", + "pure_green", + "pure_blue", + ) + + pure_lines = named_lines_group( + 3.2, + pure_colors, + pure_colors, + [BLACK, BLACK, WHITE], + 6, + ) + + self.add(color_groups, other_lines, gray_lines, pure_lines) + + VGroup(*self.mobjects).move_to(ORIGIN) + +.. automanimcolormodule:: manim.utils.color.manim_colors + +""" + +from typing import List + +from .core import ManimColor + +WHITE: ManimColor = ManimColor("#FFFFFF") +GRAY_A: ManimColor = ManimColor("#DDDDDD") +GREY_A: ManimColor = ManimColor("#DDDDDD") +GRAY_B: ManimColor = ManimColor("#BBBBBB") +GREY_B: ManimColor = ManimColor("#BBBBBB") +GRAY_C: ManimColor = ManimColor("#888888") +GREY_C: ManimColor = ManimColor("#888888") +GRAY_D: ManimColor = ManimColor("#444444") +GREY_D: ManimColor = ManimColor("#444444") +GRAY_E: ManimColor = ManimColor("#222222") +GREY_E: ManimColor = ManimColor("#222222") +BLACK: ManimColor = ManimColor("#000000") +LIGHTER_GRAY: ManimColor = ManimColor("#DDDDDD") +LIGHTER_GREY: ManimColor = ManimColor("#DDDDDD") +LIGHT_GRAY: ManimColor = ManimColor("#BBBBBB") +LIGHT_GREY: ManimColor = ManimColor("#BBBBBB") +GRAY: ManimColor = ManimColor("#888888") +GREY: ManimColor = ManimColor("#888888") +DARK_GRAY: ManimColor = ManimColor("#444444") +DARK_GREY: ManimColor = ManimColor("#444444") +DARKER_GRAY: ManimColor = ManimColor("#222222") +DARKER_GREY: ManimColor = ManimColor("#222222") +BLUE_A: ManimColor = ManimColor("#C7E9F1") +BLUE_B: ManimColor = ManimColor("#9CDCEB") +BLUE_C: ManimColor = ManimColor("#58C4DD") +BLUE_D: ManimColor = ManimColor("#29ABCA") +BLUE_E: ManimColor = ManimColor("#236B8E") +PURE_BLUE: ManimColor = ManimColor("#0000FF") +BLUE: ManimColor = ManimColor("#58C4DD") +DARK_BLUE: ManimColor = ManimColor("#236B8E") +TEAL_A: ManimColor = ManimColor("#ACEAD7") +TEAL_B: ManimColor = ManimColor("#76DDC0") +TEAL_C: ManimColor = ManimColor("#5CD0B3") +TEAL_D: ManimColor = ManimColor("#55C1A7") +TEAL_E: ManimColor = ManimColor("#49A88F") +TEAL: ManimColor = ManimColor("#5CD0B3") +GREEN_A: ManimColor = ManimColor("#C9E2AE") +GREEN_B: ManimColor = ManimColor("#A6CF8C") +GREEN_C: ManimColor = ManimColor("#83C167") +GREEN_D: ManimColor = ManimColor("#77B05D") +GREEN_E: ManimColor = ManimColor("#699C52") +PURE_GREEN: ManimColor = ManimColor("#00FF00") +GREEN: ManimColor = ManimColor("#83C167") +YELLOW_A: ManimColor = ManimColor("#FFF1B6") +YELLOW_B: ManimColor = ManimColor("#FFEA94") +YELLOW_C: ManimColor = ManimColor("#FFFF00") +YELLOW_D: ManimColor = ManimColor("#F4D345") +YELLOW_E: ManimColor = ManimColor("#E8C11C") +YELLOW: ManimColor = ManimColor("#FFFF00") +GOLD_A: ManimColor = ManimColor("#F7C797") +GOLD_B: ManimColor = ManimColor("#F9B775") +GOLD_C: ManimColor = ManimColor("#F0AC5F") +GOLD_D: ManimColor = ManimColor("#E1A158") +GOLD_E: ManimColor = ManimColor("#C78D46") +GOLD: ManimColor = ManimColor("#F0AC5F") +RED_A: ManimColor = ManimColor("#F7A1A3") +RED_B: ManimColor = ManimColor("#FF8080") +RED_C: ManimColor = ManimColor("#FC6255") +RED_D: ManimColor = ManimColor("#E65A4C") +RED_E: ManimColor = ManimColor("#CF5044") +PURE_RED: ManimColor = ManimColor("#FF0000") +RED: ManimColor = ManimColor("#FC6255") +MAROON_A: ManimColor = ManimColor("#ECABC1") +MAROON_B: ManimColor = ManimColor("#EC92AB") +MAROON_C: ManimColor = ManimColor("#C55F73") +MAROON_D: ManimColor = ManimColor("#A24D61") +MAROON_E: ManimColor = ManimColor("#94424F") +MAROON: ManimColor = ManimColor("#C55F73") +PURPLE_A: ManimColor = ManimColor("#CAA3E8") +PURPLE_B: ManimColor = ManimColor("#B189C6") +PURPLE_C: ManimColor = ManimColor("#9A72AC") +PURPLE_D: ManimColor = ManimColor("#715582") +PURPLE_E: ManimColor = ManimColor("#644172") +PURPLE: ManimColor = ManimColor("#9A72AC") +PINK: ManimColor = ManimColor("#D147BD") +LIGHT_PINK: ManimColor = ManimColor("#DC75CD") +ORANGE: ManimColor = ManimColor("#FF862F") +LIGHT_BROWN: ManimColor = ManimColor("#CD853F") +DARK_BROWN: ManimColor = ManimColor("#8B4513") +GRAY_BROWN: ManimColor = ManimColor("#736357") +GREY_BROWN: ManimColor = ManimColor("#736357") + +# Colors used for Manim Community's logo and banner + +LOGO_WHITE = ManimColor("#ECE7E2") +LOGO_GREEN = ManimColor("#87C2A5") +LOGO_BLUE = ManimColor("#525893") +LOGO_RED = ManimColor("#E07A5F") +LOGO_BLACK = ManimColor("#343434") + +_all_manim_colors: List[ManimColor] = [ + x for x in globals().values() if isinstance(x, ManimColor) +] diff --git a/manim/utils/docbuild/autocolor_directive.py b/manim/utils/docbuild/autocolor_directive.py new file mode 100644 index 0000000000..cdd906f164 --- /dev/null +++ b/manim/utils/docbuild/autocolor_directive.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +import inspect + +from docutils import nodes +from docutils.parsers.rst import Directive +from sphinx.application import Sphinx + +from manim import ManimColor + + +def setup(app: Sphinx) -> None: + app.add_directive("automanimcolormodule", ManimColorModuleDocumenter) + + +class ManimColorModuleDocumenter(Directive): + objtype = "automanimcolormodule" + required_arguments = 1 + has_content = True + + def add_directive_header(self, sig: str) -> None: + super().add_directive_header(sig) + + def run( + self, + ) -> None: + module_name = self.arguments[0] + try: + import importlib + + module = importlib.import_module(module_name) + except ImportError: + return [ + nodes.error( + None, + nodes.paragraph(text="Failed to import module '%s'" % module_name), + ) + ] + + # Number of Colors displayed in one row + num_color_cols = 2 + table = nodes.table(align="center") + + tgroup = nodes.tgroup(cols=num_color_cols * 2) + table += tgroup + for _ in range(num_color_cols * 2): + tgroup += nodes.colspec(colwidth=1) + + # Create header rows for the table + thead = nodes.thead() + row = nodes.row() + for _ in range(num_color_cols): + col1 = nodes.paragraph(text="Color Name") + col2 = nodes.paragraph(text="RGB Hex Code") + row += nodes.entry("", col1) + row += nodes.entry("", col2) + thead += row + tgroup += thead + + color_elements = [] + for member_name, member_obj in inspect.getmembers(module): + if isinstance(member_obj, ManimColor): + r, g, b = member_obj.to_rgb() + luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b + + # Choose the font color based on the background luminance + if luminance > 0.5: + font_color = "black" + else: + font_color = "white" + + color_elements.append((member_name, member_obj.to_hex(), font_color)) + + tbody = nodes.tbody() + + for base_i in range(0, len(color_elements), num_color_cols): + row = nodes.row() + for member_name, hex_code, font_color in color_elements[ + base_i : base_i + num_color_cols + ]: + col1 = nodes.literal(text=member_name) + col2 = nodes.raw( + "", + f'
{hex_code}
', + format="html", + ) + row += nodes.entry("", col1) + row += nodes.entry("", col2) + tbody += row + tgroup += tbody + + return [table] diff --git a/manim/utils/docbuild/manim_directive.py b/manim/utils/docbuild/manim_directive.py index e4df6dc531..5b744985ca 100644 --- a/manim/utils/docbuild/manim_directive.py +++ b/manim/utils/docbuild/manim_directive.py @@ -26,7 +26,7 @@ def construct(self): >>> from manim import Create, Dot, RED, Scene >>> dot = Dot(color=RED) >>> dot.color - + ManimColor('#FC6255') >>> class DirectiveDoctestExample(Scene): ... def construct(self): ... self.play(Create(dot)) diff --git a/manim/utils/space_ops.py b/manim/utils/space_ops.py index 1d8fba6d3c..f24360cc75 100644 --- a/manim/utils/space_ops.py +++ b/manim/utils/space_ops.py @@ -44,7 +44,6 @@ from mapbox_earcut import triangulate_float32 as earcut from scipy.spatial.transform import Rotation -from .. import config from ..constants import DOWN, OUT, PI, RIGHT, TAU, UP, RendererType from ..utils.iterables import adjacent_pairs @@ -69,34 +68,19 @@ def quaternion_mult( Union[np.ndarray, List[Union[float, np.ndarray]]] Returns a list of product of two quaternions. """ - if config.renderer == RendererType.OPENGL: - if len(quats) == 0: - return [1, 0, 0, 0] - result = quats[0] - for next_quat in quats[1:]: - w1, x1, y1, z1 = result - w2, x2, y2, z2 = next_quat - result = [ - w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2, - w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2, - w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2, - w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2, - ] - return result - elif config.renderer == RendererType.CAIRO: - q1 = quats[0] - q2 = quats[1] - - w1, x1, y1, z1 = q1 - w2, x2, y2, z2 = q2 - return np.array( - [ - w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2, - w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2, - w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2, - w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2, - ], - ) + if len(quats) == 0: + return [1, 0, 0, 0] + result = quats[0] + for next_quat in quats[1:]: + w1, x1, y1, z1 = result + w2, x2, y2, z2 = next_quat + result = [ + w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2, + w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2, + w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2, + w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2, + ] + return result def quaternion_from_angle_axis( @@ -122,12 +106,9 @@ def quaternion_from_angle_axis( List[float] Gives back a quaternion from the angle and axis """ - if config.renderer == RendererType.OPENGL: - if not axis_normalized: - axis = normalize(axis) - return [math.cos(angle / 2), *(math.sin(angle / 2) * axis)] - elif config.renderer == RendererType.CAIRO: - return np.append(np.cos(angle / 2), np.sin(angle / 2) * normalize(axis)) + if not axis_normalized: + axis = normalize(axis) + return [math.cos(angle / 2), *(math.sin(angle / 2) * axis)] def angle_axis_from_quaternion(quaternion: Sequence[float]) -> Sequence[float]: diff --git a/poetry.lock b/poetry.lock index c0c6614ac8..4b88834f90 100644 --- a/poetry.lock +++ b/poetry.lock @@ -39,13 +39,13 @@ files = [ [[package]] name = "anyio" -version = "3.7.0" +version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = true python-versions = ">=3.7" files = [ - {file = "anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0"}, - {file = "anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce"}, + {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, + {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, ] [package.dependencies] @@ -54,7 +54,7 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=6.1.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme", "sphinxcontrib-jquery"] +doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] trio = ["trio (<0.22)"] @@ -152,13 +152,13 @@ files = [ [[package]] name = "astroid" -version = "2.15.5" +version = "2.15.6" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.7.2" files = [ - {file = "astroid-2.15.5-py3-none-any.whl", hash = "sha256:078e5212f9885fa85fbb0cf0101978a336190aadea6e13305409d099f71b2324"}, - {file = "astroid-2.15.5.tar.gz", hash = "sha256:1039262575027b441137ab4a62a793a9b43defb42c32d5670f38686207cd780f"}, + {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, + {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, ] [package.dependencies] @@ -249,36 +249,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "23.3.0" +version = "23.7.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, + {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, + {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, + {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, + {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, + {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, + {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, + {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, + {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, + {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, + {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, ] [package.dependencies] @@ -316,13 +313,13 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -414,97 +411,97 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.6" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, + {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, ] [package.dependencies] @@ -549,20 +546,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "colour" -version = "0.1.5" -description = "converts and manipulates various color representation (HSL, RVB, web, X11, ...)" -optional = false -python-versions = "*" -files = [ - {file = "colour-0.1.5-py2.py3-none-any.whl", hash = "sha256:33f6db9d564fadc16e59921a56999b79571160ce09916303d35346dddc17978c"}, - {file = "colour-0.1.5.tar.gz", hash = "sha256:af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee"}, -] - -[package.extras] -test = ["nose"] - [[package]] name = "comm" version = "0.1.3" @@ -787,52 +770,69 @@ files = [ [[package]] name = "cython" -version = "0.29.35" -description = "The Cython compiler for writing C extensions for the Python language." -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "Cython-0.29.35-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb8c11cd3e2d5ab7c2da78c5698e527ecbe469437326811562a3fbf4c5780ae4"}, - {file = "Cython-0.29.35-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9e54b4bee55fec952333126147b89c195ebe1d60e8e492ec778916ca5ca03151"}, - {file = "Cython-0.29.35-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba534e07543b44fb5ae37e56e61072ed1021b2d6ed643dbb92afa8239a04aa83"}, - {file = "Cython-0.29.35-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c1d7a9ff809fa9b4a9fe04df86c9f7f574ca31c2ad896462a97ea89523db286a"}, - {file = "Cython-0.29.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:247d585d8e49f002e522f3420751a4b3da0cf8532ef64d382e0bc9b4c840642c"}, - {file = "Cython-0.29.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ef2fc6f81aa8fb512535b01199fbe0d0ecafb8a29f261055e4b3f103c7bd6c75"}, - {file = "Cython-0.29.35-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:be7e1f98a359408186025f84d28d243e4527acb976f06b8ae8441dc5db204280"}, - {file = "Cython-0.29.35-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e1e5d62f15ea4fa4a8bc76e4fcc2ea313a8afe70488b7b870716bcfb12b8246"}, - {file = "Cython-0.29.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:75541567a2de1f893d247a7f9aa300dff5662fb33822a5fb75bc9621369b8ef0"}, - {file = "Cython-0.29.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:99477c1d4a105a562c05d43cc01905b6711f0a6a558d90f20c7aee0fb23d59d5"}, - {file = "Cython-0.29.35-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:c44bb47b314abc743705c7d038d351ffc3a34b95ab59b04b8cb27cf781b44ae8"}, - {file = "Cython-0.29.35-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:94859c3fd90767995b33d803edecad21e73749823db468d34f21e80451a11a99"}, - {file = "Cython-0.29.35-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a47974f3ebccf25702ffdd569904f7807ea1ef0830987c133877fabefdc4bab"}, - {file = "Cython-0.29.35-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:520c50d1875627c111900d7184fd658e32967a3ef807dc2fbc252e384839cbcf"}, - {file = "Cython-0.29.35-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:516abc754f15b84d6a8e71c8abd90e10346ea86001563480f0be1b349d09c6b8"}, - {file = "Cython-0.29.35-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c38e2c1e94b596132454b29757536d5afa810011d8bcb86918cc6693d2302940"}, - {file = "Cython-0.29.35-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:511f3adfb2db4db2eb882f892525db18a3a21803830474d2fa8b7a1a0f406985"}, - {file = "Cython-0.29.35-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:445e092708c26b357c97b3c68ea3eab31846fc9c1360bb150225f340c20322ec"}, - {file = "Cython-0.29.35-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3da42ef5b71674e4864b6afbe1bcacba75807684e22b6337f753cf297ae4e2d2"}, - {file = "Cython-0.29.35-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db695a19968a54b9ac53048c723234b4f0db7409def0a5c5517237202e7a9b92"}, - {file = "Cython-0.29.35-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:156ae92bedcd8261b5259724e2dc4d8eb12ac29159359e34c8358b65d24430ac"}, - {file = "Cython-0.29.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ea1c166336188630cd3e48aea4bbe06ea1bab444624e31c78973fffcae1cf708"}, - {file = "Cython-0.29.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e7b1901b03c37a082ba405e2cf73a57091e835c7af35f664f9dd1d855a992ad5"}, - {file = "Cython-0.29.35-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:27f58d0dd53a8ffb614814c725d3ee3f136e53178611f7f769ff358f69e50502"}, - {file = "Cython-0.29.35-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c19e2ba027d2e9e2d88a08aa6007344be781ed99bc0924deb237ec52ca14c09"}, - {file = "Cython-0.29.35-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b63ea04db03190dc8b25d167598989be5c1fe9fc3121d7802c0aafc8a4ec383f"}, - {file = "Cython-0.29.35-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5cdd65f7d85e15f1662c75d85d837c20d5c68acdd1029bfd08fb44c4422d7d9b"}, - {file = "Cython-0.29.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c17c876db737e1183d18d23db9cc31a9f565c113a32523c672af72f6497e382f"}, - {file = "Cython-0.29.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:2a2f2fb9b1c0a4a3890713127fba55a38d2cf1619b2570c43c92a93fee80111a"}, - {file = "Cython-0.29.35-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:a1ad51612ff6cfe05cd58f584f01373d64906bb0c860a067c6441359ff10464f"}, - {file = "Cython-0.29.35-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3cd717eee52072be8244bb07f0e4126f893214d2dfd1ba8b38b533e1ffec4f8a"}, - {file = "Cython-0.29.35-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:acab11c834cbe8fb7b71f9f7b4c4655afd82ffadb1be93d5354a67702fcee69d"}, - {file = "Cython-0.29.35-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8841158f274896702afe732571d37be22868a301275f952f6280547b25280538"}, - {file = "Cython-0.29.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0a9334d137bd42fca34b6b413063e19c194ba760846f34804ea1fb477cbe9a88"}, - {file = "Cython-0.29.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c4cd7de707938b8385cd1f88e1446228fbfe09af7822fa13877a4374c4881198"}, - {file = "Cython-0.29.35-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:05b7ede0b0eb1c6b9bd748fa67c5ebf3c3560d04d7c8a1486183ddd099de5a00"}, - {file = "Cython-0.29.35-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:537bc1e0ed9bf7289c80f39a9a9359f5649068647631996313f77ba57afde40b"}, - {file = "Cython-0.29.35-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:402307ad6fd209816cf539680035ef79cce171288cb98f81f3f11ea8ef3afd99"}, - {file = "Cython-0.29.35-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:563a02ea675ed6321d6257df067c89f17b89a63487ef8b9ce0d598e88e7ff0bd"}, - {file = "Cython-0.29.35-py2.py3-none-any.whl", hash = "sha256:417703dc67c447089258ab4b3d217f9c03894574e4a0d6c50648a208bc8352bb"}, - {file = "Cython-0.29.35.tar.gz", hash = "sha256:6e381fa0bf08b3c26ec2f616b19ae852c06f5750f4290118bf986b6f85c8c527"}, +version = "3.0.0" +description = "The Cython compiler for writing C extensions in the Python language." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Cython-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c7d728e1a49ad01d41181e3a9ea80b8d14e825f4679e4dd837cbf7bca7998a5"}, + {file = "Cython-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:626a4a6ef4b7ced87c348ea805488e4bd39dad9d0b39659aa9e1040b62bbfedf"}, + {file = "Cython-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33c900d1ca9f622b969ac7d8fc44bdae140a4a6c7d8819413b51f3ccd0586a09"}, + {file = "Cython-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a65bc50dc1bc2faeafd9425defbdef6a468974f5c4192497ff7f14adccfdcd32"}, + {file = "Cython-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3b71b399b10b038b056ad12dce1e317a8aa7a96e99de7e4fa2fa5d1c9415cfb9"}, + {file = "Cython-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f42f304c097cc53e9eb5f1a1d150380353d5018a3191f1b77f0de353c762181e"}, + {file = "Cython-3.0.0-cp310-cp310-win32.whl", hash = "sha256:3e234e2549e808d9259fdb23ebcfd145be30c638c65118326ec33a8d29248dc2"}, + {file = "Cython-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:829c8333195100448a23863cf64a07e1334fae6a275aefe871458937911531b6"}, + {file = "Cython-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06db81b1a01858fcc406616f8528e686ffb6cf7c3d78fb83767832bfecea8ad8"}, + {file = "Cython-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c93634845238645ce7abf63a56b1c5b6248189005c7caff898fd4a0dac1c5e1e"}, + {file = "Cython-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa606675c6bd23478b1d174e2a84e3c5a2c660968f97dc455afe0fae198f9d3d"}, + {file = "Cython-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3355e6f690184f984eeb108b0f5bbc4bcf8b9444f8168933acf79603abf7baf"}, + {file = "Cython-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:93a34e1ca8afa4b7075b02ed14a7e4969256297029fb1bfd4cbe48f7290dbcff"}, + {file = "Cython-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb1165ca9e78823f9ad1efa5b3d83156f868eabd679a615d140a3021bb92cd65"}, + {file = "Cython-3.0.0-cp311-cp311-win32.whl", hash = "sha256:2fadde1da055944f5e1e17625055f54ddd11f451889110278ef30e07bd5e1695"}, + {file = "Cython-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:254ed1f03a6c237fa64f0c6e44862058de65bfa2e6a3b48ca3c205492e0653aa"}, + {file = "Cython-3.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4e212237b7531759befb92699c452cd65074a78051ae4ee36ff8b237395ecf3d"}, + {file = "Cython-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f29307463eba53747b31f71394ed087e3e3e264dcc433e62de1d51f5c0c966c"}, + {file = "Cython-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53328a8af0806bebbdb48a4191883b11ee9d9dfb084d84f58fa5a8ab58baefc9"}, + {file = "Cython-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5962e70b15e863e72bed6910e8c6ffef77d36cc98e2b31c474378f3b9e49b0e3"}, + {file = "Cython-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9e69139f4e60ab14c50767a568612ea64d6907e9c8e0289590a170eb495e005f"}, + {file = "Cython-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c40bdbcb2286f0aeeb5df9ce53d45da2d2a9b36a16b331cd0809d212d22a8fc7"}, + {file = "Cython-3.0.0-cp312-cp312-win32.whl", hash = "sha256:8abb8915eb2e57fa53d918afe641c05d1bcc6ed1913682ec1f28de71f4e3f398"}, + {file = "Cython-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:30a4bd2481e59bd7ab2539f835b78edc19fc455811e476916f56026b93afd28b"}, + {file = "Cython-3.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0e1e4b7e4bfbf22fecfa5b852f0e499c442d4853b7ebd33ae37cdec9826ed5d8"}, + {file = "Cython-3.0.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b00df42cdd1a285a64491ba23de08ab14169d3257c840428d40eb7e8e9979af"}, + {file = "Cython-3.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:650d03ddddc08b051b4659778733f0f173ca7d327415755c05d265a6c1ba02fb"}, + {file = "Cython-3.0.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4965f2ebade17166f21a508d66dd60d2a0b3a3b90abe3f72003baa17ae020dd6"}, + {file = "Cython-3.0.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4123c8d03167803df31da6b39de167cb9c04ac0aa4e35d4e5aa9d08ad511b84d"}, + {file = "Cython-3.0.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:296c53b6c0030cf82987eef163444e8d7631cc139d995f9d58679d9fd1ddbf31"}, + {file = "Cython-3.0.0-cp36-cp36m-win32.whl", hash = "sha256:0d2c1e172f1c81bafcca703093608e10dc16e3e2d24c5644c17606c7fdb1792c"}, + {file = "Cython-3.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:bc816d8eb3686d6f8d165f4156bac18c1147e1035dc28a76742d0b7fb5b7c032"}, + {file = "Cython-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8d86651347bbdbac1aca1824696c5e4c0a3b162946c422edcca2be12a03744d1"}, + {file = "Cython-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84176bd04ce9f3cc8799b47ec6d1959fa1ea5e71424507df7bbf0b0915bbedef"}, + {file = "Cython-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35abcf07b8277ec95bbe49a07b5c8760a2d941942ccfe759a94c8d2fe5602e9f"}, + {file = "Cython-3.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a44d6b9a29b2bff38bb648577b2fcf6a68cf8b1783eee89c2eb749f69494b98d"}, + {file = "Cython-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4dc6bbe7cf079db37f1ebb9b0f10d0d7f29e293bb8688e92d50b5ea7a91d82f3"}, + {file = "Cython-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e28763e75e380b8be62b02266a7995a781997c97c119efbdccb8fb954bcd7574"}, + {file = "Cython-3.0.0-cp37-cp37m-win32.whl", hash = "sha256:edae615cb4af51d5173e76ba9aea212424d025c57012e9cdf2f131f774c5ba71"}, + {file = "Cython-3.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:20c604e974832aaf8b7a1f5455ee7274b34df62a35ee095cd7d2ed7e818e6c53"}, + {file = "Cython-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c85fd2b1cbd9400d60ebe074795bb9a9188752f1612be3b35b0831a24879b91f"}, + {file = "Cython-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:090256c687106932339f87f888b95f0d69c617bc9b18801555545b695d29d8ab"}, + {file = "Cython-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec2a67a0a7d9d4399758c0657ca03e5912e37218859cfbf046242cc532bfb3b"}, + {file = "Cython-3.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1cdd01ce45333bc264a218c6e183700d6b998f029233f586a53c9b13455c2d2"}, + {file = "Cython-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ecee663d2d50ca939fc5db81f2f8a219c2417b4651ad84254c50a03a9cb1aadd"}, + {file = "Cython-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30f10e79393b411af7677c270ea69807acb9fc30205c8ff25561f4deef780ec1"}, + {file = "Cython-3.0.0-cp38-cp38-win32.whl", hash = "sha256:609777d3a7a0a23b225e84d967af4ad2485c8bdfcacef8037cf197e87d431ca0"}, + {file = "Cython-3.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7f4a6dfd42ae0a45797f50fc4f6add702abf46ab3e7cd61811a6c6a97a40e1a2"}, + {file = "Cython-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2d8158277c8942c0b20ff4c074fe6a51c5b89e6ac60cef606818de8c92773596"}, + {file = "Cython-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54e34f99b2a8c1e11478541b2822e6408c132b98b6b8f5ed89411e5e906631ea"}, + {file = "Cython-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877d1c8745df59dd2061a0636c602729e9533ba13f13aa73a498f68662e1cbde"}, + {file = "Cython-3.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204690be60f0ff32eb70b04f28ef0d1e50ffd7b3f77ba06a7dc2389ee3b848e0"}, + {file = "Cython-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:06fcb4628ccce2ba5abc8630adbeaf4016f63a359b4c6c3827b2d80e0673981c"}, + {file = "Cython-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:090e24cfa31c926d0b13d8bb2ef48175acdd061ae1413343c94a2b12a4a4fa6f"}, + {file = "Cython-3.0.0-cp39-cp39-win32.whl", hash = "sha256:4cd00f2158dc00f7f93a92444d0f663eda124c9c29bbbd658964f4e89c357fe8"}, + {file = "Cython-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:5b4cc896d49ce2bae8d6a030f9a4c64965b59c38acfbf4617685e17f7fcf1731"}, + {file = "Cython-3.0.0-py2.py3-none-any.whl", hash = "sha256:ff1aef1a03cfe293237c7a86ae9625b0411b2df30c53d1a7f29a8d381f38a1df"}, + {file = "Cython-3.0.0.tar.gz", hash = "sha256:350b18f9673e63101dbbfcf774ee2f57c20ac4636d255741d76ca79016b1bd82"}, ] [[package]] @@ -944,13 +944,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "dill" -version = "0.3.6" -description = "serialize all of python" +version = "0.3.7" +description = "serialize all of Python" optional = false python-versions = ">=3.7" files = [ - {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, - {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, + {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, + {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, ] [package.extras] @@ -958,13 +958,13 @@ graph = ["objgraph (>=1.7.2)"] [[package]] name = "distlib" -version = "0.3.6" +version = "0.3.7" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, + {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, + {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, ] [[package]] @@ -978,15 +978,26 @@ files = [ {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, ] +[[package]] +name = "entrypoints" +version = "0.4" +description = "Discover and load entry points from installed packages." +optional = true +python-versions = ">=3.6" +files = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] + [[package]] name = "exceptiongroup" -version = "1.1.1" +version = "1.1.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, ] [package.extras] @@ -994,17 +1005,17 @@ test = ["pytest (>=6)"] [[package]] name = "execnet" -version = "1.9.0" +version = "2.0.2" description = "execnet: rapid multi-Python deployment" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"}, - {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"}, + {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, + {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, ] [package.extras] -testing = ["pre-commit"] +testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "executing" @@ -1022,13 +1033,13 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] [[package]] name = "fastjsonschema" -version = "2.17.1" +version = "2.18.0" description = "Fastest Python implementation of JSON schema" optional = true python-versions = "*" files = [ - {file = "fastjsonschema-2.17.1-py3-none-any.whl", hash = "sha256:4b90b252628ca695280924d863fe37234eebadc29c5360d322571233dc9746e0"}, - {file = "fastjsonschema-2.17.1.tar.gz", hash = "sha256:f4eeb8a77cef54861dbf7424ac8ce71306f12cbb086c45131bcba2c6a4f726e3"}, + {file = "fastjsonschema-2.18.0-py3-none-any.whl", hash = "sha256:128039912a11a807068a7c87d0da36660afbfd7202780db26c4aa7153cfdc799"}, + {file = "fastjsonschema-2.18.0.tar.gz", hash = "sha256:e820349dd16f806e4bd1467a138dced9def4bc7d6213a34295272a6cac95b5bd"}, ] [package.extras] @@ -1102,13 +1113,13 @@ test = ["coverage", "coveralls", "mock", "pytest", "pytest-cov"] [[package]] name = "flake8-comprehensions" -version = "3.12.0" +version = "3.14.0" description = "A flake8 plugin to help you write better list/set/dict comprehensions." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "flake8_comprehensions-3.12.0-py3-none-any.whl", hash = "sha256:013234637ec7dfcb7cd2900578fb53c512f81db909cefe371c019232695c362d"}, - {file = "flake8_comprehensions-3.12.0.tar.gz", hash = "sha256:419ef1a6e8de929203791a5e8ff5e3906caeba13eb3290eebdbf88a9078d502e"}, + {file = "flake8_comprehensions-3.14.0-py3-none-any.whl", hash = "sha256:7b9d07d94aa88e62099a6d1931ddf16c344d4157deedf90fe0d8ee2846f30e97"}, + {file = "flake8_comprehensions-3.14.0.tar.gz", hash = "sha256:81768c61bfc064e1a06222df08a2580d97de10cb388694becaf987c331c6c0cf"}, ] [package.dependencies] @@ -1131,13 +1142,13 @@ pydocstyle = ">=2.1" [[package]] name = "flake8-plugin-utils" -version = "1.3.2" +version = "1.3.3" description = "The package provides base classes and utils for flake8 plugin writing" optional = false python-versions = ">=3.6,<4.0" files = [ - {file = "flake8-plugin-utils-1.3.2.tar.gz", hash = "sha256:20fa2a8ca2decac50116edb42e6af0a1253ef639ad79941249b840531889c65a"}, - {file = "flake8_plugin_utils-1.3.2-py3-none-any.whl", hash = "sha256:1fe43e3e9acf3a7c0f6b88f5338cad37044d2f156c43cb6b080b5f9da8a76f06"}, + {file = "flake8-plugin-utils-1.3.3.tar.gz", hash = "sha256:39f6f338d038b301c6fd344b06f2e81e382b68fa03c0560dff0d9b1791a11a2c"}, + {file = "flake8_plugin_utils-1.3.3-py3-none-any.whl", hash = "sha256:e4848c57d9d50f19100c2d75fa794b72df068666a9041b4b0409be923356a3ed"}, ] [[package]] @@ -1187,45 +1198,45 @@ flake8 = ">=3.7" [[package]] name = "fonttools" -version = "4.40.0" +version = "4.41.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.40.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b802dcbf9bcff74672f292b2466f6589ab8736ce4dcf36f48eb994c2847c4b30"}, - {file = "fonttools-4.40.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f6e3fa3da923063c286320e728ba2270e49c73386e3a711aa680f4b0747d692"}, - {file = "fonttools-4.40.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdf60f8a5c6bcce7d024a33f7e4bc7921f5b74e8ea13bccd204f2c8b86f3470"}, - {file = "fonttools-4.40.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91784e21a1a085fac07c6a407564f4a77feb471b5954c9ee55a4f9165151f6c1"}, - {file = "fonttools-4.40.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:05171f3c546f64d78569f10adc0de72561882352cac39ec7439af12304d8d8c0"}, - {file = "fonttools-4.40.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7449e5e306f3a930a8944c85d0cbc8429cba13503372a1a40f23124d6fb09b58"}, - {file = "fonttools-4.40.0-cp310-cp310-win32.whl", hash = "sha256:bae8c13abbc2511e9a855d2142c0ab01178dd66b1a665798f357da0d06253e0d"}, - {file = "fonttools-4.40.0-cp310-cp310-win_amd64.whl", hash = "sha256:425b74a608427499b0e45e433c34ddc350820b6f25b7c8761963a08145157a66"}, - {file = "fonttools-4.40.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:00ab569b2a3e591e00425023ade87e8fef90380c1dde61be7691cb524ca5f743"}, - {file = "fonttools-4.40.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:18ea64ac43e94c9e0c23d7a9475f1026be0e25b10dda8f236fc956188761df97"}, - {file = "fonttools-4.40.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:022c4a16b412293e7f1ce21b8bab7a6f9d12c4ffdf171fdc67122baddb973069"}, - {file = "fonttools-4.40.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530c5d35109f3e0cea2535742d6a3bc99c0786cf0cbd7bb2dc9212387f0d908c"}, - {file = "fonttools-4.40.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5e00334c66f4e83535384cb5339526d01d02d77f142c23b2f97bd6a4f585497a"}, - {file = "fonttools-4.40.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb52c10fda31159c22c7ed85074e05f8b97da8773ea461706c273e31bcbea836"}, - {file = "fonttools-4.40.0-cp311-cp311-win32.whl", hash = "sha256:6a8d71b9a5c884c72741868e845c0e563c5d83dcaf10bb0ceeec3b4b2eb14c67"}, - {file = "fonttools-4.40.0-cp311-cp311-win_amd64.whl", hash = "sha256:15abb3d055c1b2dff9ce376b6c3db10777cb74b37b52b78f61657634fd348a0d"}, - {file = "fonttools-4.40.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14037c31138fbd21847ad5e5441dfdde003e0a8f3feb5812a1a21fd1c255ffbd"}, - {file = "fonttools-4.40.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:94c915f6716589f78bc00fbc14c5b8de65cfd11ee335d32504f1ef234524cb24"}, - {file = "fonttools-4.40.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37467cee0f32cada2ec08bc16c9c31f9b53ea54b2f5604bf25a1246b5f50593a"}, - {file = "fonttools-4.40.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56d4d85f5374b45b08d2f928517d1e313ea71b4847240398decd0ab3ebbca885"}, - {file = "fonttools-4.40.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8c4305b171b61040b1ee75d18f9baafe58bd3b798d1670078efe2c92436bfb63"}, - {file = "fonttools-4.40.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a954b90d1473c85a22ecf305761d9fd89da93bbd31dae86e7dea436ad2cb5dc9"}, - {file = "fonttools-4.40.0-cp38-cp38-win32.whl", hash = "sha256:1bc4c5b147be8dbc5df9cc8ac5e93ee914ad030fe2a201cc8f02f499db71011d"}, - {file = "fonttools-4.40.0-cp38-cp38-win_amd64.whl", hash = "sha256:8a917828dbfdb1cbe50cf40eeae6fbf9c41aef9e535649ed8f4982b2ef65c091"}, - {file = "fonttools-4.40.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:882983279bf39afe4e945109772c2ffad2be2c90983d6559af8b75c19845a80a"}, - {file = "fonttools-4.40.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c55f1b4109dbc3aeb496677b3e636d55ef46dc078c2a5e3f3db4e90f1c6d2907"}, - {file = "fonttools-4.40.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec468c022d09f1817c691cf884feb1030ef6f1e93e3ea6831b0d8144c06480d1"}, - {file = "fonttools-4.40.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5adf4ba114f028fc3f5317a221fd8b0f4ef7a2e5524a2b1e0fd891b093791a"}, - {file = "fonttools-4.40.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aa83b3f151bc63970f39b2b42a06097c5a22fd7ed9f7ba008e618de4503d3895"}, - {file = "fonttools-4.40.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:97d95b8301b62bdece1af943b88bcb3680fd385f88346a4a899ee145913b414a"}, - {file = "fonttools-4.40.0-cp39-cp39-win32.whl", hash = "sha256:1a003608400dd1cca3e089e8c94973c6b51a4fb1ef00ff6d7641617b9242e637"}, - {file = "fonttools-4.40.0-cp39-cp39-win_amd64.whl", hash = "sha256:7961575221e3da0841c75da53833272c520000d76f7f71274dbf43370f8a1065"}, - {file = "fonttools-4.40.0-py3-none-any.whl", hash = "sha256:200729d12461e2038700d31f0d49ad5a7b55855dec7525074979a06b46f88505"}, - {file = "fonttools-4.40.0.tar.gz", hash = "sha256:337b6e83d7ee73c40ea62407f2ce03b07c3459e213b6f332b94a69923b9e1cb9"}, + {file = "fonttools-4.41.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a7bbb290d13c6dd718ec2c3db46fe6c5f6811e7ea1e07f145fd8468176398224"}, + {file = "fonttools-4.41.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec453a45778524f925a8f20fd26a3326f398bfc55d534e37bab470c5e415caa1"}, + {file = "fonttools-4.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2071267deaa6d93cb16288613419679c77220543551cbe61da02c93d92df72f"}, + {file = "fonttools-4.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e3334d51f0e37e2c6056e67141b2adabc92613a968797e2571ca8a03bd64773"}, + {file = "fonttools-4.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cac73bbef7734e78c60949da11c4903ee5837168e58772371bd42a75872f4f82"}, + {file = "fonttools-4.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:edee0900cf0eedb29d17c7876102d6e5a91ee333882b1f5abc83e85b934cadb5"}, + {file = "fonttools-4.41.1-cp310-cp310-win32.whl", hash = "sha256:2a22b2c425c698dcd5d6b0ff0b566e8e9663172118db6fd5f1941f9b8063da9b"}, + {file = "fonttools-4.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:547ab36a799dded58a46fa647266c24d0ed43a66028cd1cd4370b246ad426cac"}, + {file = "fonttools-4.41.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:849ec722bbf7d3501a0e879e57dec1fc54919d31bff3f690af30bb87970f9784"}, + {file = "fonttools-4.41.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38cdecd8f1fd4bf4daae7fed1b3170dfc1b523388d6664b2204b351820aa78a7"}, + {file = "fonttools-4.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ae64303ba670f8959fdaaa30ba0c2dabe75364fdec1caeee596c45d51ca3425"}, + {file = "fonttools-4.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14f3ccea4cc7dd1b277385adf3c3bf18f9860f87eab9c2fb650b0af16800f55"}, + {file = "fonttools-4.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:33191f062549e6bb1a4782c22a04ebd37009c09360e2d6686ac5083774d06d95"}, + {file = "fonttools-4.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:704bccd69b0abb6fab9f5e4d2b75896afa48b427caa2c7988792a2ffce35b441"}, + {file = "fonttools-4.41.1-cp311-cp311-win32.whl", hash = "sha256:4edc795533421e98f60acee7d28fc8d941ff5ac10f44668c9c3635ad72ae9045"}, + {file = "fonttools-4.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:aaaef294d8e411f0ecb778a0aefd11bb5884c9b8333cc1011bdaf3b58ca4bd75"}, + {file = "fonttools-4.41.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3d1f9471134affc1e3b1b806db6e3e2ad3fa99439e332f1881a474c825101096"}, + {file = "fonttools-4.41.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59eba8b2e749a1de85760da22333f3d17c42b66e03758855a12a2a542723c6e7"}, + {file = "fonttools-4.41.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9b3cc10dc9e0834b6665fd63ae0c6964c6bc3d7166e9bc84772e0edd09f9fa2"}, + {file = "fonttools-4.41.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2c2964bdc827ba6b8a91dc6de792620be4da3922c4cf0599f36a488c07e2b2"}, + {file = "fonttools-4.41.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7763316111df7b5165529f4183a334aa24c13cdb5375ffa1dc8ce309c8bf4e5c"}, + {file = "fonttools-4.41.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b2d1ee95be42b80d1f002d1ee0a51d7a435ea90d36f1a5ae331be9962ee5a3f1"}, + {file = "fonttools-4.41.1-cp38-cp38-win32.whl", hash = "sha256:f48602c0b3fd79cd83a34c40af565fe6db7ac9085c8823b552e6e751e3a5b8be"}, + {file = "fonttools-4.41.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0938ebbeccf7c80bb9a15e31645cf831572c3a33d5cc69abe436e7000c61b14"}, + {file = "fonttools-4.41.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e5c2b0a95a221838991e2f0e455dec1ca3a8cc9cd54febd68cc64d40fdb83669"}, + {file = "fonttools-4.41.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:891cfc5a83b0307688f78b9bb446f03a7a1ad981690ac8362f50518bc6153975"}, + {file = "fonttools-4.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73ef0bb5d60eb02ba4d3a7d23ada32184bd86007cb2de3657cfcb1175325fc83"}, + {file = "fonttools-4.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f240d9adf0583ac8fc1646afe7f4ac039022b6f8fa4f1575a2cfa53675360b69"}, + {file = "fonttools-4.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bdd729744ae7ecd7f7311ad25d99da4999003dcfe43b436cf3c333d4e68de73d"}, + {file = "fonttools-4.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b927e5f466d99c03e6e20961946314b81d6e3490d95865ef88061144d9f62e38"}, + {file = "fonttools-4.41.1-cp39-cp39-win32.whl", hash = "sha256:afce2aeb80be72b4da7dd114f10f04873ff512793d13ce0b19d12b2a4c44c0f0"}, + {file = "fonttools-4.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:1df1b6f4c7c4bc8201eb47f3b268adbf2539943aa43c400f84556557e3e109c0"}, + {file = "fonttools-4.41.1-py3-none-any.whl", hash = "sha256:952cb405f78734cf6466252fec42e206450d1a6715746013f64df9cbd4f896fa"}, + {file = "fonttools-4.41.1.tar.gz", hash = "sha256:e16a9449f21a93909c5be2f5ed5246420f2316e94195dbfccb5238aaa38f9751"}, ] [package.extras] @@ -1286,13 +1297,13 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.31" +version = "3.1.32" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, - {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, + {file = "GitPython-3.1.32-py3-none-any.whl", hash = "sha256:e3d59b1c2c6ebb9dfa7a184daf3b6dd4914237e7488a1730a6d8f6f5d0b4187f"}, + {file = "GitPython-3.1.32.tar.gz", hash = "sha256:8d9b8cb1e80b9735e8717c9362079d3ce4c6e5ddeebedd0361b228c3a67a62f6"}, ] [package.dependencies] @@ -1300,72 +1311,81 @@ gitdb = ">=4.0.1,<5" [[package]] name = "glcontext" -version = "2.3.7" +version = "2.4.0" description = "Portable OpenGL Context" optional = false python-versions = "*" files = [ - {file = "glcontext-2.3.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8ece87d8616bf12e55a08a05159f4303c8b82d348c2c43c7297c85d8e95dfa3e"}, - {file = "glcontext-2.3.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5dcd68b23b1a549a3b0851d3621630e492ff9015a18f29f2512088b4e03e4d9"}, - {file = "glcontext-2.3.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3dc6a6133bffc33cb75bbc79dc08bd1e206017ac69ec68f703227aaf5f5129bb"}, - {file = "glcontext-2.3.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc906a19be96d2820dee8e681ca1d3129821eb6e5c4f1544db723edf0c0696bd"}, - {file = "glcontext-2.3.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89869925f4e1762878561fa1e3cbd1ee5ce73e5597275b5fc8bc054dd894fca4"}, - {file = "glcontext-2.3.7-cp310-cp310-win32.whl", hash = "sha256:088482e07aed6229a34fbb1d0c5fbe0ad9c413dbddb5eaaa8e5c83d933cbe8d6"}, - {file = "glcontext-2.3.7-cp310-cp310-win_amd64.whl", hash = "sha256:03b505fc8ce2dfcf800feac0e20cbb7b1899a5ef7407fa0cccb3267a5b2abbdb"}, - {file = "glcontext-2.3.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:155154084bdedfc8904524d8bd212e5896cc5d5caf1d45c19d13dc34aee4b5ab"}, - {file = "glcontext-2.3.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:65bf63b2068e13183e34a4beaf921f20cd144a25cebed0fa9a46f25e8b47577d"}, - {file = "glcontext-2.3.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51e04b162529f99c7b764129e07aaa3ec8edfc63ca7a212b71e348319f8b821b"}, - {file = "glcontext-2.3.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0961811d85ac551b1ce1f197296a8e5f497b35a149cfc6e128f74dfaef5e592f"}, - {file = "glcontext-2.3.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa4595600a699ed13e854b87116a1519a25e47a10100df01650c1be3532bd629"}, - {file = "glcontext-2.3.7-cp311-cp311-win32.whl", hash = "sha256:7dc827f119ccc3ea55b7bec73573516117c55319edc93bc2bbcf389bf1e7acfe"}, - {file = "glcontext-2.3.7-cp311-cp311-win_amd64.whl", hash = "sha256:a22a3fbb3abefd7a9f5a672af8fccb8d8d996b2eae2075ac9d8ca10f4a6f6653"}, - {file = "glcontext-2.3.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6df4cf354adb911a9ca58bc5c60fb1ae27544527878bc3ddf8f7ea56946c6fcc"}, - {file = "glcontext-2.3.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f1656e931c937f8bdce12c551fa0077db814b123e7f16b6db26e1e7c89dae16"}, - {file = "glcontext-2.3.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:058bf839884b5d5d8488978ed804023be64fc9bafb674a0ede1ba26c05bd9146"}, - {file = "glcontext-2.3.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f17be52c99e3eaeefaaac780bde40bfa99be3ad32bbfed346bb347c9d0b01967"}, - {file = "glcontext-2.3.7-cp37-cp37m-win32.whl", hash = "sha256:5a4cc4fef74dcab0b428ef750fad3c05311657ffb4f1dd3d4afa75e664551588"}, - {file = "glcontext-2.3.7-cp37-cp37m-win_amd64.whl", hash = "sha256:fd03d6d8dbfdd9bab97ada98759e345b29d50f690cec95dd01d22d02f616bfea"}, - {file = "glcontext-2.3.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:03b3925472771607d13feb9a0de93b04408ae86c91eee3f5e09e43744f90b1af"}, - {file = "glcontext-2.3.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f234ebcc3355155811389c320974056ce20233770205fc7cb41d8653d6137efa"}, - {file = "glcontext-2.3.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46ef33b616027a616dcceba33bc48e589ba24fa84ee43c5b8611c5b57d2dace3"}, - {file = "glcontext-2.3.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ff822473d498d606424f92a341d01121562af35bf1d3d0e2ccd1f9c2f86859b"}, - {file = "glcontext-2.3.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c90b525296c4930b1f74bf460b97af052c3cc9ba47d811f416ed82e1b16b03"}, - {file = "glcontext-2.3.7-cp38-cp38-win32.whl", hash = "sha256:f1444229f84a7aea48ce3f1143147acee92eee264826db4c41ea38c6b0a924a9"}, - {file = "glcontext-2.3.7-cp38-cp38-win_amd64.whl", hash = "sha256:59580776fd7e520995b82a6134c8ca7152a7881e174077fc785f4cc69c476d69"}, - {file = "glcontext-2.3.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8aa90a648f17bacacef95b09a5fab368e8feff3714fc4b81eb9374bd439850e6"}, - {file = "glcontext-2.3.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:867fe03c1c241d2416b719e23d1671537e34e03bab741dcc50d49298c1397073"}, - {file = "glcontext-2.3.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae930d226f9145ec580f3fe10fc23262b8c21a6a0cd6fbc081a6606e9000ce74"}, - {file = "glcontext-2.3.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc73099fa7525a20e2021a2f2befa61e9ef306364838c1859ba79f5bd8eda33a"}, - {file = "glcontext-2.3.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:755698083c6119e771ea3f5837143324636700e1e5b397885c05085a837d5876"}, - {file = "glcontext-2.3.7-cp39-cp39-win32.whl", hash = "sha256:ab8147607af85fc2ec2e02b4364ff36b636f63781295e74220dc5c5856794e07"}, - {file = "glcontext-2.3.7-cp39-cp39-win_amd64.whl", hash = "sha256:2fae2d4bcb0564e0eb8e72c97e149faebfad369aeaef74ed7fd17f5f84a07428"}, - {file = "glcontext-2.3.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e48550269c3baff04cc46ca79bd9d2d5a62216665751b10aa86d95ebe182d319"}, - {file = "glcontext-2.3.7-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82eff3e5664c5a17fc0cbb1dae2c32088cdd3c3bfbfe4b9c71012275c2a63e8e"}, - {file = "glcontext-2.3.7-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44f7dbf800e6f933a5c56e07b18ef70f44949f34bf57f5d5318e2199c12cbfbc"}, - {file = "glcontext-2.3.7-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d18b3e9e9259595dd5c538c1fd9238f8b26c22d6351397e721ef8a89ad55f12"}, - {file = "glcontext-2.3.7-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:376e12d230fd198a329dfe253b41480b0a015a2dabbac5eecf6b279fe3afb1b3"}, - {file = "glcontext-2.3.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:84dc3b831af386cb20cae8fb10ac78d8007bb29118730db2e9f21c329a528028"}, - {file = "glcontext-2.3.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c873315741dbc208c199cbe449aa77d1831551dd78d9b3d67e0a6f9eb576d"}, - {file = "glcontext-2.3.7-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e47dd8cf39cabe20b41dd0c4c6589f0c7a4de2a5bad8e51ab0fc0b4a26ae6b"}, - {file = "glcontext-2.3.7-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79e561b67e606b6e13ba58e6ae3e688e3429dbb5d60e551ba40d649432044f37"}, - {file = "glcontext-2.3.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d986976c9b758d60d966fbaf8bdff129d125e8b2c58889d2220ca96991f1071e"}, - {file = "glcontext-2.3.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:891b56a3bbaf3470595c218e847e79448e95cecb412224c8585da640c61cf29a"}, - {file = "glcontext-2.3.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a349317c9d634aa56e30aae9ad408bc1b9de281af0e4f87de682b454ebaf540e"}, - {file = "glcontext-2.3.7-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1716d21d423a1a2261cd717bc66714eeb5464d6a061b92678f356ca69cfd1255"}, - {file = "glcontext-2.3.7-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440ff5f59f318ce495c6bdddfa01a23dd64713fb960ceb87c3a9423745781d47"}, - {file = "glcontext-2.3.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ef0c7e534e53f14b7b09dc3fe1e207243c9bb3eb2543d9876ed253156ca7a8bf"}, - {file = "glcontext-2.3.7.tar.gz", hash = "sha256:bb2d0503f45ad85ca7319bd37fd983e374b3f824c38a450b5f72cfc974114156"}, + {file = "glcontext-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d8a5901447e5a99b085b3e8c54dcf9012c88d9d75c7ea657ec4294b8b4e4fb"}, + {file = "glcontext-2.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c90c53fb56ecebeecae2d113f95d4a699fcde7924132e0195569118f80349c5a"}, + {file = "glcontext-2.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95d065ad2fbfb395966559aceb4359250243e6fb07a3ca5becdddeba8e8f428d"}, + {file = "glcontext-2.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:33edb364c96a4081d93e428c55d337995f42cd58e7d2b44ea593b662bdb8b50e"}, + {file = "glcontext-2.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5b52eff82377469514818c90c4a16a04a39d01d3adfcd7dcadd558ed02dc7cef"}, + {file = "glcontext-2.4.0-cp310-cp310-win32.whl", hash = "sha256:5f3c6744c77ade16e715b5a8636384cf11ac3ee365493bdb38091d9c1f87eda8"}, + {file = "glcontext-2.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:21b5ac40463a711bdb6ba59751693b4f5f765cc807adeface62ce292813460ac"}, + {file = "glcontext-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4313d59451db04ebbb26232beefb5a850fbb79bb9e72b3c4e7783da3c146517b"}, + {file = "glcontext-2.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2088f15d4c5d42f1eef77b45d9ff985d8e14d3989d5d9298e2433075f5f1f15a"}, + {file = "glcontext-2.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9450f7c7b5923c17a627e1d4e965f208e28ce7b547f5fd1f756f7701c23e3c88"}, + {file = "glcontext-2.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d52ea6dc8e064f7f4cc7423943885ddecec321a5dfcce66d71a0892834334430"}, + {file = "glcontext-2.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5060eea43ec7bc2d3cf03582d56abf10938a188947f86aa5b558d197baec2753"}, + {file = "glcontext-2.4.0-cp311-cp311-win32.whl", hash = "sha256:c8b9de7f50650443a5192d42c170fa561c0b241bb1b49664ae67a22fdcf6baa4"}, + {file = "glcontext-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d60c684983a091408e06ee5826813926cd7e84069f1bd7760397edfe0e33aad5"}, + {file = "glcontext-2.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6bf0fa5f40769e79c74f50f71f6c82acf118081f153e3f84533e1969febaae04"}, + {file = "glcontext-2.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:642a004a0c940dd109e8d6942a4d795c1f3b3673edd2e6556320a542ea44fc5d"}, + {file = "glcontext-2.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1674950eb6118f32c6418f6319f4e06a997ce170b04f9dc465ffb99a7b6d93c3"}, + {file = "glcontext-2.4.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b66bc3a66658c3b92b2282c2197dfce639a693df525aa10e3d6402731a1e985a"}, + {file = "glcontext-2.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5c2710dddac0844b88cd3c61c67aa70fcf35f738a6bd8f0e557474313ef2324f"}, + {file = "glcontext-2.4.0-cp36-cp36m-win32.whl", hash = "sha256:3e51fd5ea6241774cf0636039e641b70321e9ad9bc8c082d24a9be058817a310"}, + {file = "glcontext-2.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:0fc19a523736f4178c720060c3589db8c8072744985007e20859e086a6c981f6"}, + {file = "glcontext-2.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7c05a675644e3552f7aa8bc0d6a3bf189645c06610f5b13a1850f4bbdd82cd54"}, + {file = "glcontext-2.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:987c7db3350f3ecb06c328d2b4ca06008b0d950ca248ef9a76859442293177b3"}, + {file = "glcontext-2.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1359528fd707e6ef051240940a6d5d4944d277306a41a05183ee90fd1f36fc"}, + {file = "glcontext-2.4.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:27a3e1284b8209ecd7daef59767c0ecfa13dbf902c61998290aab63a8ca5213e"}, + {file = "glcontext-2.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:28d5622bb14e09e754af1155f97256a892b7d2f52902375d48c47864e0e70a5d"}, + {file = "glcontext-2.4.0-cp37-cp37m-win32.whl", hash = "sha256:5498f06564e14557a8bf3192455ad0622a47fa344cd556a0bb57b215df4ad847"}, + {file = "glcontext-2.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:935a6b161b2854f89f1800cea1d44862d59f6e965f396d67c0daf8fd9378e42d"}, + {file = "glcontext-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9519706f150a074b318dd6ed97c438d846f81f306e957002e261262ba81a77a"}, + {file = "glcontext-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b957b13b11c77bfd792575eb12d6c40549f78c502bff742c8c9a93344af77d80"}, + {file = "glcontext-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b1be984bc6a1d443b504cdff155743be94f545663e7229a9e972c7a38211542"}, + {file = "glcontext-2.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2786764c8482e2c79bf6b88249be84aacbd97950718987463b95bc9563e37356"}, + {file = "glcontext-2.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e1e51269b4d77f3591fc7b19c68dc4215f2cf1b922fb2c1960b8b4c71e6de5f6"}, + {file = "glcontext-2.4.0-cp38-cp38-win32.whl", hash = "sha256:580d40a3226daf70d3debef01f1ea068070bea8bbfa17e2fd2df017caec7fcb9"}, + {file = "glcontext-2.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2c25ccdd7272ca3b20033cfc38c0b7172279ff8f14801bb2797a367f0515b6c"}, + {file = "glcontext-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:634adf8cc697532af2335bf58f565a59b059db64de337f9012c8352be8c2b7cd"}, + {file = "glcontext-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d70c436ccfe603fb82913e21eedc4fcbd2792af386cc2698cc62b732e64fc624"}, + {file = "glcontext-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b26961c0a8de4e4fbca0becc85b163a0eee2716e2450db3fb6fce95252a508b"}, + {file = "glcontext-2.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0538bfaeb3865bb7dd8282571838cf9b5c5fb07b08fac80c0f5f612436d46f04"}, + {file = "glcontext-2.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:027bf468fa86118c58a70ca0e008a9e74372eee0e10456a96f7e7dc5224ebca5"}, + {file = "glcontext-2.4.0-cp39-cp39-win32.whl", hash = "sha256:1fb59784c2ba33a9a1e5d829bd5f7cd524451b4d89d9c18565d5a72951ba5259"}, + {file = "glcontext-2.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:b21e2ec7b5f470ac576f8284371547e1f73711b106c2c3292732aace88813135"}, + {file = "glcontext-2.4.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4f1de7a32278333f8edaed8f51180b929aaf975a453a8bcde4d553f9d2d5db81"}, + {file = "glcontext-2.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a98f62495d5a89d79ce182f9698ef84154f257917007d2ef35807c4dfb24834e"}, + {file = "glcontext-2.4.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d36b623331b4e9c09f78bd57ac372b77ce8078e751c31825ce5f687f19514e2"}, + {file = "glcontext-2.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:74ec128d03f6e715fc1554047958c4581b78653eeaf08aeac4f110fba1b00c64"}, + {file = "glcontext-2.4.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6dde4e7afbfa336d323f1b5a3d9164e0484a08ec969c2b69048de840c45a5051"}, + {file = "glcontext-2.4.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18bec7f9f0a9ad90bd3e25ab0e6b9db909dfaa10a0f3b5e5ef588d3c7f565fea"}, + {file = "glcontext-2.4.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71c54b085869b3d22f15138bd5cf4dfbbf4e7c431bb7e778788e6481bb6cc452"}, + {file = "glcontext-2.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:faa80ddadb513b6475a68dad288ec690b0a7dd7e37582ac49b724e234695d12e"}, + {file = "glcontext-2.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a76833aea7e50682d7266ca24886e9eb1dc76744ec64ec6187f5dfd200397d3e"}, + {file = "glcontext-2.4.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d91a3f80d013f9b4073881e8578e49a1de6dda881d093f7d07aed81374cd340b"}, + {file = "glcontext-2.4.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0916c3cc03228c2512be6e283032026c2730a78c5a90ce49a427e5ca18d9b961"}, + {file = "glcontext-2.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:193c5798da864db316195b80c26da194b69e1c746a72d2d5923036e746c1a470"}, + {file = "glcontext-2.4.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9c4ac06ebdb57ef1376af4f5a788cfddf828867c4c925a4a7ac26a011ce691be"}, + {file = "glcontext-2.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35842c53aa4975f51c1f1fa8e619867d4734dbf0f79c5cbeb78e42633a2ef09e"}, + {file = "glcontext-2.4.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec85163231e1aa410a1e05d7f5a8e0e7dcf9e3c0ad8e679888bfdb8384dbcca3"}, + {file = "glcontext-2.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1bb56f2d8ffacb5693c2762c59bb288896b179f2ab5dc905637f6d6f5aeb7b47"}, + {file = "glcontext-2.4.0.tar.gz", hash = "sha256:50d7aad961d4f0374a38592194c59f740192e4d00549df48ac81a40942a6beb9"}, ] [[package]] name = "identify" -version = "2.5.24" +version = "2.5.26" description = "File identification library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, - {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, + {file = "identify-2.5.26-py2.py3-none-any.whl", hash = "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54"}, + {file = "identify-2.5.26.tar.gz", hash = "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f"}, ] [package.extras] @@ -1395,13 +1415,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.6.0" +version = "6.8.0" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, - {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, ] [package.dependencies] @@ -1410,25 +1430,25 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "importlib-resources" -version = "5.12.0" +version = "6.0.0" description = "Read resources from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, + {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "iniconfig" @@ -1443,13 +1463,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.23.2" +version = "6.25.0" description = "IPython Kernel for Jupyter" optional = true python-versions = ">=3.8" files = [ - {file = "ipykernel-6.23.2-py3-none-any.whl", hash = "sha256:7ccb6e2d32fd958c21453db494c914f3474908a2fdefd99ab548a5375b548d1f"}, - {file = "ipykernel-6.23.2.tar.gz", hash = "sha256:fcfb67c5b504aa1bfcda1c5b3716636239e0f7b9290958f1c558c79b4c0e7ed5"}, + {file = "ipykernel-6.25.0-py3-none-any.whl", hash = "sha256:f0042e867ac3f6bca1679e6a88cbd6a58ed93a44f9d0866aecde6efe8de76659"}, + {file = "ipykernel-6.25.0.tar.gz", hash = "sha256:e342ce84712861be4b248c4a73472be4702c1b0dd77448bfd6bcfb3af9d5ddf9"}, ] [package.dependencies] @@ -1571,21 +1591,21 @@ numpy = "*" [[package]] name = "jedi" -version = "0.18.2" +version = "0.19.0" description = "An autocompletion tool for Python that can be used for text editors." optional = true python-versions = ">=3.6" files = [ - {file = "jedi-0.18.2-py2.py3-none-any.whl", hash = "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e"}, - {file = "jedi-0.18.2.tar.gz", hash = "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612"}, + {file = "jedi-0.19.0-py2.py3-none-any.whl", hash = "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e"}, + {file = "jedi-0.19.0.tar.gz", hash = "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4"}, ] [package.dependencies] -parso = ">=0.8.0,<0.9.0" +parso = ">=0.8.3,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] @@ -1621,37 +1641,39 @@ dev = ["hypothesis"] [[package]] name = "jsonpointer" -version = "2.3" +version = "2.4" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ - {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"}, - {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"}, + {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, + {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, ] [[package]] name = "jsonschema" -version = "4.17.3" +version = "4.18.4" description = "An implementation of JSON Schema validation for Python" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, - {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, + {file = "jsonschema-4.18.4-py3-none-any.whl", hash = "sha256:971be834317c22daaa9132340a51c01b50910724082c2c1a2ac87eeec153a3fe"}, + {file = "jsonschema-4.18.4.tar.gz", hash = "sha256:fb3642735399fa958c0d2aad7057901554596c63349f4f6b283c493cf692a25d"}, ] [package.dependencies] -attrs = ">=17.4.0" +attrs = ">=22.2.0" fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} -pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rpds-py = ">=0.7.1" uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""} @@ -1659,38 +1681,54 @@ webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-n format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +[[package]] +name = "jsonschema-specifications" +version = "2023.7.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = true +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, + {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, +] + +[package.dependencies] +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +referencing = ">=0.28.0" + [[package]] name = "jupyter-client" -version = "8.2.0" +version = "7.4.9" description = "Jupyter protocol implementation and client libraries" optional = true -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "jupyter_client-8.2.0-py3-none-any.whl", hash = "sha256:b18219aa695d39e2ad570533e0d71fb7881d35a873051054a84ee2a17c4b7389"}, - {file = "jupyter_client-8.2.0.tar.gz", hash = "sha256:9fe233834edd0e6c0aa5f05ca2ab4bdea1842bfd2d8a932878212fc5301ddaf0"}, + {file = "jupyter_client-7.4.9-py3-none-any.whl", hash = "sha256:214668aaea208195f4c13d28eb272ba79f945fc0cf3f11c7092c20b2ca1980e7"}, + {file = "jupyter_client-7.4.9.tar.gz", hash = "sha256:52be28e04171f07aed8f20e1616a5a552ab9fee9cbbe6c1896ae170c3880d392"}, ] [package.dependencies] -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +entrypoints = "*" +jupyter-core = ">=4.9.2" +nest-asyncio = ">=1.5.4" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" -traitlets = ">=5.3" +traitlets = "*" [package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] +test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-core" -version = "5.3.0" +version = "5.3.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = true python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.3.0-py3-none-any.whl", hash = "sha256:d4201af84559bc8c70cead287e1ab94aeef3c512848dde077b7684b54d67730d"}, - {file = "jupyter_core-5.3.0.tar.gz", hash = "sha256:6db75be0c83edbf1b7c9f91ec266a9a24ef945da630f3120e1a0046dc13713fc"}, + {file = "jupyter_core-5.3.1-py3-none-any.whl", hash = "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce"}, + {file = "jupyter_core-5.3.1.tar.gz", hash = "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba"}, ] [package.dependencies] @@ -1704,19 +1742,20 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.6.3" +version = "0.7.0" description = "Jupyter Event System library" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyter_events-0.6.3-py3-none-any.whl", hash = "sha256:57a2749f87ba387cd1bfd9b22a0875b889237dbf2edc2121ebb22bde47036c17"}, - {file = "jupyter_events-0.6.3.tar.gz", hash = "sha256:9a6e9995f75d1b7146b436ea24d696ce3a35bfa8bfe45e0c33c334c79464d0b3"}, + {file = "jupyter_events-0.7.0-py3-none-any.whl", hash = "sha256:4753da434c13a37c3f3c89b500afa0c0a6241633441421f6adafe2fb2e2b924e"}, + {file = "jupyter_events-0.7.0.tar.gz", hash = "sha256:7be27f54b8388c03eefea123a4f79247c5b9381c49fb1cd48615ee191eb12615"}, ] [package.dependencies] -jsonschema = {version = ">=3.2.0", extras = ["format-nongpl"]} +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} python-json-logger = ">=2.0.4" pyyaml = ">=5.3" +referencing = "*" rfc3339-validator = "*" rfc3986-validator = ">=0.1.1" traitlets = ">=5.3" @@ -1724,17 +1763,17 @@ traitlets = ">=5.3" [package.extras] cli = ["click", "rich"] docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] -test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "pytest-cov", "rich"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] name = "jupyter-server" -version = "2.6.0" +version = "2.7.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = true python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.6.0-py3-none-any.whl", hash = "sha256:19525a1515b5999618a91b3e99ec9f6869aa8c5ba73e0b6279fcda918b54ba36"}, - {file = "jupyter_server-2.6.0.tar.gz", hash = "sha256:ae4af349f030ed08dd78cb7ac1a03a92d886000380c9ea6283f3c542a81f4b06"}, + {file = "jupyter_server-2.7.0-py3-none-any.whl", hash = "sha256:6a77912aff643e53fa14bdb2634884b52b784a4be77ce8e93f7283faed0f0849"}, + {file = "jupyter_server-2.7.0.tar.gz", hash = "sha256:36da0a266d31a41ac335a366c88933c17dfa5bb817a48f5c02c16d303bc9477f"}, ] [package.dependencies] @@ -1760,7 +1799,7 @@ websocket-client = "*" [package.extras] docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] -test = ["ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"] [[package]] name = "jupyter-server-fileid" @@ -1821,32 +1860,32 @@ test = ["coverage", "jupyter-server[test] (>=2.0.0a0)", "pytest (>=7.0)", "pytes [[package]] name = "jupyter-ydoc" -version = "0.2.4" +version = "0.2.5" description = "Document structures for collaborative editing using Ypy" optional = true python-versions = ">=3.7" files = [ - {file = "jupyter_ydoc-0.2.4-py3-none-any.whl", hash = "sha256:d1a51c73ead6f6417bec0450f53c577a66abe8d43e9c2d8a1acaf7a17259f843"}, - {file = "jupyter_ydoc-0.2.4.tar.gz", hash = "sha256:a3f670a69135e90493ffb91d6788efe2632bf42c6cc42a25f25c2e6eddd55a0e"}, + {file = "jupyter_ydoc-0.2.5-py3-none-any.whl", hash = "sha256:5759170f112c70320a84217dd98d287699076ae65a7f88d458d57940a9f2b882"}, + {file = "jupyter_ydoc-0.2.5.tar.gz", hash = "sha256:5a02ca7449f0d875f73e8cb8efdf695dddef15a8e71378b1f4eda6b7c90f5382"}, ] [package.dependencies] importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} -y-py = ">=0.5.3,<0.6.0" +y-py = ">=0.6.0,<0.7.0" [package.extras] dev = ["click", "jupyter-releaser"] -test = ["pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)", "ypy-websocket (>=0.3.1,<0.4.0)"] +test = ["pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)", "ypy-websocket (>=0.8.4,<0.9.0)"] [[package]] name = "jupyterlab" -version = "3.6.4" +version = "3.6.5" description = "JupyterLab computational environment" optional = true python-versions = ">=3.7" files = [ - {file = "jupyterlab-3.6.4-py3-none-any.whl", hash = "sha256:8a4e495a096ae2315af2b07acaac9d38917b6927ebd891834ddf83b28f53e881"}, - {file = "jupyterlab-3.6.4.tar.gz", hash = "sha256:862fb4a06c759a9b0a12de6bf434a8681a42e52fff0593c120e3fbad6847889f"}, + {file = "jupyterlab-3.6.5-py3-none-any.whl", hash = "sha256:4d13665c2c2f42c753140d88b52ff8722cd5b38629b934f5612bfa5490bcdc65"}, + {file = "jupyterlab-3.6.5.tar.gz", hash = "sha256:ac0cb19756be1d1e14b2be1f23c603de46e0f0113960fce9888889ca55ae8923"}, ] [package.dependencies] @@ -1879,13 +1918,13 @@ files = [ [[package]] name = "jupyterlab-server" -version = "2.23.0" +version = "2.24.0" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = true python-versions = ">=3.7" files = [ - {file = "jupyterlab_server-2.23.0-py3-none-any.whl", hash = "sha256:a5ea2c839336a8ba7c38c8e7b2f24cedf919f0d439f4d2e606d9322013a95788"}, - {file = "jupyterlab_server-2.23.0.tar.gz", hash = "sha256:83c01aa4ad9451cd61b383e634d939ff713850f4640c0056b2cdb2b6211a74c7"}, + {file = "jupyterlab_server-2.24.0-py3-none-any.whl", hash = "sha256:5f077e142bb8dc9b843d960f940c513581bceca3793a0d80f9c67d9522c4e876"}, + {file = "jupyterlab_server-2.24.0.tar.gz", hash = "sha256:4e6f99e0a5579bbbc32e449c4dbb039561d4f1a7827d5733273ed56738f21f07"}, ] [package.dependencies] @@ -1901,7 +1940,7 @@ requests = ">=2.28" [package.extras] docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] openapi = ["openapi-core (>=0.16.1,<0.17.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.6.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] +test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.7.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] name = "kiwisolver" @@ -2209,52 +2248,52 @@ files = [ [[package]] name = "matplotlib" -version = "3.7.1" +version = "3.7.2" description = "Python plotting package" optional = false python-versions = ">=3.8" files = [ - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:544764ba51900da4639c0f983b323d288f94f65f4024dc40ecb1542d74dc0500"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d94989191de3fcc4e002f93f7f1be5da476385dde410ddafbb70686acf00ea"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99bc9e65901bb9a7ce5e7bb24af03675cbd7c70b30ac670aa263240635999a4"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb7d248c34a341cd4c31a06fd34d64306624c8cd8d0def7abb08792a5abfd556"}, - {file = "matplotlib-3.7.1-cp310-cp310-win32.whl", hash = "sha256:ce463ce590f3825b52e9fe5c19a3c6a69fd7675a39d589e8b5fbe772272b3a24"}, - {file = "matplotlib-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d7bc90727351fb841e4d8ae620d2d86d8ed92b50473cd2b42ce9186104ecbba"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:770a205966d641627fd5cf9d3cb4b6280a716522cd36b8b284a8eb1581310f61"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f67bfdb83a8232cb7a92b869f9355d677bce24485c460b19d01970b64b2ed476"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2bf092f9210e105f414a043b92af583c98f50050559616930d884387d0772aba"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89768d84187f31717349c6bfadc0e0d8c321e8eb34522acec8a67b1236a66332"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83111e6388dec67822e2534e13b243cc644c7494a4bb60584edbff91585a83c6"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a867bf73a7eb808ef2afbca03bcdb785dae09595fbe550e1bab0cd023eba3de0"}, - {file = "matplotlib-3.7.1-cp311-cp311-win32.whl", hash = "sha256:fbdeeb58c0cf0595efe89c05c224e0a502d1aa6a8696e68a73c3efc6bc354304"}, - {file = "matplotlib-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:c0bd19c72ae53e6ab979f0ac6a3fafceb02d2ecafa023c5cca47acd934d10be7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6eb88d87cb2c49af00d3bbc33a003f89fd9f78d318848da029383bfc08ecfbfb"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:cf0e4f727534b7b1457898c4f4ae838af1ef87c359b76dcd5330fa31893a3ac7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46a561d23b91f30bccfd25429c3c706afe7d73a5cc64ef2dfaf2b2ac47c1a5dc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8704726d33e9aa8a6d5215044b8d00804561971163563e6e6591f9dcf64340cc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cf327e98ecf08fcbb82685acaf1939d3338548620ab8dfa02828706402c34de"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:617f14ae9d53292ece33f45cba8503494ee199a75b44de7717964f70637a36aa"}, - {file = "matplotlib-3.7.1-cp38-cp38-win32.whl", hash = "sha256:7c9a4b2da6fac77bcc41b1ea95fadb314e92508bf5493ceff058e727e7ecf5b0"}, - {file = "matplotlib-3.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:14645aad967684e92fc349493fa10c08a6da514b3d03a5931a1bac26e6792bd1"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:81a6b377ea444336538638d31fdb39af6be1a043ca5e343fe18d0f17e098770b"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:28506a03bd7f3fe59cd3cd4ceb2a8d8a2b1db41afede01f66c42561b9be7b4b7"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c587963b85ce41e0a8af53b9b2de8dddbf5ece4c34553f7bd9d066148dc719c"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bf26ade3ff0f27668989d98c8435ce9327d24cffb7f07d24ef609e33d582439"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:def58098f96a05f90af7e92fd127d21a287068202aa43b2a93476170ebd99e87"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f883a22a56a84dba3b588696a2b8a1ab0d2c3d41be53264115c71b0a942d8fdb"}, - {file = "matplotlib-3.7.1-cp39-cp39-win32.whl", hash = "sha256:4f99e1b234c30c1e9714610eb0c6d2f11809c9c78c984a613ae539ea2ad2eb4b"}, - {file = "matplotlib-3.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:3ba2af245e36990facf67fde840a760128ddd71210b2ab6406e640188d69d136"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3032884084f541163f295db8a6536e0abb0db464008fadca6c98aaf84ccf4717"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a2cb34336110e0ed8bb4f650e817eed61fa064acbefeb3591f1b33e3a84fd96"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b867e2f952ed592237a1828f027d332d8ee219ad722345b79a001f49df0936eb"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:57bfb8c8ea253be947ccb2bc2d1bb3862c2bccc662ad1b4626e1f5e004557042"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:438196cdf5dc8d39b50a45cb6e3f6274edbcf2254f85fa9b895bf85851c3a613"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21e9cff1a58d42e74d01153360de92b326708fb205250150018a52c70f43c290"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d4725d70b7c03e082bbb8a34639ede17f333d7247f56caceb3801cb6ff703d"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97cc368a7268141afb5690760921765ed34867ffb9655dd325ed207af85c7529"}, - {file = "matplotlib-3.7.1.tar.gz", hash = "sha256:7b73305f25eab4541bd7ee0b96d87e53ae9c9f1823be5659b806cd85786fe882"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, + {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, + {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, + {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, + {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, + {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, + {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, + {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, + {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, + {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, ] [package.dependencies] @@ -2266,7 +2305,7 @@ kiwisolver = ">=1.0.1" numpy = ">=1.20" packaging = ">=20.0" pillow = ">=6.2.0" -pyparsing = ">=2.3.1" +pyparsing = ">=2.3.1,<3.1" python-dateutil = ">=2.7" [[package]] @@ -2326,13 +2365,13 @@ files = [ [[package]] name = "mistune" -version = "2.0.5" -description = "A sane Markdown parser with useful plugins and renderers" +version = "3.0.1" +description = "A sane and fast Markdown parser with useful plugins and renderers" optional = true -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "mistune-2.0.5-py2.py3-none-any.whl", hash = "sha256:bad7f5d431886fcbaf5f758118ecff70d31f75231b34024a1341120340a65ce8"}, - {file = "mistune-2.0.5.tar.gz", hash = "sha256:0246113cb2492db875c6be56974a7c893333bf26cd92891c85f63151cee09d34"}, + {file = "mistune-3.0.1-py3-none-any.whl", hash = "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6"}, + {file = "mistune-3.0.1.tar.gz", hash = "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c"}, ] [[package]] @@ -2427,19 +2466,15 @@ trimesh = ["scipy (>=1.3.2)", "trimesh (>=3.2.6,<4)"] [[package]] name = "multipledispatch" -version = "0.6.0" +version = "1.0.0" description = "Multiple dispatch" optional = false python-versions = "*" files = [ - {file = "multipledispatch-0.6.0-py2-none-any.whl", hash = "sha256:407e6d8c5fa27075968ba07c4db3ef5f02bea4e871e959570eeb69ee39a6565b"}, - {file = "multipledispatch-0.6.0-py3-none-any.whl", hash = "sha256:a55c512128fb3f7c2efd2533f2550accb93c35f1045242ef74645fc92a2c3cba"}, - {file = "multipledispatch-0.6.0.tar.gz", hash = "sha256:a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea"}, + {file = "multipledispatch-1.0.0-py3-none-any.whl", hash = "sha256:0c53cd8b077546da4e48869f49b13164bebafd0c2a5afceb6bb6a316e7fb46e4"}, + {file = "multipledispatch-1.0.0.tar.gz", hash = "sha256:5c839915465c68206c3e9c473357908216c28383b425361e5d144594bf85a7e0"}, ] -[package.dependencies] -six = "*" - [[package]] name = "mypy" version = "0.931" @@ -2574,13 +2609,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.5.0" +version = "7.7.3" description = "Converting Jupyter Notebooks" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "nbconvert-7.5.0-py3-none-any.whl", hash = "sha256:852e44392d5650ef217a5ce3a8050747051d4e6ba75f0574cb5435049ee6c0d9"}, - {file = "nbconvert-7.5.0.tar.gz", hash = "sha256:f78fd22fd2410b960d5d9bcecf3e1d6c7bdc5fec2c865964c84aa4e74e6e88da"}, + {file = "nbconvert-7.7.3-py3-none-any.whl", hash = "sha256:3022adadff3f86578a47fab7c2228bb3ca9c56a24345642a22f917f6168b48fc"}, + {file = "nbconvert-7.7.3.tar.gz", hash = "sha256:4a5996bf5f3cd16aa0431897ba1aa4c64842c2079f434b3dc6b8c4b252ef3355"}, ] [package.dependencies] @@ -2592,7 +2627,7 @@ jinja2 = ">=3.0" jupyter-core = ">=4.7" jupyterlab-pygments = "*" markupsafe = ">=2.0" -mistune = ">=2.0.3,<3" +mistune = ">=2.0.3,<4" nbclient = ">=0.5.0" nbformat = ">=5.7" packaging = "*" @@ -2607,18 +2642,18 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"] -webpdf = ["pyppeteer (>=1,<1.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"] +webpdf = ["playwright"] [[package]] name = "nbformat" -version = "5.9.0" +version = "5.9.2" description = "The Jupyter Notebook format" optional = true python-versions = ">=3.8" files = [ - {file = "nbformat-5.9.0-py3-none-any.whl", hash = "sha256:8c8fa16d6d05062c26177754bfbfac22de644888e2ef69d27ad2a334cf2576e5"}, - {file = "nbformat-5.9.0.tar.gz", hash = "sha256:e98ebb6120c3efbafdee2a40af2a140cadee90bb06dd69a2a63d9551fcc7f976"}, + {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"}, + {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"}, ] [package.dependencies] @@ -2633,13 +2668,13 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nest-asyncio" -version = "1.5.6" +version = "1.5.7" description = "Patch asyncio to allow nested event loops" optional = true python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.6-py3-none-any.whl", hash = "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8"}, - {file = "nest_asyncio-1.5.6.tar.gz", hash = "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290"}, + {file = "nest_asyncio-1.5.7-py3-none-any.whl", hash = "sha256:5301c82941b550b3123a1ea772ba9a1c80bad3a182be8c1a5ae6ad3be57a9657"}, + {file = "nest_asyncio-1.5.7.tar.gz", hash = "sha256:6a80f7b98f24d9083ed24608977c09dd608d83f91cccc24c9d2cba6d10e01c10"}, ] [[package]] @@ -2676,13 +2711,13 @@ setuptools = "*" [[package]] name = "notebook" -version = "6.5.4" +version = "6.5.5" description = "A web-based notebook environment for interactive computing" optional = true python-versions = ">=3.7" files = [ - {file = "notebook-6.5.4-py3-none-any.whl", hash = "sha256:dd17e78aefe64c768737b32bf171c1c766666a21cc79a44d37a1700771cab56f"}, - {file = "notebook-6.5.4.tar.gz", hash = "sha256:517209568bd47261e2def27a140e97d49070602eea0d226a696f42a7f16c9a4e"}, + {file = "notebook-6.5.5-py3-none-any.whl", hash = "sha256:171039245a5b1a8f8233165091210632c21250ce2a652daed38fe8f94389984f"}, + {file = "notebook-6.5.5.tar.gz", hash = "sha256:457caa1fa1c647395420945b2b7559f603eedbc9aeb2a59a0c286c8029e31efa"}, ] [package.dependencies] @@ -2690,14 +2725,14 @@ argon2-cffi = "*" ipykernel = "*" ipython-genutils = "*" jinja2 = "*" -jupyter-client = ">=5.3.4" +jupyter-client = ">=5.3.4,<8" jupyter-core = ">=4.6.1" nbclassic = ">=0.4.7" nbconvert = ">=5" nbformat = "*" nest-asyncio = ">=1.5" prometheus-client = "*" -pyzmq = ">=17" +pyzmq = ">=17,<25" Send2Trash = ">=1.8.0" terminado = ">=0.8.3" tornado = ">=6.1" @@ -2727,39 +2762,39 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numpy" -version = "1.24.3" +version = "1.24.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570"}, - {file = "numpy-1.24.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7"}, - {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8535303847b89aa6b0f00aa1dc62867b5a32923e4d1681a35b5eef2d9591a463"}, - {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d926b52ba1367f9acb76b0df6ed21f0b16a1ad87c6720a1121674e5cf63e2b6"}, - {file = "numpy-1.24.3-cp310-cp310-win32.whl", hash = "sha256:f21c442fdd2805e91799fbe044a7b999b8571bb0ab0f7850d0cb9641a687092b"}, - {file = "numpy-1.24.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab5f23af8c16022663a652d3b25dcdc272ac3f83c3af4c02eb8b824e6b3ab9d7"}, - {file = "numpy-1.24.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9a7721ec204d3a237225db3e194c25268faf92e19338a35f3a224469cb6039a3"}, - {file = "numpy-1.24.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6cc757de514c00b24ae8cf5c876af2a7c3df189028d68c0cb4eaa9cd5afc2bf"}, - {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e3f4e85fc5d4fd311f6e9b794d0c00e7002ec122be271f2019d63376f1d385"}, - {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d3c026f57ceaad42f8231305d4653d5f05dc6332a730ae5c0bea3513de0950"}, - {file = "numpy-1.24.3-cp311-cp311-win32.whl", hash = "sha256:c91c4afd8abc3908e00a44b2672718905b8611503f7ff87390cc0ac3423fb096"}, - {file = "numpy-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:5342cf6aad47943286afa6f1609cad9b4266a05e7f2ec408e2cf7aea7ff69d80"}, - {file = "numpy-1.24.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7776ea65423ca6a15255ba1872d82d207bd1e09f6d0894ee4a64678dd2204078"}, - {file = "numpy-1.24.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae8d0be48d1b6ed82588934aaaa179875e7dc4f3d84da18d7eae6eb3f06c242c"}, - {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecde0f8adef7dfdec993fd54b0f78183051b6580f606111a6d789cd14c61ea0c"}, - {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4749e053a29364d3452c034827102ee100986903263e89884922ef01a0a6fd2f"}, - {file = "numpy-1.24.3-cp38-cp38-win32.whl", hash = "sha256:d933fabd8f6a319e8530d0de4fcc2e6a61917e0b0c271fded460032db42a0fe4"}, - {file = "numpy-1.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:56e48aec79ae238f6e4395886b5eaed058abb7231fb3361ddd7bfdf4eed54289"}, - {file = "numpy-1.24.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4719d5aefb5189f50887773699eaf94e7d1e02bf36c1a9d353d9f46703758ca4"}, - {file = "numpy-1.24.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ec87a7084caa559c36e0a2309e4ecb1baa03b687201d0a847c8b0ed476a7187"}, - {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea8282b9bcfe2b5e7d491d0bf7f3e2da29700cec05b49e64d6246923329f2b02"}, - {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210461d87fb02a84ef243cac5e814aad2b7f4be953b32cb53327bb49fd77fbb4"}, - {file = "numpy-1.24.3-cp39-cp39-win32.whl", hash = "sha256:784c6da1a07818491b0ffd63c6bbe5a33deaa0e25a20e1b3ea20cf0e43f8046c"}, - {file = "numpy-1.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:d5036197ecae68d7f491fcdb4df90082b0d4960ca6599ba2659957aafced7c17"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:352ee00c7f8387b44d19f4cada524586f07379c0d49270f87233983bc5087ca0"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d6acc2e7524c9955e5c903160aa4ea083736fde7e91276b0e5d98e6332812"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:35400e6a8d102fd07c71ed7dcadd9eb62ee9a6e84ec159bd48c28235bbb0f8e4"}, - {file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, + {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, + {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, + {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, + {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, + {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, + {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, + {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, + {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, + {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, ] [[package]] @@ -2812,13 +2847,13 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.11.1" +version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] @@ -2938,28 +2973,28 @@ files = [ [[package]] name = "platformdirs" -version = "3.5.3" +version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.5.3-py3-none-any.whl", hash = "sha256:0ade98a4895e87dc51d47151f7d2ec290365a585151d97b4d8d6312ed6132fed"}, - {file = "platformdirs-3.5.3.tar.gz", hash = "sha256:e48fabd87db8f3a7df7150a4a5ea22c546ee8bc39bc2473244730d4b56d2cc4e"}, + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, ] [package.extras] @@ -2986,13 +3021,13 @@ virtualenv = ">=20.10.0" [[package]] name = "prometheus-client" -version = "0.17.0" +version = "0.17.1" description = "Python client for the Prometheus monitoring system." optional = true python-versions = ">=3.6" files = [ - {file = "prometheus_client-0.17.0-py3-none-any.whl", hash = "sha256:a77b708cf083f4d1a3fb3ce5c95b4afa32b9c521ae363354a4a910204ea095ce"}, - {file = "prometheus_client-0.17.0.tar.gz", hash = "sha256:9c3b26f1535945e85b8934fb374678d263137b78ef85f305b1156c7c881cd11b"}, + {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, + {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, ] [package.extras] @@ -3000,13 +3035,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.38" +version = "3.0.39" description = "Library for building powerful interactive command lines in Python" optional = true python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.38-py3-none-any.whl", hash = "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f"}, - {file = "prompt_toolkit-3.0.38.tar.gz", hash = "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b"}, + {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, + {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, ] [package.dependencies] @@ -3101,22 +3136,22 @@ files = [ [[package]] name = "pycairo" -version = "1.23.0" +version = "1.24.0" description = "Python interface for cairo" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pycairo-1.23.0-cp310-cp310-win32.whl", hash = "sha256:564601e5f528531c6caec1c0177c3d0709081e1a2a5cccc13561f715080ae535"}, - {file = "pycairo-1.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:e7cde633986435d87a86b6118b7b6109c384266fd719ef959883e2729f6eafae"}, - {file = "pycairo-1.23.0-cp311-cp311-win32.whl", hash = "sha256:3a71f758e461180d241e62ef52e85499c843bd2660fd6d87cec99c9833792bfa"}, - {file = "pycairo-1.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:2dec5378133778961993fb59d66df16070e03f4d491b67eb695ca9ad7a696008"}, - {file = "pycairo-1.23.0-cp37-cp37m-win32.whl", hash = "sha256:d6bacff15d688ed135b4567965a4b664d9fb8de7417a7865bb138ad612043c9f"}, - {file = "pycairo-1.23.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ec305fc7f2f0299df78aadec0eaf6eb9accb90eda242b5d3492544d3f2b28027"}, - {file = "pycairo-1.23.0-cp38-cp38-win32.whl", hash = "sha256:1a6d8e0f353062ad92954784e33dbbaf66c880c9c30e947996c542ed9748aaaf"}, - {file = "pycairo-1.23.0-cp38-cp38-win_amd64.whl", hash = "sha256:82e335774a17870bc038e0c2fb106c1e5e7ad0c764662023886dfcfce5bb5a52"}, - {file = "pycairo-1.23.0-cp39-cp39-win32.whl", hash = "sha256:a4b1f525bbdf637c40f4d91378de36c01ec2b7f8ecc585b700a079b9ff83298e"}, - {file = "pycairo-1.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:87efd62a7b7afad9a0a420f05b6008742a6cfc59077697be65afe8dc73ae15ad"}, - {file = "pycairo-1.23.0.tar.gz", hash = "sha256:9b61ac818723adc04367301317eb2e814a83522f07bbd1f409af0dada463c44c"}, + {file = "pycairo-1.24.0-cp310-cp310-win32.whl", hash = "sha256:031f5ef2c80792673f2c54ee285f2a31779a44d7521a27a7f82e4a5ecfafc26e"}, + {file = "pycairo-1.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:afccac552386ab628e8ae658185fa363e8d15a5afe96d1de43f97027dd78bdd6"}, + {file = "pycairo-1.24.0-cp311-cp311-win32.whl", hash = "sha256:4631ed794a3376ec314ce47826c3e51940b54695f4ef7d5b3245b203037ae760"}, + {file = "pycairo-1.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:ed0622a0ccffb873ffe7fee1699d60779f1260fba143390e5366d55f1d1739f5"}, + {file = "pycairo-1.24.0-cp312-cp312-win32.whl", hash = "sha256:220742f187d3940d695c1af1a0c1646e26dc2199d65b7bafaa527e15c3520fd3"}, + {file = "pycairo-1.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:3199d6a0538d6482c71efb816bd330515e98bb06f182e23572c77d92be98f536"}, + {file = "pycairo-1.24.0-cp38-cp38-win32.whl", hash = "sha256:c7c79e748ec849811241d29553184c3ad93c857558dbe9954a49327680b8d356"}, + {file = "pycairo-1.24.0-cp38-cp38-win_amd64.whl", hash = "sha256:6ad5c3425408ebb0dfaad2cca4a80e7524d7a309305acdb2569638b5cc988fe7"}, + {file = "pycairo-1.24.0-cp39-cp39-win32.whl", hash = "sha256:c5f6efdd86fe13d36a6b004c64d8e97cde9854d599cf6cca962afb1966fe533d"}, + {file = "pycairo-1.24.0-cp39-cp39-win_amd64.whl", hash = "sha256:26fe2c32ba24caae524d855f26f3ee1a0c1ea3291da2a19604264ed29f64d834"}, + {file = "pycairo-1.24.0.tar.gz", hash = "sha256:1444d52f1bb4cc79a4a0c0fe2ccec4bd78ff885ab01ebe1c0f637d8392bcafb6"}, ] [[package]] @@ -3182,13 +3217,13 @@ files = [ [[package]] name = "pygithub" -version = "1.58.2" +version = "1.59.0" description = "Use the full Github API v3" optional = false python-versions = ">=3.7" files = [ - {file = "PyGithub-1.58.2-py3-none-any.whl", hash = "sha256:f435884af617c6debaa76cbc355372d1027445a56fbc39972a3b9ed4968badc8"}, - {file = "PyGithub-1.58.2.tar.gz", hash = "sha256:1e6b1b7afe31f75151fb81f7ab6b984a7188a852bdb123dbb9ae90023c3ce60f"}, + {file = "PyGithub-1.59.0-py3-none-any.whl", hash = "sha256:126bdbae72087d8d038b113aab6b059b4553cb59348e3024bb1a1cae406ace9e"}, + {file = "PyGithub-1.59.0.tar.gz", hash = "sha256:6e05ff49bac3caa7d1d6177a10c6e55a3e20c85b92424cc198571fd0cf786690"}, ] [package.dependencies] @@ -3199,13 +3234,13 @@ requests = ">=2.14.0" [[package]] name = "pyglet" -version = "2.0.7" +version = "2.0.9" description = "Cross-platform windowing and multimedia library" optional = false python-versions = "*" files = [ - {file = "pyglet-2.0.7-py3-none-any.whl", hash = "sha256:a442acca40613b793c70a68c86be35fafff87691f7ac967daf0283329d3d5b36"}, - {file = "pyglet-2.0.7.zip", hash = "sha256:9282f9497c1c0cdcb2cc39d8c05090cf686dedb9ebbef4a8de49af22a0ae0e8f"}, + {file = "pyglet-2.0.9-py3-none-any.whl", hash = "sha256:8520b22dde75f47167e1fedeed58ac0bb0c890c0dca17d8528427d6b318cd9cc"}, + {file = "pyglet-2.0.9.zip", hash = "sha256:a0922e42f2d258505678e2f4a355c5476c1a6352c3f3a37754042ddb7e7cf72f"}, ] [[package]] @@ -3224,13 +3259,13 @@ plugins = ["importlib-metadata"] [[package]] name = "pyjwt" -version = "2.7.0" +version = "2.8.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.7" files = [ - {file = "PyJWT-2.7.0-py3-none-any.whl", hash = "sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1"}, - {file = "PyJWT-2.7.0.tar.gz", hash = "sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074"}, + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, ] [package.dependencies] @@ -3244,17 +3279,17 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pylint" -version = "2.17.4" +version = "2.17.5" description = "python code static checker" optional = false python-versions = ">=3.7.2" files = [ - {file = "pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, - {file = "pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, + {file = "pylint-2.17.5-py3-none-any.whl", hash = "sha256:73995fb8216d3bed149c8d51bba25b2c52a8251a2c8ac846ec668ce38fab5413"}, + {file = "pylint-2.17.5.tar.gz", hash = "sha256:f7b601cbc06fef7e62a754e2b41294c2aa31f1cb659624b9a85bcba29eaf8252"}, ] [package.dependencies] -astroid = ">=2.15.4,<=2.17.0-dev0" +astroid = ">=2.15.6,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -3363,51 +3398,15 @@ files = [ multipledispatch = "*" numpy = "*" -[[package]] -name = "pyrsistent" -version = "0.19.3" -description = "Persistent/Functional/Immutable data structures" -optional = true -python-versions = ">=3.7" -files = [ - {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, - {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, - {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, - {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, - {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, - {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, -] - [[package]] name = "pytest" -version = "7.3.2" +version = "7.4.0" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.3.2-py3-none-any.whl", hash = "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295"}, - {file = "pytest-7.3.2.tar.gz", hash = "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b"}, + {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, + {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, ] [package.dependencies] @@ -3536,156 +3535,153 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.10" +version = "2.0.11" description = "Pseudo terminal support for Windows from Python." optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pywinpty-2.0.10-cp310-none-win_amd64.whl", hash = "sha256:4c7d06ad10f6e92bc850a467f26d98f4f30e73d2fe5926536308c6ae0566bc16"}, - {file = "pywinpty-2.0.10-cp311-none-win_amd64.whl", hash = "sha256:7ffbd66310b83e42028fc9df7746118978d94fba8c1ebf15a7c1275fdd80b28a"}, - {file = "pywinpty-2.0.10-cp37-none-win_amd64.whl", hash = "sha256:38cb924f2778b5751ef91a75febd114776b3af0ae411bc667be45dd84fc881d3"}, - {file = "pywinpty-2.0.10-cp38-none-win_amd64.whl", hash = "sha256:902d79444b29ad1833b8d5c3c9aabdfd428f4f068504430df18074007c8c0de8"}, - {file = "pywinpty-2.0.10-cp39-none-win_amd64.whl", hash = "sha256:3c46aef80dd50979aff93de199e4a00a8ee033ba7a03cadf0a91fed45f0c39d7"}, - {file = "pywinpty-2.0.10.tar.gz", hash = "sha256:cdbb5694cf8c7242c2ecfaca35c545d31fa5d5814c3d67a4e628f803f680ebea"}, + {file = "pywinpty-2.0.11-cp310-none-win_amd64.whl", hash = "sha256:452f10ac9ff8ab9151aa8cea9e491a9612a12250b1899278c6a56bc184afb47f"}, + {file = "pywinpty-2.0.11-cp311-none-win_amd64.whl", hash = "sha256:6701867d42aec1239bc0fedf49a336570eb60eb886e81763db77ea2b6c533cc3"}, + {file = "pywinpty-2.0.11-cp38-none-win_amd64.whl", hash = "sha256:0ffd287751ad871141dc9724de70ea21f7fc2ff1af50861e0d232cf70739d8c4"}, + {file = "pywinpty-2.0.11-cp39-none-win_amd64.whl", hash = "sha256:e4e7f023c28ca7aa8e1313e53ba80a4d10171fe27857b7e02f99882dfe3e8638"}, + {file = "pywinpty-2.0.11.tar.gz", hash = "sha256:e244cffe29a894876e2cd251306efd0d8d64abd5ada0a46150a4a71c0b9ad5c5"}, ] [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] [[package]] name = "pyzmq" -version = "25.1.0" +version = "24.0.1" description = "Python bindings for 0MQ" optional = true python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1a6169e69034eaa06823da6a93a7739ff38716142b3596c180363dee729d713d"}, - {file = "pyzmq-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:19d0383b1f18411d137d891cab567de9afa609b214de68b86e20173dc624c101"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1e931d9a92f628858a50f5bdffdfcf839aebe388b82f9d2ccd5d22a38a789dc"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97d984b1b2f574bc1bb58296d3c0b64b10e95e7026f8716ed6c0b86d4679843f"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:154bddda2a351161474b36dba03bf1463377ec226a13458725183e508840df89"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cb6d161ae94fb35bb518b74bb06b7293299c15ba3bc099dccd6a5b7ae589aee3"}, - {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:90146ab578931e0e2826ee39d0c948d0ea72734378f1898939d18bc9c823fcf9"}, - {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:831ba20b660b39e39e5ac8603e8193f8fce1ee03a42c84ade89c36a251449d80"}, - {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a522510e3434e12aff80187144c6df556bb06fe6b9d01b2ecfbd2b5bfa5c60c"}, - {file = "pyzmq-25.1.0-cp310-cp310-win32.whl", hash = "sha256:be24a5867b8e3b9dd5c241de359a9a5217698ff616ac2daa47713ba2ebe30ad1"}, - {file = "pyzmq-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:5693dcc4f163481cf79e98cf2d7995c60e43809e325b77a7748d8024b1b7bcba"}, - {file = "pyzmq-25.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:13bbe36da3f8aaf2b7ec12696253c0bf6ffe05f4507985a8844a1081db6ec22d"}, - {file = "pyzmq-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:69511d604368f3dc58d4be1b0bad99b61ee92b44afe1cd9b7bd8c5e34ea8248a"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a983c8694667fd76d793ada77fd36c8317e76aa66eec75be2653cef2ea72883"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:332616f95eb400492103ab9d542b69d5f0ff628b23129a4bc0a2fd48da6e4e0b"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58416db767787aedbfd57116714aad6c9ce57215ffa1c3758a52403f7c68cff5"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cad9545f5801a125f162d09ec9b724b7ad9b6440151b89645241d0120e119dcc"}, - {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d6128d431b8dfa888bf51c22a04d48bcb3d64431caf02b3cb943269f17fd2994"}, - {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2b15247c49d8cbea695b321ae5478d47cffd496a2ec5ef47131a9e79ddd7e46c"}, - {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:442d3efc77ca4d35bee3547a8e08e8d4bb88dadb54a8377014938ba98d2e074a"}, - {file = "pyzmq-25.1.0-cp311-cp311-win32.whl", hash = "sha256:65346f507a815a731092421d0d7d60ed551a80d9b75e8b684307d435a5597425"}, - {file = "pyzmq-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8b45d722046fea5a5694cba5d86f21f78f0052b40a4bbbbf60128ac55bfcc7b6"}, - {file = "pyzmq-25.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f45808eda8b1d71308c5416ef3abe958f033fdbb356984fabbfc7887bed76b3f"}, - {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b697774ea8273e3c0460cf0bba16cd85ca6c46dfe8b303211816d68c492e132"}, - {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b324fa769577fc2c8f5efcd429cef5acbc17d63fe15ed16d6dcbac2c5eb00849"}, - {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5873d6a60b778848ce23b6c0ac26c39e48969823882f607516b91fb323ce80e5"}, - {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f0d9e7ba6a815a12c8575ba7887da4b72483e4cfc57179af10c9b937f3f9308f"}, - {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:414b8beec76521358b49170db7b9967d6974bdfc3297f47f7d23edec37329b00"}, - {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:01f06f33e12497dca86353c354461f75275a5ad9eaea181ac0dc1662da8074fa"}, - {file = "pyzmq-25.1.0-cp36-cp36m-win32.whl", hash = "sha256:b5a07c4f29bf7cb0164664ef87e4aa25435dcc1f818d29842118b0ac1eb8e2b5"}, - {file = "pyzmq-25.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:968b0c737797c1809ec602e082cb63e9824ff2329275336bb88bd71591e94a90"}, - {file = "pyzmq-25.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:47b915ba666c51391836d7ed9a745926b22c434efa76c119f77bcffa64d2c50c"}, - {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5af31493663cf76dd36b00dafbc839e83bbca8a0662931e11816d75f36155897"}, - {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5489738a692bc7ee9a0a7765979c8a572520d616d12d949eaffc6e061b82b4d1"}, - {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1fc56a0221bdf67cfa94ef2d6ce5513a3d209c3dfd21fed4d4e87eca1822e3a3"}, - {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:75217e83faea9edbc29516fc90c817bc40c6b21a5771ecb53e868e45594826b0"}, - {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3830be8826639d801de9053cf86350ed6742c4321ba4236e4b5568528d7bfed7"}, - {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3575699d7fd7c9b2108bc1c6128641a9a825a58577775ada26c02eb29e09c517"}, - {file = "pyzmq-25.1.0-cp37-cp37m-win32.whl", hash = "sha256:95bd3a998d8c68b76679f6b18f520904af5204f089beebb7b0301d97704634dd"}, - {file = "pyzmq-25.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:dbc466744a2db4b7ca05589f21ae1a35066afada2f803f92369f5877c100ef62"}, - {file = "pyzmq-25.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:3bed53f7218490c68f0e82a29c92335daa9606216e51c64f37b48eb78f1281f4"}, - {file = "pyzmq-25.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eb52e826d16c09ef87132c6e360e1879c984f19a4f62d8a935345deac43f3c12"}, - {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ddbef8b53cd16467fdbfa92a712eae46dd066aa19780681a2ce266e88fbc7165"}, - {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9301cf1d7fc1ddf668d0abbe3e227fc9ab15bc036a31c247276012abb921b5ff"}, - {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e23a8c3b6c06de40bdb9e06288180d630b562db8ac199e8cc535af81f90e64b"}, - {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a82faae00d1eed4809c2f18b37f15ce39a10a1c58fe48b60ad02875d6e13d80"}, - {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c8398a1b1951aaa330269c35335ae69744be166e67e0ebd9869bdc09426f3871"}, - {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d40682ac60b2a613d36d8d3a0cd14fbdf8e7e0618fbb40aa9fa7b796c9081584"}, - {file = "pyzmq-25.1.0-cp38-cp38-win32.whl", hash = "sha256:33d5c8391a34d56224bccf74f458d82fc6e24b3213fc68165c98b708c7a69325"}, - {file = "pyzmq-25.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c66b7ff2527e18554030319b1376d81560ca0742c6e0b17ff1ee96624a5f1afd"}, - {file = "pyzmq-25.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:af56229ea6527a849ac9fb154a059d7e32e77a8cba27e3e62a1e38d8808cb1a5"}, - {file = "pyzmq-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bdca18b94c404af6ae5533cd1bc310c4931f7ac97c148bbfd2cd4bdd62b96253"}, - {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b6b42f7055bbc562f63f3df3b63e3dd1ebe9727ff0f124c3aa7bcea7b3a00f9"}, - {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c2fc7aad520a97d64ffc98190fce6b64152bde57a10c704b337082679e74f67"}, - {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be86a26415a8b6af02cd8d782e3a9ae3872140a057f1cadf0133de685185c02b"}, - {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:851fb2fe14036cfc1960d806628b80276af5424db09fe5c91c726890c8e6d943"}, - {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2a21fec5c3cea45421a19ccbe6250c82f97af4175bc09de4d6dd78fb0cb4c200"}, - {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bad172aba822444b32eae54c2d5ab18cd7dee9814fd5c7ed026603b8cae2d05f"}, - {file = "pyzmq-25.1.0-cp39-cp39-win32.whl", hash = "sha256:4d67609b37204acad3d566bb7391e0ecc25ef8bae22ff72ebe2ad7ffb7847158"}, - {file = "pyzmq-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:71c7b5896e40720d30cd77a81e62b433b981005bbff0cb2f739e0f8d059b5d99"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cb27ef9d3bdc0c195b2dc54fcb8720e18b741624686a81942e14c8b67cc61a6"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c4fc2741e0513b5d5a12fe200d6785bbcc621f6f2278893a9ca7bed7f2efb7d"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fc34fdd458ff77a2a00e3c86f899911f6f269d393ca5675842a6e92eea565bae"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8751f9c1442624da391bbd92bd4b072def6d7702a9390e4479f45c182392ff78"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6581e886aec3135964a302a0f5eb68f964869b9efd1dbafdebceaaf2934f8a68"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5482f08d2c3c42b920e8771ae8932fbaa0a67dff925fc476996ddd8155a170f3"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7fbcafa3ea16d1de1f213c226005fea21ee16ed56134b75b2dede5a2129e62"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:adecf6d02b1beab8d7c04bc36f22bb0e4c65a35eb0b4750b91693631d4081c70"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d39e42a0aa888122d1beb8ec0d4ddfb6c6b45aecb5ba4013c27e2f28657765"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7018289b402ebf2b2c06992813523de61d4ce17bd514c4339d8f27a6f6809492"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9e68ae9864d260b18f311b68d29134d8776d82e7f5d75ce898b40a88df9db30f"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e21cc00e4debe8f54c3ed7b9fcca540f46eee12762a9fa56feb8512fd9057161"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f666ae327a6899ff560d741681fdcdf4506f990595201ed39b44278c471ad98"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f5efcc29056dfe95e9c9db0dfbb12b62db9c4ad302f812931b6d21dd04a9119"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:48e5e59e77c1a83162ab3c163fc01cd2eebc5b34560341a67421b09be0891287"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:108c96ebbd573d929740d66e4c3d1bdf31d5cde003b8dc7811a3c8c5b0fc173b"}, - {file = "pyzmq-25.1.0.tar.gz", hash = "sha256:80c41023465d36280e801564a69cbfce8ae85ff79b080e1913f6e90481fb8957"}, + {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"}, + {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"}, + {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"}, + {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"}, + {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"}, + {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"}, + {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"}, + {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"}, + {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"}, + {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"}, + {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"}, + {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"}, + {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"}, + {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"}, + {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"}, + {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"}, + {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"}, + {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"}, + {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"}, + {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"}, + {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"}, + {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"}, + {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"}, + {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"}, + {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"}, + {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"}, + {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"}, + {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"}, + {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"}, + {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"}, + {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"}, + {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"}, + {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"}, + {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"}, + {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"}, + {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"}, + {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"}, + {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"}, + {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"}, + {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"}, + {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"}, + {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"}, + {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"}, + {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"}, + {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"}, + {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"}, + {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"}, + {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"}, + {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"}, + {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"}, + {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"}, + {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"}, + {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"}, + {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"}, + {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"}, + {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"}, + {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"}, + {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"}, + {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"}, ] [package.dependencies] cffi = {version = "*", markers = "implementation_name == \"pypy\""} +py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "recommonmark" @@ -3703,6 +3699,21 @@ commonmark = ">=0.8.1" docutils = ">=0.11" sphinx = ">=1.3.1" +[[package]] +name = "referencing" +version = "0.30.0" +description = "JSON Referencing + Python" +optional = true +python-versions = ">=3.8" +files = [ + {file = "referencing-0.30.0-py3-none-any.whl", hash = "sha256:c257b08a399b6c2f5a3510a50d28ab5dbc7bbde049bcaf954d43c446f83ab548"}, + {file = "referencing-0.30.0.tar.gz", hash = "sha256:47237742e990457f7512c7d27486394a9aadaf876cbfaa4be65b27b4f4d47c6b"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.31.0" @@ -3764,13 +3775,13 @@ files = [ [[package]] name = "rich" -version = "13.4.2" +version = "13.5.1" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"}, - {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"}, + {file = "rich-13.5.1-py3-none-any.whl", hash = "sha256:b97381b204a206e1be618f5e1215a57174a1a7732490b3bf6668cf41d30bc72d"}, + {file = "rich-13.5.1.tar.gz", hash = "sha256:881653ee7037803559d8eae98f145e0a4c4b0ec3ff0300d2cc8d479c71fc6819"}, ] [package.dependencies] @@ -3781,6 +3792,112 @@ typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9 [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "rpds-py" +version = "0.9.2" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = true +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, + {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, + {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, + {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, + {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, + {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, + {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, + {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, + {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, + {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, + {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, + {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, + {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, + {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, + {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, + {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, + {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, + {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, + {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, + {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, + {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, + {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, + {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, + {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, + {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, + {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, + {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, + {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, + {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, + {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, + {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, + {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, + {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, + {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, +] + [[package]] name = "scipy" version = "1.10.1" @@ -3852,13 +3969,13 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "67.8.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, - {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] @@ -4013,13 +4130,13 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] [[package]] name = "sphinx-basic-ng" -version = "1.0.0b1" +version = "1.0.0b2" description = "A modern skeleton for Sphinx themes." optional = false python-versions = ">=3.7" files = [ - {file = "sphinx_basic_ng-1.0.0b1-py3-none-any.whl", hash = "sha256:ade597a3029c7865b24ad0eda88318766bcc2f9f4cef60df7e28126fde94db2a"}, - {file = "sphinx_basic_ng-1.0.0b1.tar.gz", hash = "sha256:89374bd3ccd9452a301786781e28c8718e99960f2d4f411845ea75fc7bb5a9b0"}, + {file = "sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b"}, + {file = "sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9"}, ] [package.dependencies] @@ -4255,13 +4372,13 @@ files = [ [[package]] name = "tomlkit" -version = "0.11.8" +version = "0.12.1" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, + {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, + {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, ] [[package]] @@ -4365,13 +4482,13 @@ files = [ [[package]] name = "types-pygments" -version = "2.15.0.1" +version = "2.15.0.2" description = "Typing stubs for Pygments" optional = false python-versions = "*" files = [ - {file = "types-Pygments-2.15.0.1.tar.gz", hash = "sha256:4fef924a4be98e4b0a3701f2822c33186cacd7dc317267853eaf451c3f361a97"}, - {file = "types_Pygments-2.15.0.1-py3-none-any.whl", hash = "sha256:3a356cef78d667f55d3a27f5f73aa82994187dc93fcd93d970ba7479ed3f8534"}, + {file = "types-Pygments-2.15.0.2.tar.gz", hash = "sha256:a1b56b792aa1015f6cecd092af00c71ecb12d9d5dd0a30313f9cb3839044389a"}, + {file = "types_Pygments-2.15.0.2-py3-none-any.whl", hash = "sha256:60fc96777722942eafd4e7cd248568861aa8696246e3b1effcddabd51001a977"}, ] [package.dependencies] @@ -4380,13 +4497,13 @@ types-setuptools = "*" [[package]] name = "types-requests" -version = "2.31.0.1" +version = "2.31.0.2" description = "Typing stubs for requests" optional = false python-versions = "*" files = [ - {file = "types-requests-2.31.0.1.tar.gz", hash = "sha256:3de667cffa123ce698591de0ad7db034a5317457a596eb0b4944e5a9d9e8d1ac"}, - {file = "types_requests-2.31.0.1-py3-none-any.whl", hash = "sha256:afb06ef8f25ba83d59a1d424bd7a5a939082f94b94e90ab5e6116bd2559deaa3"}, + {file = "types-requests-2.31.0.2.tar.gz", hash = "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40"}, + {file = "types_requests-2.31.0.2-py3-none-any.whl", hash = "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a"}, ] [package.dependencies] @@ -4405,49 +4522,49 @@ files = [ [[package]] name = "types-urllib3" -version = "1.26.25.13" +version = "1.26.25.14" description = "Typing stubs for urllib3" optional = false python-versions = "*" files = [ - {file = "types-urllib3-1.26.25.13.tar.gz", hash = "sha256:3300538c9dc11dad32eae4827ac313f5d986b8b21494801f1bf97a1ac6c03ae5"}, - {file = "types_urllib3-1.26.25.13-py3-none-any.whl", hash = "sha256:5dbd1d2bef14efee43f5318b5d36d805a489f6600252bb53626d4bfafd95e27c"}, + {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, + {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, ] [[package]] name = "typing-extensions" -version = "4.6.3" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] name = "uri-template" -version = "1.2.0" +version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "uri_template-1.2.0-py3-none-any.whl", hash = "sha256:f1699c77b73b925cf4937eae31ab282a86dc885c333f2e942513f08f691fc7db"}, - {file = "uri_template-1.2.0.tar.gz", hash = "sha256:934e4d09d108b70eb8a24410af8615294d09d279ce0e7cbcdaef1bd21f932b06"}, + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, ] [package.extras] -dev = ["flake8 (<4.0.0)", "flake8-annotations", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-noqa", "flake8-requirements", "flake8-type-annotations", "flake8-use-fstring", "mypy", "pep8-naming"] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] [[package]] name = "urllib3" -version = "2.0.3" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, - {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, ] [package.extras] @@ -4458,23 +4575,23 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.23.0" +version = "20.24.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, - {file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, + {file = "virtualenv-20.24.2-py3-none-any.whl", hash = "sha256:43a3052be36080548bdee0b42919c88072037d50d56c28bd3f853cbe92b953ff"}, + {file = "virtualenv-20.24.2.tar.gz", hash = "sha256:fd8a78f46f6b99a67b7ec5cf73f92357891a7b3a40fd97637c27f854aae3b9e0"}, ] [package.dependencies] -distlib = ">=0.3.6,<1" -filelock = ">=3.11,<4" -platformdirs = ">=3.2,<4" +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<4" [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.7.1)", "time-machine (>=2.9)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "watchdog" @@ -4555,13 +4672,13 @@ files = [ [[package]] name = "websocket-client" -version = "1.5.3" +version = "1.6.1" description = "WebSocket client for Python with low level API options" optional = true python-versions = ">=3.7" files = [ - {file = "websocket-client-1.5.3.tar.gz", hash = "sha256:b96f3bce3e54e3486ebe6504bc22bd4c140392bd2eb71764db29be8f2639aa65"}, - {file = "websocket_client-1.5.3-py3-none-any.whl", hash = "sha256:3566f8467cd350874c4913816355642a4942f6c1ed1e9406e3d42fae6d6c072a"}, + {file = "websocket-client-1.6.1.tar.gz", hash = "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd"}, + {file = "websocket_client-1.6.1-py3-none-any.whl", hash = "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d"}, ] [package.extras] @@ -4655,112 +4772,112 @@ files = [ [[package]] name = "y-py" -version = "0.5.9" +version = "0.6.0" description = "Python bindings for the Y-CRDT built from yrs (Rust)" optional = true python-versions = "*" files = [ - {file = "y_py-0.5.9-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:afa9a11aa2880dd8689894f3269b653e6d3bd1956963d5329be9a5bf021dab62"}, - {file = "y_py-0.5.9-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e370ce076781adea161b04d2f666e8b4f89bc7e8927ef842fbb0283d3bfa73e0"}, - {file = "y_py-0.5.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b67dad339f9b6701f74ff7a6e901c7909eca4eea02cf955b28d87a42650bd1be"}, - {file = "y_py-0.5.9-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae82a6d9cbaff8cb7505e81b5b7f9cd7756bb7e7110aef7914375fe56b012a90"}, - {file = "y_py-0.5.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c7ca64a2a97f708569dcabd55865915943e30267bf6d26c4d212d005951efe62"}, - {file = "y_py-0.5.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55098440e32339c2dc3d652fb36bb77a4927dee5fd4ab0cb1fe12fdd163fd4f5"}, - {file = "y_py-0.5.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9052a814e8b7ec756371a191f38de68b956437e0bb429c2dd503e658f298f9"}, - {file = "y_py-0.5.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:95d13b38c9055d607565b77cbae12e2bf0c1671c5cb8f2ee2e1230d41d2d6d34"}, - {file = "y_py-0.5.9-cp310-none-win32.whl", hash = "sha256:5dbd8d177ec7b9fef4a7b6d22eb2f8d5606fd5aac31cf2eab0dc18f0b3504c7c"}, - {file = "y_py-0.5.9-cp310-none-win_amd64.whl", hash = "sha256:d373c6bb8e21d5f7ec0833b76fa1ab480086ada602ef5bbf4724a25a21a00b6a"}, - {file = "y_py-0.5.9-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:f8f238144a302f17eb26b122cad9382fcff5ec6653b8a562130b9a5e44010098"}, - {file = "y_py-0.5.9-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:25637e3d011ca6f877a24f3083ff2549d1d619406d7e8a1455c445527205046c"}, - {file = "y_py-0.5.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ffebe5e62cbfee6e24593927dedba77dc13ac4cfb9c822074ab566b1fb63d59"}, - {file = "y_py-0.5.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0ed760e6aa5316227a0ba2d5d29634a4ef2d72c8bc55169ac01664e17e4b536"}, - {file = "y_py-0.5.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91be189fae8ba242528333e266e38d65cae3d9a09fe45867fab8578a3ddf2ea2"}, - {file = "y_py-0.5.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3ae6d22b7cc599220a26b06da6ead9fd582eea5fdb6273b06fa3f060d0a26a7"}, - {file = "y_py-0.5.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:065f90501cf008375d70be6ce72dd41745e09d088f0b545f5f914d2c3f04f7ae"}, - {file = "y_py-0.5.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:742c486d5b792c4ad76e09426161302edddca85efe826fa01dcee50907326cd7"}, - {file = "y_py-0.5.9-cp311-none-win32.whl", hash = "sha256:2692c808bf28f797f8d693f45dc86563ac3b1626579f67ce9546dca69644d687"}, - {file = "y_py-0.5.9-cp311-none-win_amd64.whl", hash = "sha256:c1f5f287cc7ae127ed6a2fb1546e631b316a41d087d7d2db9caa3e5f59906dcf"}, - {file = "y_py-0.5.9-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9a59603cf42c20d02ee5add2e3d0ce48e89c480a2a02f642fb77f142c4f37958"}, - {file = "y_py-0.5.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b44473bb32217c78e18db66f497f6c8be33e339bab5f52398bb2468c904d5140"}, - {file = "y_py-0.5.9-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1906f13e8d5ebfbd9c7948f57bc6f6f53b451b19c99350f42a0f648147a8acfe"}, - {file = "y_py-0.5.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:202b2a3e42e0a1eaedee26f8a3bc73cd9f994c4c2b15511ea56b9838178eb380"}, - {file = "y_py-0.5.9-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13b9d2959d9a26536b6ad118fb026ff19bd79da52e4addf6f3a562e7c01d516e"}, - {file = "y_py-0.5.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3ddedaa95284f4f22a92b362f658f3d92f272d8c0fa009051bd5490c4d5a04"}, - {file = "y_py-0.5.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85585e669d7679126e4a04e4bc0a063a641175a74eecfe47539e8da3e5b1da6e"}, - {file = "y_py-0.5.9-cp37-none-win32.whl", hash = "sha256:caf9b1feb69379d424a1d3d7c899b8e0389a3fb3131d39c3c03dcc3d4a93dbdc"}, - {file = "y_py-0.5.9-cp37-none-win_amd64.whl", hash = "sha256:7353af0e9c1f42fbf0ab340e253eeb333d58c890fa91d3eadb1b9adaf9336732"}, - {file = "y_py-0.5.9-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:ed0fd5265905cc7e23709479bc152d69f4972dec32fa322d20cb77f749707e78"}, - {file = "y_py-0.5.9-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:db1ac7f2d1862eb4c448cf76183399d555a63dbe2452bafecb1c2f691e36d687"}, - {file = "y_py-0.5.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa685f7e43ce490dfb1e392ac48f584b75cd21f05dc526c160d15308236ce8a0"}, - {file = "y_py-0.5.9-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c42f3a6cd20153925b00c49af855a3277989d411bb8ea849095be943ee160821"}, - {file = "y_py-0.5.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:753aaae817d658a1e9d271663439d8e83d9d8effa45590ecdcadc600c7cf77e3"}, - {file = "y_py-0.5.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc8e5f38842a4b043c9592bfa9a740147ddb8fac2d7a5b7bf6d52466c090ec23"}, - {file = "y_py-0.5.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd3cb0d13ac92e7b9235d1024dba9af0788161246f12dcf1f635d634ccb206a"}, - {file = "y_py-0.5.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9983e99e3a61452b39ffce98206c7e4c6d260f4e917c8fe53fb54aaf25df89a3"}, - {file = "y_py-0.5.9-cp38-none-win32.whl", hash = "sha256:63ef8e5b76cd54578a7fd5f72d8c698d9ccd7c555c7900ebfd38a24d397c3b15"}, - {file = "y_py-0.5.9-cp38-none-win_amd64.whl", hash = "sha256:fe70d0134fe2115c08866f0cac0eb5c0788093872b5026eb438a74e1ebafd659"}, - {file = "y_py-0.5.9-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:05f805b58422d5d7c8e7e8e2141d1c3cac4daaa4557ae6a9b84b141fe8d6289e"}, - {file = "y_py-0.5.9-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:a7977eeaceaeb0dfffcc5643c985c337ebc33a0b1d792ae0a9b1331cdd97366f"}, - {file = "y_py-0.5.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:800e73d2110b97a74c52db2c8ce03a78e96f0d66a7e0c87d8254170a67c2db0e"}, - {file = "y_py-0.5.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:add793f5f5c7c7a3eb1b09ffc771bdaae10a0bd482a370bf696b83f8dee8d1b4"}, - {file = "y_py-0.5.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8b67ae37af8aac6160fda66c0f73bcdf65c06da9022eb76192c3fc45cfab994"}, - {file = "y_py-0.5.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2532ea5aefb223fd688c93860199d348a7601d814aac9e8784d816314588ddeb"}, - {file = "y_py-0.5.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df78a0409dca11554a4b6442d7a8e61f762c3cfc78d55d98352392869a6b9ae0"}, - {file = "y_py-0.5.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2da2a9e28dceab4832945a745cad507579f52b4d0c9e2f54ae156eb56875861"}, - {file = "y_py-0.5.9-cp39-none-win32.whl", hash = "sha256:fdafb93bfd5532b13a53c4090675bcd31724160017ecc73e492dc1211bc0377a"}, - {file = "y_py-0.5.9-cp39-none-win_amd64.whl", hash = "sha256:73200c59bb253b880825466717941ac57267f2f685b053e183183cb6fe82874d"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:af6df5ec1d66ee2d962026635d60e84ad35fc01b2a1e36b993360c0ce60ae349"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:0c0e333c20b0a6ce4a5851203d45898ab93f16426c342420b931e190c5b71d3d"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7434c77cd23592973ed63341b8d337e6aebaba5ed40d7f22e2d43dfd0c3a56e"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e30fe2491d095c6d695a2c96257967fd3e2497f0f777030c8492d03c18d46e2a"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a57d81260e048caacf43a2f851766687f53e8a8356df6947fb0eee7336a7e2de"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d4dfc276f988175baaa4ab321c3321a16ce33db3356c9bc5f4dea0db3de55aa"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb68445414940efe547291340e91604c7b8379b60822678ef29f4fc2a0e11c62"}, - {file = "y_py-0.5.9-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cd6f373dbf592ad83aaf95c16abebc8678928e49bd509ebd593259e1908345ae"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:76b3480e7037ac9390c450e2aff9e46e2c9e61520c0d88afe228110ec728adc5"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:9484a3fc33f812234e58a5ee834b42bb0a628054d61b5c06c323aa56c12e557d"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d87d0c2e87990bc00c049742d36a5dbbb1510949459af17198728890ee748a"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fce5feb57f6231376eb10d1fb68c60da106ffa0b520b3129471c466eff0304cc"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:27c1e9a866146d250e9e16d99fe22a40c82f5b592ab85da97e5679fc3841c7ce"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d722d6a27230c1f395535da5cee6a9a16497c6343afd262c846090075c083009"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f54625b9ed4e787872c45d3044dcfd04c0da4258d9914f3d32308830b35246c"}, - {file = "y_py-0.5.9-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9513ae81fcc805671ae134c4c7421ca322acf92ce8b33817e1775ea8c0176973"}, - {file = "y_py-0.5.9.tar.gz", hash = "sha256:50cfa0532bcee27edb8c64743b49570e28bb76a00cd384ead1d84b6f052d9368"}, + {file = "y_py-0.6.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ebbebc4f6a9e0c89c7b57035f91043b038e804dd1953845d8a66066f4526c853"}, + {file = "y_py-0.6.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:2c230bc01b96081550b7583b77d00404fd39825657f4064b919a10515f660cdf"}, + {file = "y_py-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5f5975c1a8c2ca99980571b8811d151db8590de9cc96346572a81e0f6f1e30e"}, + {file = "y_py-0.6.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e5f89cf9ef1daf12f438a075415a02f227594e4b0494c78d3b83cb83651631f5"}, + {file = "y_py-0.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efb3225b58dc67152c004da3c26ae5bad0afebbb3c7509d853bdd87eaa655137"}, + {file = "y_py-0.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaaec9718f8a23924c95294d41d87829b113bc9a606a3667dfb995afc45c9920"}, + {file = "y_py-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb03947937b0fcb09eb2b94eb08d8e8030ef0ed70af777684ab670bd369bc3c"}, + {file = "y_py-0.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f79ef7303e332e91d738e66e9bb7fce0243d0407a02631a58ebc0bf2fb8743d0"}, + {file = "y_py-0.6.0-cp310-none-win32.whl", hash = "sha256:1667b8a67ace756c04f03778e86fc359028c98905212f8686afb48c26c252bda"}, + {file = "y_py-0.6.0-cp310-none-win_amd64.whl", hash = "sha256:cca539c3804a580992304b18a33f1980282d9097a723f0bd01971477cb365b28"}, + {file = "y_py-0.6.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:5743e94c982585f05e02d9a3345dd9b1f28d90fa128df9f60b0eb357a76d2c32"}, + {file = "y_py-0.6.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:281535bb4f18fe09e5517a63b8206dd6f26ad6fb7e7c25c62bf785e594adab4d"}, + {file = "y_py-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69e05e01594e99c934562124b159720533b7ad887dde7762d460916aac47a8e4"}, + {file = "y_py-0.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a752ba8875ed2038dfc7d62738536cb22b4e308951cb925a7fe8fef782c6db08"}, + {file = "y_py-0.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea7d796bb55d08dd1a60736beb724004f2cbdc207592b5f301a5ff314b17137"}, + {file = "y_py-0.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5126786f914ff53ea2f04f9da790db168db172521cc4f114d5501badd2f6b96"}, + {file = "y_py-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b71cd495d322da25a53a6a830b591a2c0c46db22bb0b3556fca0bbdb1d45a18e"}, + {file = "y_py-0.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0624a5adf29d29330a336eecdf15874871f559d50944d542012665e1c3a18265"}, + {file = "y_py-0.6.0-cp311-none-win32.whl", hash = "sha256:374ffef1939c42286ea18e2a413c9974430226227f8f1480bbee469933aa675b"}, + {file = "y_py-0.6.0-cp311-none-win_amd64.whl", hash = "sha256:9242f3a5c6293e634817d9984c60523ffb34cf5b41501c5958681a75745946e6"}, + {file = "y_py-0.6.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9dad6af2d83a2b0618ba3c1a2fc6657c5303cf4e9f1a65cc3fea40ffbcc552e2"}, + {file = "y_py-0.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74d5ebb5f9ef0c4c1f7bdd9ab5e53b9d8be4c7464905f39761b22b6ce0d327d3"}, + {file = "y_py-0.6.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a027c39296c925f0b81e28a0fefab8c5964a0ea2b50fa05cbddf5e5ab167a380"}, + {file = "y_py-0.6.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49adf7e25c3b3bac9f19bee181ef5253659ebe5747a7141860692015222b2007"}, + {file = "y_py-0.6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:47b3604c874d25616a097adaaabcad6e77729e23c5d029092b8149af1a08b2a5"}, + {file = "y_py-0.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a5a882591c8e1b1d6fbdb7ab43884907cef2b6a18e36c7ae85589e5f55371e5"}, + {file = "y_py-0.6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:30b9337e4f3d541879a8187af121be1bd42ea110372a21895a1a3f800a6bd1c3"}, + {file = "y_py-0.6.0-cp37-none-win32.whl", hash = "sha256:ef0f08edb2094869e4d12346ee68d5154cb3d23bc3b1e7679222fae12228261c"}, + {file = "y_py-0.6.0-cp37-none-win_amd64.whl", hash = "sha256:391a232c328c2be1de4cb152ed3e9427826e4cbd9d645feacb3dbb344b122e10"}, + {file = "y_py-0.6.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:eb60fe68774117378efdbd368ef83cf1417e61d4bc39c6be8e7f4ee91fb7428a"}, + {file = "y_py-0.6.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:4f025c50301d9ddbbc2384f98d3ff1dbfe43606146b747e23a17774a02faffe9"}, + {file = "y_py-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4181b28f736cae3bb4517090ae5eeca318c075c0106466f13a4ed6682265fc8a"}, + {file = "y_py-0.6.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6273d84605ee55b3ac52742018f94602dab9b0457f29e6f787021c473b02fed"}, + {file = "y_py-0.6.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1eefb6371cd6e072cf467b897f85bd0d7575f3a3e944fb8675f84fb59aedd071"}, + {file = "y_py-0.6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b75c2199a125ef8926f3216fb324c3bcd8b1b4b6c0b428888cc753ee4c85f81f"}, + {file = "y_py-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:035ba7ce31bb87bd7b5977eee71ee2ff71e54d347a35e2079362b1c23731dccd"}, + {file = "y_py-0.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:418aaa796a22b0102de09b36b6c6294d0a485f04bc8866c3b28f17e7022c44ba"}, + {file = "y_py-0.6.0-cp38-none-win32.whl", hash = "sha256:fc48db294d327a5cc10ee49f73f1fa1478240cc827c9029e0871106e327353ac"}, + {file = "y_py-0.6.0-cp38-none-win_amd64.whl", hash = "sha256:d1301bfeaa26f78f4b0e5f96e0f22761b38cc407713f70550a1be490945fd6d7"}, + {file = "y_py-0.6.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:e48b5b30242c7d517be85b48246b21e4e26540505a1ffe4fe473e239a8ec56d3"}, + {file = "y_py-0.6.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:479da40ef1205de52d87209534bf8e713a782e01eeed3df8dff44d21085e3f63"}, + {file = "y_py-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19b7c3eaf65b162e59486a48bea5dd2035937952f15e008a14813e8cb7c24d7b"}, + {file = "y_py-0.6.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a20a4d10c8f0ee2b6df265d182d0be0ecd2ba7348c0a20b9df7d4d39df895801"}, + {file = "y_py-0.6.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:304e88a3deaff9906faa7ba514cf82f4ca4bad1ea88728206ff906e66179abd3"}, + {file = "y_py-0.6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6377e3cbab8f5b8b918130e9f924358f98ca1bea12a8096d3fadea191f7137f1"}, + {file = "y_py-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44fdd64598e9ed4008158e5e60be5e1e2daeed6fae0ab2bf0002461e960709d"}, + {file = "y_py-0.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:51f1997dae6d77b12b50502871c7a9aae22e84048e83b64fe6d4f18dec2e4700"}, + {file = "y_py-0.6.0-cp39-none-win32.whl", hash = "sha256:9f56888aeb07ca76a5cd552581bb3735fcd2d8c18165b946fdb6e4507b10e76c"}, + {file = "y_py-0.6.0-cp39-none-win_amd64.whl", hash = "sha256:11345294820908d5b8af9c6616ea908dda8b3e554ee6f6d50be6a2e15940f63e"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4c16d50d0728abd915bd9e2e0c3ce982005ba78b60e4b6666aadc592d9982c79"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:eccf67d09a4df42a7be2a5427c1b2e0b89bec862f519ded754bd452df516b380"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:513a2fe1318c247fc3b3c3ad208488e870a216784f2a3e6dbe2688c92f671c86"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76e2b14004cadb237499a8a068fd7a8b805b5c1fd0508530473e087c7dd25163"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c276a7eb3ae3360f5a2fc503f1e4535d4a2f1c8cfc22af4595ad752e9a94fd77"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71f7689c25bd7608e1e7a76a13138cb202455fac165018693a3e8e5675f54b82"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0505e2ca36408b754774a2bb20d93b5c7def3873406c13e1855de6f007f8a94"}, + {file = "y_py-0.6.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f143fdcda7a6a89bf96d9b359142a7ca3315e8a9018aa46b0abbdeb47d7192e"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:9a920bf096d1eecb0f30afc38ee56bfcb9e2c863c33db96fc9d30d4ac0dbee58"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:97812f9443fd846012d60ecacffa2a11992d02ad9f8618d4faae8e596736c646"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83115cbbd4f6d3b38ebe06d80b1d0dbf1b10e53947f71df16f6145a4f0d14716"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cac9259839b32706336b3f521cacfd16fc7cefee609bd9c2b5123099328d696"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e76be7258010ce8cbb93a841f78f52901bba1253a51213d3535972d13aa4e89e"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b488be17d83173acb7f07c7e3430d2c66d0bd55b821683089311699562b58b"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b9f24b00972e5685d0b9bbd01413d9c33d124145343fb92667f0e076f040ad"}, + {file = "y_py-0.6.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:95083c4cdbd593497a695e841b2ad050c0b9a8a9e374f8496aa478cebfcf9cc9"}, + {file = "y_py-0.6.0.tar.gz", hash = "sha256:46836169f7dc2957df8513cfe4bc2009175b3a473e630af421a8e75ee1c48f98"}, ] [[package]] name = "ypy-websocket" -version = "0.8.2" +version = "0.8.4" description = "WebSocket connector for Ypy" optional = true python-versions = ">=3.7" files = [ - {file = "ypy_websocket-0.8.2-py3-none-any.whl", hash = "sha256:9049d5a7d61c26c2b5a39757c9ffcbe2274bf3553adeea8de7fe1c04671d4145"}, - {file = "ypy_websocket-0.8.2.tar.gz", hash = "sha256:491b2cc4271df4dde9be83017c15f4532b597dc43148472eb20c5aeb838a5b46"}, + {file = "ypy_websocket-0.8.4-py3-none-any.whl", hash = "sha256:b1ba0dfcc9762f0ca168d2378062d3ca1299d39076b0f145d961359121042be5"}, + {file = "ypy_websocket-0.8.4.tar.gz", hash = "sha256:43a001473f5c8abcf182f603049cf305cbc855ad8deaa9dfa0f3b5a7cea9d0ff"}, ] [package.dependencies] aiofiles = ">=22.1.0,<23" aiosqlite = ">=0.17.0,<1" -y-py = ">=0.5.3,<0.6.0" +y-py = ">=0.6.0,<0.7.0" [package.extras] test = ["mypy", "pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)"] [[package]] name = "zipp" -version = "3.15.0" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] gui = ["dearpygui"] @@ -4769,4 +4886,4 @@ jupyterlab = ["jupyterlab", "notebook"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "28a396c4e162aaa239599929f59ea1a96a5cee669ce7dbe0c9c23e22a42488f6" +content-hash = "436481c423edda9580a9b510f32c7a20f7256eb8de17e1e270825b0c5eb89199" diff --git a/pyproject.toml b/pyproject.toml index ddbc9c1698..a611a3d967 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,6 @@ packages = [ python = ">=3.8,<3.12" click = ">=7.2,<=9.0" click-default-group = "^1.2.2" -colour = "^0.1.5" numpy = "^1.19" Pillow = ">=9.1,<10.0" scipy = "^1.7.3" diff --git a/tests/module/mobject/svg/test_svg_mobject.py b/tests/module/mobject/svg/test_svg_mobject.py index 4568b51b2d..eba36fb3ab 100644 --- a/tests/module/mobject/svg/test_svg_mobject.py +++ b/tests/module/mobject/svg/test_svg_mobject.py @@ -1,7 +1,5 @@ from __future__ import annotations -from colour import Color - from manim import * from tests.helpers.path_utils import get_svg_resource @@ -9,21 +7,21 @@ def test_set_fill_color(): expected_color = "#FF862F" svg = SVGMobject(get_svg_resource("heart.svg"), fill_color=expected_color) - assert svg.fill_color == Color(expected_color) + assert svg.fill_color.to_hex() == expected_color def test_set_stroke_color(): expected_color = "#FFFDDD" svg = SVGMobject(get_svg_resource("heart.svg"), stroke_color=expected_color) - assert svg.stroke_color == Color(expected_color) + assert svg.stroke_color.to_hex() == expected_color def test_set_color_sets_fill_and_stroke(): expected_color = "#EEE777" svg = SVGMobject(get_svg_resource("heart.svg"), color=expected_color) - assert svg.color == Color(expected_color) - assert svg.fill_color == Color(expected_color) - assert svg.stroke_color == Color(expected_color) + assert svg.color.to_hex() == expected_color + assert svg.fill_color.to_hex() == expected_color + assert svg.stroke_color.to_hex() == expected_color def test_set_fill_opacity(): @@ -45,7 +43,7 @@ def test_fill_overrides_color(): color="#123123", fill_color=expected_color, ) - assert svg.fill_color == Color(expected_color) + assert svg.fill_color.to_hex() == expected_color def test_stroke_overrides_color(): @@ -55,7 +53,7 @@ def test_stroke_overrides_color(): color="#334433", stroke_color=expected_color, ) - assert svg.stroke_color == Color(expected_color) + assert svg.stroke_color.to_hex() == expected_color def test_single_path_turns_into_sequence_of_points(): diff --git a/tests/module/mobject/text/test_numbers.py b/tests/module/mobject/text/test_numbers.py index a9f16fde1b..9482dd728f 100644 --- a/tests/module/mobject/text/test_numbers.py +++ b/tests/module/mobject/text/test_numbers.py @@ -1,7 +1,5 @@ from __future__ import annotations -from colour import Color - from manim import RED, DecimalNumber, Integer @@ -44,4 +42,6 @@ def test_color_when_number_of_digits_changes(): the number of digits changes.""" mob = Integer(color=RED) mob.set_value(42) - assert all(submob.stroke_color == Color(RED) for submob in mob.submobjects) + assert all( + submob.stroke_color.to_hex() == RED.to_hex() for submob in mob.submobjects + ) diff --git a/tests/module/mobject/text/test_text_mobject.py b/tests/module/mobject/text/test_text_mobject.py index 79542163d1..048ae883a1 100644 --- a/tests/module/mobject/text/test_text_mobject.py +++ b/tests/module/mobject/text/test_text_mobject.py @@ -1,7 +1,5 @@ from __future__ import annotations -from colour import Color - from manim.mobject.text.text_mobject import MarkupText, Text @@ -13,11 +11,3 @@ def test_font_size(): assert round(text_string.font_size, 5) == 14.4 assert round(markuptext_string.font_size, 5) == 14.4 - - -def test_non_str_color(): - """Test that the Text and MarkupText can accept non_str color values - i.e. colour.Color(red).""" - - text = Text("test_color_inheritance", color=Color("blue")) - markup_text = MarkupText("test_color_inheritance", color=Color("blue")) diff --git a/tests/module/mobject/types/vectorized_mobject/test_stroke.py b/tests/module/mobject/types/vectorized_mobject/test_stroke.py index 5a25f34661..7935caa6da 100644 --- a/tests/module/mobject/types/vectorized_mobject/test_stroke.py +++ b/tests/module/mobject/types/vectorized_mobject/test_stroke.py @@ -1,14 +1,12 @@ from __future__ import annotations -from colour import Color - import manim.utils.color as C from manim import VMobject def test_stroke_props_in_ctor(): m = VMobject(stroke_color=C.ORANGE, stroke_width=10) - assert m.stroke_color == Color(C.ORANGE) + assert m.stroke_color.to_hex() == C.ORANGE.to_hex() assert m.stroke_width == 10 @@ -17,7 +15,7 @@ def test_set_stroke(): m.set_stroke(color=C.ORANGE, width=2, opacity=0.8) assert m.stroke_width == 2 assert m.stroke_opacity == 0.8 - assert m.stroke_color == Color(C.ORANGE) + assert m.stroke_color.to_hex() == C.ORANGE.to_hex() def test_set_background_stroke(): @@ -25,4 +23,4 @@ def test_set_background_stroke(): m.set_stroke(color=C.ORANGE, width=2, opacity=0.8, background=True) assert m.background_stroke_width == 2 assert m.background_stroke_opacity == 0.8 - assert m.background_stroke_color == C.ORANGE + assert m.background_stroke_color.to_hex() == C.ORANGE.to_hex() diff --git a/tests/module/utils/test_color.py b/tests/module/utils/test_color.py index fa9e22a774..c3d468328b 100644 --- a/tests/module/utils/test_color.py +++ b/tests/module/utils/test_color.py @@ -25,7 +25,7 @@ def test_background_color(): S.renderer.get_frame()[0, 0], np.array([67, 111, 128, 255]) ) - S.camera.background_color = "#fff" + S.camera.background_color = "#ffffff" S.renderer.update_frame(S) np.testing.assert_array_equal( S.renderer.get_frame()[0, 0], np.array([255, 255, 255, 255]) @@ -35,17 +35,17 @@ def test_background_color(): S.camera.background_opacity = 0.5 S.renderer.update_frame(S) np.testing.assert_array_equal( - S.renderer.get_frame()[0, 0], np.array([93, 127, 93, 127]) + S.renderer.get_frame()[0, 0], np.array([187, 255, 187, 127]) ) def test_set_color(): m = Mobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" m.set_color(BLACK) - assert m.color.hex == "#000" + assert m.color.to_hex() == "#000000" m = VMobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" m.set_color(BLACK) - assert m.color.hex == "#000" + assert m.color.to_hex() == "#000000" diff --git a/tests/module/utils/test_manim_color.py b/tests/module/utils/test_manim_color.py new file mode 100644 index 0000000000..1ae07c3b8b --- /dev/null +++ b/tests/module/utils/test_manim_color.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +import numpy as np +import numpy.testing as nt + +from manim.utils.color import BLACK, WHITE, ManimColor, ManimColorDType + + +def test_init_with_int() -> None: + color = ManimColor(0x123456, 0.5) + nt.assert_array_equal( + color._internal_value, + np.array([0x12, 0x34, 0x56, 0.5 * 255], dtype=ManimColorDType) / 255, + ) + color = BLACK + nt.assert_array_equal( + color._internal_value, np.array([0, 0, 0, 1.0], dtype=ManimColorDType) + ) + color = WHITE + nt.assert_array_equal( + color._internal_value, np.array([1.0, 1.0, 1.0, 1.0], dtype=ManimColorDType) + ) diff --git a/tests/opengl/test_color_opengl.py b/tests/opengl/test_color_opengl.py index 32f9dfbdda..0a53f60c53 100644 --- a/tests/opengl/test_color_opengl.py +++ b/tests/opengl/test_color_opengl.py @@ -1,7 +1,6 @@ from __future__ import annotations import numpy as np -from colour import Color from manim import BLACK, BLUE, GREEN, PURE_BLUE, PURE_GREEN, PURE_RED, Scene from manim.mobject.opengl.opengl_mobject import OpenGLMobject @@ -16,19 +15,19 @@ def test_import_color(using_opengl_renderer): def test_background_color(using_opengl_renderer): S = Scene() - S.renderer.background_color = "#ff0000" + S.renderer.background_color = "#FF0000" S.renderer.update_frame(S) np.testing.assert_array_equal( S.renderer.get_frame()[0, 0], np.array([255, 0, 0, 255]) ) - S.renderer.background_color = "#436f80" + S.renderer.background_color = "#436F80" S.renderer.update_frame(S) np.testing.assert_array_equal( S.renderer.get_frame()[0, 0], np.array([67, 111, 128, 255]) ) - S.renderer.background_color = "#fff" + S.renderer.background_color = "#FFFFFF" S.renderer.update_frame(S) np.testing.assert_array_equal( S.renderer.get_frame()[0, 0], np.array([255, 255, 255, 255]) @@ -37,138 +36,138 @@ def test_background_color(using_opengl_renderer): def test_set_color(using_opengl_renderer): m = OpenGLMobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" np.alltrue(m.rgbas == np.array((0.0, 0.0, 0.0, 1.0))) m.set_color(BLACK) - assert m.color.hex == "#000" + assert m.color.to_hex() == "#000000" np.alltrue(m.rgbas == np.array((1.0, 1.0, 1.0, 1.0))) m.set_color(PURE_GREEN, opacity=0.5) - assert m.color.hex == "#0f0" + assert m.color.to_hex() == "#00FF00" np.alltrue(m.rgbas == np.array((0.0, 1.0, 0.0, 0.5))) m = OpenGLVMobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" np.alltrue(m.fill_rgba == np.array((0.0, 0.0, 0.0, 1.0))) np.alltrue(m.stroke_rgba == np.array((0.0, 0.0, 0.0, 1.0))) m.set_color(BLACK) - assert m.color.hex == "#000" + assert m.color.to_hex() == "#000000" np.alltrue(m.fill_rgba == np.array((1.0, 1.0, 1.0, 1.0))) np.alltrue(m.stroke_rgba == np.array((1.0, 1.0, 1.0, 1.0))) m.set_color(PURE_GREEN, opacity=0.5) - assert m.color.hex == "#0f0" + assert m.color.to_hex() == "#00FF00" np.alltrue(m.fill_rgba == np.array((0.0, 1.0, 0.0, 0.5))) np.alltrue(m.stroke_rgba == np.array((0.0, 1.0, 0.0, 0.5))) def test_set_fill_color(using_opengl_renderer): m = OpenGLVMobject() - assert m.fill_color.hex == "#fff" + assert m.fill_color.to_hex() == "#FFFFFF" np.alltrue(m.fill_rgba == np.array((0.0, 1.0, 0.0, 0.5))) m.set_fill(BLACK) - assert m.fill_color.hex == "#000" + assert m.fill_color.to_hex() == "#000000" np.alltrue(m.fill_rgba == np.array((1.0, 1.0, 1.0, 1.0))) m.set_fill(PURE_GREEN, opacity=0.5) - assert m.fill_color.hex == "#0f0" + assert m.fill_color.to_hex() == "#00FF00" np.alltrue(m.fill_rgba == np.array((0.0, 1.0, 0.0, 0.5))) def test_set_stroke_color(using_opengl_renderer): m = OpenGLVMobject() - assert m.stroke_color.hex == "#fff" + assert m.stroke_color.to_hex() == "#FFFFFF" np.alltrue(m.stroke_rgba == np.array((0.0, 1.0, 0.0, 0.5))) m.set_stroke(BLACK) - assert m.stroke_color.hex == "#000" + assert m.stroke_color.to_hex() == "#000000" np.alltrue(m.stroke_rgba == np.array((1.0, 1.0, 1.0, 1.0))) m.set_stroke(PURE_GREEN, opacity=0.5) - assert m.stroke_color.hex == "#0f0" + assert m.stroke_color.to_hex() == "#00FF00" np.alltrue(m.stroke_rgba == np.array((0.0, 1.0, 0.0, 0.5))) def test_set_fill(using_opengl_renderer): m = OpenGLMobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" m.set_color(BLACK) - assert m.color.hex == "#000" + assert m.color.to_hex() == "#000000" m = OpenGLVMobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" m.set_color(BLACK) - assert m.color.hex == "#000" + assert m.color.to_hex() == "#000000" def test_set_color_handles_lists_of_strs(using_opengl_renderer): m = OpenGLVMobject() - assert m.color.hex == "#fff" + assert m.color.to_hex() == "#FFFFFF" m.set_color([BLACK, BLUE, GREEN]) - assert m.get_colors()[0] == Color(BLACK) - assert m.get_colors()[1] == Color(BLUE) - assert m.get_colors()[2] == Color(GREEN) + assert m.get_colors()[0] == BLACK + assert m.get_colors()[1] == BLUE + assert m.get_colors()[2] == GREEN - assert m.get_fill_colors()[0] == Color(BLACK) - assert m.get_fill_colors()[1] == Color(BLUE) - assert m.get_fill_colors()[2] == Color(GREEN) + assert m.get_fill_colors()[0] == BLACK + assert m.get_fill_colors()[1] == BLUE + assert m.get_fill_colors()[2] == GREEN - assert m.get_stroke_colors()[0] == Color(BLACK) - assert m.get_stroke_colors()[1] == Color(BLUE) - assert m.get_stroke_colors()[2] == Color(GREEN) + assert m.get_stroke_colors()[0] == BLACK + assert m.get_stroke_colors()[1] == BLUE + assert m.get_stroke_colors()[2] == GREEN def test_set_color_handles_lists_of_color_objects(using_opengl_renderer): m = OpenGLVMobject() - assert m.color.hex == "#fff" - m.set_color([Color(PURE_BLUE), Color(PURE_GREEN), Color(PURE_RED)]) - assert m.get_colors()[0].hex == "#00f" - assert m.get_colors()[1].hex == "#0f0" - assert m.get_colors()[2].hex == "#f00" + assert m.color.to_hex() == "#FFFFFF" + m.set_color([PURE_BLUE, PURE_GREEN, PURE_RED]) + assert m.get_colors()[0].to_hex() == "#0000FF" + assert m.get_colors()[1].to_hex() == "#00FF00" + assert m.get_colors()[2].to_hex() == "#FF0000" - assert m.get_fill_colors()[0].hex == "#00f" - assert m.get_fill_colors()[1].hex == "#0f0" - assert m.get_fill_colors()[2].hex == "#f00" + assert m.get_fill_colors()[0].to_hex() == "#0000FF" + assert m.get_fill_colors()[1].to_hex() == "#00FF00" + assert m.get_fill_colors()[2].to_hex() == "#FF0000" - assert m.get_stroke_colors()[0].hex == "#00f" - assert m.get_stroke_colors()[1].hex == "#0f0" - assert m.get_stroke_colors()[2].hex == "#f00" + assert m.get_stroke_colors()[0].to_hex() == "#0000FF" + assert m.get_stroke_colors()[1].to_hex() == "#00FF00" + assert m.get_stroke_colors()[2].to_hex() == "#FF0000" def test_set_fill_handles_lists_of_strs(using_opengl_renderer): m = OpenGLVMobject() - assert m.fill_color.hex == "#fff" - m.set_fill([BLACK, BLUE, GREEN]) - assert m.get_fill_colors()[0] == Color(BLACK) - assert m.get_fill_colors()[1] == Color(BLUE) - assert m.get_fill_colors()[2] == Color(GREEN) + assert m.fill_color.to_hex() == "#FFFFFF" + m.set_fill([BLACK.to_hex(), BLUE.to_hex(), GREEN.to_hex()]) + assert m.get_fill_colors()[0].to_hex() == BLACK.to_hex() + assert m.get_fill_colors()[1].to_hex() == BLUE.to_hex() + assert m.get_fill_colors()[2].to_hex() == GREEN.to_hex() def test_set_fill_handles_lists_of_color_objects(using_opengl_renderer): m = OpenGLVMobject() - assert m.fill_color.hex == "#fff" - m.set_fill([Color(PURE_BLUE), Color(PURE_GREEN), Color(PURE_RED)]) - assert m.get_fill_colors()[0].hex == "#00f" - assert m.get_fill_colors()[1].hex == "#0f0" - assert m.get_fill_colors()[2].hex == "#f00" + assert m.fill_color.to_hex() == "#FFFFFF" + m.set_fill([PURE_BLUE, PURE_GREEN, PURE_RED]) + assert m.get_fill_colors()[0].to_hex() == "#0000FF" + assert m.get_fill_colors()[1].to_hex() == "#00FF00" + assert m.get_fill_colors()[2].to_hex() == "#FF0000" def test_set_stroke_handles_lists_of_strs(using_opengl_renderer): m = OpenGLVMobject() - assert m.stroke_color.hex == "#fff" - m.set_stroke([BLACK, BLUE, GREEN]) - assert m.get_stroke_colors()[0] == Color(BLACK) - assert m.get_stroke_colors()[1] == Color(BLUE) - assert m.get_stroke_colors()[2] == Color(GREEN) + assert m.stroke_color.to_hex() == "#FFFFFF" + m.set_stroke([BLACK.to_hex(), BLUE.to_hex(), GREEN.to_hex()]) + assert m.get_stroke_colors()[0].to_hex() == BLACK.to_hex() + assert m.get_stroke_colors()[1].to_hex() == BLUE.to_hex() + assert m.get_stroke_colors()[2].to_hex() == GREEN.to_hex() def test_set_stroke_handles_lists_of_color_objects(using_opengl_renderer): m = OpenGLVMobject() - assert m.stroke_color.hex == "#fff" - m.set_stroke([Color(PURE_BLUE), Color(PURE_GREEN), Color(PURE_RED)]) - assert m.get_stroke_colors()[0].hex == "#00f" - assert m.get_stroke_colors()[1].hex == "#0f0" - assert m.get_stroke_colors()[2].hex == "#f00" + assert m.stroke_color.to_hex() == "#FFFFFF" + m.set_stroke([PURE_BLUE, PURE_GREEN, PURE_RED]) + assert m.get_stroke_colors()[0].to_hex() == "#0000FF" + assert m.get_stroke_colors()[1].to_hex() == "#00FF00" + assert m.get_stroke_colors()[2].to_hex() == "#FF0000" diff --git a/tests/opengl/test_stroke_opengl.py b/tests/opengl/test_stroke_opengl.py index 7a18d5de27..d5eff1ac71 100644 --- a/tests/opengl/test_stroke_opengl.py +++ b/tests/opengl/test_stroke_opengl.py @@ -1,14 +1,12 @@ from __future__ import annotations -from colour import Color - import manim.utils.color as C from manim.mobject.opengl.opengl_vectorized_mobject import OpenGLVMobject def test_stroke_props_in_ctor(using_opengl_renderer): m = OpenGLVMobject(stroke_color=C.ORANGE, stroke_width=10) - assert m.stroke_color == Color(C.ORANGE) + assert m.stroke_color.to_hex() == C.ORANGE.to_hex() assert m.stroke_width == 10 @@ -17,4 +15,4 @@ def test_set_stroke(using_opengl_renderer): m.set_stroke(color=C.ORANGE, width=2, opacity=0.8) assert m.stroke_width == 2 assert m.stroke_opacity == 0.8 - assert m.stroke_color == Color(C.ORANGE) + assert m.stroke_color.to_hex() == C.ORANGE.to_hex() diff --git a/tests/opengl/test_svg_mobject_opengl.py b/tests/opengl/test_svg_mobject_opengl.py index c672055778..c1d11f42e5 100644 --- a/tests/opengl/test_svg_mobject_opengl.py +++ b/tests/opengl/test_svg_mobject_opengl.py @@ -1,7 +1,5 @@ from __future__ import annotations -from colour import Color - from manim import * from tests.helpers.path_utils import get_svg_resource @@ -9,21 +7,21 @@ def test_set_fill_color(using_opengl_renderer): expected_color = "#FF862F" svg = SVGMobject(get_svg_resource("heart.svg"), fill_color=expected_color) - assert svg.fill_color == Color(expected_color) + assert svg.fill_color.to_hex() == expected_color def test_set_stroke_color(using_opengl_renderer): expected_color = "#FFFDDD" svg = SVGMobject(get_svg_resource("heart.svg"), stroke_color=expected_color) - assert svg.stroke_color == Color(expected_color) + assert svg.stroke_color.to_hex() == expected_color def test_set_color_sets_fill_and_stroke(using_opengl_renderer): expected_color = "#EEE777" svg = SVGMobject(get_svg_resource("heart.svg"), color=expected_color) - assert svg.color == Color(expected_color) - assert svg.fill_color == Color(expected_color) - assert svg.stroke_color == Color(expected_color) + assert svg.color.to_hex() == expected_color + assert svg.fill_color.to_hex() == expected_color + assert svg.stroke_color.to_hex() == expected_color def test_set_fill_opacity(using_opengl_renderer): @@ -45,7 +43,7 @@ def test_fill_overrides_color(using_opengl_renderer): color="#123123", fill_color=expected_color, ) - assert svg.fill_color == Color(expected_color) + assert svg.fill_color.to_hex() == expected_color def test_stroke_overrides_color(using_opengl_renderer): @@ -55,4 +53,4 @@ def test_stroke_overrides_color(using_opengl_renderer): color="#334433", stroke_color=expected_color, ) - assert svg.stroke_color == Color(expected_color) + assert svg.stroke_color.to_hex() == expected_color diff --git a/tests/test_graphical_units/test_text.py b/tests/test_graphical_units/test_text.py index d7939fc0f9..21649222be 100644 --- a/tests/test_graphical_units/test_text.py +++ b/tests/test_graphical_units/test_text.py @@ -1,5 +1,4 @@ import pytest -from colour import Color from manim import RED, MarkupText, Text, VGroup, VMobject @@ -14,9 +13,11 @@ def test_Text2Color(): disable_ligatures=True, ) assert len(txt.submobjects) == 29 - assert all(char.fill_color == Color("#ffffff") for char in txt[:4]) # "this" - assert all(char.fill_color == Color(RED) for char in txt[-7:-1]) # "spaces" - assert txt[-1].fill_color == Color("#ffffff") # "!" + assert all(char.fill_color.to_hex() == "#FFFFFF" for char in txt[:4]) # "this" + assert all( + char.fill_color.to_hex() == RED.to_hex() for char in txt[-7:-1] + ) # "spaces" + assert txt[-1].fill_color.to_hex() == "#FFFFFF" # "!" def test_text_color_inheritance(): @@ -27,8 +28,8 @@ def test_text_color_inheritance(): text = Text("test_color_inheritance", font="Sans") markup_text = MarkupText("test_color_inheritance", font="Sans") - assert all(char.fill_color == Color(RED) for char in text) - assert all(char.fill_color == Color(RED) for char in markup_text) + assert all(char.fill_color.to_hex() == RED.to_hex() for char in text) + assert all(char.fill_color.to_hex() == RED.to_hex() for char in markup_text) # reset the default color so that future tests aren't affected by this change. VMobject.set_default()