def test_load_transforms(self): ttc = TreeTransformController() ttc.ast_transformer_manager.get_ast_transformers( "ctree.transformations") assert_greater(ttc.ast_transformer_manager.count(), 1) assert_is_instance(ttc.ast_transformer_manager[0], AstTransformerItem)
def test_apply_transforms(self): ttc = TreeTransformController() ttc.ast_transformer_manager.get_ast_transformers( "ctree.transformations") ttc.ast_tree_manager.new_item_from_file("sample.py") new_ast_item = ttc.apply_transform(0, 0) assert_is_instance(new_ast_item, AstTreeItem) assert_equal(new_ast_item, ttc.ast_tree_manager[1]) assert_is_instance(new_ast_item.parent_link, AstLink) assert_equal(new_ast_item.parent_link.parent_ast_tree, ttc.ast_tree_manager[0])
def test_load_ast(self): ttc = TreeTransformController() ttc.ast_tree_manager.new_item_from_file("sample.py") assert_equal(ttc.ast_tree_manager.count(), 1) assert_is_instance(ttc.ast_tree_manager[0], AstTreeItem)
def test_create(self): ttc = TreeTransformController() assert_is_instance(ttc, TreeTransformController) assert_is_instance(ttc.ast_tree_manager, AstTreeManager) assert_is_instance(ttc.ast_transformer_manager, AstTransformerManager)
def __init__(self, file_name=None, mode='exec', packages=None, width=None, height=None): """ Constructor AST browser windows that displays the Abstract Syntax Tree of source_text code. The source_text can be given as text in the source_text parameter, or can be read from a file. The file_name parameter overrides the source_text parameter. The mode argument specifies what kind of code must be compiled; it can be 'exec' if source_text consists of a sequence of statements, 'eval' if it consists of a single expression, or 'single' if it consists of a single interactive statement (in the latter case, expression statements that evaluate to something other than None will be printed). (see http://docs.python.org/2/library/functions.html#compile) """ super(AstToolBox, self).__init__() valid_modes = ['exec', 'eval', 'single'] if mode not in valid_modes: raise ValueError("Mode must be one of: {}".format(valid_modes)) self._mode = 'exec' self.auto_expand_ast = True self.start_packages = packages if packages else [] self.start_packages += [ 'ctree.transformations', 'ctree.c.codegen', 'ctree.ocl.codegen', 'ctree.omp.codegen', ] self.settings = None # Set up the UI self.tree_transform_controller = TreeTransformController() # there is a little trick here so both presenters know about their partner self.code_presenter = CodePresenter( tree_transform_controller=self.tree_transform_controller ) self.transform_presenter = TransformPresenter( tree_transform_controller=self.tree_transform_controller, start_packages=self.start_packages, ) self.code_presenter.set_transform_presenter(self.transform_presenter) self.transform_presenter.set_code_presenter(self.code_presenter) self.code_presenter.new_item_from_file(file_name) self.transform_presenter.load_files(self.start_packages) central_splitter = QtGui.QSplitter(self, orientation=QtCore.Qt.Horizontal) self.setCentralWidget(central_splitter) central_layout = QtGui.QHBoxLayout() central_splitter.setLayout(central_layout) # Create base tree widget central_layout.addWidget(self.code_presenter.code_pane) central_layout.addWidget(self.transform_presenter.transform_pane) # Splitter parameters central_splitter.setCollapsible(0, True) central_splitter.setCollapsible(1, True) central_splitter.setSizes([AstToolBox.default_left_frame_size, 250]) central_splitter.setStretchFactor(0, 0.5) central_splitter.setStretchFactor(1, 0.5) self._setup_menu() self.setWindowTitle('{}'.format(PROGRAM_NAME)) self.read_settings()
def __init__(self, file_name=None, verbose=False): self.verbose = verbose self.controller = TreeTransformController() self.controller.ast_tree_manager.new_item_from_file(file_name) self.controller.ast_transformer_manager.get_ast_transformers("ctree.transformations")