@@ -969,13 +969,14 @@ def decorator(func):
969969
970970 # Async generator function
971971 if inspect .isasyncgenfunction (func ):
972+
972973 @functools .wraps (func )
973974 def asyncgen_wrapper (* args , ** func_kwargs ):
974975
975976 sig = inspect .signature (func )
976977 bound = sig .bind (* args , ** func_kwargs )
977978 bound .apply_defaults ()
978-
979+
979980 complete_kwargs = dict (bound .arguments )
980981 if "self" in complete_kwargs :
981982 complete_kwargs ["self" ] = replace_self_with_class_name (
@@ -995,6 +996,7 @@ def asyncgen_wrapper(*args, **func_kwargs):
995996 )
996997 observer .__enter__ ()
997998 agen = func (* args , ** func_kwargs )
999+
9981000 async def gen ():
9991001 try :
10001002 async for chunk in agen :
@@ -1003,13 +1005,15 @@ async def gen():
10031005 except Exception as e :
10041006 observer .__exit__ (type (e ), e , e .__traceback__ )
10051007 raise
1008+
10061009 return gen ()
1007-
1010+
10081011 setattr (asyncgen_wrapper , "_is_deepeval_observed" , True )
10091012 return asyncgen_wrapper
10101013
10111014 # Sync generator function
10121015 if inspect .isgeneratorfunction (func ):
1016+
10131017 @functools .wraps (func )
10141018 def gen_wrapper (* args , ** func_kwargs ):
10151019
@@ -1026,7 +1030,7 @@ def gen_wrapper(*args, **func_kwargs):
10261030 "observe_kwargs" : observe_kwargs ,
10271031 "function_kwargs" : make_json_serializable (complete_kwargs ),
10281032 }
1029-
1033+
10301034 observer = Observer (
10311035 type ,
10321036 metrics = metrics ,
@@ -1036,13 +1040,15 @@ def gen_wrapper(*args, **func_kwargs):
10361040 )
10371041 observer .__enter__ ()
10381042 original_gen = func (* args , ** func_kwargs )
1043+
10391044 def gen ():
10401045 try :
10411046 yield from original_gen
10421047 observer .__exit__ (None , None , None )
10431048 except Exception as e :
10441049 observer .__exit__ (type (e ), e , e .__traceback__ )
10451050 raise
1051+
10461052 return gen ()
10471053
10481054 setattr (gen_wrapper , "_is_deepeval_observed" , True )
0 commit comments