omnata-plugin-runtime 0.5.1a114__py3-none-any.whl → 0.5.2a117__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omnata_plugin_runtime/configuration.py +26 -28
- omnata_plugin_runtime/plugin_entrypoints.py +13 -12
- {omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/METADATA +1 -1
- {omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/RECORD +6 -6
- {omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/LICENSE +0 -0
- {omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/WHEEL +0 -0
@@ -8,7 +8,7 @@ from typing import Any, List, Dict, Literal, Union, Optional
|
|
8
8
|
from enum import Enum
|
9
9
|
|
10
10
|
from abc import ABC
|
11
|
-
from pydantic import BaseModel, Field, PrivateAttr, validator # pylint: disable=no-name-in-module
|
11
|
+
from pydantic import BaseModel, Field, PrivateAttr, SerializationInfo, model_serializer, validator # pylint: disable=no-name-in-module
|
12
12
|
|
13
13
|
if tuple(sys.version_info[:2]) >= (3, 9):
|
14
14
|
# Python 3.9 and above
|
@@ -110,16 +110,18 @@ class OutboundSyncAction(SubscriptableBaseModel, ABC):
|
|
110
110
|
**STANDARD_OUTBOUND_SYNC_ACTIONS[data["action_name"]]().__dict__,
|
111
111
|
}
|
112
112
|
super().__init__(**data)
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
113
|
+
|
114
|
+
@model_serializer(mode='wrap')
|
115
|
+
def ser_model(self,handler,info:SerializationInfo) -> Dict[str, Any]:
|
116
|
+
serialized:Dict[str,Any] = handler(self)
|
117
|
+
if not self.custom_action and (info.exclude_none is None or info.exclude_none == False):
|
118
|
+
return {k:v for k,v in serialized.items() if k not in [
|
119
|
+
"description"]}
|
120
|
+
return serialized
|
121
|
+
|
122
|
+
def model_dump_no_trim(self) -> Dict[str, Any]:
|
123
|
+
# we use our own special include value to signal not to trim
|
124
|
+
return self.model_dump(exclude_none=True)
|
123
125
|
|
124
126
|
|
125
127
|
class CreateSyncAction(OutboundSyncAction):
|
@@ -227,7 +229,7 @@ class OutboundSyncStrategy(SubscriptableBaseModel, ABC):
|
|
227
229
|
action_on_record_unchanged: Optional[OutboundSyncAction] = None
|
228
230
|
custom_strategy: bool = True
|
229
231
|
|
230
|
-
def __eq__(self, other):
|
232
|
+
def __eq__(self, other:OutboundSyncStrategy):
|
231
233
|
if hasattr(other, 'custom_strategy') and hasattr(other, 'name'):
|
232
234
|
return (
|
233
235
|
self.custom_strategy == other.custom_strategy
|
@@ -251,27 +253,23 @@ class OutboundSyncStrategy(SubscriptableBaseModel, ABC):
|
|
251
253
|
}
|
252
254
|
super().__init__(**data)
|
253
255
|
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
"""
|
261
|
-
excluded_fields = (
|
262
|
-
{}
|
263
|
-
if not trim or self.custom_strategy
|
264
|
-
else {
|
256
|
+
@model_serializer(mode='wrap')
|
257
|
+
def ser_model(self,handler,info:SerializationInfo) -> Dict[str, Any]:
|
258
|
+
serialized:Dict[str,Any] = handler(self)
|
259
|
+
if not self.custom_strategy and (info.exclude_none is None or info.exclude_none == False):
|
260
|
+
return {k:v for k,v in serialized.items() if k not in [
|
265
261
|
"description",
|
266
262
|
"icon_source",
|
267
263
|
"action_on_record_create",
|
268
264
|
"action_on_record_update",
|
269
265
|
"action_on_record_delete",
|
270
|
-
"action_on_record_unchanged"
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
266
|
+
"action_on_record_unchanged"]}
|
267
|
+
return serialized
|
268
|
+
|
269
|
+
def model_dump_no_trim(self) -> Dict[str, Any]:
|
270
|
+
# we use our own special include value to signal not to trim
|
271
|
+
return self.model_dump(exclude_none=True)
|
272
|
+
|
275
273
|
|
276
274
|
class CreateSyncStrategy(OutboundSyncStrategy):
|
277
275
|
"""
|
@@ -32,6 +32,7 @@ from .omnata_plugin import (
|
|
32
32
|
OutboundSyncRequest,
|
33
33
|
DeadlineReachedException,
|
34
34
|
)
|
35
|
+
from pydantic import TypeAdapter
|
35
36
|
from .rate_limiting import ApiLimits, RateLimitState
|
36
37
|
|
37
38
|
# set the logger class to our custom logger so that pydantic errors are handled correctly
|
@@ -233,7 +234,7 @@ class PluginEntrypoint:
|
|
233
234
|
stream_errors=omnata_log_handler.stream_global_errors,
|
234
235
|
total_records_estimate=inbound_sync_request._total_records_estimate
|
235
236
|
)
|
236
|
-
return_dict["final_progress_update"] = final_progress_update.
|
237
|
+
return_dict["final_progress_update"] = final_progress_update.model_dump()
|
237
238
|
if inbound_sync_request.deadline_reached:
|
238
239
|
# if we actually hit the deadline, this is flagged by the cancellation checking worker and the cancellation
|
239
240
|
# token is set. We throw it here as an error since that's currently how it flows back to the engine with a DELAYED state
|
@@ -305,10 +306,10 @@ class PluginEntrypoint:
|
|
305
306
|
)
|
306
307
|
script_result = the_function(parameters)
|
307
308
|
if isinstance(script_result, BaseModel):
|
308
|
-
script_result = script_result.
|
309
|
+
script_result = script_result.model_dump()
|
309
310
|
elif isinstance(script_result, List):
|
310
311
|
if len(script_result) > 0 and isinstance(script_result[0], BaseModel):
|
311
|
-
script_result = [r.
|
312
|
+
script_result = [r.model_dump() for r in script_result]
|
312
313
|
return script_result
|
313
314
|
|
314
315
|
def inbound_list_streams(
|
@@ -341,10 +342,10 @@ class PluginEntrypoint:
|
|
341
342
|
|
342
343
|
script_result = self._plugin_instance.inbound_stream_list(parameters)
|
343
344
|
if isinstance(script_result, BaseModel):
|
344
|
-
script_result = script_result.
|
345
|
+
script_result = script_result.model_dump()
|
345
346
|
elif isinstance(script_result, List):
|
346
347
|
if len(script_result) > 0 and isinstance(script_result[0], BaseModel):
|
347
|
-
script_result = [r.
|
348
|
+
script_result = [r.model_dump() for r in script_result]
|
348
349
|
return script_result
|
349
350
|
|
350
351
|
|
@@ -365,17 +366,17 @@ class PluginEntrypoint:
|
|
365
366
|
script_result = the_function(stored_value)
|
366
367
|
if not isinstance(script_result, FormOption):
|
367
368
|
raise ValueError(f"Expected a FormOption from function {function_name}, got {type(script_result)}")
|
368
|
-
results.append(script_result.
|
369
|
+
results.append(script_result.model_dump())
|
369
370
|
return results
|
370
371
|
|
371
372
|
def connection_form(self):
|
372
373
|
logger.info("Entered connection_form method")
|
373
374
|
form: List[ConnectionMethod] = self._plugin_instance.connection_form()
|
374
|
-
return [f.
|
375
|
+
return [f.model_dump() for f in form]
|
375
376
|
|
376
377
|
def create_billing_events(self, session, event_request: Dict):
|
377
378
|
logger.info("Entered create_billing_events method")
|
378
|
-
request = BillingEventRequest.
|
379
|
+
request = TypeAdapter(BillingEventRequest).validate_python(event_request)
|
379
380
|
events: List[SnowflakeBillingEvent] = self._plugin_instance.create_billing_events(
|
380
381
|
request
|
381
382
|
)
|
@@ -408,7 +409,7 @@ class PluginEntrypoint:
|
|
408
409
|
logger.warn('Billing event creation failed due to running internally to Omnata')
|
409
410
|
else:
|
410
411
|
raise e
|
411
|
-
return [e.
|
412
|
+
return [e.model_dump() for e in events]
|
412
413
|
|
413
414
|
def get_secrets(
|
414
415
|
self, oauth_secret_name: Optional[str], other_secrets_name: Optional[str]
|
@@ -461,7 +462,7 @@ class PluginEntrypoint:
|
|
461
462
|
script_result = the_function(parameters)
|
462
463
|
if isinstance(script_result, List):
|
463
464
|
if len(script_result) > 0 and isinstance(script_result[0], BaseModel):
|
464
|
-
script_result = [r.
|
465
|
+
script_result = [r.model_dump() for r in script_result]
|
465
466
|
else:
|
466
467
|
raise ValueError(f"Expected a List from function {function_name}, got {type(script_result)}")
|
467
468
|
return script_result
|
@@ -531,7 +532,7 @@ class PluginEntrypoint:
|
|
531
532
|
f"alter network rule {network_rule_name} set value_list = ({rule_values_string})"
|
532
533
|
).collect()
|
533
534
|
|
534
|
-
return connect_response.
|
535
|
+
return connect_response.model_dump()
|
535
536
|
|
536
537
|
def api_limits(self,
|
537
538
|
method:str,
|
@@ -564,7 +565,7 @@ class PluginEntrypoint:
|
|
564
565
|
# There's a bit of parsing here that could possibly be done outside of the handler function, but this shouldn't be too expensive
|
565
566
|
sync_parameters: Dict[str, StoredConfigurationValue] = TypeAdapter(
|
566
567
|
Dict[str, StoredConfigurationValue]).validate_python(sync_parameters)
|
567
|
-
field_mappings: StoredMappingValue = StoredMappingValue.
|
568
|
+
field_mappings: StoredMappingValue = TypeAdapter(StoredMappingValue).validate_python(field_mappings)
|
568
569
|
return self._plugin_instance.outbound_record_validator(
|
569
570
|
sync_parameters, field_mappings, transformed_record, source_types
|
570
571
|
)
|
{omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/RECORD
RENAMED
@@ -1,12 +1,12 @@
|
|
1
1
|
omnata_plugin_runtime/__init__.py,sha256=MS9d1whnfT_B3-ThqZ7l63QeC_8OEKTuaYV5wTwRpBA,1576
|
2
2
|
omnata_plugin_runtime/api.py,sha256=FxzTqri4no8ClkOm7vZADG8aD47jcGBCTTQDEORmOJM,6326
|
3
|
-
omnata_plugin_runtime/configuration.py,sha256=
|
3
|
+
omnata_plugin_runtime/configuration.py,sha256=GI7RBerWjymVtXRFaAhbmgmoct-m943wta0TX0m6_z8,35790
|
4
4
|
omnata_plugin_runtime/forms.py,sha256=hV6jVaizex20Pb9NxPx11TBPK-Yy8pREAnTtCxHo4Qo,18409
|
5
5
|
omnata_plugin_runtime/logging.py,sha256=bn7eKoNWvtuyTk7RTwBS9UARMtqkiICtgMtzq3KA2V0,3272
|
6
6
|
omnata_plugin_runtime/omnata_plugin.py,sha256=zIk8dS5m4pXsVy_2im-Cd-t1uQV9hf1seosb1T2jGGs,110880
|
7
|
-
omnata_plugin_runtime/plugin_entrypoints.py,sha256=
|
7
|
+
omnata_plugin_runtime/plugin_entrypoints.py,sha256=JirYUbPBaN0UMh9t_uAHDdhaQZ7NUhdMJ11eHRKOoNY,29302
|
8
8
|
omnata_plugin_runtime/rate_limiting.py,sha256=DVQ_bc-mVLBkrU1PTns1MWXhHiLpSB5HkWCcdePtJ2A,25611
|
9
|
-
omnata_plugin_runtime-0.5.
|
10
|
-
omnata_plugin_runtime-0.5.
|
11
|
-
omnata_plugin_runtime-0.5.
|
12
|
-
omnata_plugin_runtime-0.5.
|
9
|
+
omnata_plugin_runtime-0.5.2a117.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
|
10
|
+
omnata_plugin_runtime-0.5.2a117.dist-info/METADATA,sha256=5moARb8FGRx-6ulORy_zkGj7a_kc77Jd_GsDrZIu15E,1888
|
11
|
+
omnata_plugin_runtime-0.5.2a117.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
12
|
+
omnata_plugin_runtime-0.5.2a117.dist-info/RECORD,,
|
{omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/LICENSE
RENAMED
File without changes
|
{omnata_plugin_runtime-0.5.1a114.dist-info → omnata_plugin_runtime-0.5.2a117.dist-info}/WHEEL
RENAMED
File without changes
|