def __init__(self, titulo, src, modulos, usuario=None, restringirPrivados=True): self._caminho = src self._titulo = titulo self._sequencia = PicSequencia(titulo) self._filtrar = Filtro(modulos=modulos, restringirPrivados=restringirPrivados) self._contextoInitical = self._contexto = ActorContext(titulo) self._traceAntigo = None
class DiagramaDeSequencia(object): """ DiagramaDeSequencia: Criar um diagrama de sequencia apartir da execução de um código Exemplo: >>> with DiagramaDeSequencia(titulo="Diagrama de sequencia", src="caminho.svg", modulos=['Teste']) ... t = Teste(actor=Gustavo) \ código do ... t.testando() / diagrama Diagrama de sequencia :Exemplo : : : Teste(actor=Gustavo) : | |--------------------->: : | | «create» | | : | | | |___inicializeTest() : | | | | | : | | || |<-Ꞌ : | | || | getExample() : | | || |--------------------->: | | testando() : : | |-------------------->| | : """ def __init__(self, titulo, src, modulos, usuario=None, restringirPrivados=True): self._caminho = src self._titulo = titulo self._sequencia = PicSequencia(titulo) self._filtrar = Filtro(modulos=modulos, restringirPrivados=restringirPrivados) self._contextoInitical = self._contexto = ActorContext(titulo) self._traceAntigo = None def trace(self, frame, tipoDeChamada, retorno): if self._traceAntigo: self._traceAntigo(frame, tipoDeChamada, _) sinal = Sinal(frame) if self._filtrar(sinal): if tipoDeChamada == 'call': self._contexto = self._contexto.menssagem(sinal) elif tipoDeChamada == "return" and retorno is not None: self._contexto.feedback(retorno) def gravar(self): self._traceAntigo = sys.getprofile() sys.setprofile(self.trace) return self def __enter__(self): self.gravar() def __exit__(self, type, traceback, msg): self.parar() def parar(self): sys.setprofile(self._traceAntigo) self._contextoInitical.rederizar(self._sequencia) self._criarGrafico() def __repr__(self): return '<Diagrama de Sequencia: %s src(%s)>' %(self._titulo, self._caminho) def _criarGrafico(self): pic = self._sequencia.picDiagrama() pic2plot(pic, self._caminho)