layrz-sdk 3.1.17__py3-none-any.whl → 3.1.19__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.

@@ -11,7 +11,10 @@ class Device(BaseModel):
11
11
  pk: int = Field(description='Defines the primary key of the device')
12
12
  name: str = Field(description='Defines the name of the device')
13
13
  ident: str = Field(description='Defines the identifier of the device')
14
- protocol_id: int | None = Field(description='Defines the protocol ID of the device')
14
+ protocol_id: int | None = Field(
15
+ description='Defines the protocol ID of the device',
16
+ default=None,
17
+ )
15
18
  protocol: str = Field(description='Defines the protocol of the device')
16
19
  is_primary: bool = Field(default=False, description='Defines if the device is the primary device')
17
20
 
@@ -15,7 +15,7 @@ else:
15
15
  from typing_extensions import Self
16
16
 
17
17
  from geopy.distance import geodesic
18
- from pydantic import BaseModel, Field
18
+ from pydantic import BaseModel, Field, field_serializer
19
19
  from shapely.geometry import MultiPoint
20
20
 
21
21
  from layrz_sdk.constants import UTC
@@ -28,6 +28,14 @@ from layrz_sdk.entities.telemetry.devicemessage import DeviceMessage
28
28
  class AssetMessage(BaseModel):
29
29
  """Asset message model"""
30
30
 
31
+ model_config = {
32
+ 'json_encoders': {
33
+ datetime: lambda v: v.timestamp(),
34
+ timedelta: lambda v: v.total_seconds(),
35
+ Position: lambda v: json.loads(v.model_dump_json(exclude_none=True)),
36
+ }
37
+ }
38
+
31
39
  pk: int | None = Field(
32
40
  default=None,
33
41
  description='Message ID',
@@ -69,11 +77,21 @@ class AssetMessage(BaseModel):
69
77
  description='Timestamp when the message was received',
70
78
  )
71
79
 
80
+ @field_serializer('received_at')
81
+ def serialize_received_at(self: Self, value: datetime) -> float:
82
+ """Serialize received_at to a timestamp."""
83
+ return value.timestamp()
84
+
72
85
  elapsed_time: timedelta = Field(
73
86
  default_factory=lambda: timedelta(seconds=0),
74
87
  description='Elapsed time since the last message',
75
88
  )
76
89
 
90
+ @field_serializer('elapsed_time')
91
+ def serialize_elapsed_time(self: Self, value: timedelta) -> float:
92
+ """Serialize elapsed_time to total seconds."""
93
+ return value.total_seconds()
94
+
77
95
  @property
78
96
  def datum_gis(self: Self) -> int:
79
97
  """Get the GIS datum of the message."""
@@ -15,7 +15,7 @@ if sys.version_info >= (3, 11):
15
15
  else:
16
16
  from typing_extensions import Self
17
17
 
18
- from pydantic import BaseModel, Field
18
+ from pydantic import BaseModel, Field, field_serializer
19
19
 
20
20
  from layrz_sdk.constants import REJECTED_KEYS, UTC
21
21
  from layrz_sdk.entities.device import Device
@@ -59,6 +59,11 @@ class DeviceMessage(BaseModel):
59
59
  description='Timestamp when the message was received',
60
60
  )
61
61
 
62
+ @field_serializer('received_at')
63
+ def serialize_received_at(self: Self, value: datetime) -> float:
64
+ """Serialize received_at to a timestamp."""
65
+ return value.timestamp()
66
+
62
67
  @property
63
68
  def datum_gis(self: Self) -> int:
64
69
  """Get the GIS datum of the message."""
