layrz-sdk 3.1.47__tar.gz → 3.1.49__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 (131) hide show
  1. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/PKG-INFO +1 -1
  2. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/__init__.py +7 -2
  3. layrz_sdk-3.1.49/layrz_sdk/entities/ats_exit_history.py +58 -0
  4. layrz_sdk-3.1.49/layrz_sdk/entities/ats_possible_exit.py +78 -0
  5. layrz_sdk-3.1.49/layrz_sdk/entities/destination_phone.py +29 -0
  6. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/operation.py +3 -2
  7. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/operation_payload.py +4 -23
  8. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/sensor.py +4 -0
  9. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk.egg-info/PKG-INFO +1 -1
  10. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk.egg-info/SOURCES.txt +3 -10
  11. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/pyproject.toml +1 -1
  12. layrz_sdk-3.1.47/.github/workflows/checks.yml +0 -50
  13. layrz_sdk-3.1.47/.github/workflows/deploy.yml +0 -32
  14. layrz_sdk-3.1.47/.gitignore +0 -19
  15. layrz_sdk-3.1.47/.vscode/extensions.json +0 -9
  16. layrz_sdk-3.1.47/CHANGELOG.md +0 -522
  17. layrz_sdk-3.1.47/CODE_OF_CONDUCT.md +0 -29
  18. layrz_sdk-3.1.47/CONTRIBUTING.md +0 -26
  19. layrz_sdk-3.1.47/manual_deploy.py +0 -14
  20. layrz_sdk-3.1.47/tests/__init__.py +0 -0
  21. layrz_sdk-3.1.47/uv.lock +0 -1059
  22. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/LICENSE +0 -0
  23. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/README.md +0 -0
  24. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/__init__.py +0 -0
  25. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/backwards.py +0 -0
  26. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/constants.py +0 -0
  27. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/action.py +0 -0
  28. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/action_geofence_ownership.py +0 -0
  29. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/action_kind.py +0 -0
  30. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/action_subkind.py +0 -0
  31. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/asset.py +0 -0
  32. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/asset_constants.py +0 -0
  33. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/asset_contact.py +0 -0
  34. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/asset_operation_mode.py +0 -0
  35. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/ats_reception.py +0 -0
  36. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/__init__.py +0 -0
  37. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/payload.py +0 -0
  38. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/request.py +0 -0
  39. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/response.py +0 -0
  40. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/result.py +0 -0
  41. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/service.py +0 -0
  42. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/broadcast/status.py +0 -0
  43. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/case.py +0 -0
  44. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/case_ignored_status.py +0 -0
  45. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/case_status.py +0 -0
  46. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/axis_config.py +0 -0
  47. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/bar_chart.py +0 -0
  48. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_alignment.py +0 -0
  49. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_color.py +0 -0
  50. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_configuration.py +0 -0
  51. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_data_serie.py +0 -0
  52. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_data_serie_type.py +0 -0
  53. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_data_type.py +0 -0
  54. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/chart_render_technology.py +0 -0
  55. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/column_chart.py +0 -0
  56. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/html_chart.py +0 -0
  57. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/line_chart.py +0 -0
  58. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/map_center_type.py +0 -0
  59. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/map_chart.py +0 -0
  60. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/map_point.py +0 -0
  61. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/number_chart.py +0 -0
  62. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/pie_chart.py +0 -0
  63. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/radar_chart.py +0 -0
  64. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/radial_bar_chart.py +0 -0
  65. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/scatter_chart.py +0 -0
  66. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/scatter_serie.py +0 -0
  67. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/scatter_serie_item.py +0 -0
  68. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/table_chart.py +0 -0
  69. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/table_header.py +0 -0
  70. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/table_row.py +0 -0
  71. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/timeline_chart.py +0 -0
  72. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/timeline_serie.py +0 -0
  73. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/charts/timeline_serie_item.py +0 -0
  74. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/checkpoint.py +0 -0
  75. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/command_series_ticket.py +0 -0
  76. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/comment.py +0 -0
  77. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/custom_field.py +0 -0
  78. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/custom_report_page.py +0 -0
  79. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/device.py +0 -0
  80. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/event.py +0 -0
  81. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/exchange_service.py +0 -0
  82. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/function.py +0 -0
  83. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/geofence.py +0 -0
  84. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/geofence_category.py +0 -0
  85. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/last_message.py +0 -0
  86. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/message.py +0 -0
  87. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/modbus/__init__.py +0 -0
  88. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/modbus/config.py +0 -0
  89. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/modbus/parameter.py +0 -0
  90. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/modbus/schema.py +0 -0
  91. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/modbus/status.py +0 -0
  92. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/modbus/wait.py +0 -0
  93. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/notification_type.py +0 -0
  94. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/operation_case_payload.py +0 -0
  95. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/operation_type.py +0 -0
  96. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/outbound_service.py +0 -0
  97. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/platform.py +0 -0
  98. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/position.py +0 -0
  99. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/presence_type.py +0 -0
  100. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/preset.py +0 -0
  101. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report.py +0 -0
  102. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_col.py +0 -0
  103. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_configuration.py +0 -0
  104. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_data_type.py +0 -0
  105. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_format.py +0 -0
  106. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_header.py +0 -0
  107. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_page.py +0 -0
  108. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/report_row.py +0 -0
  109. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/request_type.py +0 -0
  110. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/sound_effect.py +0 -0
  111. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/static_position.py +0 -0
  112. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/telemetry/__init__.py +0 -0
  113. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/telemetry/assetmessage.py +0 -0
  114. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/telemetry/devicemessage.py +0 -0
  115. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/text_alignment.py +0 -0
  116. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/timezone.py +0 -0
  117. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/trigger.py +0 -0
  118. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/trigger_kind.py +0 -0
  119. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/user.py +0 -0
  120. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/waypoint.py +0 -0
  121. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/entities/weekday.py +0 -0
  122. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/helpers/__init__.py +0 -0
  123. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/helpers/color.py +0 -0
  124. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/lcl/__init__.py +0 -0
  125. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/lcl/core.py +0 -0
  126. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk/py.typed +0 -0
  127. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk.egg-info/dependency_links.txt +0 -0
  128. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk.egg-info/requires.txt +0 -0
  129. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/layrz_sdk.egg-info/top_level.txt +0 -0
  130. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/setup.cfg +0 -0
  131. {layrz_sdk-3.1.47 → layrz_sdk-3.1.49}/tests/test_lcl.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.47
