layrz-sdk 3.1.29__tar.gz → 3.1.31__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.

Potentially problematic release.


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

Files changed (110) hide show
  1. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/CHANGELOG.md +15 -0
  2. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/PKG-INFO +2 -2
  3. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/__init__.py +9 -0
  4. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/asset.py +1 -1
  5. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/asset_constants.py +2 -13
  6. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/payload.py +3 -11
  7. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/service.py +1 -1
  8. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/device.py +1 -1
  9. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/event.py +2 -3
  10. layrz_sdk-3.1.31/layrz_sdk/entities/function.py +29 -0
  11. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/telemetry/assetmessage.py +2 -10
  12. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/telemetry/devicemessage.py +1 -5
  13. layrz_sdk-3.1.31/layrz_sdk/entities/trigger.py +119 -0
  14. layrz_sdk-3.1.31/layrz_sdk/entities/trigger_kind.py +88 -0
  15. layrz_sdk-3.1.31/layrz_sdk/entities/weekday.py +29 -0
  16. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk.egg-info/PKG-INFO +2 -2
  17. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk.egg-info/SOURCES.txt +3 -0
  18. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/pyproject.toml +2 -1
  19. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/uv.lock +1 -1
  20. layrz_sdk-3.1.29/layrz_sdk/entities/trigger.py +0 -11
  21. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/.github/workflows/checks.yml +0 -0
  22. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/.github/workflows/deploy.yml +0 -0
  23. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/.gitignore +0 -0
  24. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/.vscode/extensions.json +0 -0
  25. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/CODE_OF_CONDUCT.md +0 -0
  26. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/CONTRIBUTING.md +0 -0
  27. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/LICENSE +0 -0
  28. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/README.md +0 -0
  29. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/__init__.py +0 -0
  30. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/backwards.py +0 -0
  31. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/constants.py +0 -0
  32. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/asset_operation_mode.py +0 -0
  33. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/__init__.py +0 -0
  34. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/request.py +0 -0
  35. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/response.py +0 -0
  36. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/result.py +0 -0
  37. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/broadcast/status.py +0 -0
  38. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/case.py +0 -0
  39. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/case_ignored_status.py +0 -0
  40. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/case_status.py +0 -0
  41. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/axis_config.py +0 -0
  42. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/bar_chart.py +0 -0
  43. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_alignment.py +0 -0
  44. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_color.py +0 -0
  45. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_configuration.py +0 -0
  46. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_data_serie.py +0 -0
  47. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_data_serie_type.py +0 -0
  48. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_data_type.py +0 -0
  49. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/chart_render_technology.py +0 -0
  50. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/column_chart.py +0 -0
  51. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/html_chart.py +0 -0
  52. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/line_chart.py +0 -0
  53. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/map_center_type.py +0 -0
  54. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/map_chart.py +0 -0
  55. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/map_point.py +0 -0
  56. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/number_chart.py +0 -0
  57. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/pie_chart.py +0 -0
  58. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/radar_chart.py +0 -0
  59. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/radial_bar_chart.py +0 -0
  60. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/scatter_chart.py +0 -0
  61. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/scatter_serie.py +0 -0
  62. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/scatter_serie_item.py +0 -0
  63. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/table_chart.py +0 -0
  64. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/table_header.py +0 -0
  65. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/table_row.py +0 -0
  66. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/timeline_chart.py +0 -0
  67. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/timeline_serie.py +0 -0
  68. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/charts/timeline_serie_item.py +0 -0
  69. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/checkpoint.py +0 -0
  70. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/comment.py +0 -0
  71. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/custom_field.py +0 -0
  72. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/custom_report_page.py +0 -0
  73. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/geofence.py +0 -0
  74. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/last_message.py +0 -0
  75. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/message.py +0 -0
  76. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/modbus/__init__.py +0 -0
  77. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/modbus/config.py +0 -0
  78. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/modbus/parameter.py +0 -0
  79. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/modbus/schema.py +0 -0
  80. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/modbus/status.py +0 -0
  81. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/modbus/wait.py +0 -0
  82. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/outbound_service.py +0 -0
  83. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/position.py +0 -0
  84. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/presence_type.py +0 -0
  85. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report.py +0 -0
  86. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_col.py +0 -0
  87. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_configuration.py +0 -0
  88. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_data_type.py +0 -0
  89. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_format.py +0 -0
  90. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_header.py +0 -0
  91. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_page.py +0 -0
  92. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/report_row.py +0 -0
  93. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/sensor.py +0 -0
  94. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/static_position.py +0 -0
  95. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/telemetry/__init__.py +0 -0
  96. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/text_alignment.py +0 -0
  97. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/user.py +0 -0
  98. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/entities/waypoint.py +0 -0
  99. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/helpers/__init__.py +0 -0
  100. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/helpers/color.py +0 -0
  101. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/lcl/__init__.py +0 -0
  102. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/lcl/core.py +0 -0
  103. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk/py.typed +0 -0
  104. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk.egg-info/dependency_links.txt +0 -0
  105. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk.egg-info/requires.txt +0 -0
  106. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/layrz_sdk.egg-info/top_level.txt +0 -0
  107. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/manual_deploy.py +0 -0
  108. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/setup.cfg +0 -0
  109. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/tests/__init__.py +0 -0
  110. {layrz_sdk-3.1.29 → layrz_sdk-3.1.31}/tests/test_lcl.py +0 -0
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.1.31
4
+
5
+ - Expanded `Trigger` model with new fields (Almost closed to the Dart equivalent on [`layrz_models`](https://pub.dev/packages/layrz_models))
6
+ - Added `Weekday` enum to represent days of the week
7
+ - Added `TriggerKind`, `TriggerGeofenceKind`, `TriggerCaseKind`, and `TriggerCommentPattern` enums to represent different trigger types and patterns
8
+ - Almost removed all aliases from the models
9
+
10
+ ## 3.1.30
11
+
12
+ - New `Function` model
13
+
14
+ ## 3.1.29
15
+
16
+ - Serialization changes
17
+
3
18
  ## 3.1.28
4
19
 
5
20
  - Added `BroadcastPayload` and `BroadcastService` models
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.29
3
+ Version: 3.1.31
4
4
  Summary: Layrz SDK for Python
5
5
  Author-email: "Golden M, Inc." <software@goldenm.com>
6
- Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
6
+ Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>, Miguel Zauzich <miguel@goldenm.com>
7
7
  License: MIT License
8
8
  Project-URL: Repository, https://github.com/goldenm-software/layrz-sdk
9
9
  Project-URL: Changelog, https://github.com/goldenm-software/layrz-sdk/blob/main/CHANGELOG.md
@@ -48,6 +48,7 @@ from .custom_field import CustomField
48
48
  from .custom_report_page import CustomReportPage
49
49
  from .device import Device
50
50
  from .event import Event
51
+ from .function import Function
51
52
  from .geofence import Geofence
52
53
  from .last_message import LastMessage
53
54
  from .message import Message
@@ -67,8 +68,10 @@ from .sensor import Sensor
67
68
  from .telemetry import AssetMessage, DeviceMessage
68
69
  from .text_alignment import TextAlignment
69
70
  from .trigger import Trigger
71
+ from .trigger_kind import TriggerCaseKind, TriggerCommentPattern, TriggerGeofenceKind, TriggerKind
70
72
  from .user import User
71
73
  from .waypoint import Waypoint
74
+ from .weekday import Weekday
72
75
 
73
76
  __all__ = [
74
77
  'Asset',
@@ -143,4 +146,10 @@ __all__ = [
143
146
  'AssetMessage',
144
147
  'DeviceMessage',
145
148
  'AssetConstants',
149
+ 'Function',
150
+ 'TriggerKind',
151
+ 'TriggerGeofenceKind',
152
+ 'TriggerCaseKind',
153
+ 'TriggerCommentPattern',
154
+ 'Weekday',
146
155
  ]
@@ -20,7 +20,7 @@ from .static_position import StaticPosition
20
20
  class Asset(BaseModel):
21
21
  """Asset entity definition"""
22
22
 
23
- pk: int = Field(description='Defines the primary key of the asset', serialization_alias='id')
23
+ pk: int = Field(description='Defines the primary key of the asset')
24
24
  name: str = Field(description='Defines the name of the asset')
25
25
  vin: str | None = Field(
26
26
  default=None,
@@ -14,20 +14,9 @@ class AssetConstants(BaseModel):
14
14
  },
15
15
  }
16
16
 
17
- distance_traveled: float = Field(
18
- default=0.0,
19
- description='Total distance traveled by the asset in meters',
20
- alias='distanceTraveled',
21
- )
22
-
17
+ distance_traveled: float = Field(default=0.0, description='Total distance traveled by the asset in meters')
18
+ primary_device: str = Field(default='N/a', description='Primary device associated with the asset')
23
19
  elapsed_time: timedelta = Field(
24
20
  default=timedelta(seconds=0),
25
21
  description='Total elapsed time for the asset in seconds',
26
- alias='elapsedTime',
27
- )
28
-
29
- primary_device: str = Field(
30
- default='N/a',
31
- description='Primary device associated with the asset',
32
- alias='primaryDevice',
33
22
  )
@@ -24,16 +24,9 @@ class BroadcastPayload(BaseModel):
24
24
  }
25
25
 
26
26
  asset: Asset = Field(..., description='Asset object')
27
- primary_device: Device | None = Field(
28
- default=None,
29
- description='Primary device object',
30
- serialization_alias='primaryDevice',
31
- )
32
- trigger: Trigger | None = Field(
33
- default=None,
34
- description='Trigger object, if available',
35
- )
36
- message_id: int | str = Field(..., description='Message ID', serialization_alias='message.id')
27
+ primary_device: Device | None = Field(default=None, description='Primary device object')
28
+ trigger: Trigger | None = Field(default=None, description='Trigger object, if available')
29
+ message_id: int | str = Field(..., description='Message ID')
37
30
  service: BroadcastService | None = Field(default=None, description='Broadcast service object')
38
31
  position: dict[str, Any] = Field(default_factory=dict, description='Position data, if available')
39
32
  sensors: dict[str, Any] = Field(default_factory=dict, description='Sensors data, if available')
@@ -41,5 +34,4 @@ class BroadcastPayload(BaseModel):
41
34
  received_at: datetime = Field(
42
35
  default_factory=lambda: datetime.now(UTC),
43
36
  description='Broadcast payload received date',
44
- serialization_alias='receivedAt',
45
37
  )
@@ -8,6 +8,6 @@ from pydantic import BaseModel, Field
8
8
  class BroadcastService(BaseModel):
9
9
  """Broadcast Service object"""
10
10
 
11
- pk: int = Field(..., description='Service ID', serialization_alias='id')
11
+ pk: int = Field(..., description='Service ID')
12
12
  name: str = Field(..., description='Service name')
13
13
  credentials: dict[str, Any] = Field(default_factory=dict, description='Service credentials')
@@ -8,7 +8,7 @@ from .modbus import ModbusConfig
8
8
  class Device(BaseModel):
9
9
  """Device entity"""
10
10
 
11
- pk: int = Field(description='Defines the primary key of the device', serialization_alias='id')
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
14
  protocol_id: int | None = Field(
@@ -1,7 +1,6 @@
1
1
  """Event entity"""
2
2
 
3
3
  from datetime import datetime
4
- from typing import Optional
5
4
 
6
5
  from pydantic import BaseModel, Field
7
6
 
@@ -19,5 +18,5 @@ class Event(BaseModel):
19
18
  asset_id: int = Field(description='Asset ID')
20
19
  message: Message = Field(description='Message')
21
20
  activated_at: datetime = Field(description='Event activation date')
22
- geofence: Optional[Geofence] = Field(default=None, description='Geofence object')
23
- presence_type: Optional[PresenceType] = Field(default=None, description='Presence type object')
21
+ geofence: Geofence | None = Field(default=None, description='Geofence object')
22
+ presence_type: PresenceType | None = Field(default=None, description='Presence type object')
@@ -0,0 +1,29 @@
1
+ """Geofence entity"""
2
+
3
+ from datetime import timedelta
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from pydantic import BaseModel, Field, constr
7
+
8
+ from .asset import Asset
9
+
10
+
11
+ class Function(BaseModel):
12
+ """Function entity"""
13
+
14
+ pk: int = Field(description='Defines the primary key of the Function')
15
+ name: str = Field(description='Name of the function')
16
+
17
+ maximum_time: Optional[timedelta] = None # DurationField → timedelta
18
+ minutes_delta: Optional[timedelta] = None
19
+
20
+ external_identifiers: List[constr(max_length=255)] = Field(default_factory=list) # type: ignore
21
+
22
+ credentials: Dict[str, Any] = Field(default_factory=dict)
23
+
24
+ # Many-to-manys ➜ list of nested DTOs
25
+ assets: List[Asset] = Field(default_factory=list)
26
+
27
+ # Foreign keys – normally expose only the FK id to keep the payload small.
28
+ owner_id: Optional[int] = None
29
+ algorithm_id: int
@@ -36,16 +36,8 @@ class AssetMessage(BaseModel):
36
36
  }
37
37
  }
