[Python-checkins] r65275 - in doctools/trunk: Makefile sphinx/__init__.py sphinx/builder.py sphinx/directives/other.py sphinx/environment.py sphinx/htmlwriter.py sphinx/latexwriter.py sphinx/texinputs/sphinx.sty tests/test_config.py tests/test_markup.py tests/util.py

georg.brandl python-checkins at python.org
Tue Jul 29 11:07:38 CEST 2008


Author: georg.brandl
Date: Tue Jul 29 11:07:37 2008
New Revision: 65275
Log:
Merged revisions 65138,65145-65146,65268-65273 via svnmerge from 
svn+ssh://pythondev@svn.python.org/doctools/branches/0.4.x
........
 r65138 | georg.brandl | 2008年07月19日 15:42:35 +0200 (2008年7月19日) | 2 lines
 
 #3416: fix missing parameter.
........
 r65145 | georg.brandl | 2008年07月19日 20:01:25 +0200 (2008年7月19日) | 2 lines
 
 Now that we don't ship Jinja anymore by default the comment can go.
........
 r65146 | georg.brandl | 2008年07月19日 20:01:51 +0200 (2008年7月19日) | 2 lines
 
 Reread documents with globbed toctrees when files are removed/added.
........
 r65268 | georg.brandl | 2008年07月29日 10:21:33 +0200 (2008年7月29日) | 2 lines
 
 Fix by Markus Gritsch to place correct links to headings.
........
 r65269 | georg.brandl | 2008年07月29日 10:21:59 +0200 (2008年7月29日) | 2 lines
 
 Make the writer's settings public.
........
 r65270 | georg.brandl | 2008年07月29日 10:22:28 +0200 (2008年7月29日) | 2 lines
 
 Export test_root.
........
 r65271 | georg.brandl | 2008年07月29日 10:22:47 +0200 (2008年7月29日) | 2 lines
 
 Add a markup test.
........
 r65272 | georg.brandl | 2008年07月29日 10:27:19 +0200 (2008年7月29日) | 2 lines
 
 Bump version number.
........
 r65273 | georg.brandl | 2008年07月29日 11:05:37 +0200 (2008年7月29日) | 2 lines
 
 Correct rendering of ``samp``.
........
Added:
 doctools/trunk/tests/test_markup.py
 - copied unchanged from r65273, /doctools/branches/0.4.x/tests/test_markup.py
Modified:
 doctools/trunk/ (props changed)
 doctools/trunk/Makefile
 doctools/trunk/sphinx/__init__.py
 doctools/trunk/sphinx/builder.py
 doctools/trunk/sphinx/directives/other.py
 doctools/trunk/sphinx/environment.py
 doctools/trunk/sphinx/htmlwriter.py
 doctools/trunk/sphinx/latexwriter.py
 doctools/trunk/sphinx/texinputs/sphinx.sty
 doctools/trunk/tests/test_config.py
 doctools/trunk/tests/util.py
Modified: doctools/trunk/Makefile
==============================================================================
--- doctools/trunk/Makefile	(original)
+++ doctools/trunk/Makefile	Tue Jul 29 11:07:37 2008
@@ -27,4 +27,4 @@
 	@$(PYTHON) utils/reindent.py -r -B .
 
 test:
-	@cd tests; $(PYTHON) run.py
+	@cd tests; $(PYTHON) run.py -d
Modified: doctools/trunk/sphinx/__init__.py
==============================================================================
--- doctools/trunk/sphinx/__init__.py	(original)
+++ doctools/trunk/sphinx/__init__.py	Tue Jul 29 11:07:37 2008
@@ -20,7 +20,7 @@
 from sphinx.util.console import darkred, nocolor
 
 __revision__ = '$Revision$'
-__version__ = '0.4'
+__version__ = '0.5'
 
 
 def usage(argv, msg=None):
Modified: doctools/trunk/sphinx/builder.py
==============================================================================
--- doctools/trunk/sphinx/builder.py	(original)
+++ doctools/trunk/sphinx/builder.py	Tue Jul 29 11:07:37 2008
@@ -737,6 +737,7 @@
 sidebarfile = self.config.html_sidebars.get(pagename)
 if sidebarfile:
 ctx['customsidebar'] = sidebarfile
+
 if not outfilename:
 outfilename = path.join(self.outdir, os_path(pagename) + self.out_suffix)
 
Modified: doctools/trunk/sphinx/directives/other.py
==============================================================================
--- doctools/trunk/sphinx/directives/other.py	(original)
+++ doctools/trunk/sphinx/directives/other.py	Tue Jul 29 11:07:37 2008
@@ -69,6 +69,7 @@
 subnode['includefiles'] = includefiles
 subnode['includetitles'] = includetitles
 subnode['maxdepth'] = options.get('maxdepth', -1)
