omnata-plugin-runtime 0.5.7a145__py3-none-any.whl → 0.5.7a147__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/omnata_plugin.py +42 -32
- {omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/METADATA +1 -1
- {omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/RECORD +5 -5
- {omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/LICENSE +0 -0
- {omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/WHEEL +0 -0
@@ -2253,19 +2253,21 @@ class SnowflakeUDTFResultColumn:
|
|
2253
2253
|
"""
|
2254
2254
|
name: str
|
2255
2255
|
data_type: str
|
2256
|
-
|
2256
|
+
def __str__(self):
|
2257
|
+
return f"{self.name} {self.data_type}"
|
2257
2258
|
|
2258
2259
|
@dataclass
|
2259
2260
|
class PythonUDTFDefinition:
|
2260
2261
|
"""
|
2261
2262
|
The information needed by the plugin uploader to put a Python UDTF definition into the setup script.
|
2262
|
-
Do not use this class directly in plugins, instead use the
|
2263
|
+
Do not use this class directly in plugins, instead use the omnata_udtf decorator.
|
2263
2264
|
"""
|
2264
2265
|
name: str
|
2265
2266
|
description: str
|
2266
2267
|
params: List[SnowflakeFunctionParameter]
|
2267
2268
|
result_columns: List[SnowflakeUDTFResultColumn]
|
2268
2269
|
handler: str
|
2270
|
+
expose_to_consumer: bool
|
2269
2271
|
packages: Optional[List[str]] = None
|
2270
2272
|
|
2271
2273
|
def __str__(self):
|
@@ -2317,13 +2319,14 @@ HANDLER='{self.handler}';
|
|
2317
2319
|
class PythonUDFDefinition:
|
2318
2320
|
"""
|
2319
2321
|
The information needed by the plugin uploader to put a Python UDF definition into the setup script.
|
2320
|
-
Do not use this class directly in plugins, instead use the
|
2322
|
+
Do not use this class directly in plugins, instead use the omnata_udf decorator.
|
2321
2323
|
"""
|
2322
2324
|
name: str
|
2323
2325
|
description: str
|
2324
2326
|
params: List[SnowflakeFunctionParameter]
|
2325
2327
|
result_data_type: str
|
2326
2328
|
handler: str
|
2329
|
+
expose_to_consumer: bool
|
2327
2330
|
packages: Optional[List[str]] = None
|
2328
2331
|
|
2329
2332
|
def __str__(self):
|
@@ -2351,6 +2354,7 @@ class JavaUDFDefinition:
|
|
2351
2354
|
packages: List[str]
|
2352
2355
|
imports: List[str]
|
2353
2356
|
handler: str
|
2357
|
+
expose_to_consumer: bool
|
2354
2358
|
|
2355
2359
|
def __str__(self):
|
2356
2360
|
param_str = ', '.join([str(param) for param in self.params])
|
@@ -2366,13 +2370,14 @@ IMPORTS = ({imports_str})
|
|
2366
2370
|
HANDLER='{self.handler}';
|
2367
2371
|
"""
|
2368
2372
|
|
2369
|
-
def
|
2373
|
+
def omnata_udtf(
|
2370
2374
|
name:str,
|
2371
2375
|
description: str,
|
2372
2376
|
params: List[SnowflakeFunctionParameter],
|
2373
|
-
result_columns: List[SnowflakeUDTFResultColumn]
|
2377
|
+
result_columns: List[SnowflakeUDTFResultColumn],
|
2378
|
+
expose_to_consumer: bool):
|
2374
2379
|
"""
|
2375
|
-
A decorator for a class which should
|
2380
|
+
A decorator for a class which should create a UDTF in the UDFS schema of the native app
|
2376
2381
|
"""
|
2377
2382
|
def class_decorator(cls):
|
2378
2383
|
# Get the original 'process' method from the class
|
@@ -2420,18 +2425,19 @@ def consumer_udtf(
|
|
2420
2425
|
return original_process(self, parameters, *args, **kwargs)
|
2421
2426
|
# Replace the original 'process' method with the wrapped version
|
2422
2427
|
setattr(cls, 'process', wrapped_process)
|
2423
|
-
cls.
|
2424
|
-
cls.
|
2425
|
-
cls.
|
2426
|
-
cls.
|
2427
|
-
cls.
|
2428
|
+
cls._is_omnata_udtf = True
|
2429
|
+
cls._omnata_udtf_name = name
|
2430
|
+
cls._omnata_udtf_description = description
|
2431
|
+
cls._omnata_udtf_params = params
|
2432
|
+
cls._omnata_udtf_result_columns = result_columns
|
2433
|
+
cls._omnata_udtf_expose_to_consumer = expose_to_consumer
|
2428
2434
|
return cls
|
2429
2435
|
|
2430
2436
|
return class_decorator
|
2431
2437
|
|
2432
|
-
def
|
2438
|
+
def find_udtf_classes(path:str = '.') -> List[PythonUDTFDefinition | JavaUDTFDefinition]:
|
2433
2439
|
"""
|
2434
|
-
Finds all classes in the specified directory which have the '
|
2440
|
+
Finds all classes in the specified directory which have the 'omnata_udtf' decorator applied
|
2435
2441
|
"""
|
2436
2442
|
# Get the directory's absolute path
|
2437
2443
|
current_dir = os.path.abspath(path)
|
@@ -2447,12 +2453,13 @@ def find_consumer_udtf_classes(path:str = '.') -> List[PythonUDTFDefinition | Ja
|
|
2447
2453
|
# Iterate over all members of the module
|
2448
2454
|
for name, obj in inspect.getmembers(module, inspect.isclass):
|
2449
2455
|
# Check if the class has the specified attribute
|
2450
|
-
if hasattr(obj, '
|
2456
|
+
if hasattr(obj, '_is_omnata_udtf'):
|
2451
2457
|
matching_classes.append(PythonUDTFDefinition(
|
2452
|
-
name=obj.
|
2453
|
-
description=obj.
|
2454
|
-
params=obj.
|
2455
|
-
result_columns=obj.
|
2458
|
+
name=obj._omnata_udtf_name,
|
2459
|
+
description=obj._omnata_udtf_description,
|
2460
|
+
params=obj._omnata_udtf_params,
|
2461
|
+
result_columns=obj._omnata_udtf_result_columns,
|
2462
|
+
expose_to_consumer=obj._omnata_udtf_expose_to_consumer,
|
2456
2463
|
handler=obj.__module__+'.'+obj.__name__
|
2457
2464
|
))
|
2458
2465
|
elif isinstance(obj, JavaUDTFDefinition):
|
@@ -2461,11 +2468,12 @@ def find_consumer_udtf_classes(path:str = '.') -> List[PythonUDTFDefinition | Ja
|
|
2461
2468
|
return matching_classes
|
2462
2469
|
|
2463
2470
|
|
2464
|
-
def
|
2471
|
+
def omnata_udf(
|
2465
2472
|
name: str,
|
2466
2473
|
description: str,
|
2467
2474
|
params: List[SnowflakeFunctionParameter],
|
2468
|
-
result_data_type: str
|
2475
|
+
result_data_type: str,
|
2476
|
+
expose_to_consumer: bool):
|
2469
2477
|
"""
|
2470
2478
|
A decorator for a function which should be automatically exposed to the consumer as a UDF
|
2471
2479
|
"""
|
@@ -2505,18 +2513,19 @@ def consumer_udf(
|
|
2505
2513
|
# Pass the validated arguments to the function
|
2506
2514
|
return func(parameters, *args, **kwargs)
|
2507
2515
|
|
2508
|
-
wrapper.
|
2509
|
-
wrapper.
|
2510
|
-
wrapper.
|
2511
|
-
wrapper.
|
2512
|
-
wrapper.
|
2516
|
+
wrapper._is_omnata_udf = True
|
2517
|
+
wrapper._omnata_udf_name = name
|
2518
|
+
wrapper._omnata_udf_description = description
|
2519
|
+
wrapper._omnata_udf_params = params
|
2520
|
+
wrapper._omnata_udf_result_data_type = result_data_type
|
2521
|
+
wrapper._omnata_udf_expose_to_consumer = expose_to_consumer
|
2513
2522
|
return wrapper
|
2514
2523
|
|
2515
2524
|
return decorator
|
2516
2525
|
|
2517
|
-
def
|
2526
|
+
def find_udf_functions(path:str = '.') -> List[PythonUDFDefinition | JavaUDFDefinition]:
|
2518
2527
|
"""
|
2519
|
-
Finds all functions in the specified directory which have the '
|
2528
|
+
Finds all functions in the specified directory which have the 'omnata_udf' decorator applied
|
2520
2529
|
"""
|
2521
2530
|
# Get the current directory's absolute path
|
2522
2531
|
current_dir = os.path.abspath(path)
|
@@ -2532,12 +2541,13 @@ def find_consumer_udf_functions(path:str = '.') -> List[PythonUDFDefinition | Ja
|
|
2532
2541
|
# Iterate over all members of the module
|
2533
2542
|
for name, obj in inspect.getmembers(module, inspect.isfunction):
|
2534
2543
|
# Check if the class has the specified attribute
|
2535
|
-
if hasattr(obj, '
|
2544
|
+
if hasattr(obj, '_is_omnata_udf'):
|
2536
2545
|
matching_classes.append(PythonUDFDefinition(
|
2537
|
-
name=obj.
|
2538
|
-
description=obj.
|
2539
|
-
params=obj.
|
2540
|
-
result_data_type=obj.
|
2546
|
+
name=obj._omnata_udf_name,
|
2547
|
+
description=obj._omnata_udf_description,
|
2548
|
+
params=obj._omnata_udf_params,
|
2549
|
+
result_data_type=obj._omnata_udf_result_data_type,
|
2550
|
+
expose_to_consumer=obj._omnata_udf_expose_to_consumer,
|
2541
2551
|
packages=[],
|
2542
2552
|
handler=obj.__module__+'.'+obj.__name__
|
2543
2553
|
))
|
{omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/RECORD
RENAMED
@@ -3,10 +3,10 @@ omnata_plugin_runtime/api.py,sha256=FxzTqri4no8ClkOm7vZADG8aD47jcGBCTTQDEORmOJM,
|
|
3
3
|
omnata_plugin_runtime/configuration.py,sha256=TI6GaVFhewVawBCaYN34GujY57qEP6q2nik4YpSEk5s,38100
|
4
4
|
omnata_plugin_runtime/forms.py,sha256=GzSPEwcijsoPCXEO1mHiE8ylvX_KSE5TkhwqkymA2Ss,19755
|
5
5
|
omnata_plugin_runtime/logging.py,sha256=bn7eKoNWvtuyTk7RTwBS9UARMtqkiICtgMtzq3KA2V0,3272
|
6
|
-
omnata_plugin_runtime/omnata_plugin.py,sha256=
|
6
|
+
omnata_plugin_runtime/omnata_plugin.py,sha256=mgGxL7W2tnKGUUW6uUYBRYNabhu5sJVCf1y3GX-eJ3o,125323
|
7
7
|
omnata_plugin_runtime/plugin_entrypoints.py,sha256=PFSLsYEVnWHVvSoOYTtTK2JY6pp6_8_eYP53WqLRiPE,27975
|
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.7a147.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
|
10
|
+
omnata_plugin_runtime-0.5.7a147.dist-info/METADATA,sha256=_6tMzoqnFJM3jV4Lomk7A2vJselwa5YiiaoBzFRtMUw,1985
|
11
|
+
omnata_plugin_runtime-0.5.7a147.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
12
|
+
omnata_plugin_runtime-0.5.7a147.dist-info/RECORD,,
|
{omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/LICENSE
RENAMED
File without changes
|
{omnata_plugin_runtime-0.5.7a145.dist-info → omnata_plugin_runtime-0.5.7a147.dist-info}/WHEEL
RENAMED
File without changes
|