38
38
 
39
- pk: int | None = Field(
40
- default=None,
41
- description='Message ID',
42
- alias='id',
43
- )
44
-
45
- asset_id: int = Field(
46
- ...,
47
- description='Asset ID',
48
- )
39
+ pk: int | None = Field(default=None, description='Message ID')
40
+ asset_id: int = Field(..., description='Asset ID')
49
41
 
50
42
  position: dict[str, float | int] = Field(
51
43
  default_factory=dict,
@@ -24,11 +24,7 @@ from layrz_sdk.entities.device import Device
24
24
  class DeviceMessage(BaseModel):
25
25
  """Device message model"""
26
26
 
27
- pk: int | None = Field(
28
- default=None,
29
- description='Device message ID',
30
- alias='id',
31
- )
27
+ pk: int | None = Field(default=None, description='Device message ID')
32
28
 
33
29
  ident: str = Field(
34
30
  ...,
@@ -0,0 +1,119 @@
1
+ """Trigger entity"""
2
+
3
+ from datetime import datetime, time, timedelta
4
+ from typing import Any
5
+
6
+ from pydantic import BaseModel, Field
7
+
8
+ from .trigger_kind import TriggerCaseKind, TriggerCommentPattern, TriggerGeofenceKind, TriggerKind
9
+ from .weekday import Weekday
10
+
11
+
12
+ class Trigger(BaseModel):
13
+ """Trigger entity"""
14
+
15
+ pk: int = Field(description='Defines the primary key of the trigger')
16
+ name: str = Field(description='Defines the name of the trigger')
17
+ code: str = Field(description='Defines the code of the trigger')
18
+
19
+ cooldown_time: timedelta = Field(
20
+ default_factory=lambda: timedelta(seconds=0),
21
+ description='Defines the cooldown time of the trigger',
22
+ )
23
+
24
+ type_: TriggerKind | None = Field(
25
+ default=None,
26
+ description='Defines the kind of the trigger',
27
+ alias='type',
28
+ )
29
+
30
+ presence_type: TriggerGeofenceKind | None = Field(
31
+ default=None,
32
+ description='Defines the geofence kind of the trigger',
33
+ )
34
+
35
+ case_type: TriggerCaseKind | None = Field(
36
+ default=None,
37
+ description='Defines the case kind of the trigger',
38
+ )
39
+
40
+ case_comment_pattern: TriggerCommentPattern | None = Field(
41
+ default=None,
42
+ description='Defines the comment pattern of the trigger',
43
+ )
44
+
45
+ case_comment_value: str | None = Field(
46
+ default=None,
47
+ description='Defines the comment pattern value of the trigger',
48
+ )
49
+
50
+ exact_hour: time | None = Field(
51
+ default=None,
52
+ description='Defines the exact hour of the trigger',
53
+ )
54
+ crontab_format: str | None = Field(
55
+ default=None,
56
+ description='Defines the crontab format of the trigger',
57
+ )
58
+
59
+ weekdays: list[Weekday] = Field(
60
+ default_factory=list,
61
+ description='Defines the weekdays of the trigger',
62
+ )
63
+
64
+ is_plain_crontab: bool = Field(
65
+ default=False,
66
+ description='Defines if the trigger is a plain crontab',
67
+ )
68
+
69
+ timezone_id: int | None = Field(
70
+ default=None,
71
+ description='Defines the timezone ID of the trigger',
72
+ )
73
+
74
+ parameters: list[str] = Field(
75
+ default_factory=list,
76
+ description='Defines the parameters of the trigger',
77
+ )
78
+
79
+ manual_action_fields: list[dict[str, Any]] = Field(
80
+ default_factory=list,
81
+ description='Defines the fields for manual action in the trigger',
82
+ )
83
+
84
+ formula: str | None = Field(
85
+ default=None,
86
+ description='Defines the formula of the trigger, this formula is only LCL (Layrz Computation Language) compatible',
87
+ )
88
+
89
+ script: str | None = Field(
90
+ default=None,
91
+ description='Defines the script of the trigger, depending of the trigger kidn, this script can be in Python, '
92
+ + 'Javascript, Lua, Dart or Golang. (Or any other language supported by the SDK)',
93
+ )
94
+
95
+ is_legacy: bool = Field(
96
+ default=False,
97
+ description='Defines if the trigger is legacy, normally when a version of the trigger is not compatible '
98
+ + 'with the current version of the SDK',
99
+ )
100
+
101
+ priority: int = Field(
102
+ default=0,
103
+ description='Defines the priority of the trigger',
104
+ )
105
+
106
+ color: str | None = Field(
107
+ default='#2196F3',
108
+ description='Defines the color of the trigger',
109
+ )
110
+
111
+ sequence: int = Field(
112
+ default=0,
113
+ description='Defines the sequence of the trigger',
114
+ )
115
+
116
+ care_protocol_id: int | None = Field(
117
+ default=None,
118
+ description='Defines the care protocol ID of the trigger',
119
+ )
@@ -0,0 +1,88 @@
1
+ """Asset Operation Mode"""
2
+
3
+ import sys
4
+ from enum import Enum
5
+
6
+ if sys.version_info >= (3, 11):
7
+ from typing import Self
8
+ else:
9
+ from typing_extensions import Self
10
+
11
+
12
+ class TriggerKind(str, Enum):
13
+ """
14
+ Trigger Kind definition
15
+ """
16
+
17
+ PRESENCE_IN_GEOFENCE = 'PRESENCEINGEOFENCE'
18
+ EXACT_TIME = 'EXACTTIME'
19
+ FORMULA = 'FORMULA'
20
+ AUTHENTICATION = 'AUTHENTICATION'
21
+ PYTHON_SCRIPT = 'PYTHONSCRIPT'
22
+ CASES_CHANGES = 'CASES_CHANGES'
23
+ BHS_SPEEDING = 'BHS_SPEEDING'
24
+ BHS_PRESENCE = 'BHS_PRESENCE'
25
+ MANUAL_ACTION = 'MANUAL_ACTION'
26
+
27
+ def __str__(self: Self) -> str:
28
+ """Readable property"""
29
+ return self.name
30
+
31
+ def __repr__(self: Self) -> str:
32
+ """Readable property"""
33
+ return f'TriggerKind.{self.name}'
34
+
35
+
36
+ class TriggerGeofenceKind(str, Enum):
37
+ """
38
+ Geofence Kind definition
39
+ """
40
+
41
+ ENTRANCE = 'ENTRANCE'
42
+ EXIT = 'EXIT'
43
+ BOTH = 'BOTH'
44
+
45
+ def __str__(self: Self) -> str:
46
+ """Readable property"""
47
+ return self.name
48
+
49
+ def __repr__(self: Self) -> str:
50
+ """Readable property"""
51
+ return f'GeofenceKind.{self.name}'
52
+
53
+
54
+ class TriggerCaseKind(str, Enum):
55
+ """
56
+ Case Kind definition
57
+ """
58
+
59
+ ON_FOLLOW = 'ON_FOLLOW'
60
+ ON_CLOSE = 'ON_CLOSE'
61
+ ON_DISMISS = 'ON_DISMISS'
62
+ ON_COMMENT_PATTERN = 'ON_COMMENT_PATTERN'
63
+
64
+ def __str__(self: Self) -> str:
65
+ """Readable property"""
66
+ return self.name
67
+
68
+ def __repr__(self: Self) -> str:
69
+ """Readable property"""
70
+ return f'TriggerCaseKind.{self.name}'
71
+
72
+
73
+ class TriggerCommentPattern(str, Enum):
74
+ """
75
+ Comment Pattern definition
76
+ """
77
+
78
+ STARTS_WITH = 'STARTS_WITH'
79
+ ENDS_WITH = 'ENDS_WITH'
80
+ CONTAINS = 'CONTAINS'
81
+
82
+ def __str__(self: Self) -> str:
83
+ """Readable property"""
84
+ return self.name
85
+
86
+ def __repr__(self: Self) -> str:
87
+ """Readable property"""
88
+ return f'TriggerCommentPattern.{self.name}'
@@ -0,0 +1,29 @@
1
+ import sys
2
+ from enum import Enum
3
+
4
+ if sys.version_info >= (3, 11):
5
+ from typing import Self
6
+ else:
7
+ from typing_extensions import Self
8
+
9
+
10
+ class Weekday(str, Enum):
11
+ """
12
+ Weekday definition
13
+ """
14
+
15
+ MONDAY = 'MON'
16
+ TUESDAY = 'TUE'
17
+ WEDNESDAY = 'WED'
18
+ THURSDAY = 'THU'
19
+ FRIDAY = 'FRI'
20
+ SATURDAY = 'SAT'
21
+ SUNDAY = 'SUN'
22
+
23
+ def __str__(self: Self) -> str:
24
+ """Readable property"""
25
+ return self.name
26
+
27
+ def __repr__(self: Self) -> str:
28
+ """Readable property"""
29
+ return f'Weekday.{self.name}'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.29
3
+ Version: 3.1.31
4
4
  Summary: Layrz SDK for Python
5
5
  Author-email: "Golden M, Inc." <software@goldenm.com>
6
- Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
6
+ Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>, Miguel Zauzich <miguel@goldenm.com>
7
7
  License: MIT License
8
8
  Project-URL: Repository, https://github.com/goldenm-software/layrz-sdk
9
9
  Project-URL: Changelog, https://github.com/goldenm-software/layrz-sdk/blob/main/CHANGELOG.md
@@ -32,6 +32,7 @@ layrz_sdk/entities/custom_field.py
32
32
  layrz_sdk/entities/custom_report_page.py
33
33
  layrz_sdk/entities/device.py
34
34
  layrz_sdk/entities/event.py
35
+ layrz_sdk/entities/function.py
35
36
  layrz_sdk/entities/geofence.py
36
37
  layrz_sdk/entities/last_message.py
37
38
  layrz_sdk/entities/message.py
@@ -50,8 +51,10 @@ layrz_sdk/entities/sensor.py
50
51
  layrz_sdk/entities/static_position.py
51
52
  layrz_sdk/entities/text_alignment.py
52
53
  layrz_sdk/entities/trigger.py
54
+ layrz_sdk/entities/trigger_kind.py
53
55
  layrz_sdk/entities/user.py
54
56
  layrz_sdk/entities/waypoint.py
57
+ layrz_sdk/entities/weekday.py
55
58
  layrz_sdk/entities/broadcast/__init__.py
56
59
  layrz_sdk/entities/broadcast/payload.py
57
60
  layrz_sdk/entities/broadcast/request.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "layrz-sdk"
3
- version = "3.1.29"
3
+ version = "3.1.31"
4
4
  description = "Layrz SDK for Python"
5
5
  authors = [
6
6
  {name = "Golden M, Inc.", email = "software@goldenm.com"}
@@ -11,6 +11,7 @@ maintainers = [
11
11
  {name = "Kenny Mochizuki", email = "kenny@goldenm.com"},
12
12
  {name = "Luis Reyes", email = "lreyes@goldenm.com"},
13
13
  {name = "Kasen Li", email = "kli@goldenm.com"},
14
+ {name = "Miguel Zauzich", email = "miguel@goldenm.com"},
14
15
  ]
15
16
 
16
17
  readme = "README.md"
@@ -343,7 +343,7 @@ wheels = [
343
343
 
344
344
  [[package]]
345
345
  name = "layrz-sdk"
346
- version = "3.1.29"
346
+ version = "3.1.31"
347
347
  source = { editable = "." }
348
348
  dependencies = [
349
349
  { name = "geopy" },
@@ -1,11 +0,0 @@
1
- """Trigger entity"""
2
-
3
- from pydantic import BaseModel, Field
4
-
5
-
6
- class Trigger(BaseModel):
7
- """Trigger entity"""
8
-
9
- pk: int = Field(description='Defines the primary key of the trigger', serialization_alias='id')
10
- name: str = Field(description='Defines the name of the trigger')
11
- code: str = Field(description='Defines the code of the trigger')
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes