valetudo-map-parser 0.1.9b24__tar.gz → 0.1.9b26__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/PKG-INFO +1 -1
  2. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/auto_crop.py +3 -3
  3. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/shared.py +5 -29
  4. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/types.py +32 -8
  5. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/hypfer_handler.py +6 -13
  6. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/rand25_handler.py +5 -13
  7. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/pyproject.toml +1 -1
  8. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/LICENSE +0 -0
  9. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/NOTICE.txt +0 -0
  10. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/README.md +0 -0
  11. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/__init__.py +0 -0
  12. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/__init__.py +0 -0
  13. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/colors.py +0 -0
  14. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/drawable.py +0 -0
  15. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/rand25_parser.py +0 -0
  16. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/config/utils.py +0 -0
  17. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/hypfer_draw.py +0 -0
  18. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/map_data.py +0 -0
  19. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/py.typed +0 -0
  20. {valetudo_map_parser-0.1.9b24 → valetudo_map_parser-0.1.9b26}/SCR/valetudo_map_parser/reimg_draw.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: valetudo-map-parser
3
- Version: 0.1.9b24
3
+ Version: 0.1.9b26
4
4
  Summary: A Python library to parse Valetudo map data returning a PIL Image object.
5
5
  License: Apache-2.0
6
6
  Author: Sandro Cantarella
@@ -8,7 +8,7 @@ import logging
8
8
  import numpy as np
9
9
  from numpy import rot90
10
10
 
11
- from .types import Color, NumpyArray, TrimCropData
11
+ from .types import Color, NumpyArray, TrimCropData, TrimsData
12
12
 
13
13
 
14
14
  _LOGGER = logging.getLogger(__name__)
@@ -68,10 +68,10 @@ class AutoCrop:
68
68
  )
69
69
  return trimmed_width, trimmed_height
70
70
 
71
- async def _async_auto_crop_data(self, tdata=None): # , tdata=None
71
+ async def _async_auto_crop_data(self, tdata: TrimsData = None): # , tdata=None
72
72
  """Load the auto crop data from the Camera config."""
73
73
  if not self.imh.auto_crop:
