Re: [Python-es] Una pregunta sobre la conversion dot = xdot

2012-10-09 Por tema Carlos Zuniga
2012/10/9 Olemis Lang ole...@gmail.com:
 Hola a tod@s !

 Recientemente necesito convertir unos diagramas en formato .dot para
 obtener la misma representación en formato .xdoc . Busqué una librería
 q permitiera hacer esto sin ejecutar los comandos de Graphviz en un
 proceso o hilo aparte . Finalmente encontré yapgvb [1]_ ... pero el
 siguiente ejemplo no me funciona .

  {{{
  #!py

   from yapgvb import Graph
   from cStringIO import StringIO
   gdot = StringIO(digraph G {Hello-World})
   g = Graph.read(gdot)
  Traceback (most recent call last):
File stdin, line 1, in module
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line 253, in 
 read
  newgraph = cls(input_stream_or_filename)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  551, in __init__
  GraphBase.__init__(self, arg)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  283, in __init__
  CGraph.__init__(self,*args,**keywords)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  187, in cgraph_init_wrapper
  CGraph.__original_init__(self, *a,**b)
  Boost.Python.ArgumentError: Python argument types in
  CGraph.__init__(Graph, cStringIO.StringI)
  did not match C++ signature:
  __init__(_object*, _IO_FILE*)
  __init__(_object*, boost::python::str, agraph_type)
  __init__(_object*, boost::python::str)
  __init__(_object*)

  }}}

 Preguntas

   - ¿Conocen alguna forma de hacer funcionar este ejemplo y
 pasar el código .dot a graphviz utilizando un objeto StringIO o
 equivalente (i.e. sin utilizar el sistema de archivos ;) ?

Parece que su constructor también acepta cadenas de python, has
intentado simplemente:

 gdot = digraph G {Hello-World}
 g = Graph.read(gdot)

Saludos
-- 
A menudo unas pocas horas de Prueba y error podrán ahorrarte minutos
de leer manuales.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Una pregunta sobre la conversion dot = xdot

2012-10-09 Por tema Olemis Lang
On 10/9/12, Carlos Zuniga carlos@gmail.com wrote:
 2012/10/9 Olemis Lang ole...@gmail.com:
 Hola a tod@s !

 Recientemente necesito convertir unos diagramas en formato .dot para
 obtener la misma representación en formato .xdoc . Busqué una librería
 q permitiera hacer esto sin ejecutar los comandos de Graphviz en un
 proceso o hilo aparte . Finalmente encontré yapgvb [1]_ ... pero el
 siguiente ejemplo no me funciona .

  {{{
  #!py

   from yapgvb import Graph
   from cStringIO import StringIO
   gdot = StringIO(digraph G {Hello-World})
   g = Graph.read(gdot)
  Traceback (most recent call last):
File stdin, line 1, in module
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line 253,
 in read
  newgraph = cls(input_stream_or_filename)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  551, in __init__
  GraphBase.__init__(self, arg)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  283, in __init__
  CGraph.__init__(self,*args,**keywords)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  187, in cgraph_init_wrapper
  CGraph.__original_init__(self, *a,**b)
  Boost.Python.ArgumentError: Python argument types in
  CGraph.__init__(Graph, cStringIO.StringI)
  did not match C++ signature:
  __init__(_object*, _IO_FILE*)
  __init__(_object*, boost::python::str, agraph_type)
  __init__(_object*, boost::python::str)
  __init__(_object*)

  }}}

 Preguntas

   - ¿Conocen alguna forma de hacer funcionar este ejemplo y
 pasar el código .dot a graphviz utilizando un objeto StringIO o
 equivalente (i.e. sin utilizar el sistema de archivos ;) ?

 Parece que su constructor también acepta cadenas de python, has
 intentado simplemente:

 gdot = digraph G {Hello-World}
 g = Graph.read(gdot)


rats !

Bue ... resulta ser q la definición creo q decía q si ese parámetro
era de tipo str entonces representaba el camino a un fichero en el
sistema de archivos . Sin embargo ...

{{{
#!py

 from yapgvb import Graph
 gdot = digraph G {Hello-World}
 g = Graph(gdot)
 g
Graph digraph G {Hello-World}
 g.layout('dot')
0
 from StringIO import StringIO
 gout = StringIO()
 g.render(gout, 'xdot')
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
341, in render
result = rendering_context.render(self, format, outstream)
Boost.Python.ArgumentError: Python argument types in
RenderingContext.render(RenderingContext, Graph, str, instance)
did not match C++ signature:
render(GVCWrapper {lvalue}, Graph*, boost::python::str, boost::python::str)
render(GVCWrapper {lvalue}, Graph*, boost::python::str, _IO_FILE*)
 from sys import stdout
 g.render(stdout, 'xdot')
graph digraph G {Hello-World} {
graph [bb=0,0,0,0,
_draw_=c 5 -white C 5 -white P 4 0 0 0 0 0 0 0 0 ,
xdotversion=1.2];
}
0

}}}

... o sea q si bien no tengo ese problema para leer el dot (50% a mi
favor) continúo sufriendo las consecuencias para salvar el xdot en un
stream in-memory .

:-/

... pero ...

{{{
#!py

 from cStringIO import StringIO
 gout = StringIO()
 g.render(stdout, 'xdot')
graph digraph G {Hello-World} {
graph [bb=0,0,0,0,
_draw_=c 5 -white C 5 -white P 4 0 0 0 0 0 0 0 0 ,
xdotversion=1.2];
}
0

}}}

