omnata-plugin-runtime 0.5.3__py3-none-any.whl → 0.5.4__py3-none-any.whl
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.
- omnata_plugin_runtime/configuration.py +8 -1
- omnata_plugin_runtime/forms.py +1 -1
- omnata_plugin_runtime/omnata_plugin.py +24 -17
- {omnata_plugin_runtime-0.5.3.dist-info → omnata_plugin_runtime-0.5.4.dist-info}/METADATA +1 -1
- omnata_plugin_runtime-0.5.4.dist-info/RECORD +12 -0
- omnata_plugin_runtime-0.5.3.dist-info/RECORD +0 -12
- {omnata_plugin_runtime-0.5.3.dist-info → omnata_plugin_runtime-0.5.4.dist-info}/LICENSE +0 -0
- {omnata_plugin_runtime-0.5.3.dist-info → omnata_plugin_runtime-0.5.4.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, SerializationInfo, model_serializer, validator # pylint: disable=no-name-in-module
|
11
|
+
from pydantic import BaseModel, Field, PrivateAttr, SerializationInfo, field_validator, 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
|
@@ -449,6 +449,13 @@ class StoredStreamConfiguration(SubscriptableBaseModel):
|
|
449
449
|
stream: StreamConfiguration
|
450
450
|
latest_state: dict = Field(default_factory=dict,description="The latest state of the stream, used for incremental syncs")
|
451
451
|
|
452
|
+
@field_validator('latest_state',mode='before')
|
453
|
+
@classmethod
|
454
|
+
def state_must_not_be_none(cls, v: Optional[dict]) -> dict:
|
455
|
+
if v is None:
|
456
|
+
return {}
|
457
|
+
return v
|
458
|
+
|
452
459
|
|
453
460
|
class StreamConfiguration(SubscriptableBaseModel):
|
454
461
|
"""
|
omnata_plugin_runtime/forms.py
CHANGED
@@ -209,7 +209,7 @@ class FormSliderField(SubscriptableBaseModel):
|
|
209
209
|
|
210
210
|
name: str
|
211
211
|
label: str
|
212
|
-
default_value: Optional[str] = Field(default=None)
|
212
|
+
default_value: Optional[Union[str,int]] = Field(default=None)
|
213
213
|
secret: bool = Field(default=False)
|
214
214
|
required: bool = Field(default=False)
|
215
215
|
depends_on: Optional[str] = Field(default=None)
|
@@ -1007,20 +1007,23 @@ class InboundSyncRequest(SyncRequest):
|
|
1007
1007
|
"""
|
1008
1008
|
Sends a message to the plugin with the current progress of the sync run, if it has changed since last time.
|
1009
1009
|
"""
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1010
|
+
if self._apply_results is not None:
|
1011
|
+
with self._apply_results_lock:
|
1012
|
+
new_progress_update = PluginMessageStreamProgressUpdate(
|
1013
|
+
stream_total_counts=self._stream_record_counts,
|
1014
|
+
# records could have been marked as completed, but still have results to apply
|
1015
|
+
completed_streams=[s for s in self._completed_streams if s not in self._apply_results or self._apply_results[s] is None],
|
1016
|
+
stream_errors=self._omnata_log_handler.stream_global_errors,
|
1017
|
+
total_records_estimate=self._total_records_estimate
|
1018
|
+
)
|
1019
|
+
if self._last_stream_progress_update is None or new_progress_update != self._last_stream_progress_update:
|
1020
|
+
result = self._plugin_message(
|
1021
|
+
message=new_progress_update,
|
1022
|
+
ignore_errors=ignore_errors
|
1023
|
+
)
|
1024
|
+
if result is None:
|
1025
|
+
return False
|
1026
|
+
self._last_stream_progress_update = new_progress_update
|
1024
1027
|
return True
|
1025
1028
|
|
1026
1029
|
def apply_cancellation(self):
|
@@ -2042,9 +2045,13 @@ def __managed_inbound_processing_worker(
|
|
2042
2045
|
# restore the first argument, was originally the dataframe/generator but now it's the appropriately sized dataframe
|
2043
2046
|
try:
|
2044
2047
|
logger.info(f"worker {worker_index} processing stream {stream.stream_name}, invoking plugin class method {method.__name__}")
|
2045
|
-
method(plugin_class_obj, *(stream, *method_args), **method_kwargs)
|
2046
|
-
logger.info(f"worker {worker_index} completed processing stream {stream.stream_name}
|
2047
|
-
|
2048
|
+
result = method(plugin_class_obj, *(stream, *method_args), **method_kwargs)
|
2049
|
+
logger.info(f"worker {worker_index} completed processing stream {stream.stream_name}")
|
2050
|
+
if result is not None and result is False:
|
2051
|
+
logger.info(f"worker {worker_index} requested that {stream.stream_name} be not marked as complete")
|
2052
|
+
else:
|
2053
|
+
logger.info(f"worker {worker_index} marking stream {stream.stream_name} as complete")
|
2054
|
+
plugin_class_obj._sync_request.mark_stream_complete(stream.stream_name)
|
2048
2055
|
except InterruptedWhileWaitingException:
|
2049
2056
|
# If an inbound run is cancelled while waiting for rate limiting, this should mean that
|
2050
2057
|
# the cancellation is handled elsewhere, so we don't need to do anything special here other than stop waiting
|
@@ -0,0 +1,12 @@
|
|
1
|
+
omnata_plugin_runtime/__init__.py,sha256=MS9d1whnfT_B3-ThqZ7l63QeC_8OEKTuaYV5wTwRpBA,1576
|
2
|
+
omnata_plugin_runtime/api.py,sha256=FxzTqri4no8ClkOm7vZADG8aD47jcGBCTTQDEORmOJM,6326
|
3
|
+
omnata_plugin_runtime/configuration.py,sha256=g_p8z0b23FQInlAaPuLIxpH_qoAbaEZp2ZL3m7Xml-A,36631
|
4
|
+
omnata_plugin_runtime/forms.py,sha256=GzSPEwcijsoPCXEO1mHiE8ylvX_KSE5TkhwqkymA2Ss,19755
|
5
|
+
omnata_plugin_runtime/logging.py,sha256=bn7eKoNWvtuyTk7RTwBS9UARMtqkiICtgMtzq3KA2V0,3272
|
6
|
+
omnata_plugin_runtime/omnata_plugin.py,sha256=XyiWPEFKoH0H8bYuTVgTacpL5OM2K3lVRjlayENuR9A,111528
|
7
|
+
omnata_plugin_runtime/plugin_entrypoints.py,sha256=JirYUbPBaN0UMh9t_uAHDdhaQZ7NUhdMJ11eHRKOoNY,29302
|
8
|
+
omnata_plugin_runtime/rate_limiting.py,sha256=DVQ_bc-mVLBkrU1PTns1MWXhHiLpSB5HkWCcdePtJ2A,25611
|
9
|
+
omnata_plugin_runtime-0.5.4.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
|
10
|
+
omnata_plugin_runtime-0.5.4.dist-info/METADATA,sha256=WplHHMcEM4pLjgbYACc2B4d8oYsADqDIcP7BSLn6qb8,1947
|
11
|
+
omnata_plugin_runtime-0.5.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
12
|
+
omnata_plugin_runtime-0.5.4.dist-info/RECORD,,
|
@@ -1,12 +0,0 @@
|
|
1
|
-
omnata_plugin_runtime/__init__.py,sha256=MS9d1whnfT_B3-ThqZ7l63QeC_8OEKTuaYV5wTwRpBA,1576
|
2
|
-
omnata_plugin_runtime/api.py,sha256=FxzTqri4no8ClkOm7vZADG8aD47jcGBCTTQDEORmOJM,6326
|
3
|
-
omnata_plugin_runtime/configuration.py,sha256=4eKYhw6_l-RUVUwNU5NlTpPwL7xZRs6VLaCKf8OIKuY,36420
|
4
|
-
omnata_plugin_runtime/forms.py,sha256=42o3DJnnxJ-W92pNaF5MuawvDPUK5O0azvn80HDxTZM,19744
|
5
|
-
omnata_plugin_runtime/logging.py,sha256=bn7eKoNWvtuyTk7RTwBS9UARMtqkiICtgMtzq3KA2V0,3272
|
6
|
-
omnata_plugin_runtime/omnata_plugin.py,sha256=zIk8dS5m4pXsVy_2im-Cd-t1uQV9hf1seosb1T2jGGs,110880
|
7
|
-
omnata_plugin_runtime/plugin_entrypoints.py,sha256=JirYUbPBaN0UMh9t_uAHDdhaQZ7NUhdMJ11eHRKOoNY,29302
|
8
|
-
omnata_plugin_runtime/rate_limiting.py,sha256=DVQ_bc-mVLBkrU1PTns1MWXhHiLpSB5HkWCcdePtJ2A,25611
|
9
|
-
omnata_plugin_runtime-0.5.3.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
|
10
|
-
omnata_plugin_runtime-0.5.3.dist-info/METADATA,sha256=NjxZcT3Dc8AZ44OHNjr1LYIyIO9Mt3mCrh45kd9zlf4,1947
|
11
|
-
omnata_plugin_runtime-0.5.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
12
|
-
omnata_plugin_runtime-0.5.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|