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
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
1# Copyright (c) 2013 Huan Do, http://huan.do
3import ast
5from frame import FRAMES, ModuleFrame
6from frame_context_manager import FrameContextManager
7import declaration
9class Environment(object):
10 def __init__(self, tree):
11 module_frame = ModuleFrame(
12 node=tree,
13 parent=None,
14 env=self)
16 self.frames = {
17 tree: module_frame
18 }
20 self.current_frame = module_frame
22 self.tree= tree
23 self.constants = {}
24 self.starred = False
25 self._generator = declaration.generator()
27 @property
28 def global_frame(self):
29 return self.frames[self.tree]
31 def generate_new_decl(self):
32 return next(self._generator)
34 @property
35 def _frames(self):
36 return self.frames
38 def Frame(self, node):
39 self.current_frame = frame = self._frames[node]
40 return FrameContextManager(frame, self)
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)
49 def withdraw_frame(self):
50 self.current_frame = self.current_frame.parent