layrz-sdk 4.0.21__tar.gz → 4.0.23__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 (138) hide show
  1. layrz_sdk-4.0.23/.gitignore +18 -0
  2. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/.vscode/extensions.json +0 -1
  3. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/CHANGELOG.md +14 -0
  4. {layrz_sdk-4.0.21/layrz_sdk.egg-info → layrz_sdk-4.0.23}/PKG-INFO +1 -1
  5. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/case.py +11 -0
  6. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/case_ignored_status.py +1 -0
  7. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/comment.py +7 -1
  8. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/trigger.py +59 -12
  9. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23/layrz_sdk.egg-info}/PKG-INFO +1 -1
  10. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/manual_deploy.py +4 -0
  11. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/pyproject.toml +1 -1
  12. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/uv.lock +2 -2
  13. layrz_sdk-4.0.21/.gitignore +0 -19
  14. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/.github/workflows/checks.yml +0 -0
  15. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/.github/workflows/deploy.yml +0 -0
  16. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/CODE_OF_CONDUCT.md +0 -0
  17. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/CONTRIBUTING.md +0 -0
  18. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/LICENSE +0 -0
  19. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/README.md +0 -0
  20. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/__init__.py +0 -0
  21. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/constants.py +0 -0
  22. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/decorators/__init__.py +0 -0
  23. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/decorators/func_timing.py +0 -0
  24. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/__init__.py +0 -0
  25. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/action.py +0 -0
  26. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/action_geofence_ownership.py +0 -0
  27. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/action_kind.py +0 -0
  28. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/action_subkind.py +0 -0
  29. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/asset.py +0 -0
  30. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/asset_constants.py +0 -0
  31. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/asset_contact.py +0 -0
  32. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/asset_operation_mode.py +0 -0
  33. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_entry.py +0 -0
  34. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_exit_history.py +0 -0
  35. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_operation.py +0 -0
  36. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_possible_entry.py +0 -0
  37. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_possible_exit.py +0 -0
  38. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_purchaseorder.py +0 -0
  39. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/ats_reception.py +0 -0
  40. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/__init__.py +0 -0
  41. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/payload.py +0 -0
  42. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/request.py +0 -0
  43. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/response.py +0 -0
  44. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/result.py +0 -0
  45. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/service.py +0 -0
  46. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/broadcast/status.py +0 -0
  47. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/case_status.py +0 -0
  48. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/axis_config.py +0 -0
  49. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/bar_chart.py +0 -0
  50. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_alignment.py +0 -0
  51. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_color.py +0 -0
  52. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_configuration.py +0 -0
  53. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_data_serie.py +0 -0
  54. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_data_serie_type.py +0 -0
  55. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_data_type.py +0 -0
  56. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/chart_render_technology.py +0 -0
  57. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/column_chart.py +0 -0
  58. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/html_chart.py +0 -0
  59. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/line_chart.py +0 -0
  60. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/map_center_type.py +0 -0
  61. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/map_chart.py +0 -0
  62. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/map_point.py +0 -0
  63. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/number_chart.py +0 -0
  64. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/pie_chart.py +0 -0
  65. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/radar_chart.py +0 -0
  66. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/radial_bar_chart.py +0 -0
  67. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/scatter_chart.py +0 -0
  68. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/scatter_serie.py +0 -0
  69. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/scatter_serie_item.py +0 -0
  70. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/table_chart.py +0 -0
  71. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/table_header.py +0 -0
  72. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/table_row.py +0 -0
  73. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/timeline_chart.py +0 -0
  74. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/timeline_serie.py +0 -0
  75. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/charts/timeline_serie_item.py +0 -0
  76. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/checkpoint.py +0 -0
  77. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/command_series_ticket.py +0 -0
  78. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/custom_field.py +0 -0
  79. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/custom_report_page.py +0 -0
  80. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/destination_phone.py +0 -0
  81. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/device.py +0 -0
  82. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/event.py +0 -0
  83. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/exchange_service.py +0 -0
  84. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/function.py +0 -0
  85. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/geofence.py +0 -0
  86. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/geofence_category.py +0 -0
  87. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/last_message.py +0 -0
  88. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/message.py +0 -0
  89. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/modbus/__init__.py +0 -0
  90. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/modbus/config.py +0 -0
  91. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/modbus/parameter.py +0 -0
  92. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/modbus/schema.py +0 -0
  93. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/modbus/status.py +0 -0
  94. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/modbus/wait.py +0 -0
  95. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/notification_type.py +0 -0
  96. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/operation.py +0 -0
  97. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/operation_case_payload.py +0 -0
  98. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/operation_payload.py +0 -0
  99. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/operation_type.py +0 -0
  100. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/outbound_service.py +0 -0
  101. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/platform.py +0 -0
  102. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/position.py +0 -0
  103. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/presence_type.py +0 -0
  104. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/preset.py +0 -0
  105. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report.py +0 -0
  106. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_col.py +0 -0
  107. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_configuration.py +0 -0
  108. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_data_type.py +0 -0
  109. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_format.py +0 -0
  110. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_header.py +0 -0
  111. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_page.py +0 -0
  112. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/report_row.py +0 -0
  113. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/request_type.py +0 -0
  114. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/sensor.py +0 -0
  115. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/sensor_mask.py +0 -0
  116. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/sound_effect.py +0 -0
  117. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/static_position.py +0 -0
  118. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/telemetry/__init__.py +0 -0
  119. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/telemetry/assetmessage.py +0 -0
  120. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/telemetry/devicemessage.py +0 -0
  121. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/text_alignment.py +0 -0
  122. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/timezone.py +0 -0
  123. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/trigger_kind.py +0 -0
  124. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/user.py +0 -0
  125. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/waypoint.py +0 -0
  126. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/entities/weekday.py +0 -0
  127. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/helpers/__init__.py +0 -0
  128. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/helpers/color.py +0 -0
  129. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/lcl/__init__.py +0 -0
  130. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/lcl/core.py +0 -0
  131. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk/py.typed +0 -0
  132. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk.egg-info/SOURCES.txt +0 -0
  133. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk.egg-info/dependency_links.txt +0 -0
  134. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk.egg-info/requires.txt +0 -0
  135. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/layrz_sdk.egg-info/top_level.txt +0 -0
  136. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/setup.cfg +0 -0
  137. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/tests/__init__.py +0 -0
  138. {layrz_sdk-4.0.21 → layrz_sdk-4.0.23}/tests/test_lcl.py +0 -0
