@@ -2,17 +2,38 @@ class WithObjClass:
22 def __init__ (self , suppress , fn_list ):
33 self .suppress = suppress
44 self .fn_list = fn_list
5+
56 def __enter__ (self ):
67 self .fn_list .append ("enter" )
8+ return self # Return self so methods can be called on the bound variable
9+
710 def doit_noerr (self ):
811 return 1
12+
913 def doit_err (self ):
1014 raise Exception ("Spam" , "Eggs" )
15+
1116 def __exit__ (self , ex_type , ex_val , ex_traceback ):
1217 self .fn_list .append ("exit: " + str (ex_val ))
1318 return self .suppress
1419
1520
21+ class FileWrapper :
22+ """Context manager where __enter__ returns a different object"""
23+
24+ def __init__ (self , content ):
25+ self .content = content
26+
27+ def __enter__ (self ):
28+ # Return a different object with the content
29+ import io
30+
31+ return io .StringIO (self .content )
32+
33+ def __exit__ (self , * args ):
34+ return False
35+
36+
1637def for_iter (arg ):
1738 retval = []
1839 for item in arg :
@@ -24,15 +45,13 @@ def calling_custom_clojure_fn(arg):
2445 return arg .clojure_fn ()
2546
2647
27-
28- def complex_fn (a , b , c : str = 5 , * args , d = 10 , ** kwargs ):
29- return {"a" : a ,
30- "b" : b ,
31- "c" : c ,
32- "args" : args ,
33- "d" : d ,
34- "kwargs" : kwargs }
48+ def complex_fn (a , b , c : str = 5 , * args , d = 10 , ** kwargs ):
49+ return {"a" : a , "b" : b , "c" : c , "args" : args , "d" : d , "kwargs" : kwargs }
3550
3651
37- complex_fn_testcases = {"complex_fn(1, 2, c=10, d=10, e=10)" :complex_fn (1 , 2 , c = 10 , d = 10 , e = 10 ),
38- "complex_fn(1, 2, 10, 11, 12, d=10, e=10)" :complex_fn (1 , 2 , 10 , 11 , 12 , d = 10 , e = 10 )}
52+ complex_fn_testcases = {
53+ "complex_fn(1, 2, c=10, d=10, e=10)" : complex_fn (1 , 2 , c = 10 , d = 10 , e = 10 ),
54+ "complex_fn(1, 2, 10, 11, 12, d=10, e=10)" : complex_fn (
55+ 1 , 2 , 10 , 11 , 12 , d = 10 , e = 10
56+ ),
57+ }
0 commit comments