merge with 0.6

This commit is contained in:
Georg Brandl
2009-04-28 21:23:39 +02:00
8 changed files with 49 additions and 33 deletions

12
CHANGES
View File

@@ -13,6 +13,16 @@ Release 0.7 (in development)
Release 0.6.2 (in development)
==============================
* Fix cross-reference roles when put into substitutions.
* Don't put image "alt" text into table-of-contents entries.
* In the LaTeX writer, do not raise an exception on too many section
levels, just use the "subparagraph" level for all of them.
* #145: Fix autodoc problem with automatic members that refuse to be
getattr()'d from their parent.
* If specific filenames to build are given on the command line,
check that they are within the source directory.
@@ -23,7 +33,7 @@ Release 0.6.2 (in development)
* #134: Fix pending_xref leftover nodes when using the todolist
directive from the todo extension.
Release 0.6.1 (Mar 26, 2009)
============================

View File

@@ -63,7 +63,7 @@ class toctree(nodes.General, nodes.Element): pass
class centered(nodes.Part, nodes.Element): pass
# pending xref
class pending_xref(nodes.Element): pass
class pending_xref(nodes.Inline, nodes.Element): pass
# compact paragraph -- never makes a <p>
class compact_paragraph(nodes.paragraph): pass

View File

@@ -11,7 +11,6 @@
import os
import codecs
import shutil
import posixpath
import cPickle as pickle
from os import path
@@ -30,7 +29,7 @@ from docutils.readers.doctree import Reader as DoctreeReader
from sphinx import package_dir, __version__
from sphinx.util import SEP, os_path, relative_uri, ensuredir, \
movefile, ustrftime, copy_static_entry
movefile, ustrftime, copy_static_entry, copyfile
from sphinx.errors import SphinxError
from sphinx.search import js_index
from sphinx.theming import Theme
@@ -510,8 +509,8 @@ class StandaloneHTMLBuilder(Builder):
ensuredir(path.join(self.outdir, '_images'))
for src, dest in self.images.iteritems():
self.info(' '+src, nonl=1)
shutil.copyfile(path.join(self.srcdir, src),
path.join(self.outdir, '_images', dest))
copyfile(path.join(self.srcdir, src),
path.join(self.outdir, '_images', dest))
self.info()
# copy downloadable files
@@ -520,8 +519,8 @@ class StandaloneHTMLBuilder(Builder):
ensuredir(path.join(self.outdir, '_downloads'))
for src, (_, dest) in self.env.dlfiles.iteritems():
self.info(' '+src, nonl=1)
shutil.copyfile(path.join(self.srcdir, src),
path.join(self.outdir, '_downloads', dest))
copyfile(path.join(self.srcdir, src),
path.join(self.outdir, '_downloads', dest))
self.info()
# copy static files
@@ -536,8 +535,8 @@ class StandaloneHTMLBuilder(Builder):
jsfile = path.join(package_dir, 'locale', self.config.language,
'LC_MESSAGES', 'sphinx.js')
if path.isfile(jsfile):
shutil.copyfile(jsfile, path.join(self.outdir, '_static',
'translations.js'))
copyfile(jsfile, path.join(self.outdir, '_static',
'translations.js'))
# then, copy over all user-supplied static files
if self.theme:
staticdirnames = [path.join(themepath, 'static')
@@ -560,8 +559,8 @@ class StandaloneHTMLBuilder(Builder):
# last, copy logo file (handled differently)
if self.config.html_logo:
logobase = path.basename(self.config.html_logo)
shutil.copyfile(path.join(self.confdir, self.config.html_logo),
path.join(self.outdir, '_static', logobase))
copyfile(path.join(self.confdir, self.config.html_logo),
path.join(self.outdir, '_static', logobase))
# write build info file
fp = open(path.join(self.outdir, '.buildinfo'), 'w')
@@ -678,7 +677,7 @@ class StandaloneHTMLBuilder(Builder):
source_name = path.join(self.outdir, '_sources',
os_path(ctx['sourcename']))
ensuredir(path.dirname(source_name))
shutil.copyfile(self.env.doc2path(pagename), source_name)
copyfile(self.env.doc2path(pagename), source_name)
def handle_finish(self):
self.info(bold('dumping search index... '), nonl=True)
@@ -793,7 +792,7 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
source_name = path.join(self.outdir, '_sources',
os_path(ctx['sourcename']))
ensuredir(path.dirname(source_name))
shutil.copyfile(self.env.doc2path(pagename), source_name)
copyfile(self.env.doc2path(pagename), source_name)
def handle_finish(self):
# dump the global context
@@ -809,8 +808,8 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
# copy the environment file from the doctree dir to the output dir
# as needed by the web app
shutil.copyfile(path.join(self.doctreedir, ENV_PICKLE_FILENAME),
path.join(self.outdir, ENV_PICKLE_FILENAME))
copyfile(path.join(self.doctreedir, ENV_PICKLE_FILENAME),
path.join(self.outdir, ENV_PICKLE_FILENAME))
# touch 'last build' file, used by the web application to determine
# when to reload its environment and clear the cache

View File

@@ -10,7 +10,6 @@
"""
import os
import shutil
from os import path
from docutils import nodes
@@ -19,7 +18,7 @@ from docutils.utils import new_document
from docutils.frontend import OptionParser
from sphinx import package_dir, addnodes
from sphinx.util import SEP, texescape
from sphinx.util import SEP, texescape, copyfile
from sphinx.builders import Builder
from sphinx.environment import NoUri
from sphinx.util.console import bold, darkgreen
@@ -175,8 +174,8 @@ class LaTeXBuilder(Builder):
self.info(bold('copying images...'), nonl=1)
for src, dest in self.images.iteritems():
self.info(' '+src, nonl=1)
shutil.copyfile(path.join(self.srcdir, src),
path.join(self.outdir, dest))
copyfile(path.join(self.srcdir, src),
path.join(self.outdir, dest))
self.info()
# copy additional files
@@ -184,20 +183,20 @@ class LaTeXBuilder(Builder):
self.info(bold('copying additional files...'), nonl=1)
for filename in self.config.latex_additional_files:
self.info(' '+filename, nonl=1)
shutil.copyfile(path.join(self.confdir, filename),
path.join(self.outdir, path.basename(filename)))
copyfile(path.join(self.confdir, filename),
path.join(self.outdir, path.basename(filename)))
self.info()
# the logo is handled differently
if self.config.latex_logo:
logobase = path.basename(self.config.latex_logo)
shutil.copyfile(path.join(self.confdir, self.config.latex_logo),
path.join(self.outdir, logobase))
copyfile(path.join(self.confdir, self.config.latex_logo),
path.join(self.outdir, logobase))
self.info(bold('copying TeX support files... '), nonl=True)
staticdirname = path.join(package_dir, 'texinputs')
for filename in os.listdir(staticdirname):
if not filename.startswith('.'):
shutil.copyfile(path.join(staticdirname, filename),
path.join(self.outdir, filename))
copyfile(path.join(staticdirname, filename),
path.join(self.outdir, filename))
self.info('done')

View File

@@ -190,6 +190,9 @@ class SphinxContentsFilter(ContentsFilter):
self.parent.append(nodes.literal(text, text))
raise nodes.SkipNode
def visit_image(self, node):
raise nodes.SkipNode
class BuildEnvironment:
"""

View File

@@ -484,7 +484,7 @@ class Documenter(object):
# using keys() because apparently there are objects for which
# __dict__ changes while getting attributes
return False, sorted([
(mname, self.get_attr(self.object, mname))
(mname, self.get_attr(self.object, mname, None))
for mname in self.get_attr(self.object, '__dict__').keys()])
def filter_members(self, members, want_all):

View File

@@ -384,7 +384,7 @@ def force_decode(string, encoding):
def movefile(source, dest):
# move a file, removing the destination if it exists
"""Move a file, removing the destination if it exists."""
if os.path.exists(dest):
try:
os.unlink(dest)
@@ -393,6 +393,13 @@ def movefile(source, dest):
os.rename(source, dest)
def copyfile(source, dest):
"""Copy a file and its modification times, if possible."""
shutil.copyfile(source, dest)
try: shutil.copystat(source, dest)
except shutil.Error: pass
def copy_static_entry(source, target, builder, context={}):
if path.isfile(source):
if source.lower().endswith('_t'):
@@ -403,7 +410,7 @@ def copy_static_entry(source, target, builder, context={}):
fsrc.close()
fdst.close()
else:
shutil.copyfile(source, target)
copyfile(source, target)
elif path.isdir(source):
if source in builder.config.exclude_dirnames:
return

View File

@@ -385,10 +385,8 @@ class LaTeXTranslator(nodes.NodeVisitor):
try:
self.body.append(r'\%s{' % self.sectionnames[self.sectionlevel])
except IndexError:
raise UnsupportedError(
'%s:%s: too many nesting section levels for '
'LaTeX, at heading: %s' % (self.curfilestack[-1],
node.line or '', node.astext()))
# just use "subparagraph", it's not numbered anyway
self.body.append(r'\%s{' % self.sectionnames[-1])
self.context.append('}\n')
elif isinstance(parent, (nodes.topic, nodes.sidebar)):
self.body.append(r'\textbf{')