35 print('unwrap %s: %s: %s' % (getid(w), getid(result), msg)) |
35 print('unwrap %s: %s: %s' % (getid(w), getid(result), msg)) |
36 |
36 |
37 batchwrap(wrappers + [wrappers[0]]) |
37 batchwrap(wrappers + [wrappers[0]]) |
38 batchunwrap([(wrappers[i] if i >= 0 else None) |
38 batchunwrap([(wrappers[i] if i >= 0 else None) |
39 for i in [3, None, 0, 4, 0, 2, 1, None]]) |
39 for i in [3, None, 0, 4, 0, 2, 1, None]]) |
|
40 |
|
41 wrap0 = extensions.wrappedfunction(dummy, 'getstack', wrappers[0]) |
|
42 wrap1 = extensions.wrappedfunction(dummy, 'getstack', wrappers[1]) |
|
43 |
|
44 # Use them in a different order from how they were created to check that |
|
45 # the wrapping happens in __enter__, not in __init__ |
|
46 print('context manager', dummy.getstack()) |
|
47 with wrap1: |
|
48 print('context manager', dummy.getstack()) |
|
49 with wrap0: |
|
50 print('context manager', dummy.getstack()) |
|
51 # Bad programmer forgets to unwrap the function, but the context |
|
52 # managers still unwrap their wrappings. |
|
53 extensions.wrapfunction(dummy, 'getstack', wrappers[2]) |
|
54 print('context manager', dummy.getstack()) |
|
55 print('context manager', dummy.getstack()) |
|
56 print('context manager', dummy.getstack()) |