mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
merge with 0.6
This commit is contained in:
12
CHANGES
12
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)
|
||||
============================
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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:
|
||||
"""
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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{')
|
||||
|
||||
Reference in New Issue
Block a user