@@ -0,0 +1,18 @@
1
+ dist/
2
+ build/
3
+ *.egg-info/
4
+ /test.py
5
+ /**/*.pyc
6
+ .venv/
7
+ site/
8
+
9
+ **/*/__pycache__/
10
+
11
+ tests.py
12
+ *.xlsx
13
+
14
+ .ruff_cache/
15
+ .mypy_cache/
16
+ .pytest_cache/
17
+
18
+ .env
@@ -3,7 +3,6 @@
3
3
  "ms-python.python",
4
4
  "charliermarsh.ruff",
5
5
  "ms-python.vscode-pylance",
6
- "njpwerner.autodocstring",
7
6
  "oderwat.indent-rainbow"
8
7
  ]
9
8
  }
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.23
4
+
5
+ - Added `should_stack` field to `Trigger` entity to define if the trigger cases should stack.
6
+ - Added `stack_upper_limit` field to `Trigger` entity to define the stack upper limit of the trigger cases.
7
+ - Added `stack_count` field to `Case` entity to define how many cases are stacked together. By default is 1 due to backwards compatibility.
8
+ - Added validation to `stack_count` field in `Case` entity to ensure it is a positive integer. If the value is less than 1 or not an integer, it defaults to 1.
9
+ - Added `metadata` field to `Comment` entity to store additional metadata associated with the comment. This field is a dictionary with string keys and values of any type, defaulting to an empty dictionary.
10
+
11
+ ## 4.0.22
12
+
13
+ - Updated `Case` entity to include `ignored_status` field to represent the ignored status of the case.
14
+ - Updated `Trigger` entity to support cases changes.
15
+ - Some changes on the affected models to use the right definiton of pydantic regarding of the serialization.
16
+
3
17
  ## 4.0.21
4
18
 
5
19
  - Added `owner_id` field to `Geofence` entity to represent the owner of the geofence.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 4.0.21
3
+ Version: 4.0.23
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>
@@ -30,6 +30,11 @@ class Case(BaseModel):
30
30
  description='Defines the sequence of the case. This is a unique identifier for the case',
31
31
  )
32
32
 
33
+ stack_count: int = Field(
34
+ default=1,
35
+ description='Defines how many cases are stacked together. Only applicable if the trigger allows stacking',
36
+ )
37
+
33
38
  @model_validator(mode='before')
34
39
  def _validate_model(cls: Self, data: dict[str, Any]) -> dict[str, Any]:
35
40
  """Validate model"""
@@ -48,4 +53,10 @@ class Case(BaseModel):
48
53
  else:
49
54
  data['sequence'] = f'GENERIC/{data["pk"]}'
50
55
 
56
+ if stack_count := data.get('stack_count'):
57
+ if not isinstance(stack_count, int) or stack_count < 1:
58
+ data['stack_count'] = 1
59
+ else:
60
+ data['stack_count'] = 1
61
+
51
62
  return data
@@ -11,6 +11,7 @@ class CaseIgnoredStatus(StrEnum):
11
11
  IGNORED = 'IGNORED'
12
12
  PRESET = 'PRESET'
13
13
  AUTO = 'AUTO'
14
+ EXPIRED = 'EXPIRED'
14
15
 
15
16
  def __str__(self: Self) -> str:
16
17
  """Readable property"""
@@ -1,6 +1,7 @@
1
1
  """Comment entity"""
2
2
 
3
3
  from datetime import datetime
4
+ from typing import Any
4
5
 
5
6
  from pydantic import BaseModel, Field
6
7
 
@@ -12,5 +13,10 @@ class Comment(BaseModel):
12
13
 
13
14
  pk: int = Field(description='Comment ID', alias='id')
14
15
  content: str = Field(description='Comment content')
15
- user: User = Field(description='Operator/User what commented the case')
16
+ user: User | None = Field(description='Operator/User what commented the case. None if system generated')
16
17
  submitted_at: datetime = Field(description='Date of comment submission')
18
+
19
+ metadata: dict[str, Any] = Field(
20
+ default_factory=dict,
21
+ description='Additional metadata associated with the comment',
22
+ )
@@ -3,7 +3,7 @@
3
3
  from datetime import time, timedelta
4
4
  from typing import Any
5
5
 
6
- from pydantic import BaseModel, Field, field_validator
6
+ from pydantic import BaseModel, Field, field_serializer, field_validator
7
7
 
8
8
  from .trigger_kind import TriggerCaseKind, TriggerCommentPattern, TriggerGeofenceKind, TriggerKind
9
9
  from .weekday import Weekday
@@ -12,17 +12,6 @@ from .weekday import Weekday
12
12
  class Trigger(BaseModel):
13
13
  """Trigger entity"""
14
14
 
15
- model_config = {
16
- 'json_encoders': {
17
- timedelta: lambda v: v.total_seconds(),
18
- TriggerCaseKind: lambda v: v.value,
19
- TriggerGeofenceKind: lambda v: v.value,
20
- TriggerKind: lambda v: v.value,
21
- TriggerCommentPattern: lambda v: v.value,
22
- Weekday: lambda v: v.value,
23
- },
24
- }
25
-
26
15
  pk: int = Field(description='Defines the primary key of the trigger', alias='id')
27
16
  name: str = Field(description='Defines the name of the trigger')
28
17
  code: str = Field(description='Defines the code of the trigger')
@@ -32,27 +21,52 @@ class Trigger(BaseModel):
32
21
  description='Defines the cooldown time of the trigger',
33
22
  )
34
23
 
24
+ @field_serializer('cooldown_time', when_used='always')
25
+ def serialize_cooldown_time(self, value: timedelta) -> float:
26
+ """Serialize cooldown_time to total seconds."""
27
+ return value.total_seconds()
28
+
35
29
  type_: TriggerKind | None = Field(
36
30
  default=None,
37
31
  description='Defines the kind of the trigger',
38
32
  alias='type',
39
33
  )
40
34
 
35
+ @field_serializer('type_', when_used='always')
36
+ def serialize_type(self, value: TriggerKind | None) -> str | None:
37
+ """Serialize type_ to its value."""
38
+ return value.value if value else None
39
+
41
40
  presence_type: TriggerGeofenceKind | None = Field(
42
41
  default=None,
43
42
  description='Defines the geofence kind of the trigger',
44
43
  )
45
44
 
45
+ @field_serializer('presence_type', when_used='always')
46
+ def serialize_presence_type(self, value: TriggerGeofenceKind | None) -> str | None:
47
+ """Serialize presence_type to its value."""
48
+ return value.value if value else None
49
+
46
50
  case_type: TriggerCaseKind | None = Field(
47
51
  default=None,
48
52
  description='Defines the case kind of the trigger',
49
53
  )
50
54
 
55
+ @field_serializer('case_type', when_used='always')
56
+ def serialize_case_type(self, value: TriggerCaseKind | None) -> str | None:
57
+ """Serialize case_type to its value."""
58
+ return value.value if value else None
59
+
51
60
  case_comment_pattern: TriggerCommentPattern | None = Field(
52
61
  default=None,
53
62
  description='Defines the comment pattern of the trigger',
54
63
  )
55
64
 
65
+ @field_serializer('case_comment_pattern', when_used='always')
66
+ def serialize_case_comment_pattern(self, value: TriggerCommentPattern | None) -> str | None:
67
+ """Serialize case_comment_pattern to its value."""
68
+ return value.value if value else None
69
+
56
70
  case_comment_value: str | None = Field(
57
71
  default=None,
58
72
  description='Defines the comment pattern value of the trigger',
@@ -72,6 +86,11 @@ class Trigger(BaseModel):
72
86
  description='Defines the weekdays of the trigger',
73
87
  )
74
88
 
89
+ @field_serializer('weekdays', when_used='always')
90
+ def serialize_weekdays(self, value: list[Weekday]) -> list[str]:
91
+ """Serialize weekdays to their values."""
92
+ return [day.value for day in value]
93
+
75
94
  is_plain_crontab: bool = Field(
76
95
  default=False,
77
96
  description='Defines if the trigger is a plain crontab',
@@ -145,6 +164,29 @@ class Trigger(BaseModel):
145
164
  default=None,
146
165
  description='Defines the care protocol ID of the trigger',
147
166
  )
167
+ has_case_expirity: bool = Field(
168
+ default=False,
169
+ description='Defines if the trigger has case expiry',
170
+ )
171
+
172
+ when_case_expires_delta: timedelta | None = Field(
173
+ default=None,
174
+ description='Defines when the trigger expires delta',
175
+ )
176
+
177
+ @field_serializer('when_case_expires_delta', when_used='always')
178
+ def serialize_when_case_expires_delta(self, value: timedelta | None) -> float | None:
179
+ """Serialize when_case_expires_delta to total seconds."""
180
+ return value.total_seconds() if value else None
181
+
182
+ should_stack: bool = Field(
183
+ default=False,
184
+ description='Defines if the trigger cases should stack',
185
+ )
186
+ stack_upper_limit: int | None = Field(
187
+ default=None,
188
+ description='Defines the stack upper limit of the trigger cases. None means no limit',
189
+ )
148
190
 
149
191
  owner_id: int | None = Field(
150
192
  default=None,
@@ -155,3 +197,8 @@ class Trigger(BaseModel):
155
197
  default=None,
156
198
  description='Defines the search time delta of the trigger',
157
199
  )
200
+
201
+ @field_serializer('search_time_delta', when_used='always')
202
+ def serialize_search_time_delta(self, value: timedelta | None) -> float | None:
203
+ """Serialize search_time_delta to total seconds."""
204
+ return value.total_seconds() if value else None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 4.0.21
3
+ Version: 4.0.23
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,6 +1,10 @@
1
1
  import os
2
2
  import shutil
3
3
 
4
+ from dotenv import load_dotenv
5
+
6
+ load_dotenv()
7
+
4
8
  # Remove previous build
5
9
  if os.path.exists('dist'):
6
10
  shutil.rmtree('dist')
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "layrz-sdk"
3
- version = "4.0.21"
3
+ version = "4.0.23"
4
4
  description = "Layrz SDK for Python"
5
5
  authors = [{ name = "Golden M, Inc.", email = "software@goldenm.com" }]
6
6
  requires-python = ">=3.13"
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 2
2
+ revision = 3
3
3
  requires-python = ">=3.13"
4
4
 
5
5
  [[package]]
@@ -233,7 +233,7 @@ wheels = [
233
233
 
234
234
  [[package]]
235
235
  name = "layrz-sdk"
236
- version = "4.0.21"
236
+ version = "4.0.23"
237
237
  source = { editable = "." }
238
238
  dependencies = [
239
239
  { name = "geopy" },
@@ -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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes