omnata-plugin-runtime 0.5.7a133__py3-none-any.whl → 0.5.7a135__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omnata_plugin_runtime/omnata_plugin.py +47 -4
- {omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.dist-info}/METADATA +1 -1
- {omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.dist-info}/RECORD +5 -5
- {omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.dist-info}/LICENSE +0 -0
- {omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.dist-info}/WHEEL +0 -0
@@ -38,6 +38,7 @@ import jinja2
|
|
38
38
|
import pandas
|
39
39
|
from pydantic_core import to_jsonable_python
|
40
40
|
from pydantic import Field, TypeAdapter, ValidationError, create_model, root_validator, BaseModel
|
41
|
+
from pydantic.dataclasses import dataclass
|
41
42
|
from dateutil.parser import parse
|
42
43
|
from jinja2 import Environment
|
43
44
|
from snowflake.connector.pandas_tools import write_pandas
|
@@ -2228,7 +2229,25 @@ def get_nested_value(nested_dict:Dict, keys:List[str]):
|
|
2228
2229
|
keys = [keys]
|
2229
2230
|
return reduce(lambda d, key: d.get(key) if isinstance(d, dict) else None, keys, nested_dict)
|
2230
2231
|
|
2231
|
-
|
2232
|
+
|
2233
|
+
@dataclass
|
2234
|
+
class SnowflakeFunctionParameter:
|
2235
|
+
name: str
|
2236
|
+
description: str
|
2237
|
+
data_type: str
|
2238
|
+
has_default_value: bool = False
|
2239
|
+
default_value_clause: Optional[str] = None
|
2240
|
+
|
2241
|
+
@dataclass
|
2242
|
+
class SnowflakeUDTFResultColumn:
|
2243
|
+
name: str
|
2244
|
+
data_type: str
|
2245
|
+
description: str
|
2246
|
+
|
2247
|
+
def consumer_udtf(
|
2248
|
+
description: str,
|
2249
|
+
params: List[SnowflakeFunctionParameter],
|
2250
|
+
result_columns: List[SnowflakeUDTFResultColumn]):
|
2232
2251
|
def class_decorator(cls):
|
2233
2252
|
# Get the original 'process' method from the class
|
2234
2253
|
cls._is_omnata_consumer_udtf = True
|
@@ -2275,7 +2294,7 @@ def consumer_udtf(param_docs: Dict[str, Dict[str, Any]]):
|
|
2275
2294
|
|
2276
2295
|
return class_decorator
|
2277
2296
|
|
2278
|
-
def
|
2297
|
+
def find_consumer_udtf_classes(path:str = '.'):
|
2279
2298
|
# Get the directory's absolute path
|
2280
2299
|
current_dir = os.path.abspath(path)
|
2281
2300
|
|
@@ -2290,11 +2309,15 @@ def find_classes_with_attribute(attribute_name: str,path:str = '.'):
|
|
2290
2309
|
# Iterate over all members of the module
|
2291
2310
|
for name, obj in inspect.getmembers(module, inspect.isclass):
|
2292
2311
|
# Check if the class has the specified attribute
|
2293
|
-
if hasattr(obj,
|
2312
|
+
if hasattr(obj, '_is_omnata_consumer_udtf'):
|
2294
2313
|
matching_classes.append(obj)
|
2314
|
+
return matching_classes
|
2295
2315
|
|
2296
2316
|
|
2297
|
-
def consumer_udf(
|
2317
|
+
def consumer_udf(
|
2318
|
+
description: str,
|
2319
|
+
params: List[SnowflakeFunctionParameter],
|
2320
|
+
result_data_type: str):
|
2298
2321
|
def decorator(func):
|
2299
2322
|
sig = signature(func)
|
2300
2323
|
params = sig.parameters
|
@@ -2333,3 +2356,23 @@ def consumer_udf(param_docs: Dict[str, Dict[str, Any]]):
|
|
2333
2356
|
return wrapper
|
2334
2357
|
|
2335
2358
|
return decorator
|
2359
|
+
|
2360
|
+
def find_consumer_udf_functions(path:str = '.'):
|
2361
|
+
# Get the current directory's absolute path
|
2362
|
+
current_dir = os.path.abspath(path)
|
2363
|
+
|
2364
|
+
# List to hold the classes that match the attribute
|
2365
|
+
matching_classes = []
|
2366
|
+
|
2367
|
+
# Iterate over all modules in the current directory
|
2368
|
+
for _, module_name, _ in pkgutil.iter_modules([current_dir]):
|
2369
|
+
# Import the module
|
2370
|
+
module = importlib.import_module(module_name)
|
2371
|
+
|
2372
|
+
# Iterate over all members of the module
|
2373
|
+
for name, obj in inspect.getmembers(module, inspect.isfunction):
|
2374
|
+
# Check if the class has the specified attribute
|
2375
|
+
if hasattr(obj, '_is_omnata_consumer_udf'):
|
2376
|
+
matching_classes.append(obj)
|
2377
|
+
|
2378
|
+
return matching_classes
|
{omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.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=-u_v8EboxbwkiYw6AcmeJfvuYEI7eWcQ5bSjRUeH8kg,118053
|
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.7a135.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
|
10
|
+
omnata_plugin_runtime-0.5.7a135.dist-info/METADATA,sha256=nGKtINdFnVmfWvG119LLVku-fh93V62sMatfuNkIU9k,1985
|
11
|
+
omnata_plugin_runtime-0.5.7a135.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
12
|
+
omnata_plugin_runtime-0.5.7a135.dist-info/RECORD,,
|
{omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.dist-info}/LICENSE
RENAMED
File without changes
|
{omnata_plugin_runtime-0.5.7a133.dist-info → omnata_plugin_runtime-0.5.7a135.dist-info}/WHEEL
RENAMED
File without changes
|