splight-lib 5.17.5.dev2__tar.gz → 5.18.0__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.
Files changed (144) hide show
  1. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/PKG-INFO +1 -1
  2. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/pyproject.toml +2 -2
  3. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/database/classmap.py +2 -2
  4. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/component/abstract.py +1 -7
  5. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/component/spec.py +2 -2
  6. splight_lib-5.18.0/splight_lib/conftest.py +44 -0
  7. splight_lib-5.18.0/splight_lib/models/__init__.py +297 -0
  8. splight_lib-5.18.0/splight_lib/models/_v3/__init__.py +156 -0
  9. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/actions.py +1 -1
  10. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/alert.py +5 -5
  11. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/asset.py +4 -19
  12. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/attribute.py +1 -1
  13. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/bus.py +7 -3
  14. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/component.py +9 -9
  15. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/dashboard.py +3 -3
  16. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/data_address.py +1 -1
  17. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/datalake.py +3 -3
  18. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/datalake_base.py +3 -3
  19. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/external_grid.py +2 -2
  20. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/file.py +3 -3
  21. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/function.py +7 -7
  22. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/generator.py +7 -3
  23. splight_lib-5.18.0/splight_lib/models/_v3/grid.py +6 -0
  24. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/hub.py +1 -1
  25. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/hub_server.py +2 -2
  26. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/inverter.py +7 -3
  27. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/line.py +7 -3
  28. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/metadata.py +2 -17
  29. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/native.py +3 -3
  30. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/secret.py +1 -1
  31. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/segment.py +7 -3
  32. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/server.py +6 -6
  33. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/slack_generator.py +6 -2
  34. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/slack_line.py +6 -2
  35. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/tag.py +1 -1
  36. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/tests/test_component_object_instance.py +1 -1
  37. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/tests/test_database_model.py +1 -3
  38. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/three_winding_transformer.py +2 -2
  39. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/transformer.py +2 -2
  40. splight_lib-5.18.0/splight_lib/models/_v4/__init__.py +142 -0
  41. splight_lib-5.18.0/splight_lib/models/_v4/alert.py +281 -0
  42. splight_lib-5.18.0/splight_lib/models/_v4/asset.py +36 -0
  43. splight_lib-5.18.0/splight_lib/models/_v4/attribute.py +18 -0
  44. splight_lib-5.18.0/splight_lib/models/_v4/base.py +41 -0
  45. splight_lib-5.18.0/splight_lib/models/_v4/bus.py +17 -0
  46. splight_lib-5.18.0/splight_lib/models/_v4/component.py +631 -0
  47. splight_lib-5.18.0/splight_lib/models/_v4/dashboard.py +332 -0
  48. splight_lib-5.18.0/splight_lib/models/_v4/data_address.py +33 -0
  49. splight_lib-5.18.0/splight_lib/models/_v4/datalake.py +189 -0
  50. splight_lib-5.18.0/splight_lib/models/_v4/datalake_base.py +131 -0
  51. splight_lib-5.18.0/splight_lib/models/_v4/exceptions.py +86 -0
  52. splight_lib-5.18.0/splight_lib/models/_v4/external_grid.py +9 -0
  53. splight_lib-5.18.0/splight_lib/models/_v4/file.py +55 -0
  54. splight_lib-5.18.0/splight_lib/models/_v4/generator.py +40 -0
  55. splight_lib-5.18.0/splight_lib/models/_v4/generic.py +43 -0
  56. splight_lib-5.18.0/splight_lib/models/_v4/grid.py +8 -0
  57. splight_lib-5.18.0/splight_lib/models/_v4/hub.py +218 -0
  58. splight_lib-5.18.0/splight_lib/models/_v4/hub_server.py +117 -0
  59. splight_lib-5.18.0/splight_lib/models/_v4/line.py +87 -0
  60. splight_lib-5.18.0/splight_lib/models/_v4/load.py +15 -0
  61. splight_lib-5.18.0/splight_lib/models/_v4/metadata.py +42 -0
  62. splight_lib-5.18.0/splight_lib/models/_v4/native.py +79 -0
  63. splight_lib-5.18.0/splight_lib/models/_v4/secret.py +18 -0
  64. splight_lib-5.18.0/splight_lib/models/_v4/segment.py +32 -0
  65. splight_lib-5.18.0/splight_lib/models/_v4/server.py +195 -0
  66. splight_lib-5.18.0/splight_lib/models/_v4/slack_line.py +10 -0
  67. splight_lib-5.18.0/splight_lib/models/_v4/tag.py +6 -0
  68. splight_lib-5.18.0/splight_lib/models/_v4/transformer.py +45 -0
  69. splight_lib-5.18.0/splight_lib/models/_v4/variable_types.py +18 -0
  70. splight_lib-5.17.5.dev2/splight_lib/models/database_base.py → splight_lib-5.18.0/splight_lib/models/database.py +3 -3
  71. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/testing/__init__.py +1 -1
  72. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/tests/test_api_contracts.py +3 -3
  73. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/utils/custom_model.py +1 -1
  74. splight_lib-5.17.5.dev2/splight_lib/component/tests/test_abstract.py +0 -1
  75. splight_lib-5.17.5.dev2/splight_lib/conftest.py +0 -10
  76. splight_lib-5.17.5.dev2/splight_lib/models/__init__.py +0 -129
  77. splight_lib-5.17.5.dev2/splight_lib/models/grid.py +0 -6
  78. splight_lib-5.17.5.dev2/splight_lib/models/load.py +0 -22
  79. splight_lib-5.17.5.dev2/splight_lib/tests/test_encryption.py +0 -1
  80. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/LICENSE.txt +0 -0
  81. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/README.md +0 -0
  82. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/__init__.py +0 -0
  83. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/abstract/__init__.py +0 -0
  84. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/abstract/client.py +0 -0
  85. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/auth/__init__.py +0 -0
  86. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/auth/token.py +0 -0
  87. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/__init__.py +0 -0
  88. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/database/__init__.py +0 -0
  89. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/database/abstract.py +0 -0
  90. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/database/builder.py +0 -0
  91. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/database/remote_client.py +0 -0
  92. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/__init__.py +0 -0
  93. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/abstract.py +0 -0
  94. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/buffer.py +0 -0
  95. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/builder.py +0 -0
  96. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/constants.py +0 -0
  97. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/exceptions.py +0 -0
  98. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/datalake/remote_client.py +0 -0
  99. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/exceptions.py +0 -0
  100. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/hub/__init__.py +0 -0
  101. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/hub/abstract.py +0 -0
  102. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/hub/client.py +0 -0
  103. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/tests/test_database.py +0 -0
  104. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/client/tests/test_datalake.py +0 -0
  105. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/component/__init__.py +0 -0
  106. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/component/exceptions.py +0 -0
  107. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/component/tests/test_spec.py +0 -0
  108. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/config.py +0 -0
  109. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/constants.py +0 -0
  110. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/encryption.py +0 -0
  111. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/__init__.py +0 -0
  112. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/engine.py +0 -0
  113. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/exceptions.py +0 -0
  114. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/scheduling.py +0 -0
  115. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/task.py +0 -0
  116. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/tests/test_execution.py +0 -0
  117. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/tests/test_scheduling.py +0 -0
  118. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/execution/trigger.py +0 -0
  119. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/logging/__init__.py +0 -0
  120. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/logging/_internal.py +0 -0
  121. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/logging/component.py +0 -0
  122. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/logging/constants.py +0 -0
  123. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/logging/logging.py +0 -0
  124. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/logging/tests/test_logging.py +0 -0
  125. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/exceptions.py +0 -0
  126. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/generic.py +0 -0
  127. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/tests/models.json +0 -0
  128. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/tests/test_metadata.py +0 -0
  129. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/tests/test_models.py +0 -0
  130. {splight_lib-5.17.5.dev2/splight_lib/models → splight_lib-5.18.0/splight_lib/models/_v3}/variable_types.py +0 -0
  131. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/restclient/__init__.py +0 -0
  132. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/restclient/client.py +0 -0
  133. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/restclient/exceptions.py +0 -0
  134. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/restclient/tests/test_restclient.py +0 -0
  135. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/restclient/types.py +0 -0
  136. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/server/__init__.py +0 -0
  137. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/server/exceptions.py +0 -0
  138. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/server/server.py +0 -0
  139. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/settings.py +0 -0
  140. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/tests/FakeProc.py +0 -0
  141. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/tests/asset_geometries.json +0 -0
  142. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/utils/__init__.py +0 -0
  143. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/utils/hub.py +0 -0
  144. {splight_lib-5.17.5.dev2 → splight_lib-5.18.0}/splight_lib/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: splight-lib
