[pypy-svn] r44260 - in pypy/branch/graphserver-dist: dotviewer dotviewer/test pypy/bin pypy/translator/tool

arigo at codespeak.net arigo at codespeak.net
Fri Jun 15 09:11:04 CEST 2007


Author: arigo
Date: Fri Jun 15 09:11:03 2007
New Revision: 44260

Added:
   pypy/branch/graphserver-dist/dotviewer/
      - copied from r44247, user/arigo/hack/pypy-hack/dotviewer/
   pypy/branch/graphserver-dist/dotviewer/__init__.py   (contents, props changed)
Removed:
   pypy/branch/graphserver-dist/pypy/translator/tool/pygame.py
Modified:
   pypy/branch/graphserver-dist/dotviewer/dotviewer.py
   pypy/branch/graphserver-dist/dotviewer/graphclient.py
   pypy/branch/graphserver-dist/dotviewer/test/test_interactive.py
   pypy/branch/graphserver-dist/dotviewer/test/test_translator.py
   pypy/branch/graphserver-dist/pypy/bin/dotviewer.py
   pypy/branch/graphserver-dist/pypy/translator/tool/   (props changed)
   pypy/branch/graphserver-dist/pypy/translator/tool/graphpage.py
Log:
Move the dotviewer directory from my user dir to pypy/dist/.  I'm
putting it there for now because it's really a stand-alone tool, so
people can checkout only the dotviewer/ directory.


Added: pypy/branch/graphserver-dist/dotviewer/__init__.py
==============================================================================

Modified: pypy/branch/graphserver-dist/dotviewer/dotviewer.py
==============================================================================
--- user/arigo/hack/pypy-hack/dotviewer/dotviewer.py	(original)
+++ pypy/branch/graphserver-dist/dotviewer/dotviewer.py	Fri Jun 15 09:11:03 2007
@@ -4,18 +4,35 @@
 
     dotviewer.py filename.dot
     dotviewer.py filename.plain
+    dotviewer.py --server port
 
 In the first form, show the graph contained in a .dot file.
 In the second form, the graph was already compiled to a .plain file.
+In the third form, listen for connexion on the given port and display
+the graphs sent by the remote side.
 """
 
-import graphclient
+import sys
 
-if __name__ == '__main__':
-    import sys
-    args = sys.argv[1:]
-    if len(args) != 1:
+def main(args = sys.argv[1:]):
+    import getopt
+    options, args = getopt.getopt(args, 's:h', ['server=', 'help'])
+    server_port = None
+    for option, value in options:
+        if option in ('-h', '--help'):
+            print >> sys.stderr, __doc__
+            sys.exit(2)
+        if option in ('-s', '--server'):
+            server_port = int(value)
+    if not args and server_port is None:
         print >> sys.stderr, __doc__
         sys.exit(2)
+    for filename in args:
+        import graphclient
+        graphclient.display_dot_file(filename)
+    if server_port is not None:
+        import graphserver
+        graphserver.listen_server(('', server_port))
 
-    graphclient.display_dot_file(args[0])
+if __name__ == '__main__':
+    main()

Modified: pypy/branch/graphserver-dist/dotviewer/graphclient.py
==============================================================================
--- user/arigo/hack/pypy-hack/dotviewer/graphclient.py	(original)
+++ pypy/branch/graphserver-dist/dotviewer/graphclient.py	Fri Jun 15 09:11:03 2007
@@ -8,6 +8,8 @@
 def display_dot_file(dotfile, wait=True):
     """ Display the given dot file in a subprocess.
     """
+    if not os.path.exists(dotfile):
+        raise IOError("No such file: %s" % (dotfile,))
     import graphpage
     page = graphpage.DotFileGraphPage(str(dotfile))
     display_page(page, wait=wait)

Modified: pypy/branch/graphserver-dist/dotviewer/test/test_interactive.py
==============================================================================
--- user/arigo/hack/pypy-hack/dotviewer/test/test_interactive.py	(original)
+++ pypy/branch/graphserver-dist/dotviewer/test/test_interactive.py	Fri Jun 15 09:11:03 2007
@@ -1,6 +1,6 @@
 import py
 import sys, os, signal, thread, time
-from test.conftest import option
+from dotviewer.test.conftest import option
 
 SOURCE1 = r'''digraph _generated__graph {
 subgraph _generated__ {
@@ -40,7 +40,7 @@
     udir = py.path.local.make_numbered_dir(prefix='usession-dot-', keep=3)
     udir.join('graph1.dot').write(SOURCE1)
 
-    import graphclient
+    from dotviewer import graphclient
     mod.pkgdir = py.path.local(graphclient.this_dir)
     mod.udir = udir
 
@@ -105,7 +105,7 @@
 def display1(filename, lock, errors):
     try:
         try:
-            from graphclient import display_dot_file
+            from dotviewer.graphclient import display_dot_file
             print "=== display_dot_file(%s) with GRAPHSERVER=%s" % (
                 filename, os.environ.get('GRAPHSERVER', ''),)
             display_dot_file(udir.join(filename))

Modified: pypy/branch/graphserver-dist/dotviewer/test/test_translator.py
==============================================================================
--- user/arigo/hack/pypy-hack/dotviewer/test/test_translator.py	(original)
+++ pypy/branch/graphserver-dist/dotviewer/test/test_translator.py	Fri Jun 15 09:11:03 2007
@@ -3,7 +3,7 @@
 """
 
 import py, sys