al parecer como cStringIO está hecho en C resulta más amigable para
«conectarse» con los bindings de Boost.Python  ... y bue ... funciona
100%

:)

Gracias por su ayuda !

-- 
Regards,

Olemis.

Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/

Featured article:
Resolviendo el problema 1 de la IMO 2012 con inversión -
http://simelo-es.blogspot.com/2012/08/resolviendo-el-problema-1-de-la-imo.html
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Una pregunta sobre la conversion dot = xdot

2012-10-09 Por tema Olemis Lang
On 10/9/12, Olemis Lang ole...@gmail.com wrote:
 On 10/9/12, Carlos Zuniga carlos@gmail.com wrote:
 2012/10/9 Olemis Lang ole...@gmail.com:
 Hola a tod@s !

 Recientemente necesito convertir unos diagramas en formato .dot para
 obtener la misma representación en formato .xdoc . Busqué una librería
 q permitiera hacer esto sin ejecutar los comandos de Graphviz en un
 proceso o hilo aparte . Finalmente encontré yapgvb [1]_ ... pero el
 siguiente ejemplo no me funciona .

  {{{
  #!py

   from yapgvb import Graph
   from cStringIO import StringIO
   gdot = StringIO(digraph G {Hello-World})
   g = Graph.read(gdot)
  Traceback (most recent call last):
File stdin, line 1, in module
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line 253,
 in read
  newgraph = cls(input_stream_or_filename)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  551, in __init__
  GraphBase.__init__(self, arg)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  283, in __init__
  CGraph.__init__(self,*args,**keywords)
File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
  187, in cgraph_init_wrapper
  CGraph.__original_init__(self, *a,**b)
  Boost.Python.ArgumentError: Python argument types in
  CGraph.__init__(Graph, cStringIO.StringI)
  did not match C++ signature:
  __init__(_object*, _IO_FILE*)
  __init__(_object*, boost::python::str, agraph_type)
  __init__(_object*, boost::python::str)
  __init__(_object*)

  }}}

 Preguntas

   - ¿Conocen alguna forma de hacer funcionar este ejemplo y
 pasar el código .dot a graphviz utilizando un objeto StringIO o
 equivalente (i.e. sin utilizar el sistema de archivos ;) ?

 Parece que su constructor también acepta cadenas de python, has
 intentado simplemente:

 gdot = digraph G {Hello-World}
 g = Graph.read(gdot)


 rats !

[...]

A ver , rectifico todo lo q dije antes (y no repetí ...) pq está
terriblemente mal . Probé esto con cierta prisa y está mal todo lo q
dije ... a ver ... comentarios in-line en el código ...

{{{
#!py

# Imports

 from yapgvb import Graph
 from sys import stdout
 import cStringIO
 import StringIO

# .dot graph

 gdot = digraph G {Hello-World}

# Passing .dot grap in to __init__

 g = Graph(gdot)
 g.layout('dot')
0

# Same problem with cStringIO

 gout = cStringIO.StringIO()
 g.render(gout, 'xdot')
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
341, in render
result = rendering_context.render(self, format, outstream)
Boost.Python.ArgumentError: Python argument types in
RenderingContext.render(RenderingContext, Graph, str, cStringIO.StringO)
did not match C++ signature:
render(GVCWrapper {lvalue}, Graph*, boost::python::str, boost::python::str)
render(GVCWrapper {lvalue}, Graph*, boost::python::str, _IO_FILE*)

# Same problem with StringIO

 gout = StringIO.StringIO()
 g.render(gout, 'xdot')
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
341, in render
result = rendering_context.render(self, format, outstream)
Boost.Python.ArgumentError: Python argument types in
RenderingContext.render(RenderingContext, Graph, str, instance)
did not match C++ signature:
render(GVCWrapper {lvalue}, Graph*, boost::python::str, boost::python::str)
render(GVCWrapper {lvalue}, Graph*, boost::python::str, _IO_FILE*)

# Works with stdout but ... outputs empty graph :'(

 g.render(stdout, 'xdot')
graph digraph G {Hello-World} {
graph [bb=0,0,0,0,
_draw_=c 5 -white C 5 -white P 4 0 0 0 0 0 0 0 0 ,
xdotversion=1.2];
}
0

 g = Graph()

# Reading from string ... rats !

 g.read(gdot)
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line 249, in read
input_stream_or_filename = open(input_stream_or_filename,'r')
IOError: [Errno 2] No such file or directory: 'digraph G {Hello-World}'

# Same problem reading from cStringIO

 gin = cStringIO.StringIO(gdot)
 g.read(gin)
Traceback (most recent call last):
  File stdin, line 1, in module
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line 253, in read
newgraph = cls(input_stream_or_filename)
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
551, in __init__
GraphBase.__init__(self, arg)
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
283, in __init__
CGraph.__init__(self,*args,**keywords)
  File /usr/lib/python2.6/dist-packages/yapgvb/__init__.py, line
187, in cgraph_init_wrapper
CGraph.__original_init__(self, *a,**b)
Boost.Python.ArgumentError: Python argument types in
CGraph.__init__(Graph, cStringIO.StringI)
did not match C++ signature:
__init__(_object*, _IO_FILE*)
__init__(_object*, boost::python::str, agraph_type)
__init__(_object*,