layrz-sdk 3.1.10__py3-none-any.whl → 3.1.12__py3-none-any.whl

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.

Potentially problematic release.


This version of layrz-sdk might be problematic. Click here for more details.

Files changed (33) hide show
  1. layrz_sdk/entities/asset.py +6 -6
  2. layrz_sdk/entities/case.py +4 -3
  3. layrz_sdk/entities/charts/bar_chart.py +7 -7
  4. layrz_sdk/entities/charts/chart_color.py +2 -2
  5. layrz_sdk/entities/charts/column_chart.py +8 -8
  6. layrz_sdk/entities/charts/html_chart.py +3 -3
  7. layrz_sdk/entities/charts/line_chart.py +7 -7
  8. layrz_sdk/entities/charts/map_chart.py +9 -9
  9. layrz_sdk/entities/charts/number_chart.py +3 -3
  10. layrz_sdk/entities/charts/pie_chart.py +7 -7
  11. layrz_sdk/entities/charts/radar_chart.py +5 -5
  12. layrz_sdk/entities/charts/radial_bar_chart.py +4 -4
  13. layrz_sdk/entities/charts/scatter_chart.py +7 -7
  14. layrz_sdk/entities/charts/scatter_serie.py +1 -3
  15. layrz_sdk/entities/charts/table_chart.py +6 -6
  16. layrz_sdk/entities/charts/timeline_chart.py +5 -5
  17. layrz_sdk/entities/charts/timeline_serie.py +1 -3
  18. layrz_sdk/entities/checkpoint.py +1 -2
  19. layrz_sdk/entities/custom_report_page.py +1 -1
  20. layrz_sdk/entities/message.py +2 -2
  21. layrz_sdk/entities/position.py +18 -3
  22. layrz_sdk/entities/report.py +6 -6
  23. layrz_sdk/entities/report_page.py +2 -4
  24. layrz_sdk/entities/report_row.py +2 -2
  25. layrz_sdk/helpers/__init__.py +1 -4
  26. layrz_sdk/helpers/color.py +2 -2
  27. layrz_sdk/lcl/__init__.py +1 -3
  28. layrz_sdk/lcl/core.py +59 -59
  29. {layrz_sdk-3.1.10.dist-info → layrz_sdk-3.1.12.dist-info}/METADATA +1 -1
  30. {layrz_sdk-3.1.10.dist-info → layrz_sdk-3.1.12.dist-info}/RECORD +33 -33
  31. {layrz_sdk-3.1.10.dist-info → layrz_sdk-3.1.12.dist-info}/WHEEL +0 -0
  32. {layrz_sdk-3.1.10.dist-info → layrz_sdk-3.1.12.dist-info}/licenses/LICENSE +0 -0
  33. {layrz_sdk-3.1.10.dist-info → layrz_sdk-3.1.12.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,3 @@
1
- from typing import List
2
-
3
1
  from pydantic import BaseModel, Field
4
2
 
5
3
  from .timeline_serie_item import TimelineSerieItem
@@ -8,5 +6,5 @@ from .timeline_serie_item import TimelineSerieItem
8
6
  class TimelineSerie(BaseModel):
9
7
  """Chart Data Serie for Timeline charts"""
10
8
 
11
- data: List[TimelineSerieItem] = Field(description='List of data points', default_factory=list)
9
+ data: list[TimelineSerieItem] = Field(description='List of data points', default_factory=list)
12
10
  label: str = Field(description='Label of the serie')
@@ -1,7 +1,6 @@
1
1
  """Checkpoints entitites"""
2
2
 
3
3
  from datetime import datetime
4
- from typing import List
5
4
 
6
5
  from pydantic import BaseModel, Field
7
6
 
@@ -13,6 +12,6 @@ class Checkpoint(BaseModel):
13
12
 
14
13
  pk: int = Field(description='Checkpoint ID')
15
14
  asset_id: int = Field(description='Asset ID')
16
- waypoints: List[Waypoint] = Field(description='List of waypoints', default_factory=list)
15
+ waypoints: list[Waypoint] = Field(description='List of waypoints', default_factory=list)
17
16
  start_at: datetime = Field(description='Checkpoint start date')
18
17
  end_at: datetime = Field(description='Checkpoint end date')
@@ -1,4 +1,4 @@
1
- from typing import Callable
1
+ from collections.abc import Callable
2
2
 
3
3
  from pydantic import BaseModel, Field
4
4
  from xlsxwriter.worksheet import Worksheet
@@ -1,7 +1,7 @@
1
1
  """Message entity"""
2
2
 
3
3
  from datetime import datetime
4
- from typing import Any, Dict, TypeAlias
4
+ from typing import Any, TypeAlias
5
5
 
6
6
  from pydantic import BaseModel, Field
7
7
 
@@ -9,7 +9,7 @@ from layrz_sdk.constants import UTC
9
9
 
10
10
  from .position import Position
11
11
 
12
- PayloadType: TypeAlias = Dict[str, Any]
12
+ PayloadType: TypeAlias = dict[str, Any]
13
13
 
14
14
 
15
15
  class Message(BaseModel):
@@ -31,9 +31,12 @@ class Position(BaseModel):
31
31
  if value is None:
32
32
  return None
33
33
 
34
- if not isinstance(value, float):
34
+ if not isinstance(value, (int, float)):
35
35
  return None
36
36
 
37
+ if isinstance(value, int):
38
+ value = float(value)
39
+
37
40
  if -90 <= value <= 90:
38
41
  return value
39
42
 
@@ -45,9 +48,12 @@ class Position(BaseModel):
45
48
  if value is None:
46
49
  return None
47
50
 
48
- if not isinstance(value, float):
51
+ if not isinstance(value, (int, float)):
49
52
  return None
50
53
 
54
+ if isinstance(value, int):
55
+ value = float(value)
56
+
51
57
  if -180 <= value <= 180:
52
58
  return value
53
59
 
@@ -70,9 +76,12 @@ class Position(BaseModel):
70
76
  if value is None:
71
77
  return None
72
78
 
73
- if not isinstance(value, float):
79
+ if not isinstance(value, (int, float)):
74
80
  return None
75
81
 
82
+ if isinstance(value, int):
83
+ value = float(value)
84
+
76
85
  return value
77
86
 
78
87
  @field_validator('speed', mode='before')
@@ -84,6 +93,9 @@ class Position(BaseModel):
84
93
  if not isinstance(value, (float, int)):
85
94
  return None
86
95
 
96
+ if isinstance(value, int):
97
+ value = float(value)
98
+
87
99
  return abs(value)
88
100
 
89
101
  @field_validator('direction', mode='before')
@@ -95,6 +107,9 @@ class Position(BaseModel):
95
107
  if not isinstance(value, (float, int)):
96
108
  return None
97
109
 
110
+ if isinstance(value, int):
111
+ value = float(value)
112
+
98
113
  if 0 <= value <= 360:
99
114
  return value
100
115
 
@@ -6,7 +6,7 @@ import sys
6
6
  import time
7
7
  import warnings
8
8
  from pathlib import Path
9
- from typing import Any, Dict, List, Optional
9
+ from typing import Any, Optional
10
10
 
11
11
  import xlsxwriter
12
12
  from pydantic import BaseModel, Field, field_validator
@@ -30,7 +30,7 @@ class Report(BaseModel):
30
30
  """Report definition"""
31
31
 
32
32
  name: str = Field(description='Name of the report. Length should be less than 60 characters')
33
- pages: List[ReportPage | CustomReportPage] = Field(
33
+ pages: list[ReportPage | CustomReportPage] = Field(
34
34
  description='List of report pages',
35
35
  default_factory=list,
36
36
  )
@@ -58,7 +58,7 @@ class Report(BaseModel):
58
58
  export_format: Optional[ReportFormat] = None,
59
59
  password: Optional[str] = None,
60
60
  msoffice_crypt_path: str = '/opt/msoffice/bin/msoffice-crypt.exe',
61
- ) -> Path | Dict[str, Any]:
61
+ ) -> Path | dict[str, Any]:
62
62
  """
63
63
  Export report to file
64
64
 
@@ -93,11 +93,11 @@ class Report(BaseModel):
93
93
  else:
94
94
  raise AttributeError(f'Unsupported export format: {self.export_format}')
95
95
 
96
- def export_as_json(self: Self) -> Dict[str, Any]:
96
+ def export_as_json(self: Self) -> dict[str, Any]:
97
97
  """Returns the report as a JSON dict"""
98
98
  return self._export_json()
99
99
 
100
- def _export_json(self: Self) -> Dict[str, Any]:
100
+ def _export_json(self: Self) -> dict[str, Any]:
101
101
  """Returns a JSON dict of the report"""
102
102
  json_pages = []
103
103
  for page in self.pages:
@@ -176,7 +176,7 @@ class Report(BaseModel):
176
176
 
177
177
  book = xlsxwriter.Workbook(full_path)
178
178
 
179
- pages_name: List[str] = []
179
+ pages_name: list[str] = []
180
180
 
181
181
  for page in self.pages:
182
182
  sheet_name = page.name[0:20]
@@ -1,7 +1,5 @@
1
1
  """Report page"""
2
2
 
3
- from typing import List
4
-
5
3
  from pydantic import BaseModel, Field
6
4
 
7
5
  from .report_header import ReportHeader
@@ -12,6 +10,6 @@ class ReportPage(BaseModel):
12
10
  """Report page definition"""
13
11
 
14
12
  name: str = Field(description='Name of the page. Length should be less than 60 characters')
15
- headers: List[ReportHeader] = Field(description='List of report headers', default_factory=list)
16
- rows: List[ReportRow] = Field(description='List of report rows', default_factory=list)
13
+ headers: list[ReportHeader] = Field(description='List of report headers', default_factory=list)
14
+ rows: list[ReportRow] = Field(description='List of report rows', default_factory=list)
17
15
  freeze_header: bool = Field(description='Freeze header', default=False)
@@ -1,7 +1,7 @@
1
1
  """Report row"""
2
2
 
3
3
  import warnings
4
- from typing import Any, List, Optional
4
+ from typing import Any, Optional
5
5
 
6
6
  from pydantic import BaseModel, Field, field_validator
7
7
 
@@ -11,7 +11,7 @@ from .report_col import ReportCol
11
11
  class ReportRow(BaseModel):
12
12
  """Report row definition"""
13
13
 
14
- content: List[ReportCol] = Field(description='List of report columns', default_factory=list)
14
+ content: list[ReportCol] = Field(description='List of report columns', default_factory=list)
15
15
  height: Optional[float] = Field(description='Row height', default=None)
16
16
  compact: bool = Field(description='Compact mode', default=False)
17
17
 
@@ -2,7 +2,4 @@
2
2
 
3
3
  from .color import convert_to_rgba, use_black
4
4
 
5
- __all__ = [
6
- 'convert_to_rgba',
7
- 'use_black',
8
- ]
5
+ __all__ = ['convert_to_rgba', 'use_black']
@@ -1,8 +1,8 @@
1
1
  """Color helpers"""
2
2
 
3
- from typing import Tuple, TypeAlias, cast
3
+ from typing import TypeAlias, cast
4
4
 
5
- Color: TypeAlias = Tuple[int, int, int, int]
5
+ Color: TypeAlias = tuple[int, int, int, int]
6
6
 
7
7
 
8
8
  def convert_to_rgba(hex_color: str) -> Color:
layrz_sdk/lcl/__init__.py CHANGED
@@ -2,6 +2,4 @@
2
2
 
3
3
  from .core import LclCore
4
4
 
5
- __all__ = [
6
- 'LclCore',
7
- ]
5
+ __all__ = ['LclCore']