74
- trims_data = TrimCropData.from_dict(dict(tdata)).to_list()
74
+ trims_data = TrimCropData.from_dict(dict(tdata.to_dict())).to_list()
75
75
  (
76
76
  self.imh.trim_left,
77
77
  self.imh.trim_up,
@@ -6,7 +6,7 @@ Version: v2024.12.0
6
6
 
7
7
  import asyncio
8
8
  import logging
9
- from typing import Dict, List
9
+ from typing import List
10
10
 
11
11
  from .types import (
12
12
  ATTR_CALIBRATION_POINTS,
@@ -104,22 +104,9 @@ class CameraShared:
104
104
  self.map_old_path = None # Old path data
105
105
  self.user_language = None # User language
106
106
  self.trim_crop_data = None
107
- self.trims: Dict[TrimsData, int] = {
108
- TrimsData.TRIM_LEFT: 0,
109
- TrimsData.TRIM_UP: 0,
110
- TrimsData.TRIM_RIGHT: 0,
111
- TrimsData.TRIM_DOWN: 0,
112
- }
107
+ self.trims = TrimsData.from_dict(DEFAULT_VALUES["trims_data"]) # Trims data
113
108
  self.skip_room_ids: List[str] = []
114
109
 
115
- def get_trims_dictionary(self):
116
- return {
117
- "trim_left": self.trims.get(TrimsData.TRIM_LEFT, 0),
118
- "trim_up": self.trims.get(TrimsData.TRIM_UP, 0),
119
- "trim_right": self.trims.get(TrimsData.TRIM_RIGHT, 0),
120
- "trim_down": self.trims.get(TrimsData.TRIM_DOWN, 0),
121
- }
122
-
123
110
  def update_user_colors(self, user_colors):
124
111
  """Update the user colors."""
125
112
  self.user_colors = user_colors
@@ -240,20 +227,9 @@ class CameraSharedManager:
240
227
  instance.enable_snapshots = device_info.get(
241
228
  CONF_SNAPSHOTS_ENABLE, DEFAULT_VALUES["enable_www_snapshots"]
242
229
  )
243
- instance.trims = {
244
- TrimsData.TRIM_LEFT: device_info.get(
245
- "trims_data", DEFAULT_VALUES["trims_data"]
246
- ).get("trim_left", 0),
247
- TrimsData.TRIM_UP: device_info.get(
248
- "trims_data", DEFAULT_VALUES["trims_data"]
249
- ).get("trim_up", 0),
250
- TrimsData.TRIM_RIGHT: device_info.get(
251
- "trims_data", DEFAULT_VALUES["trims_data"]
252
- ).get("trim_right", 0),
253
- TrimsData.TRIM_DOWN: device_info.get(
254
- "trims_data", DEFAULT_VALUES["trims_data"]
255
- ).get("trim_down", 0),
256
- }
230
+ instance.trims.from_dict(
231
+ device_info.get("trims_data", DEFAULT_VALUES["trims_data"])
232
+ )
257
233
 
258
234
  except TypeError as ex:
259
235
  _LOGGER.error("Shared data can't be initialized due to a TypeError! %s", ex)
@@ -6,8 +6,7 @@ Version 0.0.1
6
6
  import asyncio
7
7
  import json
8
8
  import logging
9
- from dataclasses import dataclass
10
- from enum import Enum
9
+ from dataclasses import dataclass, asdict
11
10
  from typing import Any, Dict, Tuple, Union
12
11
 
13
12
  import numpy as np
@@ -593,10 +592,35 @@ class CameraModes:
593
592
  CAMERA_ON = True
594
593
 
595
594
 
596
- class TrimsData(Enum):
597
- """Constants for the trims data."""
595
+ @dataclass
596
+ class TrimsData:
597
+ """Dataclass to store and manage trims data."""
598
+
599
+ trim_left: int = 0
600
+ trim_up: int = 0
601
+ trim_right: int = 0
602
+ trim_down: int = 0
603
+
604
+ @classmethod
605
+ def from_json(cls, json_data: str):
606
+ """Create a TrimsConfig instance from a JSON string."""
607
+ data = json.loads(json_data)
608
+ return cls(
609
+ trim_left=data.get("trim_left", 0),
610
+ trim_up=data.get("trim_up", 0),
611
+ trim_right=data.get("trim_right", 0),
612
+ trim_down=data.get("trim_down", 0),
613
+ )
598
614
 
599
- TRIM_LEFT = "trim_left"
600
- TRIM_UP = "trim_up"
601
- TRIM_RIGHT = "trim_right"
602
- TRIM_DOWN = "trim_down"
615
+ def to_json(self) -> str:
616
+ """Convert TrimsConfig instance to a JSON string."""
617
+ return json.dumps(asdict(self))
618
+
619
+ @classmethod
620
+ def from_dict(cls, data: dict):
621
+ """Initialize TrimData from a dictionary."""
622
+ return cls(**data)
623
+
624
+ def to_dict(self) -> dict:
625
+ """Convert TrimData to a dictionary."""
626
+ return asdict(self)
@@ -15,7 +15,7 @@ from PIL import Image
15
15
  from .config.auto_crop import AutoCrop
16
16
  from .config.drawable import Drawable
17
17
  from .config.shared import CameraShared
18
- from .config.types import COLORS, CalibrationPoints, Colors, RoomsProperties, TrimsData
18
+ from .config.types import COLORS, CalibrationPoints, Colors, RoomsProperties
19
19
  from .config.utils import BaseHandler, prepare_resize_params
20
20
  from .hypfer_draw import ImageDraw as ImDraw
21
21
  from .map_data import ImageData
@@ -42,18 +42,11 @@ class HypferMapImageHandler(BaseHandler):
42
42
  self.img_base_layer = None # numpy array store the map base layer.
43
43
  self.active_zones = None # vacuum active zones.
44
44
  self.svg_wait = False # SVG image creation wait.
45
- self.trim_up = self.shared.trims.get(
46
- TrimsData.TRIM_UP, 0
47
- ) # memory stored trims calculated once.
48
- self.trim_down = self.shared.trims.get(
49
- TrimsData.TRIM_DOWN, 0
50
- ) # memory stored trims calculated once.
51
- self.trim_left = self.shared.trims.get(
52
- TrimsData.TRIM_LEFT, 0
53
- ) # memory stored trims calculated once.
54
- self.trim_right = self.shared.trims.get(
55
- TrimsData.TRIM_RIGHT, 0
56
- ) # memory stored trims calculated once.
45
+ trim_data = self.shared.trims.to_dict() # trims data
46
+ self.trim_up = trim_data.get("trim_up", 0) # trim up
47
+ self.trim_down = trim_data.get("trim_down", 0) # trim down
48
+ self.trim_left = trim_data.get("trim_left", 0) # trim left
49
+ self.trim_right = trim_data.get("trim_right", 0) # trim right
57
50
  self.offset_top = self.shared.offset_top # offset top
58
51
  self.offset_bottom = self.shared.offset_down # offset bottom
59
52
  self.offset_left = self.shared.offset_left # offset left
@@ -23,7 +23,6 @@ from .config.types import (
23
23
  PilPNG,
24
24
  RobotPosition,
25
25
  RoomsProperties,
26
- TrimsData,
27
26
  )
28
27
  from .config.utils import BaseHandler, prepare_resize_params
29
28
  from .map_data import RandImageData
@@ -53,18 +52,11 @@ class ReImageHandler(BaseHandler):
53
52
  self.room_propriety = None # Room propriety data
54
53
  self.shared = camera_shared # Shared data
55
54
  self.active_zones = None # Active zones
56
- self.trim_up = self.shared.trims.get(
57
- TrimsData.TRIM_UP, 0
58
- ) # memory stored trims calculated once.
59
- self.trim_down = self.shared.trims.get(
60
- TrimsData.TRIM_DOWN, 0
61
- ) # memory stored trims calculated once.
62
- self.trim_left = self.shared.trims.get(
63
- TrimsData.TRIM_LEFT, 0
64
- ) # memory stored trims calculated once.
65
- self.trim_right = self.shared.trims.get(
66
- TrimsData.TRIM_RIGHT, 0
67
- ) # memory stored trims calculated once.
55
+ trim_data = self.shared.trims.to_dict() # trims data
56
+ self.trim_up = trim_data.get("trim_up", 0) # trim up
57
+ self.trim_down = trim_data.get("trim_down", 0) # trim down
58
+ self.trim_left = trim_data.get("trim_left", 0) # trim left
59
+ self.trim_right = trim_data.get("trim_right", 0) # trim right
68
60
  self.file_name = self.shared.file_name # File name
69
61
  self.offset_top = self.shared.offset_top # offset top
70
62
  self.offset_bottom = self.shared.offset_down # offset bottom
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "valetudo-map-parser"
3
- version = "0.1.9.b24"
3
+ version = "0.1.9.b26"
4
4
  description = "A Python library to parse Valetudo map data returning a PIL Image object."
5
5
  authors = ["Sandro Cantarella <gsca075@gmail.com>"]
6
6
  license = "Apache-2.0"