@@ -313,7 +313,6 @@ async def async_stream_wrapper(*args: Any, **kwargs: Any):
313313 else :
314314 return decorator (func )
315315
316-
317316 def to_runnable (
318317 self ,
319318 func : Callable = None ,
@@ -341,11 +340,15 @@ def sync_wrapper(*args: Any, **kwargs: Any):
341340 config = _convert_config (config )
342341 res = None
343342 try :
343+ extra = {}
344+ if len (args ) > 0 and is_class_func (func ):
345+ extra = {"_inner_class_self" : args [0 ]}
346+ args = args [1 :]
344347 inp = {
345348 "args" : args ,
346349 "kwargs" : kwargs
347350 }
348- res = RunnableLambda (_param_wrapped_func ).invoke (input = inp , config = config )
351+ res = RunnableLambda (_param_wrapped_func ).invoke (input = inp , config = config , ** extra )
349352 if hasattr (res , "__iter__" ):
350353 return res
351354 except StopIteration :
@@ -362,11 +365,15 @@ async def async_wrapper(*args: Any, **kwargs: Any):
362365 config = _convert_config (config )
363366 res = None
364367 try :
368+ extra = {}
369+ if len (args ) > 0 and is_class_func (func ):
370+ extra = {"_inner_class_self" : args [0 ]}
371+ args = args [1 :]
365372 inp = {
366373 "args" : args ,
367374 "kwargs" : kwargs
368375 }
369- res = await RunnableLambda (_param_wrapped_func_async ).ainvoke (input = inp , config = config )
376+ res = await RunnableLambda (_param_wrapped_func_async ).ainvoke (input = inp , config = config , ** extra )
370377 if hasattr (res , "__aiter__" ):
371378 return res
372379 except StopIteration :
@@ -387,11 +394,15 @@ def gen_wrapper(*args: Any, **kwargs: Any):
387394 config = kwargs .pop ("config" , None )
388395 config = _convert_config (config )
389396 try :
397+ extra = {}
398+ if len (args ) > 0 and is_class_func (func ):
399+ extra = {"_inner_class_self" : args [0 ]}
400+ args = args [1 :]
390401 inp = {
391402 "args" : args ,
392403 "kwargs" : kwargs
393404 }
394- gen = RunnableLambda (_param_wrapped_func ).invoke (input = inp , config = config )
405+ gen = RunnableLambda (_param_wrapped_func ).invoke (input = inp , config = config , * extra )
395406 try :
396407 for item in gen :
397408 yield item
@@ -405,11 +416,15 @@ async def async_gen_wrapper(*args: Any, **kwargs: Any):
405416 config = kwargs .pop ("config" , None )
406417 config = _convert_config (config )
407418 try :
419+ extra = {}
420+ if len (args ) > 0 and is_class_func (func ):
421+ extra = {"_inner_class_self" : args [0 ]}
422+ args = args [1 :]
408423 inp = {
409424 "args" : args ,
410425 "kwargs" : kwargs
411426 }
412- gen = RunnableLambda (_param_wrapped_func_async ).invoke (input = inp , config = config )
427+ gen = RunnableLambda (_param_wrapped_func_async ).invoke (input = inp , config = config , ** extra )
413428 items = []
414429 try :
415430 async for item in gen :
@@ -428,15 +443,25 @@ async def async_gen_wrapper(*args: Any, **kwargs: Any):
428443 raise e
429444
430445 # for convert parameter
431- def _param_wrapped_func (input_dict : dict ) -> Any :
432- args = input_dict .get ("args" , ())
433- kwargs = input_dict .get ("kwargs" , {})
434- return func (* args , ** kwargs )
435-
436- async def _param_wrapped_func_async (input_dict : dict ) -> Any :
437- args = input_dict .get ("args" , ())
438- kwargs = input_dict .get ("kwargs" , {})
439- return await func (* args , ** kwargs )
446+ def _param_wrapped_func (input_dict : dict , ** kwargs ) -> Any :
447+ real_args = input_dict .get ("args" , ())
448+ real_kwargs = input_dict .get ("kwargs" , {})
449+
450+ inner_class_self = kwargs .get ("_inner_class_self" , None )
451+ if inner_class_self is not None :
452+ real_args = (inner_class_self , * real_args )
453+
454+ return func (* real_args , ** real_kwargs )
455+
456+ async def _param_wrapped_func_async (input_dict : dict , ** kwargs ) -> Any :
457+ real_args = input_dict .get ("args" , ())
458+ real_kwargs = input_dict .get ("kwargs" , {})
459+
460+ inner_class_self = kwargs .get ("_inner_class_self" , None )
461+ if inner_class_self is not None :
462+ real_args = (inner_class_self , * real_args )
463+
464+ return await func (* real_args , ** real_kwargs )
440465
441466 def _convert_config (config : RunnableConfig = None ) -> RunnableConfig | None :
442467 if config is None :
0 commit comments