Coverage for /pythoncovmergedfiles/medio/medio/src/underscore/underscore/environment.py: 97%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

33 statements  

1# Copyright (c) 2013 Huan Do, http://huan.do 

2 

3import ast 

4 

5from frame import FRAMES, ModuleFrame 

6from frame_context_manager import FrameContextManager 

7import declaration 

8 

9class Environment(object): 

10 def __init__(self, tree): 

11 module_frame = ModuleFrame( 

12 node=tree, 

13 parent=None, 

14 env=self) 

15 

16 self.frames = { 

17 tree: module_frame 

18 } 

19 

20 self.current_frame = module_frame 

21 

22 self.tree= tree 

23 self.constants = {} 

24 self.starred = False 

25 self._generator = declaration.generator() 

26 

27 @property 

28 def global_frame(self): 

29 return self.frames[self.tree] 

30 

31 def generate_new_decl(self): 

32 return next(self._generator) 

33 

34 @property 

35 def _frames(self): 

36 return self.frames 

37 

38 def Frame(self, node): 

39 self.current_frame = frame = self._frames[node] 

40 return FrameContextManager(frame, self) 

41 

42 def extend_frame(self, node): 

43 assert node not in self._frames 

44 FrameConstructor = FRAMES[type(node)] 

45 frame = FrameConstructor(node, self.current_frame, self) 

46 self._frames[node] = frame 

47 return FrameContextManager(frame, self) 

48 

49 def withdraw_frame(self): 

50 self.current_frame = self.current_frame.parent