[pypy-dev] [pypy-commit] pypy default: graphviewer - split the dot2plain function into one for local and one for the codespeak cgi
Maciej Fijalkowski
fijall at gmail.com
Mon Sep 26 13:53:44 CEST 2011
Can't we just kill codespeak's CGI?
On Mon, Sep 26, 2011 at 7:40 AM, RonnyPfannschmidt
<noreply at buildbot.pypy.org> wrote:
> Author: Ronny Pfannschmidt <Ronny.Pfannschmidt at gmx.de>
> Branch:
> Changeset: r47606:7acf2b8fcafd
> Date: 2011-09-26 12:40 +0200
> http://bitbucket.org/pypy/pypy/changeset/7acf2b8fcafd/
>
> Log: graphviewer - split the dot2plain function into one for local and
> one for the codespeak cgi
>
> diff --git a/dotviewer/graphparse.py b/dotviewer/graphparse.py
> --- a/dotviewer/graphparse.py
> +++ b/dotviewer/graphparse.py
> @@ -36,48 +36,45 @@
> print >> sys.stderr, "Warning: could not guess file type, using 'dot'"
> return 'unknown'
>
> -def dot2plain(content, contenttype, use_codespeak=False):
> - if contenttype == 'plain':
> - # already a .plain file
> - return content
> +def dot2plain_graphviz(content, contenttype, use_codespeak=False):
> + if contenttype != 'neato':
> + cmdline = 'dot -Tplain'
> + else:
> + cmdline = 'neato -Tplain'
> + #print >> sys.stderr, '* running:', cmdline
> + close_fds = sys.platform != 'win32'
> + p = subprocess.Popen(cmdline, shell=True, close_fds=close_fds,
> + stdin=subprocess.PIPE, stdout=subprocess.PIPE)
> + (child_in, child_out) = (p.stdin, p.stdout)
> + try:
> + import thread
> + except ImportError:
> + bkgndwrite(child_in, content)
> + else:
> + thread.start_new_thread(bkgndwrite, (child_in, content))
> + plaincontent = child_out.read()
> + child_out.close()
> + if not plaincontent: # 'dot' is likely not installed
> + raise PlainParseError("no result from running 'dot'")
> + return plaincontent
>
> - if not use_codespeak:
> - if contenttype != 'neato':
> - cmdline = 'dot -Tplain'
> - else:
> - cmdline = 'neato -Tplain'
> - #print >> sys.stderr, '* running:', cmdline
> - close_fds = sys.platform != 'win32'
> - p = subprocess.Popen(cmdline, shell=True, close_fds=close_fds,
> - stdin=subprocess.PIPE, stdout=subprocess.PIPE)
> - (child_in, child_out) = (p.stdin, p.stdout)
> - try:
> - import thread
> - except ImportError:
> - bkgndwrite(child_in, content)
> - else:
> - thread.start_new_thread(bkgndwrite, (child_in, content))
> - plaincontent = child_out.read()
> - child_out.close()
> - if not plaincontent: # 'dot' is likely not installed
> - raise PlainParseError("no result from running 'dot'")
> - else:
> - import urllib
> - request = urllib.urlencode({'dot': content})
> - url = 'http://codespeak.net/pypy/convertdot.cgi'
> - print >> sys.stderr, '* posting:', url
> - g = urllib.urlopen(url, data=request)
> - result = []
> - while True:
> - data = g.read(16384)
> - if not data:
> - break
> - result.append(data)
> - g.close()
> - plaincontent = ''.join(result)
> - # very simple-minded way to give a somewhat better error message
> - if plaincontent.startswith('<body'):
> - raise Exception("the dot on codespeak has very likely crashed")
> +def dot2plain_codespeak(content, contenttype):
> + import urllib
> + request = urllib.urlencode({'dot': content})
> + url = 'http://codespeak.net/pypy/convertdot.cgi'
> + print >> sys.stderr, '* posting:', url
> + g = urllib.urlopen(url, data=request)
> + result = []
> + while True:
> + data = g.read(16384)
> + if not data:
> + break
> + result.append(data)
> + g.close()
> + plaincontent = ''.join(result)
> + # very simple-minded way to give a somewhat better error message
> + if plaincontent.startswith('<body'):
> + raise Exception("the dot on codespeak has very likely crashed")
> return plaincontent
>
> def bkgndwrite(f, data):
> @@ -148,10 +145,13 @@
>
> def parse_dot(graph_id, content, links={}, fixedfont=False):
> contenttype = guess_type(content)
> - try:
> - plaincontent = dot2plain(content, contenttype, use_codespeak=False)
> - return list(parse_plain(graph_id, plaincontent, links, fixedfont))
> - except PlainParseError:
> - # failed, retry via codespeak
> - plaincontent = dot2plain(content, contenttype, use_codespeak=True)
> - return list(parse_plain(graph_id, plaincontent, links, fixedfont))
> + if contenttype == 'plain':
> + plaincontent = content
> + else:
> + try:
> + plaincontent = dot2plain_graphviz(content, contenttype)
> + except PlainParseError, e:
> + print e
> + # failed, retry via codespeak
> + plaincontent = dot2plain_codespeak(content, contenttype)
> + return list(parse_plain(graph_id, plaincontent, links, fixedfont))
> _______________________________________________
> pypy-commit mailing list
> pypy-commit at python.org
> http://mail.python.org/mailman/listinfo/pypy-commit
>
More information about the pypy-dev
mailing list