mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge branch '1.6-release'
This commit is contained in:
commit
78a20617b5
3
CHANGES
3
CHANGES
@ -80,6 +80,7 @@ Bugs fixed
|
|||||||
longtable class or not (refs #3686)
|
longtable class or not (refs #3686)
|
||||||
* #3725: Todo looks different from note in LaTeX output
|
* #3725: Todo looks different from note in LaTeX output
|
||||||
* #3479: stub-columns have no effect in LaTeX output
|
* #3479: stub-columns have no effect in LaTeX output
|
||||||
|
* #3738: Nonsensical code in theming.py
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
--------
|
--------
|
||||||
@ -344,6 +345,8 @@ Bugs fixed
|
|||||||
* #3702: LaTeX writer styles figure legends with a hard-coded ``\small``
|
* #3702: LaTeX writer styles figure legends with a hard-coded ``\small``
|
||||||
* #3708: LaTeX writer allows irc scheme
|
* #3708: LaTeX writer allows irc scheme
|
||||||
* #3717: Stop enforcing that favicon's must be .ico
|
* #3717: Stop enforcing that favicon's must be .ico
|
||||||
|
* #3731, #3732: Protect isenumclass predicate against non-class arguments
|
||||||
|
* #3320: Warning about reference target not being found for container types
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
--------
|
--------
|
||||||
|
@ -510,11 +510,18 @@ Let us now list some macros from the package file
|
|||||||
.. hint::
|
.. hint::
|
||||||
|
|
||||||
As an experimental feature, Sphinx can use user-defined template file for
|
As an experimental feature, Sphinx can use user-defined template file for
|
||||||
LaTeX source if you have a file named ``_templates/latex.tex_t`` on your
|
LaTeX source if you have a file named ``_templates/latex.tex_t`` in your
|
||||||
project. Now all template variables are unstable and undocumented. They
|
project.
|
||||||
will be changed in future version.
|
|
||||||
|
|
||||||
.. versionadded:: 1.5
|
.. versionadded:: 1.5
|
||||||
|
currently all template variables are unstable and undocumented.
|
||||||
|
|
||||||
|
Additional files ``longtable.tex_t``, ``tabulary.tex_t`` and
|
||||||
|
``tabular.tex_t`` can be added to ``_templates/`` to configure some aspects
|
||||||
|
of table rendering (such as the caption position).
|
||||||
|
|
||||||
|
.. versionadded:: 1.6
|
||||||
|
currently all template variables are unstable and undocumented.
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
|
@ -203,9 +203,9 @@ class Sphinx(object):
|
|||||||
self.config.setup(self)
|
self.config.setup(self)
|
||||||
else:
|
else:
|
||||||
raise ConfigError(
|
raise ConfigError(
|
||||||
_("'setup' that is specified in the conf.py has not been "
|
_("'setup' as currently defined in conf.py isn't a Python callable. "
|
||||||
"callable. Please provide a callable `setup` function "
|
"Please modify its definition to make it a callable function. This is "
|
||||||
"in order to behave as a sphinx extension conf.py itself.")
|
"needed for conf.py to behave as a Sphinx extension.")
|
||||||
)
|
)
|
||||||
|
|
||||||
# now that we know all config values, collect them from conf.py
|
# now that we know all config values, collect them from conf.py
|
||||||
@ -416,7 +416,7 @@ class Sphinx(object):
|
|||||||
def connect(self, event, callback):
|
def connect(self, event, callback):
|
||||||
# type: (unicode, Callable) -> int
|
# type: (unicode, Callable) -> int
|
||||||
listener_id = self.events.connect(event, callback)
|
listener_id = self.events.connect(event, callback)
|
||||||
logger.debug('[app] connecting event %r: %r', event, callback, listener_id)
|
logger.debug('[app] connecting event %r: %r [id=%s]', event, callback, listener_id)
|
||||||
return listener_id
|
return listener_id
|
||||||
|
|
||||||
def disconnect(self, listener_id):
|
def disconnect(self, listener_id):
|
||||||
@ -462,7 +462,7 @@ class Sphinx(object):
|
|||||||
|
|
||||||
def set_translator(self, name, translator_class):
|
def set_translator(self, name, translator_class):
|
||||||
# type: (unicode, Type[nodes.NodeVisitor]) -> None
|
# type: (unicode, Type[nodes.NodeVisitor]) -> None
|
||||||
logger.info(bold(_('A Translator for the %s builder is changed.') % name))
|
logger.info(bold(_('Change of translator for the %s builder.') % name))
|
||||||
self.registry.add_translator(name, translator_class)
|
self.registry.add_translator(name, translator_class)
|
||||||
|
|
||||||
def add_node(self, node, **kwds):
|
def add_node(self, node, **kwds):
|
||||||
|
@ -135,7 +135,7 @@ class PyXrefMixin(object):
|
|||||||
split_contnode = bool(contnode and contnode.astext() == target)
|
split_contnode = bool(contnode and contnode.astext() == target)
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
for sub_target in sub_targets:
|
for sub_target in filter(None, sub_targets):
|
||||||
if split_contnode:
|
if split_contnode:
|
||||||
contnode = nodes.Text(sub_target)
|
contnode = nodes.Text(sub_target)
|
||||||
|
|
||||||
|
@ -50,9 +50,8 @@ def verify_required_extensions(app, requirements):
|
|||||||
for extname, reqversion in iteritems(requirements):
|
for extname, reqversion in iteritems(requirements):
|
||||||
extension = app.extensions.get(extname)
|
extension = app.extensions.get(extname)
|
||||||
if extension is None:
|
if extension is None:
|
||||||
logger.warning(_('needs_extensions config value specifies a '
|
logger.warning(_('The %s extension is required by needs_extensions settings,'
|
||||||
'version requirement for extension %s, but it is '
|
'but it is not loaded.'), extname)
|
||||||
'not loaded'), extname)
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if extension.version == 'unknown version' or reqversion > extension.version:
|
if extension.version == 'unknown version' or reqversion > extension.version:
|
||||||
|
@ -233,8 +233,8 @@ class HTMLThemeFactory(object):
|
|||||||
target = entry_point.load()
|
target = entry_point.load()
|
||||||
if callable(target):
|
if callable(target):
|
||||||
themedir = target()
|
themedir = target()
|
||||||
if not isinstance(path, string_types):
|
if not isinstance(themedir, string_types):
|
||||||
logger.warning(_('Theme extension %r does not response correctly.') %
|
logger.warning(_('Theme extension %r does not respond correctly.') %
|
||||||
entry_point.module_name)
|
entry_point.module_name)
|
||||||
else:
|
else:
|
||||||
themedir = target
|
themedir = target
|
||||||
|
@ -142,7 +142,7 @@ def isenumclass(x):
|
|||||||
"""Check if the object is subclass of enum."""
|
"""Check if the object is subclass of enum."""
|
||||||
if enum is None:
|
if enum is None:
|
||||||
return False
|
return False
|
||||||
return issubclass(x, enum.Enum)
|
return inspect.isclass(x) and issubclass(x, enum.Enum)
|
||||||
|
|
||||||
|
|
||||||
def isenumattribute(x):
|
def isenumattribute(x):
|
||||||
|
@ -29,3 +29,10 @@ module
|
|||||||
.. py:class:: ModTopLevel
|
.. py:class:: ModTopLevel
|
||||||
|
|
||||||
* Link to :py:class:`ModNoModule`
|
* Link to :py:class:`ModNoModule`
|
||||||
|
|
||||||
|
.. py:function:: foo(x, y)
|
||||||
|
|
||||||
|
:param x: param x
|
||||||
|
:type x: int
|
||||||
|
:param y: param y
|
||||||
|
:type y: tuple(str, float)
|
||||||
|
@ -109,7 +109,11 @@ def test_domain_py_xrefs(app, status, warning):
|
|||||||
'ModTopLevel', 'class')
|
'ModTopLevel', 'class')
|
||||||
assert_refnode(refnodes[6], 'module_b.submodule', 'ModTopLevel',
|
assert_refnode(refnodes[6], 'module_b.submodule', 'ModTopLevel',
|
||||||
'ModNoModule', 'class')
|
'ModNoModule', 'class')
|
||||||
assert len(refnodes) == 7
|
assert_refnode(refnodes[7], False, False, 'int', 'obj')
|
||||||
|
assert_refnode(refnodes[8], False, False, 'tuple', 'obj')
|
||||||
|
assert_refnode(refnodes[9], False, False, 'str', 'obj')
|
||||||
|
assert_refnode(refnodes[10], False, False, 'float', 'obj')
|
||||||
|
assert len(refnodes) == 11
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.sphinx('dummy', testroot='domain-py')
|
@pytest.mark.sphinx('dummy', testroot='domain-py')
|
||||||
|
Loading…
Reference in New Issue
Block a user