Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions manim/utils/color/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1021,6 +1021,9 @@ def __xor__(self, other: Self) -> Self:
self._internal_from_integer(self.to_integer() ^ int(other), 1.0)
)

def __hash__(self) -> str:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Python docs recommend that __hash__ returns an integer.
Can you just return hash(self.to_hex(with_alpha=True))?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't forget to change the return typehint to int.

return hash(self.to_hex(with_alpha=True))


RGBA = ManimColor
"""RGBA Color Space"""
Expand Down
7 changes: 6 additions & 1 deletion tests/module/utils/test_color.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import numpy as np

from manim import BLACK, Mobject, Scene, VMobject
from manim import BLACK, RED, WHITE, Mobject, Scene, VMobject


def test_import_color():
Expand Down Expand Up @@ -49,3 +49,8 @@ def test_set_color():
assert m.color.to_hex() == "#FFFFFF"
m.set_color(BLACK)
assert m.color.to_hex() == "#000000"


def test_color_hash():
assert hash(WHITE) == hash(WHITE.copy())
assert hash(WHITE) != hash(RED)
Loading