def concatenate(cls, blocks, assume_contiguous=False): """ Concatenate a bunch of blocks into one block. @type blocks: sequence of L{PythonBlock}s and/or L{PythonStatement}s @param assume_contiguous: Whether to assume, without checking, that the input blocks were originally all contiguous. This must be set to True to indicate the caller understands the assumption; False is not implemented. """ if not assume_contiguous: raise NotImplementedError blocks = [PythonBlock(b) for b in blocks] if len(blocks) == 1: return blocks[0] assert blocks text = FileText.concatenate([b.text for b in blocks]) # The contiguous assumption is important here because C{ast_node} # contains line information that would otherwise be wrong. ast_nodes = [n for b in blocks for n in b.annotated_ast_node.body] flags = blocks[0].flags return cls.__construct_from_annotated_ast(ast_nodes, text, flags)
def pretty_print(self, params=None): params = ImportFormatParams(params) result = [block.pretty_print(params=params) for block in self.blocks] return FileText.concatenate(result)