omnata-plugin-runtime 0.4.0a88__tar.gz → 0.4.0a89__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/PKG-INFO +1 -1
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/pyproject.toml +1 -1
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/omnata_plugin.py +102 -57
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/LICENSE +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/README.md +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/__init__.py +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/api.py +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/configuration.py +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/forms.py +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/logging.py +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/plugin_entrypoints.py +0 -0
- {omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/rate_limiting.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "omnata-plugin-runtime"
|
3
|
-
version = "0.4.0-
|
3
|
+
version = "0.4.0-a89"
|
4
4
|
description = "Classes and common runtime components for building and running Omnata Plugins"
|
5
5
|
authors = ["James Weakley <james.weakley@omnata.com>"]
|
6
6
|
readme = "README.md"
|
@@ -690,19 +690,34 @@ class OutboundSyncRequest(SyncRequest):
|
|
690
690
|
logger.info("applying results to table")
|
691
691
|
# use a random table name with a random string to avoid collisions
|
692
692
|
with self._snowflake_query_lock:
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
693
|
+
attempts_remaining = 12
|
694
|
+
while attempts_remaining > 0:
|
695
|
+
try:
|
696
|
+
success, nchunks, nrows, _ = write_pandas(
|
697
|
+
conn=self._session._conn._cursor.connection, # pylint: disable=protected-access
|
698
|
+
df=self._preprocess_results_dataframe(results_df),
|
699
|
+
quote_identifiers=False,
|
700
|
+
table_name=self._full_results_table_name,
|
701
|
+
auto_create_table=False
|
702
|
+
)
|
703
|
+
if not success:
|
704
|
+
raise ValueError(
|
705
|
+
f"Failed to write results to table {self._full_results_table_name}"
|
706
|
+
)
|
707
|
+
logger.info(
|
708
|
+
f"Wrote {nrows} rows and {nchunks} chunks to table {self._full_results_table_name}"
|
709
|
+
)
|
710
|
+
return
|
711
|
+
except Exception as e:
|
712
|
+
if 'is being committed' not in str(e):
|
713
|
+
raise e
|
714
|
+
logger.error(
|
715
|
+
f"Transaction clash writing results to table {self._full_results_table_name}: {e}"
|
716
|
+
)
|
717
|
+
attempts_remaining -= 1
|
718
|
+
time.sleep(5)
|
719
|
+
raise ValueError(
|
720
|
+
f"Failed to write results to table {self._full_results_table_name} after {attempts_remaining} attempts"
|
706
721
|
)
|
707
722
|
|
708
723
|
def __dataframe_wrapper(
|
@@ -1308,34 +1323,49 @@ class InboundSyncRequest(SyncRequest):
|
|
1308
1323
|
"""
|
1309
1324
|
if len(results_df) > 0:
|
1310
1325
|
with self._snowflake_query_lock:
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1326
|
+
attempts_remaining = 12
|
1327
|
+
while attempts_remaining > 0:
|
1328
|
+
try:
|
1329
|
+
logger.info(
|
1330
|
+
f"Applying {len(results_df)} results to {self._full_results_table_name}"
|
1331
|
+
)
|
1332
|
+
# try setting parquet engine here, since the engine parameter does not seem to make it through to the write_pandas function
|
1333
|
+
success, nchunks, nrows, _ = write_pandas(
|
1334
|
+
conn=self._session._conn._cursor.connection, # pylint: disable=protected-access
|
1335
|
+
df=results_df,
|
1336
|
+
table_name=self._full_results_table_name,
|
1337
|
+
quote_identifiers=False, # already done in get_temp_table_name
|
1338
|
+
# schema='INBOUND_RAW', # it seems to be ok to provide schema in the table name
|
1339
|
+
table_type="transient"
|
1340
|
+
)
|
1341
|
+
if not success:
|
1342
|
+
raise ValueError(
|
1343
|
+
f"Failed to write results to table {self._full_results_table_name}"
|
1344
|
+
)
|
1345
|
+
logger.info(
|
1346
|
+
f"Wrote {nrows} rows and {nchunks} chunks to table {self._full_results_table_name}"
|
1347
|
+
)
|
1348
|
+
# temp tables aren't allowed
|
1349
|
+
# snowflake_df = self._session.create_dataframe(results_df)
|
1350
|
+
# snowflake_df.write.save_as_table(table_name=temp_table,
|
1351
|
+
# mode='append',
|
1352
|
+
# column_order='index',
|
1353
|
+
# #create_temp_table=True
|
1354
|
+
# )
|
1355
|
+
for stream_name in stream_names:
|
1356
|
+
self._results_exist[stream_name] = True
|
1357
|
+
return
|
1358
|
+
except Exception as e:
|
1359
|
+
if 'is being committed' not in str(e):
|
1360
|
+
raise e
|
1361
|
+
logger.error(
|
1362
|
+
f"Transaction clash writing results to table {self._full_results_table_name}: {e}"
|
1363
|
+
)
|
1364
|
+
attempts_remaining -= 1
|
1365
|
+
time.sleep(5)
|
1366
|
+
raise ValueError(
|
1367
|
+
f"Failed to write results to table {self._full_results_table_name} after {attempts_remaining} attempts"
|
1329
1368
|
)
|
1330
|
-
# temp tables aren't allowed
|
1331
|
-
# snowflake_df = self._session.create_dataframe(results_df)
|
1332
|
-
# snowflake_df.write.save_as_table(table_name=temp_table,
|
1333
|
-
# mode='append',
|
1334
|
-
# column_order='index',
|
1335
|
-
# #create_temp_table=True
|
1336
|
-
# )
|
1337
|
-
for stream_name in stream_names:
|
1338
|
-
self._results_exist[stream_name] = True
|
1339
1369
|
else:
|
1340
1370
|
logger.info("Results dataframe is empty, not applying")
|
1341
1371
|
|
@@ -1353,23 +1383,38 @@ class InboundSyncRequest(SyncRequest):
|
|
1353
1383
|
"""
|
1354
1384
|
if len(results_df) > 0:
|
1355
1385
|
with self._snowflake_query_lock:
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1386
|
+
attempts_remaining = 12
|
1387
|
+
while attempts_remaining > 0:
|
1388
|
+
try:
|
1389
|
+
logger.info(
|
1390
|
+
f"Applying {len(results_df)} criteria deletes to {self._criteria_deletes_table_name}"
|
1391
|
+
)
|
1392
|
+
# try setting parquet engine here, since the engine parameter does not seem to make it through to the write_pandas function
|
1393
|
+
success, nchunks, nrows, _ = write_pandas(
|
1394
|
+
conn=self._session._conn._cursor.connection, # pylint: disable=protected-access
|
1395
|
+
df=results_df,
|
1396
|
+
table_name=self._criteria_deletes_table_name,
|
1397
|
+
quote_identifiers=False, # already done in get_temp_table_name
|
1398
|
+
table_type="transient"
|
1399
|
+
)
|
1400
|
+
if not success:
|
1401
|
+
raise ValueError(
|
1402
|
+
f"Failed to write results to table {self._criteria_deletes_table_name}"
|
1403
|
+
)
|
1404
|
+
logger.info(
|
1405
|
+
f"Wrote {nrows} rows and {nchunks} chunks to table {self._criteria_deletes_table_name}"
|
1406
|
+
)
|
1407
|
+
return
|
1408
|
+
except Exception as e:
|
1409
|
+
if 'is being committed' not in str(e):
|
1410
|
+
raise e
|
1411
|
+
logger.error(
|
1412
|
+
f"Transaction clash writing results to table {self._full_results_table_name}: {e}"
|
1413
|
+
)
|
1414
|
+
attempts_remaining -= 1
|
1415
|
+
time.sleep(5)
|
1416
|
+
raise ValueError(
|
1417
|
+
f"Failed to write results to table {self._full_results_table_name} after {attempts_remaining} attempts"
|
1373
1418
|
)
|
1374
1419
|
else:
|
1375
1420
|
logger.info("Results dataframe is empty, not applying")
|
File without changes
|
File without changes
|
File without changes
|
{omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/api.py
RENAMED
File without changes
|
File without changes
|
{omnata_plugin_runtime-0.4.0a88 → omnata_plugin_runtime-0.4.0a89}/src/omnata_plugin_runtime/forms.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|