Skip to content

Commit e44a7ae

Browse files
refactor: clarify room palette cache handling
1 parent f14db1a commit e44a7ae

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

roborock/map/map_parser.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,10 @@ def parse(
128128
):
129129
"""Assign non-conflicting room colors before the V1 image pass."""
130130
with self._palette_lock:
131-
self._room_palette.cached_room_colors.clear()
132-
self._room_palette.cached_room_colors.update(self._base_room_colors)
131+
# cached_room_colors is a read-only property, so reset its dict in place.
132+
cached_room_colors = self._room_palette.cached_room_colors
133+
cached_room_colors.clear()
134+
cached_room_colors.update(self._base_room_colors)
133135

134136
if self._recolor_rooms:
135137

@@ -140,8 +142,9 @@ def room_id(value: int) -> int | None:
140142

141143
room_colors = adjacency_aware_room_colors(raw_data, width, self._room_palette, room_id)
142144
for number, color in room_colors.items():
143-
self._room_palette.cached_room_colors[number] = color
144-
self._room_palette.cached_room_colors[str(number)] = color
145+
# ColorsPalette caches both forms for get_room_color(str | int).
146+
cached_room_colors[number] = color
147+
cached_room_colors[str(number)] = color
145148
return super().parse(raw_data, width, height, carpet_map, removed_map)
146149

147150

tests/map/test_map_parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def test_v1_parser_gives_adjacent_rooms_distinct_palette_colors() -> None:
3636

3737
assert image is not None
3838
assert image.getpixel((0, 0)) != image.getpixel((1, 0))
39+
assert palette.get_room_color(12) == palette.get_room_color("12")
3940

4041
isolated_image, _rooms = image_parser.parse(bytes([(12 << 3) | 7]), 1, 1, None)
4142

0 commit comments

Comments
 (0)