-from test.conftest import option
+from dotviewer.test.conftest import option
 
 def setup_module(mod):
     if not option.pygame:
@@ -12,12 +12,6 @@
         import pypy
     except ImportError:
         py.test.skip("cannot import pypy")
-    # to avoid confusion, prevent importing pypy.translator.tool.pygame
-    sys.modules['pypy.translator.tool.pygame'] = None
-    # patch GraphPage to redirect to this dotviewer
-    import graphclient
-    from pypy.translator.tool.graphpage import GraphPage
-    GraphPage.display = graphclient.display_page
 
 # ____________________________________________________________
 

Modified: pypy/branch/graphserver-dist/pypy/bin/dotviewer.py
==============================================================================
--- pypy/branch/graphserver-dist/pypy/bin/dotviewer.py	(original)
+++ pypy/branch/graphserver-dist/pypy/bin/dotviewer.py	Fri Jun 15 09:11:03 2007
@@ -1,48 +1,11 @@
 #! /usr/bin/env python
 """
-Command-line interface for a dot file viewer -- either viewing normal .dot
-files or connecting to a graph server like a browser.
+Command-line interface for a dot file viewer.
+Run with no arguments for help.
 """
 
 import autopath
-import sys, py
-from pypy.translator.tool.pygame import graphclient
-
-from py.compat import optparse
-
-usage = '''
-        %s filename.dot
-        %s filename.plain
-        %s hostname:port
-        %s :port
-
-In the first form, show the graph contained in a .dot file.
-In the second form, the graph was already compiled to a .plain file.
-In the other forms, connect to a graph server like
-goal/translate.py.
-''' % (sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0])
-
-parser = optparse.OptionParser(usage=usage)
-parser.add_option("--reload", action="store_true", dest="reload",
-                  default=False, help="reload the dot file continously")
-
+from dotviewer.dotviewer import main
 
 if __name__ == '__main__':
-    options, args = parser.parse_args()
-    if len(args) != 1:
-        if args:
-            parser.error("too many arguments")
-        else:
-            parser.print_help()
-        sys.exit(2)
-    filename = args[0]
-    if py.path.local(filename).check():
-        graphclient.display_dot_file(filename,
-                                     reload_repeatedly=options.reload)
-    elif filename.count(':') != 1:
-        print >> sys.stderr, 'No such file:', filename
-        sys.exit(1)
-    else:
-        hostname, port = args[0].split(':')
-        port = int(port)
-        graphclient.display_remote_layout(hostname, port)
+    main()

Modified: pypy/branch/graphserver-dist/pypy/translator/tool/graphpage.py
==============================================================================
--- pypy/branch/graphserver-dist/pypy/translator/tool/graphpage.py	(original)
+++ pypy/branch/graphserver-dist/pypy/translator/tool/graphpage.py	Fri Jun 15 09:11:03 2007
@@ -7,7 +7,7 @@
 from pypy.annotation.classdef import ClassDef
 from pypy.tool.uid import uid
 
-from pypy.translator.tool.pygame.graphpage import GraphPage
+from dotviewer.graphpage import GraphPage
 
 
 class VariableHistoryGraphPage(GraphPage):


More information about the pypy-svn mailing list