3
- Version: 5.17.5.dev2
3
+ Version: 5.18.0
4
4
  Summary: Splight Library
5
5
  Author: Splight Dev
6
6
  Author-email: dev@splight-ae.com
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "splight-lib"
3
- version = "5.17.5dev2"
3
+ version = "5.18.0"
4
4
  description = "Splight Library"
5
5
  authors = [
6
6
  {name = "Splight Dev",email = "dev@splight-ae.com"}
@@ -48,7 +48,7 @@ ipdb = "^0.13.13"
48
48
  ipython = "8.12.2"
49
49
  flake8 = "^6.1.0"
50
50
  pre-commit = "3.2.2"
51
- pytest = "^7.4.3"
51
+ pytest = "^8.3.0"
52
52
  jsonref = "1.1.0"
53
53
  polyfactory = "2.13.0"
54
54
  openapi-schema-validator = "0.6.2"
@@ -60,6 +60,6 @@ CUSTOM_PATHS_MAP = {
60
60
  "decrypt-secret": "{prefix}/secrets/decrypt/",
61
61
  "routine-status": "{prefix}/component/routines/{routine}/update_status/",
62
62
  "server-status": "{prefix}/server/servers/{server}/update-status/",
63
- "set-asset-metadata": "{prefix}/asset/metadata/{metadata}/set-metadata/",
64
- "set-asset-relationship": "{prefix}/asset/relations/{relationship}/set-relationship/",
63
+ "set-asset-metadata": "{prefix}/asset/metadata/{metadata}/set/",
64
+ "set-asset-relationship": "{prefix}/asset/relations/{relationship}/set/",
65
65
  }
@@ -13,10 +13,7 @@ from pydantic_core import ValidationError
13
13
  from splight_lib.component.spec import Spec
14
14
  from splight_lib.execution.engine import EngineStatus, ExecutionEngine
15
15
  from splight_lib.logging._internal import LogTags, get_splight_logger
16
- from splight_lib.models.component import (
17
- ComponentObjectInstance,
18
- RoutineObjectInstance,
19
- )
16
+ from splight_lib.models import ComponentObjectInstance, RoutineObjectInstance
20
17
  from splight_lib.restclient import ConnectError, HTTPError, Timeout
21
18
 
22
19
  REQUEST_EXCEPTIONS = (ConnectError, HTTPError, Timeout)
@@ -143,10 +140,8 @@ class SplightBaseComponent(ABC):
143
140
  def _register_exit(self):
144
141
  if self._execution_engine.state == EngineStatus.FAILED:
145
142
  os._exit(1)
146
- # sys.exit(1)
147
143
  else:
148
144
  os._exit(0)
149
- # sys.exit(0)
150
145
 
151
146
  def _wrap_start(self, original_start: Callable) -> Callable:
152
147
  """Wraps the start method to wait for all threads to finish.
@@ -178,7 +173,6 @@ class SplightBaseComponent(ABC):
178
173
  self._health_check_thread.join()
179
174
  self._execution_engine.stop()
180
175
  os._exit(1)
181
- # sys.exit(1)
182
176
 
183
177
  # Wait for healthcheck to update before stopping everything
184
178
  sleep(HealthCheckProcessor.HEALTHCHECK_INTERVAL)
@@ -8,7 +8,7 @@ from splight_lib.component.exceptions import (
8
8
  DuplicatedValuesError,
9
9
  ParameterDependencyError,
10
10
  )
11
- from splight_lib.models.component import (
11
+ from splight_lib.models import (
12
12
  Component,
13
13
  ComponentObjectInstance,
14
14
  ComponentType,
@@ -18,9 +18,9 @@ from splight_lib.models.component import (
18
18
  Output,
19
19
  PrivacyPolicy,
20
20
  Routine,
21
+ SplightDatalakeBaseModel,
21
22
  get_field_value,
22
23
  )
23
- from splight_lib.models.datalake_base import SplightDatalakeBaseModel
24
24
  from splight_lib.utils.custom_model import create_custom_model
25
25
 
26
26
  VALID_PARAMETER_VALUES = {
@@ -0,0 +1,44 @@
1
+ from pathlib import Path
2
+
3
+ import pytest
4
+
5
+ from splight_lib.client.database.abstract import AbstractDatabaseClient
6
+ from splight_lib.client.datalake.abstract import AbstractDatalakeClient
7
+ from splight_lib.settings import SplightAPIVersion, api_settings
8
+
9
+ # Only load these tests when API_VERSION is v4
10
+ API_V4_TESTS = Path("splight_lib/models/_v4")
11
+
12
+
13
+ @pytest.fixture(autouse=True)
14
+ def reset_singletons():
15
+ AbstractDatabaseClient._instances = {}
16
+ AbstractDatalakeClient._instances = {}
17
+
18
+
19
+ class VersionAwareDirectory(pytest.Directory):
20
+ def collect(self):
21
+ # If API_VERSION is v4, only collect tests from the _v4 directory
22
+ if api_settings.API_VERSION == SplightAPIVersion.V4:
23
+ # Only collect tests inside splight_lib/models/_v4
24
+ if self.path.is_relative_to(Path.cwd() / API_V4_TESTS):
25
+ for path in self.path.glob("test_*.py"):
26
+ yield from self.ihook.pytest_collect_file(
27
+ file_path=path, parent=self
28
+ )
29
+ return # Skip other directories
30
+
31
+ # If API_VERSION is v3, collect tests from all directories (excluding _v4)
32
+ elif api_settings.API_VERSION == SplightAPIVersion.V3:
33
+ if not self.path.is_relative_to(Path.cwd() / API_V4_TESTS):
34
+ # Collect tests from all directories except _v4
35
+ for path in self.path.glob("test_*.py"):
36
+ yield from self.ihook.pytest_collect_file(
37
+ file_path=path, parent=self
38
+ )
39
+ return # Skip collection if it is the v4 directory in v3 mode
40
+
41
+
42
+ @pytest.hookimpl
43
+ def pytest_collect_directory(path, parent):
44
+ return VersionAwareDirectory.from_parent(parent=parent, path=path)
@@ -0,0 +1,297 @@
1
+ from splight_lib.settings import SplightAPIVersion, api_settings
2
+
3
+ # Get API version
4
+ api_version = api_settings.API_VERSION
5
+
6
+ # Import only the models for the current version
7
+ if api_version == SplightAPIVersion.V3:
8
+ from splight_lib.models._v3 import (
9
+ DB_MODEL_TYPE_MAPPING,
10
+ Action,
11
+ AdvancedFilter,
12
+ Alert,
13
+ AlertItem,
14
+ Asset,
15
+ AssetKind,
16
+ AssetParams,
17
+ AssetRelationship,
18
+ Attribute,
19
+ Boolean,
20
+ Bus,
21
+ Chart,
22
+ ChartItem,
23
+ Component,
24
+ ComponentObject,
25
+ ComponentObjectInstance,
26
+ ComponentType,
27
+ CustomType,
28
+ Dashboard,
29
+ DashboardActionListChart,
30
+ DashboardAlertEventsChart,
31
+ DashboardAlertListChart,
32
+ DashboardAssetListChart,
33
+ DashboardBarChart,
34
+ DashboardBarGaugeChart,
35
+ DashboardCommandListChart,
36
+ DashboardGaugeChart,
37
+ DashboardHistogramChart,
38
+ DashboardImageChart,
39
+ DashboardStatChart,
40
+ DashboardTableChart,
41
+ DashboardTextChart,
42
+ DashboardTimeseriesChart,
43
+ DataRequest,
44
+ Endpoint,
45
+ ExternalGrid,
46
+ File,
47
+ Filter,
48
+ Function,
49
+ FunctionItem,
50
+ Generator,
51
+ Grid,
52
+ HubComponent,
53
+ HubServer,
54
+ InputParameter,
55
+ Inverter,
56
+ Line,
57
+ Metadata,
58
+ Number,
59
+ Output,
60
+ Parameter,
61
+ PipelineStep,
62
+ PrivacyPolicy,
63
+ QueryFilter,
64
+ Routine,
65
+ RoutineEvaluation,
66
+ RoutineObject,
67
+ RoutineObjectInstance,
68
+ Secret,
69
+ Segment,
70
+ Server,
71
+ SetPoint,
72
+ SlackGenerator,
73
+ SlackLine,
74
+ SplightDatalakeBaseModel,
75
+ String,
76
+ Tab,
77
+ Tag,
78
+ ThreeWindingTransformer,
79
+ Trace,
80
+ Transformer,
81
+ )
82
+
83
+ __all__ = [
84
+ "Action",
85
+ "AdvancedFilter",
86
+ "Alert",
87
+ "AlertItem",
88
+ "Asset",
89
+ "AssetParams",
90
+ "AssetRelationship",
91
+ "Tag",
92
+ "AssetKind",
93
+ "Attribute",
94
+ "Boolean",
95
+ "Chart",
96
+ "DashboardActionListChart",
97
+ "DashboardAlertEventsChart",
98
+ "DashboardAlertListChart",
99
+ "DashboardAssetListChart",
100
+ "DashboardBarChart",
101
+ "DashboardBarGaugeChart",
102
+ "DashboardCommandListChart",
103
+ "DashboardGaugeChart",
104
+ "DashboardHistogramChart",
105
+ "DashboardImageChart",
106
+ "DashboardStatChart",
107
+ "DashboardTableChart",
108
+ "DashboardTextChart",
109
+ "DashboardTimeseriesChart",
110
+ "ChartItem",
111
+ "Component",
112
+ "ComponentObject",
113
+ "ComponentObjectInstance",
114
+ "ComponentType",
115
+ "CustomType",
116
+ "Endpoint",
117
+ "Output",
118
+ "InputParameter",
119
+ "PrivacyPolicy",
120
+ "Routine",
121
+ "get_field_value",
122
+ "Parameter",
123
+ "DB_MODEL_TYPE_MAPPING",
124
+ "Dashboard",
125
+ "DataRequest",
126
+ "File",
127
+ "Filter",
128
+ "Function",
129
+ "FunctionItem",
130
+ "HubComponent",
131
+ "HubServer",
132
+ "QueryFilter",
133
+ "Metadata",
134
+ "Number",
135
+ "PipelineStep",
136
+ "SplightDatalakeBaseModel",
137
+ "Bus",
138
+ "ExternalGrid",
139
+ "Generator",
140
+ "Grid",
141
+ "Line",
142
+ "Inverter",
143
+ "SlackGenerator",
144
+ "SlackLine",
145
+ "ThreeWindingTransformer",
146
+ "Transformer",
147
+ "RoutineEvaluation",
148
+ "Secret",
149
+ "Segment",
150
+ "Server",
151
+ "SetPoint",
152
+ "String",
153
+ "RoutineObject",
154
+ "RoutineObjectInstance",
155
+ "Tab",
156
+ "Trace",
157
+ ]
158
+ elif api_version == SplightAPIVersion.V4:
159
+ from splight_lib.models._v4 import (
160
+ DB_MODEL_TYPE_MAPPING,
161
+ AdvancedFilter,
162
+ Alert,
163
+ AlertItem,
164
+ Asset,
165
+ AssetKind,
166
+ AssetRelationship,
167
+ Attribute,
168
+ AttributeType,
169
+ Boolean,
170
+ Bus,
171
+ Chart,
172
+ ChartItem,
173
+ Component,
174
+ ComponentObject,
175
+ ComponentObjectInstance,
176
+ ComponentType,
177
+ CustomType,
178
+ Dashboard,
179
+ DashboardAlertEventsChart,
180
+ DashboardAlertListChart,
181
+ DashboardAssetListChart,
182
+ DashboardBarChart,
183
+ DashboardBarGaugeChart,
184
+ DashboardGaugeChart,
185
+ DashboardHistogramChart,
186
+ DashboardImageChart,
187
+ DashboardStatChart,
188
+ DashboardTableChart,
189
+ DashboardTextChart,
190
+ DashboardTimeseriesChart,
191
+ DataRequest,
192
+ Endpoint,
193
+ ExternalGrid,
194
+ File,
195
+ Filter,
196
+ Generator,
197
+ Grid,
198
+ HubComponent,
199
+ HubServer,
200
+ InputParameter,
201
+ Line,
202
+ Load,
203
+ Metadata,
204
+ Number,
205
+ Output,
206
+ Parameter,
207
+ PipelineStep,
208
+ PrivacyPolicy,
209
+ ResourceSummary,
210
+ Routine,
211
+ RoutineEvaluation,
212
+ RoutineObject,
213
+ RoutineObjectInstance,
214
+ Secret,
215
+ Segment,
216
+ Server,
217
+ SlackLine,
218
+ SplightDatalakeBaseModel,
219
+ String,
220
+ Tab,
221
+ Tag,
222
+ Trace,
223
+ Transformer,
224
+ ValueType,
225
+ get_field_value,
226
+ )
227
+
228
+ __all__ = [
229
+ "Alert",
230
+ "AlertItem",
231
+ "Asset",
232
+ "AssetRelationship",
233
+ "Component",
234
+ "RoutineObjectInstance",
235
+ "RoutineObject",
236
+ "RoutineEvaluation",
237
+ "ComponentObject",
238
+ "ComponentObjectInstance",
239
+ "ComponentType",
240
+ "CustomType",
241
+ "Endpoint",
242
+ "InputParameter",
243
+ "Output",
244
+ "PrivacyPolicy",
245
+ "Routine",
246
+ "get_field_value",
247
+ "Parameter",
248
+ "DB_MODEL_TYPE_MAPPING",
249
+ "AdvancedFilter",
250
+ "SplightDatalakeBaseModel",
251
+ "Chart",
252
+ "ChartItem",
253
+ "Dashboard",
254
+ "DashboardAlertEventsChart",
255
+ "DashboardAlertListChart",
256
+ "DashboardAssetListChart",
257
+ "DashboardBarChart",
258
+ "DashboardBarGaugeChart",
259
+ "DashboardGaugeChart",
260
+ "DashboardHistogramChart",
261
+ "DashboardImageChart",
262
+ "DashboardStatChart",
263
+ "DashboardTableChart",
264
+ "DashboardTextChart",
265
+ "DashboardTimeseriesChart",
266
+ "Filter",
267
+ "Tab",
268
+ "DataRequest",
269
+ "PipelineStep",
270
+ "Trace",
271
+ "File",
272
+ "HubComponent",
273
+ "HubServer",
274
+ "Boolean",
275
+ "Number",
276
+ "String",
277
+ "Secret",
278
+ "Server",
279
+ "Tag",
280
+ "Metadata",
281
+ "Attribute",
282
+ "ResourceSummary",
283
+ "AssetKind",
284
+ "ValueType",
285
+ "AttributeType",
286
+ "Bus",
287
+ "ExternalGrid",
288
+ "Generator",
289
+ "Grid",
290
+ "Line",
291
+ "Load",
292
+ "Segment",
293
+ "SlackLine",
294
+ "Transformer",
295
+ ]
296
+ else:
297
+ raise ImportError(f"No models available for API version: '{api_version}'.")
@@ -0,0 +1,156 @@
1
+ from splight_lib.settings import SplightAPIVersion, api_settings
2
+
3
+ if api_settings.API_VERSION != SplightAPIVersion.V3:
4
+ raise ImportError(
5
+ f"Unable to import models from this module when API_VERSION is not set to '{SplightAPIVersion.V3}'."
6
+ )
7
+
8
+ from splight_lib.models._v3.actions import Action, SetPoint
9
+ from splight_lib.models._v3.alert import Alert, AlertItem
10
+ from splight_lib.models._v3.asset import (
11
+ Asset,
12
+ AssetKind,
13
+ AssetParams,
14
+ AssetRelationship,
15
+ )
16
+ from splight_lib.models._v3.attribute import Attribute
17
+ from splight_lib.models._v3.bus import Bus
18
+ from splight_lib.models._v3.component import (
19
+ DB_MODEL_TYPE_MAPPING,
20
+ Component,
21
+ ComponentObject,
22
+ ComponentObjectInstance,
23
+ ComponentType,
24
+ CustomType,
25
+ Endpoint,
26
+ InputParameter,
27
+ Output,
28
+ Parameter,
29
+ PrivacyPolicy,
30
+ Routine,
31
+ RoutineEvaluation,
32
+ RoutineObject,
33
+ RoutineObjectInstance,
34
+ get_field_value,
35
+ )
36
+ from splight_lib.models._v3.dashboard import (
37
+ AdvancedFilter,
38
+ Chart,
39
+ ChartItem,
40
+ Dashboard,
41
+ DashboardActionListChart,
42
+ DashboardAlertEventsChart,
43
+ DashboardAlertListChart,
44
+ DashboardAssetListChart,
45
+ DashboardBarChart,
46
+ DashboardBarGaugeChart,
47
+ DashboardCommandListChart,
48
+ DashboardGaugeChart,
49
+ DashboardHistogramChart,
50
+ DashboardImageChart,
51
+ DashboardStatChart,
52
+ DashboardTableChart,
53
+ DashboardTextChart,
54
+ DashboardTimeseriesChart,
55
+ Filter,
56
+ Tab,
57
+ )
58
+ from splight_lib.models._v3.datalake import DataRequest, PipelineStep, Trace
59
+ from splight_lib.models._v3.datalake_base import SplightDatalakeBaseModel
60
+ from splight_lib.models._v3.external_grid import ExternalGrid
61
+ from splight_lib.models._v3.file import File
62
+ from splight_lib.models._v3.function import Function, FunctionItem, QueryFilter
63
+ from splight_lib.models._v3.generator import Generator
64
+ from splight_lib.models._v3.grid import Grid
65
+ from splight_lib.models._v3.hub import HubComponent
66
+ from splight_lib.models._v3.hub_server import HubServer
67
+ from splight_lib.models._v3.inverter import Inverter
68
+ from splight_lib.models._v3.line import Line
69
+ from splight_lib.models._v3.metadata import Metadata
70
+ from splight_lib.models._v3.native import Boolean, Number, String
71
+ from splight_lib.models._v3.secret import Secret
72
+ from splight_lib.models._v3.segment import Segment
73
+ from splight_lib.models._v3.server import Server
74
+ from splight_lib.models._v3.slack_generator import SlackGenerator
75
+ from splight_lib.models._v3.slack_line import SlackLine
76
+ from splight_lib.models._v3.tag import Tag
77
+ from splight_lib.models._v3.three_winding_transformer import (
78
+ ThreeWindingTransformer,
79
+ )
80
+ from splight_lib.models._v3.transformer import Transformer
81
+
82
+ __all__ = [
83
+ "Action",
84
+ "AdvancedFilter",
85
+ "Alert",
86
+ "AlertItem",
87
+ "Asset",
88
+ "AssetParams",
89
+ "AssetRelationship",
90
+ "Tag",
91
+ "AssetKind",
92
+ "Attribute",
93
+ "Boolean",
94
+ "Chart",
95
+ "DashboardActionListChart",
96
+ "DashboardAlertEventsChart",
97
+ "DashboardAlertListChart",
98
+ "DashboardAssetListChart",
99
+ "DashboardBarChart",
100
+ "DashboardBarGaugeChart",
101
+ "DashboardCommandListChart",
102
+ "DashboardGaugeChart",
103
+ "DashboardHistogramChart",
104
+ "DashboardImageChart",
105
+ "DashboardStatChart",
106
+ "DashboardTableChart",
107
+ "DashboardTextChart",
108
+ "DashboardTimeseriesChart",
109
+ "ChartItem",
110
+ "Component",
111
+ "ComponentObject",
112
+ "ComponentObjectInstance",
113
+ "ComponentType",
114
+ "CustomType",
115
+ "Endpoint",
116
+ "Output",
117
+ "InputParameter",
118
+ "PrivacyPolicy",
119
+ "Routine",
120
+ "get_field_value",
121
+ "SplightDatalakeBaseModel",
122
+ "DB_MODEL_TYPE_MAPPING",
123
+ "Parameter",
124
+ "Dashboard",
125
+ "DataRequest",
126
+ "File",
127
+ "Filter",
128
+ "Function",
129
+ "FunctionItem",
130
+ "HubComponent",
131
+ "HubServer",
132
+ "QueryFilter",
133
+ "Metadata",
134
+ "Number",
135
+ "PipelineStep",
136
+ "Bus",
137
+ "ExternalGrid",
138
+ "Generator",
139
+ "Grid",
140
+ "Line",
141
+ "Inverter",
142
+ "SlackGenerator",
143
+ "SlackLine",
144
+ "ThreeWindingTransformer",
145
+ "Transformer",
146
+ "RoutineEvaluation",
147
+ "Secret",
148
+ "Segment",
149
+ "Server",
150
+ "SetPoint",
151
+ "String",
152
+ "RoutineObject",
153
+ "RoutineObjectInstance",
154
+ "Tab",
155
+ "Trace",
156
+ ]
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime
2
2
 
3
- from splight_lib.models.database_base import (
3
+ from splight_lib.models.database import (
4
4
  ResourceSummary,
5
5
  SplightDatabaseBaseModel,
6
6
  )
@@ -13,14 +13,14 @@ from pydantic import (
13
13
  from strenum import LowercaseStrEnum, UppercaseStrEnum
14
14
  from typing_extensions import TypedDict
15
15
 
16
- from splight_lib.models.database_base import (
17
- ResourceSummary,
18
- SplightDatabaseBaseModel,
19
- )
20
- from splight_lib.models.exceptions import (
16
+ from splight_lib.models._v3.exceptions import (
21
17
  InvalidAlertConfiguration,
22
18
  MissingAlertItemExpression,
23
19
  )
20
+ from splight_lib.models.database import (
21
+ ResourceSummary,
22
+ SplightDatabaseBaseModel,
23
+ )
24
24
 
25
25
 
26
26
  class AlertItemType(UppercaseStrEnum):
@@ -5,14 +5,13 @@ from zoneinfo import available_timezones
5
5
  from geojson_pydantic import GeometryCollection
6
6
  from pydantic import BaseModel, field_validator
7
7
 
8
- from splight_lib.models.attribute import Attribute
9
- from splight_lib.models.database_base import (
8
+ from splight_lib.models._v3.attribute import Attribute
9
+ from splight_lib.models._v3.exceptions import MethodNotAllowed
10
+ from splight_lib.models._v3.metadata import Metadata
11
+ from splight_lib.models.database import (
10
12
  ResourceSummary,
11
13
  SplightDatabaseBaseModel,
12
14
  )
13
- from splight_lib.models.exceptions import MethodNotAllowed
14
- from splight_lib.models.metadata import Metadata
15
- from splight_lib.settings import SplightAPIVersion, api_settings
16
15
 
17
16
  warnings.filterwarnings("ignore", category=UserWarning)
18
17
 
@@ -36,21 +35,7 @@ class AssetRelationship(SplightDatabaseBaseModel):
36
35
  asset: ResourceSummary | None = None
37
36
  related_asset: ResourceSummary | None = None
38
37
 
39
- def save(self) -> None:
40
- if (
41
- self.id is not None
42
- and api_settings.API_VERSION == SplightAPIVersion.V4
43
- ):
44
- raise NotImplementedError(
45
- "Asset Relationship save operation is not supported in API v4"
46
- )
47
- super().save()
48
-
49
38
  def set(self, asset_id: str) -> None:
50
- if api_settings.API_VERSION == SplightAPIVersion.V3:
51
- raise NotImplementedError(
52
- "Asset Relationsip set operation is not supported in API v3"
53
- )
54
39
  self._db_client.operate(
55
40
  "set-asset-relationship",
56
41
  instance={
@@ -2,7 +2,7 @@ from enum import auto
2
2
 
3
3
  from strenum import PascalCaseStrEnum
4
4
 
5
- from splight_lib.models.database_base import SplightDatabaseBaseModel
5
+ from splight_lib.models.database import SplightDatabaseBaseModel
6
6
 
7
7
 
8
8
  class AttributeType(PascalCaseStrEnum):
@@ -1,6 +1,10 @@
1
- from splight_lib.models import AssetParams, AssetRelationship, Attribute
2
- from splight_lib.models.database_base import SplightDatabaseBaseModel
3
- from splight_lib.models.metadata import Metadata
1
+ from splight_lib.models._v3.asset import (
2
+ AssetParams,
3
+ AssetRelationship,
4
+ Attribute,
5
+ )
6
+ from splight_lib.models._v3.metadata import Metadata
7
+ from splight_lib.models.database import SplightDatabaseBaseModel
4
8
 
5
9
 
6
10
  class Bus(AssetParams, SplightDatabaseBaseModel):