[pypy-svn] pypy documentation-cleanup: merge heads
lac
commits-noreply at bitbucket.org
Tue Apr 26 18:21:48 CEST 2011
Author: Laura Creighton <lac at openend.se>
Branch: documentation-cleanup
Changeset: r43642:ebc27a998c59
Date: 2011-04-26 18:21 +0200
http://bitbucket.org/pypy/pypy/changeset/ebc27a998c59/
Log: merge heads
diff --git a/pypy/doc/pypyconfig.py b/pypy/doc/pypyconfig.py
new file mode 100644
--- /dev/null
+++ b/pypy/doc/pypyconfig.py
@@ -0,0 +1,9 @@
+
+
+def setup(app):
+ import sys, os
+ sys.path.append(os.path.abspath("../../"))
+ from pypy.config import makerestdoc
+ import py
+ role = makerestdoc.register_config_role(py.path.local())
+ app.add_role("config", role)
diff --git a/pypy/config/makerestdoc.py b/pypy/config/makerestdoc.py
--- a/pypy/config/makerestdoc.py
+++ b/pypy/config/makerestdoc.py
@@ -221,7 +221,7 @@
from docutils import nodes
from pypy.config.pypyoption import get_pypy_config
from pypy.config.makerestdoc import get_cmdline
- txt = docdir.join("config", text + ".txt")
+ txt = docdir.join("config", text + ".rst")
html = docdir.join("config", text + ".html")
assert txt.check()
assert name == "config"
@@ -247,9 +247,8 @@
shortest_long_option = cmd
text = shortest_long_option
target = prefix + relative
- print text, target
reference_node = nodes.reference(rawtext, text, name=text, refuri=target)
return [reference_node], []
config_role.content = True
config_role.options = {}
- roles.register_canonical_role("config", config_role)
+ return config_role
diff --git a/pypy/tool/rest/directive.py b/pypy/tool/rest/directive.py
--- a/pypy/tool/rest/directive.py
+++ b/pypy/tool/rest/directive.py
@@ -1,108 +1,9 @@
-# XXX this file is messy since it tries to deal with several docutils versions
import py
-from pypy.tool.rest.convert import convert_dot, latexformula2png
-
import sys
import docutils
from docutils import nodes
-from docutils.parsers.rst import directives, states, roles
-from docutils.parsers.rst.directives import images
-
-if hasattr(images, "image"):
- directives_are_functions = True
-else:
- directives_are_functions = False
-
-try:
- from docutils.utils import unescape # docutils version > 0.3.5
-except ImportError:
- from docutils.parsers.rst.states import unescape # docutils 0.3.5
-
-if not directives_are_functions:
- ImageClass = images.Image
-
-else:
- class ImageClass(object):
- option_spec = images.image.options
- def run(self):
- return images.image(u'image',
- self.arguments,
- self.options,
- self.content,
- self.lineno,
- self.content_offset,
- self.block_text,
- self.state,
- self.state_machine)
-
-
-backend_to_image_format = {"html": "png", "latex": "pdf"}
-
-class GraphvizDirective(ImageClass):
- def convert(self, fn, path):
- path = py.path.local(path).dirpath()
- dot = path.join(fn)
- result = convert_dot(dot, backend_to_image_format[_backend])
- return result.relto(path)
-
- def run(self):
- newname = self.convert(self.arguments[0],
- self.state.document.settings._source)
- text = self.block_text.replace("graphviz", "image", 1)
- self.block_text = text.replace(self.arguments[0], newname, 1)
- self.name = u'image'
- self.arguments = [newname]
- return ImageClass.run(self)
-
- def old_interface(self):
- def f(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- for arg in "name arguments options content lineno " \
- "content_offset block_text state state_machine".split():
- setattr(self, arg, locals()[arg])
- return self.run()
- f.arguments = (1, 0, 1)
- f.options = self.option_spec
- return f
-
-
-_backend = None
-def set_backend_and_register_directives(backend):
- #XXX this is only used to work around the inflexibility of docutils:
- # a directive does not know the target format
- global _backend
- _backend = backend
- if not directives_are_functions:
- directives.register_directive("graphviz", GraphvizDirective)
- else:
- directives.register_directive("graphviz",
- GraphvizDirective().old_interface())
- roles.register_canonical_role("latexformula", latexformula_role)
-
-def latexformula_role(name, rawtext, text, lineno, inliner,
- options={}, content=[]):
- if _backend == 'latex':
- options['format'] = 'latex'
- return roles.raw_role(name, rawtext, text, lineno, inliner,
- options, content)
- else:
- # XXX: make the place of the image directory configurable
- sourcedir = py.path.local(inliner.document.settings._source).dirpath()
- imagedir = sourcedir.join("img")
- if not imagedir.check():
- imagedir.mkdir()
- # create halfway senseful imagename:
- # use hash of formula + alphanumeric characters of it
- # could
- imagename = "%s_%s.png" % (
- hash(text), "".join([c for c in text if c.isalnum()]))
- image = imagedir.join(imagename)
- latexformula2png(unescape(text, True), image)
- imagenode = nodes.image(image.relto(sourcedir), uri=image.relto(sourcedir))
- return [imagenode], []
-latexformula_role.content = True
-latexformula_role.options = {}
+from docutils.parsers.rst import roles
def register_linkrole(role_name, callback):
def source_role(name, rawtext, text, lineno, inliner, options={},
diff --git a/pypy/doc/image/parsing_example8.dot b/pypy/doc/image/parsing_example8.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example8.dot
+++ /dev/null
@@ -1,21 +0,0 @@
-digraph G{
-"-1213611892" [label="list"];
-"-1213611892" -> "-1213608980";
-"-1213608980" [shape=box,label="DECIMAL\n'1'"];
-"-1213611892" -> "-1213623476";
-"-1213623476" [label="list"];
-"-1213623476" -> "-1213623380";
-"-1213623380" [shape=box,label="DECIMAL\n'2'"];
-"-1213623476" -> "-1213442868";
-"-1213442868" [label="list"];
-"-1213442868" -> "-1213441652";
-"-1213441652" [shape=box,label="DECIMAL\n'3'"];
-"-1213442868" -> "-1213441332";
-"-1213441332" [label="list"];
-"-1213441332" -> "-1213441620";
-"-1213441620" [shape=box,label="DECIMAL\n'4'"];
-"-1213441332" -> "-1213443060";
-"-1213443060" [label="list"];
-"-1213443060" -> "-1213442100";
-"-1213442100" [shape=box,label="DECIMAL\n'5'"];
-}
\ No newline at end of file
diff --git a/pypy/doc/image/parsing_example5.dot b/pypy/doc/image/parsing_example5.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example5.dot
+++ /dev/null
@@ -1,21 +0,0 @@
-digraph G{
-"-1219949908" [label="n"];
-"-1219949908" -> "-1214026452";
-"-1214026452" [shape=box,label="__0_a\n'a'"];
-"-1219949908" -> "-1214028276";
-"-1214028276" [shape=box,label="__1_b\n'b'"];
-"-1219949908" -> "-1214027316";
-"-1214027316" [shape=box,label="__2_c\n'c'"];
-"-1219949908" -> "-1219949876";
-"-1219949876" [label="n"];
-"-1219949876" -> "-1214141364";
-"-1214141364" [shape=box,label="__0_a\n'a'"];
-"-1219949876" -> "-1214141748";
-"-1214141748" [shape=box,label="__1_b\n'b'"];
-"-1219949876" -> "-1214140756";
-"-1214140756" [shape=box,label="__2_c\n'c'"];
-"-1219949876" -> "-1219949748";
-"-1219949748" [label="m"];
-"-1219949748" -> "-1214414868";
-"-1214414868" [shape=box,label="__5_d\n'd'"];
-}
\ No newline at end of file
diff --git a/pypy/doc/image/parsing_example10.dot b/pypy/doc/image/parsing_example10.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example10.dot
+++ /dev/null
@@ -1,37 +0,0 @@
-digraph G{
-"-1220061652" [label="object"];
-"-1220061652" -> "-1220127636";
-"-1220127636" [label="entry"];
-"-1220127636" -> "-1213915636";
-"-1213915636" [shape=box,label="STRING\n'a'"];
-"-1220127636" -> "-1214251156";
-"-1214251156" [shape=box,label="STRING\n'5'"];
-"-1220061652" -> "-1220063188";
-"-1220063188" [label="entry"];
-"-1220063188" -> "-1214253076";
-"-1214253076" [shape=box,label="STRING\n'b'"];
-"-1220063188" -> "-1220059444";
-"-1220059444" [label="array"];
-"-1220059444" -> "-1214253364";
-"-1214253364" [shape=box,label="NUMBER\n'1'"];
-"-1220059444" -> "-1214254292";
-"-1214254292" [shape=box,label="__0_null\n'null'"];
-"-1220059444" -> "-1214253268";
-"-1214253268" [shape=box,label="NUMBER\n'3'"];
-"-1220059444" -> "-1214252596";
-"-1214252596" [shape=box,label="__1_true\n'true'"];
-"-1220059444" -> "-1220062260";
-"-1220062260" [label="object"];
-"-1220062260" -> "-1220060116";
-"-1220060116" [label="entry"];
-"-1220060116" -> "-1214211860";
-"-1214211860" [shape=box,label="STRING\n'f'"];
-"-1220060116" -> "-1214210132";
-"-1214210132" [shape=box,label="STRING\n'g'"];
-"-1220062260" -> "-1220062868";
-"-1220062868" [label="entry"];
-"-1220062868" -> "-1214211956";
-"-1214211956" [shape=box,label="STRING\n'h'"];
-"-1220062868" -> "-1214212308";
-"-1214212308" [shape=box,label="NUMBER\n'6'"];
-}
diff --git a/pypy/doc/rlib.rst b/pypy/doc/rlib.rst
--- a/pypy/doc/rlib.rst
+++ b/pypy/doc/rlib.rst
@@ -323,7 +323,35 @@
produces a syntax tree that follows the precedence of the operators. For example
the expression ``12 + 4 * 5`` is parsed into the following tree:
-.. graphviz:: image/parsing_example1.dot
+.. graphviz::
+
+ digraph G{
+ "-1213931828" [label="additive"];
+ "-1213931828" -> "-1213951956";
+ "-1213951956" [label="multitive"];
+ "-1213951956" -> "-1213949172";
+ "-1213949172" [label="primary"];
+ "-1213949172" -> "-1213949812";
+ "-1213949812" [shape=box,label="DECIMAL\l'12'"];
+ "-1213931828" -> "-1213935220";
+ "-1213935220" [shape=box,label="__0_+\l'+'"];
+ "-1213931828" -> "-1213951316";
+ "-1213951316" [label="additive"];
+ "-1213951316" -> "-1213948180";
+ "-1213948180" [label="multitive"];
+ "-1213948180" -> "-1213951380";
+ "-1213951380" [label="primary"];
+ "-1213951380" -> "-1213951508";
+ "-1213951508" [shape=box,label="DECIMAL\l'4'"];
+ "-1213948180" -> "-1213948788";
+ "-1213948788" [shape=box,label="__1_*\l'*'"];
+ "-1213948180" -> "-1213951060";
+ "-1213951060" [label="multitive"];
+ "-1213951060" -> "-1213948980";
+ "-1213948980" [label="primary"];
+ "-1213948980" -> "-1213950420";
+ "-1213950420" [shape=box,label="DECIMAL\l'5'"];
+ }
Parse Trees
-----------
@@ -380,11 +408,43 @@
Parsing the string "A, A, A" gives the tree:
-.. graphviz:: image/parsing_example2.dot
+.. graphviz::
+
+ digraph G{
+ "-1213678004" [label="n"];
+ "-1213678004" -> "-1213681108";
+ "-1213681108" [shape=box,label="__0_A\n'A'"];
+ "-1213678004" -> "-1213681332";
+ "-1213681332" [shape=box,label="__1_,\n','"];
+ "-1213678004" -> "-1213837780";
+ "-1213837780" [label="n"];
+ "-1213837780" -> "-1213837716";
+ "-1213837716" [shape=box,label="__0_A\n'A'"];
+ "-1213837780" -> "-1213839476";
+ "-1213839476" [shape=box,label="__1_,\n','"];
+ "-1213837780" -> "-1213839956";
+ "-1213839956" [label="n"];
+ "-1213839956" -> "-1213840948";
+ "-1213840948" [shape=box,label="__0_A\n'A'"];
+ }
After transformation the tree has the "," nodes removed:
-.. graphviz:: image/parsing_example3.dot
+.. graphviz::
+
+ digraph G{
+ "-1219325716" [label="n"];
+ "-1219325716" -> "-1219325844";
+ "-1219325844" [shape=box,label="__0_A\n'A'"];
+ "-1219325716" -> "-1219324372";
+ "-1219324372" [label="n"];
+ "-1219324372" -> "-1219325524";
+ "-1219325524" [shape=box,label="__0_A\n'A'"];
+ "-1219324372" -> "-1219324308";
+ "-1219324308" [label="n"];
+ "-1219324308" -> "-1219325492";
+ "-1219325492" [shape=box,label="__0_A\n'A'"];
+ }
<symbol>
++++++++
@@ -401,12 +461,61 @@
Parsing the string "a b c (a b c d)" gives the tree:
-.. graphviz:: image/parsing_example4.dot
+.. graphviz::
+
+ digraph G{
+ "-1214029460" [label="n"];
+ "-1214029460" -> "-1214026452";
+ "-1214026452" [shape=box,label="__0_a\n'a'"];
+ "-1214029460" -> "-1214028276";
+ "-1214028276" [shape=box,label="__1_b\n'b'"];
+ "-1214029460" -> "-1214027316";
+ "-1214027316" [shape=box,label="__2_c\n'c'"];
+ "-1214029460" -> "-1214026868";
+ "-1214026868" [label="m"];
+ "-1214026868" -> "-1214140436";
+ "-1214140436" [shape=box,label="__3_(\n'('"];
+ "-1214026868" -> "-1214143508";
+ "-1214143508" [label="n"];
+ "-1214143508" -> "-1214141364";
+ "-1214141364" [shape=box,label="__0_a\n'a'"];
+ "-1214143508" -> "-1214141748";
+ "-1214141748" [shape=box,label="__1_b\n'b'"];
+ "-1214143508" -> "-1214140756";
+ "-1214140756" [shape=box,label="__2_c\n'c'"];
+ "-1214143508" -> "-1214144468";
+ "-1214144468" [label="m"];
+ "-1214144468" -> "-1214414868";
+ "-1214414868" [shape=box,label="__5_d\n'd'"];
+ "-1214026868" -> "-1214141492";
+ "-1214141492" [shape=box,label="__4_)\n')'"];
+ }
After transformation the tree looks like this:
-.. graphviz:: image/parsing_example5.dot
+.. graphviz::
+ digraph G{
+ "-1219949908" [label="n"];
+ "-1219949908" -> "-1214026452";
+ "-1214026452" [shape=box,label="__0_a\n'a'"];
+ "-1219949908" -> "-1214028276";
+ "-1214028276" [shape=box,label="__1_b\n'b'"];
+ "-1219949908" -> "-1214027316";
+ "-1214027316" [shape=box,label="__2_c\n'c'"];
+ "-1219949908" -> "-1219949876";
+ "-1219949876" [label="n"];
+ "-1219949876" -> "-1214141364";
+ "-1214141364" [shape=box,label="__0_a\n'a'"];
+ "-1219949876" -> "-1214141748";
+ "-1214141748" [shape=box,label="__1_b\n'b'"];
+ "-1219949876" -> "-1214140756";
+ "-1214140756" [shape=box,label="__2_c\n'c'"];
+ "-1219949876" -> "-1219949748";
+ "-1219949748" [label="m"];
+ "-1219949748" -> "-1214414868";
+ "-1214414868" [shape=box,label="__5_d\n'd'"];
+ }
>nonterminal_1 nonterminal_2 ... nonterminal_n<
+++++++++++++++++++++++++++++++++++++++++++++++
@@ -421,23 +530,76 @@
Parsing the string "1 2" gives the tree:
-.. graphviz:: image/parsing_example6.dot
-
+.. graphviz::
+
+ digraph G{
+ "-1213518708" [label="list"];
+ "-1213518708" -> "-1213518196";
+ "-1213518196" [shape=box,label="DECIMAL\n'1'"];
+ "-1213518708" -> "-1213518260";
+ "-1213518260" [label="list"];
+ "-1213518260" -> "-1213520308";
+ "-1213520308" [shape=box,label="DECIMAL\n'2'"];
+ }
+
after the transformation the tree looks like:
-.. graphviz:: image/parsing_example7.dot
+.. graphviz::
+
+ digraph G{
+ "-1219505652" [label="list"];
+ "-1219505652" -> "-1213518196";
+ "-1213518196" [shape=box,label="DECIMAL\n'1'"];
+ "-1219505652" -> "-1213520308";
+ "-1213520308" [shape=box,label="DECIMAL\n'2'"];
+ }
Note that the transformation works recursively. That means that the following
also works: if the string "1 2 3 4 5" is parsed the tree at first looks like
this:
-.. graphviz:: image/parsing_example8.dot
+.. graphviz::
+
+ digraph G{
+ "-1213611892" [label="list"];
+ "-1213611892" -> "-1213608980";
+ "-1213608980" [shape=box,label="DECIMAL\n'1'"];
+ "-1213611892" -> "-1213623476";
+ "-1213623476" [label="list"];
+ "-1213623476" -> "-1213623380";
+ "-1213623380" [shape=box,label="DECIMAL\n'2'"];
+ "-1213623476" -> "-1213442868";
+ "-1213442868" [label="list"];
+ "-1213442868" -> "-1213441652";
+ "-1213441652" [shape=box,label="DECIMAL\n'3'"];
+ "-1213442868" -> "-1213441332";
+ "-1213441332" [label="list"];
+ "-1213441332" -> "-1213441620";
+ "-1213441620" [shape=box,label="DECIMAL\n'4'"];
+ "-1213441332" -> "-1213443060";
+ "-1213443060" [label="list"];
+ "-1213443060" -> "-1213442100";
+ "-1213442100" [shape=box,label="DECIMAL\n'5'"];
+ }
But after transformation the whole thing collapses to one node with a lot of
children:
-.. graphviz:: image/parsing_example9.dot
+.. graphviz::
+ digraph G{
+ "-1219430228" [label="list"];
+ "-1219430228" -> "-1213608980";
+ "-1213608980" [shape=box,label="DECIMAL\n'1'"];
+ "-1219430228" -> "-1213623380";
+ "-1213623380" [shape=box,label="DECIMAL\n'2'"];
+ "-1219430228" -> "-1213441652";
+ "-1213441652" [shape=box,label="DECIMAL\n'3'"];
+ "-1219430228" -> "-1213441620";
+ "-1213441620" [shape=box,label="DECIMAL\n'4'"];
+ "-1219430228" -> "-1213442100";
+ "-1213442100" [shape=box,label="DECIMAL\n'5'"];
+ }
Extensions to the EBNF grammar format
-------------------------------------
@@ -506,8 +668,45 @@
looks like this:
-.. graphviz:: image/parsing_example10.dot
+.. graphviz::
+ digraph G{
+ "-1220061652" [label="object"];
+ "-1220061652" -> "-1220127636";
+ "-1220127636" [label="entry"];
+ "-1220127636" -> "-1213915636";
+ "-1213915636" [shape=box,label="STRING\n'a'"];
+ "-1220127636" -> "-1214251156";
+ "-1214251156" [shape=box,label="STRING\n'5'"];
+ "-1220061652" -> "-1220063188";
+ "-1220063188" [label="entry"];
+ "-1220063188" -> "-1214253076";
+ "-1214253076" [shape=box,label="STRING\n'b'"];
+ "-1220063188" -> "-1220059444";
+ "-1220059444" [label="array"];
+ "-1220059444" -> "-1214253364";
+ "-1214253364" [shape=box,label="NUMBER\n'1'"];
+ "-1220059444" -> "-1214254292";
+ "-1214254292" [shape=box,label="__0_null\n'null'"];
+ "-1220059444" -> "-1214253268";
+ "-1214253268" [shape=box,label="NUMBER\n'3'"];
+ "-1220059444" -> "-1214252596";
+ "-1214252596" [shape=box,label="__1_true\n'true'"];
+ "-1220059444" -> "-1220062260";
+ "-1220062260" [label="object"];
+ "-1220062260" -> "-1220060116";
+ "-1220060116" [label="entry"];
+ "-1220060116" -> "-1214211860";
+ "-1214211860" [shape=box,label="STRING\n'f'"];
+ "-1220060116" -> "-1214210132";
+ "-1214210132" [shape=box,label="STRING\n'g'"];
+ "-1220062260" -> "-1220062868";
+ "-1220062868" [label="entry"];
+ "-1220062868" -> "-1214211956";
+ "-1214211956" [shape=box,label="STRING\n'h'"];
+ "-1220062868" -> "-1214212308";
+ "-1214212308" [shape=box,label="NUMBER\n'6'"];
+ }
.. _`Prolog interpreter`: https://bitbucket.org/cfbolz/pyrolog/
diff --git a/pypy/doc/image/parsing_example6.dot b/pypy/doc/image/parsing_example6.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example6.dot
+++ /dev/null
@@ -1,9 +0,0 @@
-digraph G{
-"-1213518708" [label="list"];
-"-1213518708" -> "-1213518196";
-"-1213518196" [shape=box,label="DECIMAL\n'1'"];
-"-1213518708" -> "-1213518260";
-"-1213518260" [label="list"];
-"-1213518260" -> "-1213520308";
-"-1213520308" [shape=box,label="DECIMAL\n'2'"];
-}
\ No newline at end of file
diff --git a/pypy/doc/image/parsing_example4.dot b/pypy/doc/image/parsing_example4.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example4.dot
+++ /dev/null
@@ -1,27 +0,0 @@
-digraph G{
-"-1214029460" [label="n"];
-"-1214029460" -> "-1214026452";
-"-1214026452" [shape=box,label="__0_a\n'a'"];
-"-1214029460" -> "-1214028276";
-"-1214028276" [shape=box,label="__1_b\n'b'"];
-"-1214029460" -> "-1214027316";
-"-1214027316" [shape=box,label="__2_c\n'c'"];
-"-1214029460" -> "-1214026868";
-"-1214026868" [label="m"];
-"-1214026868" -> "-1214140436";
-"-1214140436" [shape=box,label="__3_(\n'('"];
-"-1214026868" -> "-1214143508";
-"-1214143508" [label="n"];
-"-1214143508" -> "-1214141364";
-"-1214141364" [shape=box,label="__0_a\n'a'"];
-"-1214143508" -> "-1214141748";
-"-1214141748" [shape=box,label="__1_b\n'b'"];
-"-1214143508" -> "-1214140756";
-"-1214140756" [shape=box,label="__2_c\n'c'"];
-"-1214143508" -> "-1214144468";
-"-1214144468" [label="m"];
-"-1214144468" -> "-1214414868";
-"-1214414868" [shape=box,label="__5_d\n'd'"];
-"-1214026868" -> "-1214141492";
-"-1214141492" [shape=box,label="__4_)\n')'"];
-}
\ No newline at end of file
diff --git a/pypy/doc/image/parsing_example7.dot b/pypy/doc/image/parsing_example7.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example7.dot
+++ /dev/null
@@ -1,7 +0,0 @@
-digraph G{
-"-1219505652" [label="list"];
-"-1219505652" -> "-1213518196";
-"-1213518196" [shape=box,label="DECIMAL\n'1'"];
-"-1219505652" -> "-1213520308";
-"-1213520308" [shape=box,label="DECIMAL\n'2'"];
-}
\ No newline at end of file
diff --git a/pypy/doc/image/parsing_example2.dot b/pypy/doc/image/parsing_example2.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example2.dot
+++ /dev/null
@@ -1,17 +0,0 @@
-digraph G{
-"-1213678004" [label="n"];
-"-1213678004" -> "-1213681108";
-"-1213681108" [shape=box,label="__0_A\n'A'"];
-"-1213678004" -> "-1213681332";
-"-1213681332" [shape=box,label="__1_,\n','"];
-"-1213678004" -> "-1213837780";
-"-1213837780" [label="n"];
-"-1213837780" -> "-1213837716";
-"-1213837716" [shape=box,label="__0_A\n'A'"];
-"-1213837780" -> "-1213839476";
-"-1213839476" [shape=box,label="__1_,\n','"];
-"-1213837780" -> "-1213839956";
-"-1213839956" [label="n"];
-"-1213839956" -> "-1213840948";
-"-1213840948" [shape=box,label="__0_A\n'A'"];
-}
diff --git a/pypy/tool/rest/convert.py b/pypy/tool/rest/convert.py
deleted file mode 100644
--- a/pypy/tool/rest/convert.py
+++ /dev/null
@@ -1,163 +0,0 @@
-import py
-
-ExecutionFailed = py.process.cmdexec.Error
-# utility functions to convert between various formats
-
-format_to_dotargument = {"png": "png",
- "eps": "ps",
- "ps": "ps",
- "pdf": "ps",
- }
-
-def ps2eps(ps):
- # XXX write a pure python version
- if not py.path.local.sysfind("ps2epsi") and \
- not py.path.local.sysfind("ps2eps"):
- raise SystemExit("neither ps2eps nor ps2epsi found")
- try:
- eps = ps.new(ext=".eps")
- py.process.cmdexec('ps2epsi "%s" "%s"' % (ps, eps))
- except ExecutionFailed:
- py.process.cmdexec('ps2eps -l -f "%s"' % ps)
-
-def ps2pdf(ps, compat_level="1.2"):
- if not py.path.local.sysfind("gs"):
- raise SystemExit("ERROR: gs not found")
- pdf = ps.new(ext=".pdf")
- options = dict(OPTIONS="-dSAFER -dCompatibilityLevel=%s" % compat_level,
- infile=ps, outfile=pdf)
- cmd = ('gs %(OPTIONS)s -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite '
- '"-sOutputFile=%(outfile)s" %(OPTIONS)s -c .setpdfwrite '
- '-f "%(infile)s"') % options
- py.process.cmdexec(cmd)
- return pdf
-
-def eps2pdf(eps):
- # XXX write a pure python version
- if not py.path.local.sysfind("epstopdf"):
- raise SystemExit("ERROR: epstopdf not found")
- py.process.cmdexec('epstopdf "%s"' % eps)
-
-def dvi2eps(dvi, dest=None):
- if dest is None:
- dest = eps.new(ext=".eps")
- command = 'dvips -q -E -n 1 -D 600 -p 1 -o "%s" "%s"' % (dest, dvi)
- if not py.path.local.sysfind("dvips"):
- raise SystemExit("ERROR: dvips not found")
- py.process.cmdexec(command)
-
-def convert_dot(fn, new_extension):
- if not py.path.local.sysfind("dot"):
- raise SystemExit("ERROR: dot not found")
- result = fn.new(ext=new_extension)
- print result
- arg = "-T%s" % (format_to_dotargument[new_extension], )
- py.std.os.system('dot "%s" "%s" > "%s"' % (arg, fn, result))
- if new_extension == "eps":
- ps = result.new(ext="ps")
- result.move(ps)
- ps2eps(ps)
- ps.remove()
- elif new_extension == "pdf":
- # convert to eps file first, to get the bounding box right
- eps = result.new(ext="eps")
- ps = result.new(ext="ps")
- result.move(ps)
- ps2eps(ps)
- eps2pdf(eps)
- ps.remove()
- eps.remove()
- return result
-
-
-class latexformula2png(object):
- def __init__(self, formula, dest, temp=None):
- self.formula = formula
- try:
- import Image
- self.Image = Image
- self.scale = 2 # create a larger image
- self.upscale = 5 # create the image upscale times larger, then scale it down
- except ImportError:
- self.scale = 2
- self.upscale = 1
- self.Image = None
- self.output_format = ('pngmono', 'pnggray', 'pngalpha')[2]
- if temp is None:
- temp = py.test.ensuretemp("latexformula")
- self.temp = temp
- self.latex = self.temp.join('formula.tex')
- self.dvi = self.temp.join('formula.dvi')
- self.eps = self.temp.join('formula.eps')
- self.png = self.temp.join('formula.png')
- self.saveas(dest)
-
- def saveas(self, dest):
- self.gen_latex()
- self.gen_dvi()
- dvi2eps(self.dvi, self.eps)
- self.gen_png()
- self.scale_image()
- self.png.copy(dest)
-
- def gen_latex(self):
- self.latex.write ("""
- \\documentclass{article}
- \\pagestyle{empty}
- \\begin{document}
-
- %s
- \\pagebreak
-
- \\end{document}
- """ % (self.formula))
-
- def gen_dvi(self):
- origdir = py.path.local()
- self.temp.chdir()
- py.process.cmdexec('latex "%s"' % (self.latex))
- origdir.chdir()
-
- def gen_png(self):
- tempdir = py.path.local.mkdtemp()
-
- re_bbox = py.std.re.compile('%%BoundingBox:\s*(\d+) (\d+) (\d+) (\d+)')
- eps = self.eps.read()
- x1, y1, x2, y2 = [int(i) for i in re_bbox.search(eps).groups()]
- X = x2 - x1 + 2
- Y = y2 - y1 + 2
- mx = -x1
- my = -y1
- ps = self.temp.join('temp.ps')
- source = self.eps
- ps.write("""
- 1 1 1 setrgbcolor
- newpath
- -1 -1 moveto
- %(X)d -1 lineto
- %(X)d %(Y)d lineto
- -1 %(Y)d lineto
- closepath
- fill
- %(mx)d %(my)d translate
- 0 0 0 setrgbcolor
- (%(source)s) run
-
- """ % locals())
-
- sx = int((x2 - x1) * self.scale * self.upscale)
- sy = int((y2 - y1) * self.scale * self.upscale)
- res = 72 * self.scale * self.upscale
- command = ('gs -q -g%dx%d -r%dx%d -sDEVICE=%s -sOutputFile="%s" '
- '-dNOPAUSE -dBATCH "%s"') % (
- sx, sy, res, res, self.output_format, self.png, ps)
- py.process.cmdexec(command)
-
- def scale_image(self):
- if self.Image is None:
- return
- image = self.Image.open(str(self.png))
- image.resize((image.size[0] / self.upscale,
- image.size[1] / self.upscale),
- self.Image.ANTIALIAS).save(str(self.png))
-
diff --git a/pypy/doc/image/parsing_example9.dot b/pypy/doc/image/parsing_example9.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example9.dot
+++ /dev/null
@@ -1,13 +0,0 @@
-digraph G{
-"-1219430228" [label="list"];
-"-1219430228" -> "-1213608980";
-"-1213608980" [shape=box,label="DECIMAL\n'1'"];
-"-1219430228" -> "-1213623380";
-"-1213623380" [shape=box,label="DECIMAL\n'2'"];
-"-1219430228" -> "-1213441652";
-"-1213441652" [shape=box,label="DECIMAL\n'3'"];
-"-1219430228" -> "-1213441620";
-"-1213441620" [shape=box,label="DECIMAL\n'4'"];
-"-1219430228" -> "-1213442100";
-"-1213442100" [shape=box,label="DECIMAL\n'5'"];
-}
\ No newline at end of file
diff --git a/pypy/doc/image/parsing_example3.dot b/pypy/doc/image/parsing_example3.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example3.dot
+++ /dev/null
@@ -1,13 +0,0 @@
-digraph G{
-"-1219325716" [label="n"];
-"-1219325716" -> "-1219325844";
-"-1219325844" [shape=box,label="__0_A\n'A'"];
-"-1219325716" -> "-1219324372";
-"-1219324372" [label="n"];
-"-1219324372" -> "-1219325524";
-"-1219325524" [shape=box,label="__0_A\n'A'"];
-"-1219324372" -> "-1219324308";
-"-1219324308" [label="n"];
-"-1219324308" -> "-1219325492";
-"-1219325492" [shape=box,label="__0_A\n'A'"];
-}
diff --git a/pypy/doc/conf.py b/pypy/doc/conf.py
--- a/pypy/doc/conf.py
+++ b/pypy/doc/conf.py
@@ -16,13 +16,13 @@
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.append(os.path.abspath('.'))
+sys.path.append(os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.ifconfig']
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.ifconfig', 'sphinx.ext.graphviz', 'pypyconfig']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -196,3 +196,4 @@
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'http://docs.python.org/': None}
+
diff --git a/pypy/doc/image/parsing_example1.dot b/pypy/doc/image/parsing_example1.dot
deleted file mode 100644
--- a/pypy/doc/image/parsing_example1.dot
+++ /dev/null
@@ -1,27 +0,0 @@
-digraph G{
-"-1213931828" [label="additive"];
-"-1213931828" -> "-1213951956";
-"-1213951956" [label="multitive"];
-"-1213951956" -> "-1213949172";
-"-1213949172" [label="primary"];
-"-1213949172" -> "-1213949812";
-"-1213949812" [shape=box,label="DECIMAL\l'12'"];
-"-1213931828" -> "-1213935220";
-"-1213935220" [shape=box,label="__0_+\l'+'"];
-"-1213931828" -> "-1213951316";
-"-1213951316" [label="additive"];
-"-1213951316" -> "-1213948180";
-"-1213948180" [label="multitive"];
-"-1213948180" -> "-1213951380";
-"-1213951380" [label="primary"];
-"-1213951380" -> "-1213951508";
-"-1213951508" [shape=box,label="DECIMAL\l'4'"];
-"-1213948180" -> "-1213948788";
-"-1213948788" [shape=box,label="__1_*\l'*'"];
-"-1213948180" -> "-1213951060";
-"-1213951060" [label="multitive"];
-"-1213951060" -> "-1213948980";
-"-1213948980" [label="primary"];
-"-1213948980" -> "-1213950420";
-"-1213950420" [shape=box,label="DECIMAL\l'5'"];
-}
diff --git a/pypy/doc/config/makemodules.py b/pypy/doc/config/makemodules.py
--- a/pypy/doc/config/makemodules.py
+++ b/pypy/doc/config/makemodules.py
@@ -7,12 +7,12 @@
if __name__ == '__main__':
c = config.Config(pypyoption.pypy_optiondescription).usemodules
prefix = "objspace.usemodules"
- thisdir.join(prefix + ".txt").ensure()
+ thisdir.join(prefix + ".rst").ensure()
for p in c.getpaths(include_groups=True):
- basename = prefix + "." + p + ".txt"
+ basename = prefix + "." + p + ".rst"
f = thisdir.join(basename)
- if f.check() and f.size():
- continue
+ #if f.check() and f.size():
+ # continue
print "making docs for", p
text = ["Use the '%s' module. " % (p, )]
if p in pypyoption.essential_modules:
More information about the Pypy-commit
mailing list