@@ -105,7 +110,7 @@ class DeviceMessage(BaseModel):
105
110
  return cls(
106
111
  ident=device.ident,
107
112
  device_id=device.pk,
108
- protocol_id=device.protocol_id,
113
+ protocol_id=device.protocol_id, # type: ignore
109
114
  position=position,
110
115
  payload=payload,
111
116
  received_at=received_at,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.17
3
+ Version: 3.1.19
4
4
  Summary: Layrz SDK for Python
5
5
  Author-email: "Golden M, Inc." <software@goldenm.com>
6
6
  Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
@@ -15,7 +15,7 @@ layrz_sdk/entities/checkpoint.py,sha256=Y_LduHugWdn3sLvXmiqjaIXnGzoJ5aN_qLCzD9YX
15
15
  layrz_sdk/entities/comment.py,sha256=1YSWVxXlpoicVVHv3mvkNlfUTfcOMxZYfb4YmwrxchY,414
16
16
  layrz_sdk/entities/custom_field.py,sha256=jurONu01Ph-Qq8uuxdzxoQ6i7BqbZe64vO2ESvQDSFg,277
17
17
  layrz_sdk/entities/custom_report_page.py,sha256=eqtoFOgip0z4_cMql1tHgaR4JiVEYlfbzd9ZJ7ZLyrM,1231
18
- layrz_sdk/entities/device.py,sha256=Caexewu9KHrSholJQBUqNvue6RE7prH1I_11RApJmJ0,705
18
+ layrz_sdk/entities/device.py,sha256=rqBJf0L-cIfxE6ONwGHVx_L0StyQL-ycvSVzug4iIwQ,732
19
19
  layrz_sdk/entities/event.py,sha256=cFjFRrKQp4TykPkrCoXy5PYPykcAzrcHtAhRl_V4hdk,754
20
20
  layrz_sdk/entities/geofence.py,sha256=jPuG5OCknkM37Q4h5haOXdV4OpVyd4gX77dFjd-FaP4,326
21
21
  layrz_sdk/entities/last_message.py,sha256=QNgF0xCQ6uLFDMmKQCjSRhGS1Bq7akw5pv6ZIiFlwfY,268
@@ -72,14 +72,14 @@ layrz_sdk/entities/modbus/schema.py,sha256=gyL0VyGSXTZWzsamjLUGoW5cqhn7MfXisCbH_
72
72
  layrz_sdk/entities/modbus/status.py,sha256=VnsWAR7C2dz7Y6_dPCnvS3CBaMaP7odZSu6db2KaTlE,611
73
73
  layrz_sdk/entities/modbus/wait.py,sha256=n3p_miYfGde1sxo4OznqWJAOb_WKblOnwFRib3RY_uM,4031
74
74
  layrz_sdk/entities/telemetry/__init__.py,sha256=hfyekj-4_iB-aEbw43DXtSuMLBtMR1uoL8vvkRa_nJg,149
75
- layrz_sdk/entities/telemetry/assetmessage.py,sha256=dChtlZfjlXxB_Ci4nHzaJuZEcoq2LaAI73Vtty3tMxc,4672
76
- layrz_sdk/entities/telemetry/devicemessage.py,sha256=IHJD-euFFqtex9cPIdS2Qb-_VB2-U78fjCpGJipGYqo,3128
75
+ layrz_sdk/entities/telemetry/assetmessage.py,sha256=ltnJCizwHSyTck0vrbRaf1BfQqlh_8Ckrtc3sGz3psk,5276
76
+ layrz_sdk/entities/telemetry/devicemessage.py,sha256=gR32FnEUbjONcGgAJMEsuum3-LJRcHtOTtQNikkkxYs,3342
77
77
  layrz_sdk/helpers/__init__.py,sha256=5iW3z2m3jrYhvTfxX-p-QTkR9X9oTKfEsbtVOg9jFFY,115
78
78
  layrz_sdk/helpers/color.py,sha256=dlpMafbM-4Wd9D9hMbbnZJf4ALkpie_ZmBR2Vz_YCmM,1203
79
79
  layrz_sdk/lcl/__init__.py,sha256=U967AWANkL3u_YVxMNAYlh8jkZ6hqHfStacz7yz6sOA,89
80
80
  layrz_sdk/lcl/core.py,sha256=T80A3hL7SeqRNSfl5SrPAgwIEf-enoAVv9ldwJNzqsA,24786
81
- layrz_sdk-3.1.17.dist-info/licenses/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
82
- layrz_sdk-3.1.17.dist-info/METADATA,sha256=poT32kQHJ7rvE2ElvR-pgOTjsYDplM8I_68YOsHgs7k,2053
83
- layrz_sdk-3.1.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
84
- layrz_sdk-3.1.17.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
85
- layrz_sdk-3.1.17.dist-info/RECORD,,
81
+ layrz_sdk-3.1.19.dist-info/licenses/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
82
+ layrz_sdk-3.1.19.dist-info/METADATA,sha256=iz4O8QKcvED_U-mdYhimh0m2zdxFdzBnLOvMtqXi1gI,2053
83
+ layrz_sdk-3.1.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
84
+ layrz_sdk-3.1.19.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
85
+ layrz_sdk-3.1.19.dist-info/RECORD,,