omnata-plugin-runtime 0.4.0a88__tar.gz → 0.4.0a89__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.
- {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
         
     |