omnata-plugin-runtime 0.5.7a131__tar.gz → 0.5.7a133__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omnata-plugin-runtime
3
- Version: 0.5.7a131
3
+ Version: 0.5.7a133
4
4
  Summary: Classes and common runtime components for building and running Omnata Plugins
5
5
  Author: James Weakley
6
6
  Author-email: james.weakley@omnata.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "omnata-plugin-runtime"
3
- version = "0.5.7-a131"
3
+ version = "0.5.7-a133"
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"
@@ -2242,38 +2242,15 @@ def consumer_udtf(param_docs: Dict[str, Dict[str, Any]]):
2242
2242
 
2243
2243
  if list(params.keys())[1] != 'connection_parameters':
2244
2244
  raise ValueError("The second argument should be 'connection_parameters'.")
2245
-
2246
- # Create a Pydantic model based on the function signature and the provided documentation
2247
- fields = {
2248
- name: (param.annotation, param_docs.get(name, {}).get("default", param.default))
2249
- for name, param in params.items()
2250
- if name != 'cls' and name != 'connection_parameters'
2251
- }
2252
-
2253
- DynamicModel = create_model('DynamicModel', **fields)
2254
-
2255
- # Attach the documentation to the function
2256
- original_process.__doc__ = original_process.__doc__ or ""
2257
- original_process.__doc__ += "\n\nArgs:\n"
2258
- for name, param in params.items():
2259
- if name != 'self':
2260
- doc = param_docs.get(name, {})
2261
- original_process.__doc__ += f" {name} ({param.annotation.__name__}): {doc.get('description', 'No description provided.')}\n"
2245
+
2246
+ if params[list(params.keys())[1]].annotation != Dict:
2247
+ raise ValueError("The second argument must be a dict.")
2262
2248
 
2263
2249
  @wraps(original_process)
2264
2250
  def wrapped_process(self, connection_parameters, *args, **kwargs):
2265
2251
  if connection_parameters is None:
2266
2252
  raise ValueError("Connection not found")
2267
-
2268
- if not isinstance(connection_parameters, Dict):
2269
- raise ValueError("The first argument must be an object, the result of calling PLUGIN_CONNECTION.")
2270
2253
 
2271
- try:
2272
- # Validate the arguments using the dynamic Pydantic model
2273
- validated_args = DynamicModel(**kwargs)
2274
- except ValidationError as e:
2275
- raise ValueError(f"Argument validation error: {e}")
2276
-
2277
2254
  # convert the connection parameters dictionary to a ConnectionConfigurationParameters object which includes the real secrets
2278
2255
  if 'other_secrets_name' in connection_parameters:
2279
2256
  # this is the new way, where the sync engine only passes the name of the secret
@@ -2290,7 +2267,7 @@ def consumer_udtf(param_docs: Dict[str, Dict[str, Any]]):
2290
2267
  parameters = ConnectionConfigurationParameters.model_validate(connection_parameters)
2291
2268
 
2292
2269
  # Pass the validated arguments to the function
2293
- return original_process(self, parameters, *args, **validated_args.dict())
2270
+ return original_process(self, parameters, *args, **kwargs)
2294
2271
  # Replace the original 'process' method with the wrapped version
2295
2272
  setattr(cls, 'process', wrapped_process)
2296
2273
 
@@ -2325,37 +2302,15 @@ def consumer_udf(param_docs: Dict[str, Dict[str, Any]]):
2325
2302
  # Ensure the first argument is mandatory and positional
2326
2303
  if list(params.keys())[0] != 'connection_parameters':
2327
2304
  raise ValueError("The first argument should be 'connection_parameters'.")
2328
-
2329
- # Create a Pydantic model based on the function signature and the provided documentation
2330
- fields = {
2331
- name: (param.annotation, param_docs.get(name, {}).get("default", param.default))
2332
- for name, param in params.items()
2333
- if name != 'connection_parameters'
2334
- }
2335
-
2336
- DynamicModel = create_model('DynamicModel', **fields)
2337
-
2338
- # Attach the documentation to the function
2339
- func.__doc__ = func.__doc__ or ""
2340
- func.__doc__ += "\n\nArgs:\n"
2341
- for name, param in params.items():
2342
- doc = param_docs.get(name, {})
2343
- func.__doc__ += f" {name} ({param.annotation.__name__}): {doc.get('description', 'No description provided.')}\n"
2305
+ if params[list(params.keys())[0]].annotation != Dict:
2306
+ raise ValueError("The first argument must be a dict.")
2344
2307
 
2345
2308
  @wraps(func)
2346
2309
  def wrapper(self, connection_parameters, *args, **kwargs):
2347
2310
  if connection_parameters is None:
2348
2311
  raise ValueError("Connection not found")
2349
2312
 
2350
- if not isinstance(connection_parameters, Dict):
2351
- raise ValueError("The first argument must be an object, the result of calling PLUGIN_CONNECTION.")
2352
2313
 
2353
- try:
2354
- # Validate the arguments using the dynamic Pydantic model
2355
- validated_args = DynamicModel(**kwargs)
2356
- except ValidationError as e:
2357
- raise ValueError(f"Argument validation error: {e}")
2358
-
2359
2314
  # convert the connection parameters dictionary to a ConnectionConfigurationParameters object which includes the real secrets
2360
2315
  if 'other_secrets_name' in connection_parameters:
2361
2316
  # this is the new way, where the sync engine only passes the name of the secret
@@ -2372,7 +2327,7 @@ def consumer_udf(param_docs: Dict[str, Dict[str, Any]]):
2372
2327
  parameters = ConnectionConfigurationParameters.model_validate(connection_parameters)
2373
2328
 
2374
2329
  # Pass the validated arguments to the function
2375
- return func(parameters, *args, **validated_args.dict())
2330
+ return func(parameters, *args, **kwargs)
2376
2331
 
2377
2332
  wrapper._is_omnata_consumer_udf = True
2378
2333
  return wrapper