+ subnode['glob'] = glob
 ret.append(subnode)
 return ret
 
Modified: doctools/trunk/sphinx/environment.py
==============================================================================
--- doctools/trunk/sphinx/environment.py	(original)
+++ doctools/trunk/sphinx/environment.py	Tue Jul 29 11:07:37 2008
@@ -63,7 +63,7 @@
 
 # This is increased every time an environment attribute is added
 # or changed to properly invalidate pickle files.
-ENV_VERSION = 24
+ENV_VERSION = 25
 
 
 default_substitutions = set([
@@ -242,6 +242,7 @@
 self.toctree_includes = {} # docname -> list of toctree includefiles
 self.files_to_rebuild = {} # docname -> set of files (containing its TOCs)
 # to rebuild too
+ self.glob_toctrees = set() # docnames that have :glob: toctrees
 
 # X-ref target inventory
 self.descrefs = {} # fullname -> docname, desctype
@@ -296,6 +297,7 @@
 self.toctree_includes.pop(docname, None)
 self.filemodules.pop(docname, None)
 self.indexentries.pop(docname, None)
+ self.glob_toctrees.discard(docname)
 
 for subfn, fnset in self.files_to_rebuild.items():
 fnset.discard(docname)
@@ -420,7 +422,14 @@
 self.srcdir = srcdir
 self.doctreedir = doctreedir
 self.find_files(config)
+
 added, changed, removed = self.get_outdated_files(config_changed)
+
+ # if files were added or removed, all documents with globbed toctrees
+ # must be reread
+ if added or removed:
+ changed.update(self.glob_toctrees)
+
 msg += '%s added, %s changed, %s removed' % (len(added), len(changed),
 len(removed))
 yield msg
@@ -641,6 +650,8 @@
 def note_toctree(self, docname, toctreenode):
 """Note a TOC tree directive in a document and gather information about
 file relations from it."""
+ if toctreenode['glob']:
+ self.glob_toctrees.add(docname)
 includefiles = toctreenode['includefiles']
 for includefile in includefiles:
 # note that if the included file is rebuilt, this one must be
Modified: doctools/trunk/sphinx/htmlwriter.py
==============================================================================
--- doctools/trunk/sphinx/htmlwriter.py	(original)
+++ doctools/trunk/sphinx/htmlwriter.py	Tue Jul 29 11:07:37 2008
@@ -56,6 +56,7 @@
 self.builder = builder
 self.highlightlang = 'python'
 self.highlightlinenothreshold = sys.maxint
+ self.protect_literal_text = 0
 
 def visit_desc(self, node):
 self.body.append(self.starttag(node, 'dl', CLASS=node['desctype']))
@@ -206,7 +207,11 @@
 if len(node.children) == 1 and \
 node.children[0] in ('None', 'True', 'False'):
 node['classes'].append('xref')
- BaseTranslator.visit_literal(self, node)
+ self.body.append(self.starttag(node, 'tt', '', CLASS='docutils literal'))
+ self.protect_literal_text += 1
+ def depart_literal(self, node):
+ self.protect_literal_text -= 1
+ self.body.append('</tt>')
 
 def visit_productionlist(self, node):
 self.body.append(self.starttag(node, 'pre'))
@@ -285,6 +290,33 @@
 def depart_module(self, node):
 pass
 
+ def bulk_text_processor(self, text):
+ return text
+
+ # overwritten
+ def visit_Text(self, node):
+ text = node.astext()
+ encoded = self.encode(text)
+ if self.protect_literal_text:
+ # moved here from base class's visit_literal to support
+ # more formatting in literal nodes
+ for token in self.words_and_spaces.findall(encoded):
+ if token.strip():
+ # protect literal text from line wrapping
+ self.body.append('<span class="pre">%s</span>' % token)
+ elif token in ' \n':
+ # allow breaks at whitespace
+ self.body.append(token)
+ else:
+ # protect runs of multiple spaces; the last one can wrap
+ self.body.append('&nbsp;' * (len(token)-1) + ' ')
+ else:
+ if self.in_mailto and self.settings.cloak_email_addresses:
+ encoded = self.cloak_email(encoded)
+ else:
+ encoded = self.bulk_text_processor(encoded)
+ self.body.append(encoded)
+
 # these are all for docutils 0.5 compatibility
 
 def visit_note(self, node):
@@ -333,7 +365,6 @@
 def depart_tip(self, node):
 self.depart_admonition()
 
-
 # these are only handled specially in the SmartyPantsHTMLTranslator
 def visit_literal_emphasis(self, node):
 return self.visit_emphasis(node)
@@ -397,11 +428,7 @@
 finally:
 self.no_smarty -= 1
 
- def visit_Text(self, node):
- text = node.astext()
- encoded = self.encode(text)
- if self.in_mailto and self.settings.cloak_email_addresses:
- encoded = self.cloak_email(encoded)
- elif self.no_smarty <= 0:
- encoded = sphinx_smarty_pants(encoded)
- self.body.append(encoded)
+ def bulk_text_processor(self, text):
+ if self.no_smarty <= 0:
+ return sphinx_smarty_pants(text)
+ return text
Modified: doctools/trunk/sphinx/latexwriter.py
==============================================================================
--- doctools/trunk/sphinx/latexwriter.py	(original)
+++ doctools/trunk/sphinx/latexwriter.py	Tue Jul 29 11:07:37 2008
@@ -23,7 +23,6 @@
 from sphinx import highlighting
 from sphinx.util.smartypants import educateQuotesLatex
 
-# XXX: Move to a template?
 HEADER = r'''%% Generated by Sphinx.
 \documentclass[%(papersize)s,%(pointsize)s]{%(docclass)s}
 \usepackage[utf8]{inputenc}
@@ -56,7 +55,11 @@
 
 supported = ('sphinxlatex',)
 
- settings_spec = ('No options here.', '', ())
+ settings_spec = ('LaTeX writer options', '', (
+ ('Document name', ['--docname'], {'default': ''}),
+ ('Document class', ['--docclass'], {'default': 'manual'}),
+ ('Author', ['--author'], {'default': ''}),
+ ))
 settings_defaults = {}
 
 output = None
Modified: doctools/trunk/sphinx/texinputs/sphinx.sty
==============================================================================
--- doctools/trunk/sphinx/texinputs/sphinx.sty	(original)
+++ doctools/trunk/sphinx/texinputs/sphinx.sty	Tue Jul 29 11:07:37 2008
@@ -336,14 +336,14 @@
 
 % Augment the sectioning commands used to get our own font family in place,
 % and reset some internal data items:
-\titleformat{\section}{\Large\py at HeaderFamily\py at TitleColor}%
-{\thesection}{0.5em}{}{\py at NormalColor}
-\titleformat{\subsection}{\large\py at HeaderFamily\py at TitleColor}%
-{\thesubsection}{0.5em}{}{\py at NormalColor}
-\titleformat{\subsubsection}{\py at HeaderFamily\py at TitleColor}%
-{\thesubsubsection}{0.5em}{}{\py at NormalColor}
-\titleformat{\paragraph}{\large\py at HeaderFamily\py at TitleColor}%
-{}{0em}{}{\py at NormalColor}
+\titleformat{\section}{\Large\py at HeaderFamily}%
+ {\py at TitleColor\thesection}{0.5em}{\py at TitleColor}{\py at NormalColor}
+\titleformat{\subsection}{\large\py at HeaderFamily}%
+ {\py at TitleColor\thesubsection}{0.5em}{\py at TitleColor}{\py at NormalColor}
+\titleformat{\subsubsection}{\py at HeaderFamily}%
+ {\py at TitleColor\thesubsubsection}{0.5em}{\py at TitleColor}{\py at NormalColor}
+\titleformat{\paragraph}{\large\py at HeaderFamily}%
+ {\py at TitleColor}{0em}{\py at TitleColor}{\py at NormalColor}
 
 
 % Now for a lot of semantically-loaded environments that do a ton of magical
Modified: doctools/trunk/tests/test_config.py
==============================================================================
--- doctools/trunk/tests/test_config.py	(original)
+++ doctools/trunk/tests/test_config.py	Tue Jul 29 11:07:37 2008
@@ -43,6 +43,7 @@
 # "contains" gives True both for set and unset values
 assert 'project' in cfg
 assert 'html_title' in cfg
+ assert 'nonexisting_value' not in cfg
 
 # invalid values
 raises(AttributeError, getattr, cfg, '_value')
Modified: doctools/trunk/tests/util.py
==============================================================================
--- doctools/trunk/tests/util.py	(original)
+++ doctools/trunk/tests/util.py	Tue Jul 29 11:07:37 2008
@@ -17,12 +17,16 @@
 
 
 __all__ = [
+ 'test_root',
 'raises', 'raises_msg',
 'ErrorOutput', 'TestApp',
 'path', 'with_tempdir', 'write_file',
 ]
 
 
+test_root = path(__file__).parent.joinpath('root').abspath()
+
+
 def _excstr(exc):
 if type(exc) is tuple:
 return str(tuple(map(_excstr, exc)))
@@ -79,7 +83,7 @@
 application.CONFIG_FILENAME = confname
 
 if srcdir is None:
- srcdir = path(__file__).parent.joinpath('root').abspath()
+ srcdir = test_root
 else:
 srcdir = path(srcdir)
 if confdir is None:


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /