summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-04-28 21:23:39 +0200
committerGeorg Brandl <georg@python.org>2009-04-28 21:23:39 +0200
commitdbf9f9985fda7471ea5d928c858dcb5a313e3f60 (patch)
tree73a67d7872af234ddc14fa5a505f43afd3700b21
parent97ebfba6c89a54f6e98476582e375b0ca618f4e8 (diff)
parent75cccedad15dd7e0abe8db1e33a864322eabf14e (diff)
downloadsphinx-git-dbf9f9985fda7471ea5d928c858dcb5a313e3f60.tar.gz
merge with 0.6
-rw-r--r--CHANGES12
-rw-r--r--sphinx/addnodes.py2
-rw-r--r--sphinx/builders/html.py27
-rw-r--r--sphinx/builders/latex.py19
-rw-r--r--sphinx/environment.py3
-rw-r--r--sphinx/ext/autodoc.py2
-rw-r--r--sphinx/util/__init__.py11
-rw-r--r--sphinx/writers/latex.py6
8 files changed, 49 insertions, 33 deletions
diff --git a/CHANGES b/CHANGES
index 18a9600ba..d450e9737 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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)
============================
diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py
index 63907a0e6..b8c9a3544 100644
--- a/sphinx/addnodes.py
+++ b/sphinx/addnodes.py
@@ -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
diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py
index 4069882eb..65966008a 100644
--- a/sphinx/builders/html.py
+++ b/sphinx/builders/html.py
@@ -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
diff --git a/sphinx/builders/latex.py b/sphinx/builders/latex.py
index bc2f1ba58..95b343a4c 100644
--- a/sphinx/builders/latex.py
+++ b/sphinx/builders/latex.py
@@ -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')
diff --git a/sphinx/environment.py b/sphinx/environment.py
index 522e2bd06..064b71ae1 100644
--- a/sphinx/environment.py
+++ b/sphinx/environment.py
@@ -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:
"""
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index caf34345a..85b89149b 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -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):
diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py
index 1eb8383aa..2492420ad 100644
--- a/sphinx/util/__init__.py
+++ b/sphinx/util/__init__.py
@@ -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
diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
index 339e827e2..8b54d4915 100644
--- a/sphinx/writers/latex.py
+++ b/sphinx/writers/latex.py
@@ -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{')