Module(body=[Expr(value=Str(s='\nAdapted from http://hg.python.org/cpython/file/936621d33c38/Lib/test/test_scope.py\n')), Print(dest=None, values=[Str(s='\ntestSimpleNesting')], nl=True), FunctionDef(name='make_adder', args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='adder', args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=BinOp(left=Name(id='x', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load())))], decorator_list=[]), Return(value=Name(id='adder', ctx=Load()))], decorator_list=[]), Assign(targets=[Name(id='inc', ctx=Store())], value=Call(func=Name(id='make_adder', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id='plus10', ctx=Store())], value=Call(func=Name(id='make_adder', ctx=Load()), args=[Num(n=10)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), Num(n=2), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=2)])], nl=True), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), Num(n=-3), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=-3)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), Num(n=18), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=18)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), Num(n=8), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=8)])], nl=True), Print(dest=None, values=[Str(s='\ntestSimpleAndRebinding')], nl=True), FunctionDef(name='make_adder3', args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='adder', args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=BinOp(left=Name(id='x', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load())))], decorator_list=[]), Assign(targets=[Name(id='x', ctx=Store())], value=BinOp(left=Name(id='x', ctx=Load()), op=Add(), right=Num(n=1))), Return(value=Name(id='adder', ctx=Load()))], decorator_list=[]), Assign(targets=[Name(id='inc', ctx=Store())], value=Call(func=Name(id='make_adder3', ctx=Load()), args=[Num(n=0)], keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id='plus10', ctx=Store())], value=Call(func=Name(id='make_adder3', ctx=Load()), args=[Num(n=9)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), Num(n=2), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=2)])], nl=True), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), Num(n=-3), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=-3)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), Num(n=18), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=18)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), Num(n=8), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=8)])], nl=True), Print(dest=None, values=[Str(s='\ntestNestingGlobalNoFree')], nl=True), FunctionDef(name='make_adder4', args=arguments(args=[], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='nest', args=arguments(args=[], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='nest', args=arguments(args=[], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='adder', args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=BinOp(left=Name(id='global_x', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load())))], decorator_list=[]), Return(value=Name(id='adder', ctx=Load()))], decorator_list=[]), Return(value=Call(func=Name(id='nest', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None))], decorator_list=[]), Return(value=Call(func=Name(id='nest', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None))], decorator_list=[]), Assign(targets=[Name(id='global_x', ctx=Store())], value=Num(n=1)), Assign(targets=[Name(id='adder', ctx=Store())], value=Call(func=Name(id='make_adder4', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id='x', ctx=Store())], value=Call(func=Name(id='adder', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Name(id='x', ctx=Load()), Num(n=2), Compare(left=Name(id='x', ctx=Load()), ops=[Eq()], comparators=[Num(n=2)])], nl=True), Assign(targets=[Name(id='global_x', ctx=Store())], value=Num(n=10)), Assign(targets=[Name(id='x', ctx=Store())], value=Call(func=Name(id='adder', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Name(id='x', ctx=Load()), Num(n=8), Compare(left=Name(id='x', ctx=Load()), ops=[Eq()], comparators=[Num(n=8)])], nl=True), Print(dest=None, values=[Str(s='\ntestNestingPlusFreeRefToGlobal')], nl=True), FunctionDef(name='make_adder6', args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Global(names=['global_nest_x']), FunctionDef(name='adder', args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=BinOp(left=Name(id='global_nest_x', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load())))], decorator_list=[]), Assign(targets=[Name(id='global_nest_x', ctx=Store())], value=Name(id='x', ctx=Load())), Return(value=Name(id='adder', ctx=Load()))], decorator_list=[]), Assign(targets=[Name(id='inc', ctx=Store())], value=Call(func=Name(id='make_adder6', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), Num(n=2), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=2)])], nl=True), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), Num(n=-3), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=-3)])], nl=True), Assign(targets=[Name(id='plus10', ctx=Store())], value=Call(func=Name(id='make_adder6', ctx=Load()), args=[Num(n=10)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), Num(n=18), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=18)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), Num(n=8), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=8)])], nl=True), Print(dest=None, values=[Str(s='\ntestNearestEnclosingScope')], nl=True), FunctionDef(name='f', args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='g', args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Assign(targets=[Name(id='x', ctx=Store())], value=Num(n=42)), FunctionDef(name='h', args=arguments(args=[Name(id='z', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=BinOp(left=Name(id='x', ctx=Load()), op=Add(), right=Name(id='z', ctx=Load())))], decorator_list=[]), Return(value=Name(id='h', ctx=Load()))], decorator_list=[]), Return(value=Call(func=Name(id='g', ctx=Load()), args=[Num(n=2)], keywords=[], starargs=None, kwargs=None))], decorator_list=[]), Assign(targets=[Name(id='test_func', ctx=Store())], value=Call(func=Name(id='f', ctx=Load()), args=[Num(n=10)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='test_func', ctx=Load()), args=[Num(n=5)], keywords=[], starargs=None, kwargs=None), Num(n=47), Compare(left=Call(func=Name(id='test_func', ctx=Load()), args=[Num(n=5)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=47)])], nl=True), Print(dest=None, values=[Str(s='\ntestMixedFreevarsAndCellvars')], nl=True), FunctionDef(name='identity', args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=Name(id='x', ctx=Load()))], decorator_list=[]), FunctionDef(name='f', args=arguments(args=[Name(id='x', ctx=Param()), Name(id='y', ctx=Param()), Name(id='z', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='g', args=arguments(args=[Name(id='a', ctx=Param()), Name(id='b', ctx=Param()), Name(id='c', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Assign(targets=[Name(id='a', ctx=Store())], value=BinOp(left=Name(id='a', ctx=Load()), op=Add(), right=Name(id='x', ctx=Load()))), FunctionDef(name='h', args=arguments(args=[], vararg=None, kwarg=None, defaults=[]), body=[Return(value=Call(func=Name(id='identity', ctx=Load()), args=[BinOp(left=Name(id='z', ctx=Load()), op=Mult(), right=BinOp(left=Name(id='b', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load())))], keywords=[], starargs=None, kwargs=None))], decorator_list=[]), Assign(targets=[Name(id='y', ctx=Store())], value=BinOp(left=Name(id='c', ctx=Load()), op=Add(), right=Name(id='z', ctx=Load()))), Return(value=Name(id='h', ctx=Load()))], decorator_list=[]), Return(value=Name(id='g', ctx=Load()))], decorator_list=[]), Assign(targets=[Name(id='g', ctx=Store())], value=Call(func=Name(id='f', ctx=Load()), args=[Num(n=1), Num(n=2), Num(n=3)], keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id='h', ctx=Store())], value=Call(func=Name(id='g', ctx=Load()), args=[Num(n=2), Num(n=4), Num(n=6)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='h', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), Num(n=39), Compare(left=Call(func=Name(id='h', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=39)])], nl=True), Print(dest=None, values=[Str(s='\ntestFreeVarInMethod')], nl=True), Assign(targets=[Name(id='method_and_var', ctx=Store())], value=Str(s='var')), ClassDef(name='Test', bases=[], body=[FunctionDef(name='method_and_var', args=arguments(args=[Name(id='self', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=Str(s='method'))], decorator_list=[]), FunctionDef(name='test', args=arguments(args=[Name(id='self', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=Name(id='method_and_var', ctx=Load()))], decorator_list=[]), FunctionDef(name='actual_global', args=arguments(args=[Name(id='self', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=Call(func=Name(id='str', ctx=Load()), args=[Str(s='global')], keywords=[], starargs=None, kwargs=None))], decorator_list=[]), FunctionDef(name='str', args=arguments(args=[Name(id='self', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Return(value=Call(func=Name(id='str', ctx=Load()), args=[Name(id='self', ctx=Load())], keywords=[], starargs=None, kwargs=None))], decorator_list=[])], decorator_list=[]), Assign(targets=[Name(id='t', ctx=Store())], value=Call(func=Name(id='Test', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Attribute(value=Name(id='t', ctx=Load()), attr='test', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), Str(s='var'), Compare(left=Call(func=Attribute(value=Name(id='t', ctx=Load()), attr='test', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Str(s='var')])], nl=True), Print(dest=None, values=[Call(func=Attribute(value=Name(id='t', ctx=Load()), attr='method_and_var', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), Str(s='method'), Compare(left=Call(func=Attribute(value=Name(id='t', ctx=Load()), attr='method_and_var', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Str(s='method')])], nl=True), Print(dest=None, values=[Call(func=Attribute(value=Name(id='t', ctx=Load()), attr='actual_global', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), Str(s='global'), Compare(left=Call(func=Attribute(value=Name(id='t', ctx=Load()), attr='actual_global', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Str(s='global')])], nl=True), Print(dest=None, values=[Str(s='\ntestRecursion')], nl=True), FunctionDef(name='f', args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[FunctionDef(name='fact', args=arguments(args=[Name(id='n', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[If(test=Compare(left=Name(id='n', ctx=Load()), ops=[Eq()], comparators=[Num(n=0)]), body=[Return(value=Num(n=1))], orelse=[Return(value=BinOp(left=Name(id='n', ctx=Load()), op=Mult(), right=Call(func=Name(id='fact', ctx=Load()), args=[BinOp(left=Name(id='n', ctx=Load()), op=Sub(), right=Num(n=1))], keywords=[], starargs=None, kwargs=None)))])], decorator_list=[]), If(test=Compare(left=Name(id='x', ctx=Load()), ops=[GtE()], comparators=[Num(n=0)]), body=[Return(value=Call(func=Name(id='fact', ctx=Load()), args=[Name(id='x', ctx=Load())], keywords=[], starargs=None, kwargs=None))], orelse=[Raise(type=Name(id='ValueError', ctx=Load()), inst=Str(s='x must be >=0'), tback=None)])], decorator_list=[]), Print(dest=None, values=[Call(func=Name(id='f', ctx=Load()), args=[Num(n=6)], keywords=[], starargs=None, kwargs=None), Num(n=720), Compare(left=Call(func=Name(id='f', ctx=Load()), args=[Num(n=6)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=720)])], nl=True), Print(dest=None, values=[Str(s='\ntestLambdas')], nl=True), Assign(targets=[Name(id='f1', ctx=Store())], value=Lambda(args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=Lambda(args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=BinOp(left=Name(id='x', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load()))))), Assign(targets=[Name(id='inc', ctx=Store())], value=Call(func=Name(id='f1', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id='plus10', ctx=Store())], value=Call(func=Name(id='f1', ctx=Load()), args=[Num(n=10)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), Num(n=2), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=1)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=2)])], nl=True), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), Num(n=-3), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=-4)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=-3)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), Num(n=18), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=8)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=18)])], nl=True), Print(dest=None, values=[Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), Num(n=8), Compare(left=Call(func=Name(id='plus10', ctx=Load()), args=[Num(n=-2)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=8)])], nl=True), Assign(targets=[Name(id='f3', ctx=Store())], value=Lambda(args=arguments(args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=Lambda(args=arguments(args=[Name(id='y', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=BinOp(left=Name(id='global_x', ctx=Load()), op=Add(), right=Name(id='y', ctx=Load()))))), Assign(targets=[Name(id='global_x', ctx=Store())], value=Num(n=1)), Assign(targets=[Name(id='inc', ctx=Store())], value=Call(func=Name(id='f3', ctx=Load()), args=[Name(id='None', ctx=Load())], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Call(func=Name(id='inc', ctx=Load()), args=[Num(n=2)], keywords=[], starargs=None, kwargs=None), Num(n=3), Compare(left=Call(func=Name(id='inc', ctx=Load()), args=[Num(n=2)], keywords=[], starargs=None, kwargs=None), ops=[Eq()], comparators=[Num(n=3)])], nl=True)])