3
+ Version: 3.1.49
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>, Miguel Zauzich <miguel@goldenm.com>, Angel Prieto <aprieto@goldenm.com>
@@ -8,6 +8,8 @@ from .asset import Asset
8
8
  from .asset_constants import AssetConstants
9
9
  from .asset_contact import AssetContact
10
10
  from .asset_operation_mode import AssetOperationMode
11
+ from .ats_exit_history import AtsExitExecutionHistory
12
+ from .ats_possible_exit import AtsPossibleExit
11
13
  from .ats_reception import AtsReception
12
14
  from .broadcast import (
13
15
  BroadcastPayload,
@@ -53,6 +55,7 @@ from .command_series_ticket import CommandSeriesTicket, CommandSeriesTicketStatu
53
55
  from .comment import Comment
54
56
  from .custom_field import CustomField
55
57
  from .custom_report_page import CustomReportPage
58
+ from .destination_phone import DestinationPhone
56
59
  from .device import Device
57
60
  from .event import Event
58
61
  from .exchange_service import ExchangeService
@@ -65,7 +68,7 @@ from .modbus import ModbusConfig, ModbusParameter, ModbusSchema, ModbusStatus, M
65
68
  from .notification_type import TwilioNotificationType
66
69
  from .operation import Operation
67
70
  from .operation_case_payload import OperationCaseCommentPayload, OperationCasePayload
68
- from .operation_payload import OperationPayload, TwilioHostPhone
71
+ from .operation_payload import OperationPayload
69
72
  from .operation_type import OperationType
70
73
  from .outbound_service import OutboundService
71
74
  from .platform import Platform
@@ -102,6 +105,8 @@ __all__ = [
102
105
  'AssetContact',
103
106
  'AssetMessage',
104
107
  'AssetOperationMode',
108
+ 'AtsExitExecutionHistory',
109
+ 'AtsPossibleExit',
105
110
  'AtsReception',
106
111
  'AxisConfig',
107
112
  'BarChart',
@@ -190,7 +195,7 @@ __all__ = [
190
195
  'TriggerCommentPattern',
191
196
  'TriggerGeofenceKind',
192
197
  'TriggerKind',
193
- 'TwilioHostPhone',
198
+ 'DestinationPhone',
194
199
  'TwilioNotificationType',
195
200
  'User',
196
201
  'Waypoint',
@@ -0,0 +1,58 @@
1
+ """Exit Execution History"""
2
+
3
+ from datetime import datetime
4
+ from typing import Literal, Optional
5
+
6
+ from pydantic import (
7
+ BaseModel,
8
+ ConfigDict,
9
+ Field,
10
+ PositiveInt, # useful if you later want a non-nullable positive int
11
+ conint,
12
+ )
13
+
14
+
15
+ class AtsExitExecutionHistory(BaseModel):
16
+ pk: int = Field(description='Primary key of the Exit Execution History')
17
+
18
+ from_asset: int = Field(
19
+ description='ID of the asset from which the exit is initiated',
20
+ )
21
+ to_asset: int = Field(
22
+ description='ID of the asset to which the exit is directed',
23
+ )
24
+
25
+ status: Literal['PENDING', 'FAILED', 'SUCCESS'] = Field(
26
+ default='PENDING',
27
+ )
28
+ from_app: Optional[Literal['ATSWEB', 'ATSMOBILE', 'NFC']] = Field(
29
+ default=None,
30
+ description='Application from which the exit was initiated',
31
+ )
32
+
33
+ error_response: Optional[str] = Field(
34
+ default=None,
35
+ description='Error response received during the exit process',
36
+ )
37
+
38
+ generated_by: int = Field(
39
+ description='ID of the user or system that initiated the exit',
40
+ )
41
+
42
+ queue_id: Optional[int] = Field(
43
+ default=None,
44
+ description='ID of the queue associated with the exit',
45
+ )
46
+ to_asset_mileage: Optional[float] = Field(
47
+ default=None,
48
+ description='Mileage of the asset to which the exit is directed',
49
+ )
50
+
51
+ created_at: datetime = Field(
52
+ description='Timestamp when the exit was created',
53
+ )
54
+ updated_at: datetime = Field(
55
+ description='Timestamp when the exit was last updated',
56
+ )
57
+
58
+ model_config = ConfigDict(from_attributes=True)
@@ -0,0 +1,78 @@
1
+ """Ats Exit entity"""
2
+
3
+ from datetime import datetime
4
+ from typing import Optional
5
+
6
+ from pydantic import (
7
+ BaseModel,
8
+ ConfigDict,
9
+ Field,
10
+ PositiveInt, # useful if you later want a non-nullable positive int
11
+ conint,
12
+ )
13
+
14
+
15
+ class AtsPossibleExit(BaseModel):
16
+ """AtsPossibleExit entity"""
17
+
18
+ pk: int = Field(description='Defines the primary key of the AtsPossibleExit')
19
+
20
+ # Nullable “positive big integer” identifier
21
+ identifier: Optional[conint(ge=0)] = Field( # type: ignore
22
+ default=None,
23
+ description='Nullable positive big integer identifier for the exit',
24
+ )
25
+
26
+ # Volume / gauge snapshots
27
+ initial_tank_volume: Optional[float] = Field(
28
+ default=None,
29
+ description='Initial tank volume in liters',
30
+ )
31
+ initial_fluxometer: Optional[float] = Field(
32
+ default=None,
33
+ description='Initial fluxometer reading in liters',
34
+ )
35
+ total_liters: float = Field(
36
+ default=0.0,
37
+ description='Total liters of fuel involved in the exit',
38
+ )
39
+
40
+ # Status flags
41
+ is_ready: bool = Field(
42
+ default=False,
43
+ description='Indicates if the exit is ready',
44
+ )
45
+ in_progress: bool = Field(
46
+ default=False,
47
+ description='Indicates if the exit is in progress',
48
+ )
49
+ is_validated: bool = Field(
50
+ default=False,
51
+ description='Indicates if the exit is validated',
52
+ )
53
+
54
+ # Lifecycle timestamps
55
+ start_at: datetime = Field(
56
+ default_factory=datetime.now,
57
+ description='Timestamp when the exit started',
58
+ )
59
+ end_at: Optional[datetime] = Field(
60
+ default=None,
61
+ description='Timestamp when the exit ended',
62
+ )
63
+
64
+ # Derived / bookkeeping flags
65
+ is_recalculated: bool = Field(
66
+ default=False,
67
+ description='Indicates if the exit has been recalculated',
68
+ )
69
+ is_blackbox: Optional[bool] = Field(
70
+ default=False,
71
+ description='Indicates if the exit is a blackbox',
72
+ )
73
+ false_positive_count: Optional[int] = Field(
74
+ default=0,
75
+ description='Count of false positives detected',
76
+ )
77
+
78
+ model_config = ConfigDict(from_attributes=True) # enables .from_orm()
@@ -0,0 +1,29 @@
1
+ import sys
2
+
3
+ if sys.version_info >= (3, 11):
4
+ from typing import Self
5
+ else:
6
+ from typing_extensions import Self
7
+
8
+ from pydantic import BaseModel, Field
9
+
10
+
11
+ class DestinationPhone(BaseModel):
12
+ """Destination Phone"""
13
+
14
+ phone_number: str = Field(
15
+ ...,
16
+ description='Defines the phone number for Twilio notifications',
17
+ alias='phoneNumber',
18
+ )
19
+
20
+ country_code: str = Field(
21
+ ...,
22
+ description='Defines the country code for the phone number',
23
+ alias='countryCode',
24
+ )
25
+
26
+ @property
27
+ def formatted_phone_number(self: Self) -> str:
28
+ """Returns the formatted phone number"""
29
+ return f'{self.country_code}{self.phone_number}'
@@ -5,6 +5,7 @@ from typing import Any
5
5
 
6
6
  from pydantic import BaseModel, Field
7
7
 
8
+ from .destination_phone import DestinationPhone
8
9
  from .notification_type import TwilioNotificationType
9
10
  from .operation_type import OperationType
10
11
  from .platform import Platform
@@ -99,7 +100,7 @@ class Operation(BaseModel):
99
100
  alias='notification_type',
100
101
  )
101
102
 
102
- host_phone: str | None = Field(
103
+ host_phone: DestinationPhone | None = Field(
103
104
  default=None,
104
105
  description='Defines the host phone number for Twilio notifications',
105
106
  )
@@ -114,7 +115,7 @@ class Operation(BaseModel):
114
115
  description='Defines the token for the operation, used for authentication in some cases',
115
116
  )
116
117
 
117
- destination_phones: list[str] = Field(
118
+ destination_phones: list[DestinationPhone] = Field(
118
119
  default_factory=list,
119
120
  description='Defines the destination phone numbers for Twilio notifications',
120
121
  )
@@ -4,6 +4,8 @@ import sys
4
4
  from datetime import datetime, timedelta
5
5
  from typing import Any
6
6
 
7
+ from layrz_sdk.entities.destination_phone import DestinationPhone
8
+
7
9
  if sys.version_info >= (3, 11):
8
10
  from typing import Self
9
11
  else:
@@ -24,27 +26,6 @@ from layrz_sdk.entities.sound_effect import SoundEffect
24
26
  from layrz_sdk.entities.trigger import Trigger
25
27
 
26
28
 
27
- class TwilioHostPhone(BaseModel):
28
- """Twilio Host Phone entity"""
29
-
30
- phone_number: str = Field(
31
- ...,
32
- description='Defines the phone number for Twilio notifications',
33
- alias='phoneNumber',
34
- )
35
-
36
- country_code: str = Field(
37
- ...,
38
- description='Defines the country code for the phone number',
39
- alias='countryCode',
40
- )
41
-
42
- @property
43
- def formatted_phone_number(self: Self) -> str:
44
- """Returns the formatted phone number"""
45
- return f'{self.country_code}{self.phone_number}'
46
-
47
-
48
29
  class OperationPayload(BaseModel):
49
30
  """Operation Payload entity"""
50
31
 
@@ -225,12 +206,12 @@ class OperationPayload(BaseModel):
225
206
  )
226
207
 
227
208
  ## For usage of Twilio operations
228
- destinations: list[TwilioHostPhone] = Field(
209
+ destinations: list[DestinationPhone] = Field(
229
210
  default_factory=list,
230
211
  description='Defines the destination phone numbers for Twilio notifications',
231
212
  )
232
213
 
233
- twilio_host_phone: TwilioHostPhone | None = Field(
214
+ twilio_host_phone: DestinationPhone | None = Field(
234
215
  default=None,
235
216
  description='Defines the host phone number for Twilio notifications',
236
217
  alias='hostPhone',
@@ -9,3 +9,7 @@ class Sensor(BaseModel):
9
9
  pk: int = Field(description='Defines the primary key of the sensor')
10
10
  name: str = Field(description='Defines the name of the sensor')
11
11
  slug: str = Field(description='Defines the slug of the sensor')
12
+ formula: str = Field(
13
+ default='',
14
+ description='Defines the formula of the sensor, used for calculations',
15
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.47
3
+ Version: 3.1.49
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>, Miguel Zauzich <miguel@goldenm.com>, Angel Prieto <aprieto@goldenm.com>
@@ -1,15 +1,6 @@
1
- .gitignore
2
- CHANGELOG.md
3
- CODE_OF_CONDUCT.md
4
- CONTRIBUTING.md
5
1
  LICENSE
6
2
  README.md
7
- manual_deploy.py
8
3
  pyproject.toml
9
- uv.lock
10
- .github/workflows/checks.yml
11
- .github/workflows/deploy.yml
12
- .vscode/extensions.json
13
4
  layrz_sdk/__init__.py
14
5
  layrz_sdk/backwards.py
15
6
  layrz_sdk/constants.py
@@ -28,6 +19,8 @@ layrz_sdk/entities/asset.py
28
19
  layrz_sdk/entities/asset_constants.py
29
20
  layrz_sdk/entities/asset_contact.py
30
21
  layrz_sdk/entities/asset_operation_mode.py
22
+ layrz_sdk/entities/ats_exit_history.py
23
+ layrz_sdk/entities/ats_possible_exit.py
31
24
  layrz_sdk/entities/ats_reception.py
32
25
  layrz_sdk/entities/case.py
33
26
  layrz_sdk/entities/case_ignored_status.py
@@ -37,6 +30,7 @@ layrz_sdk/entities/command_series_ticket.py
37
30
  layrz_sdk/entities/comment.py
38
31
  layrz_sdk/entities/custom_field.py
39
32
  layrz_sdk/entities/custom_report_page.py
33
+ layrz_sdk/entities/destination_phone.py
40
34
  layrz_sdk/entities/device.py
41
35
  layrz_sdk/entities/event.py
42
36
  layrz_sdk/entities/exchange_service.py
@@ -122,5 +116,4 @@ layrz_sdk/helpers/__init__.py
122
116
  layrz_sdk/helpers/color.py
123
117
  layrz_sdk/lcl/__init__.py
124
118
  layrz_sdk/lcl/core.py
125
- tests/__init__.py
126
119
  tests/test_lcl.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "layrz-sdk"
3
- version = "3.1.47"
3
+ version = "3.1.49"
4
4
  description = "Layrz SDK for Python"
5
5
  authors = [
6
6
  {name = "Golden M, Inc.", email = "software@goldenm.com"}
@@ -1,50 +0,0 @@
1
- name: "Checks before merging"
2
-
3
- on:
4
- pull_request:
5
- types:
6
- - opened
7
- - synchronize
8
- - reopened
9
- branches:
10
- - '*'
11
-
12
- jobs:
13
- lint:
14
- runs-on: ubuntu-latest
15
- container:
16
- image: ghcr.io/goldenm-software/python-builder:uv-3.13-x86
17
- options: --user root
18
- credentials:
19
- username: ${{ github.repository_owner }}
20
- password: ${{ secrets.GITHUB_TOKEN }}
21
-
22
- steps:
23
- - name: Checkout
24
- uses: actions/checkout@v4
25
-
26
- - name: Lint
27
- run: |
28
- uv sync --only-group dev
29
- uv run ruff check
30
- uv run mypy .
31
-
32
- uniitest:
33
- needs: lint
34
- runs-on: ubuntu-latest
35
- container:
36
- image: ghcr.io/goldenm-software/python-builder:uv-3.13-x86
37
- options: --user root
38
- credentials:
39
- username: ${{ github.repository_owner }}
40
- password: ${{ secrets.GITHUB_TOKEN }}
41
-
42
- steps:
43
- - name: Checkout
44
- uses: actions/checkout@v4
45
-
46
- - name: Install dependencies
47
- run: |
48
- uv sync
49
- uv run pytest ./tests/
50
-
@@ -1,32 +0,0 @@
1
- name: "Deploy package"
2
-
3
- on:
4
- push:
5
- branches: [ "main" ]
6
-
7
- jobs:
8
- build:
9
- permissions:
10
- id-token: write
11
- contents: read
12
- repository-projects: read
13
- packages: read
14
-
15
- runs-on: ubuntu-latest
16
- container:
17
- image: ghcr.io/goldenm-software/python-builder:uv-3.13-x86
18
- options: --user root
19
- credentials:
20
- username: ${{ github.repository_owner }}
21
- password: ${{ secrets.GITHUB_TOKEN }}
22
-
23
- steps:
24
- - name: Checkout
25
- uses: actions/checkout@v4
26
-
27
- - name: Build and upload
28
- run: |
29
- uv venv --python 3.13
30
- uv sync --only-group dev
31
- uv run python -m build
32
- uv run python -m twine upload -u ${{ secrets.LAYRZ_PYPI_USERNAME }} -p ${{ secrets.LAYRZ_PYPI_PASSWORD }} dist/*
@@ -1,19 +0,0 @@
1
- /dist
2
- /build
3
- /*.egg-info
4
- /.pypirc
5
- /test.py
6
- /**/*.pyc
7
- /.venv
8
- /site
9
-
10
- /**/*/__pycache__
11
-
12
- tests.py
13
- *.xlsx
14
-
15
- .ruff_cache
16
- .mypy_cache
17
- .pytest_cache
18
-
19
- .env
@@ -1,9 +0,0 @@
1
- {
2
- "recommendations": [
3
- "ms-python.python",
4
- "charliermarsh.ruff",
5
- "ms-python.vscode-pylance",
6
- "njpwerner.autodocstring",
7
- "oderwat.indent-rainbow"
8
- ]
9
- }