Merge branch '1.7'

This commit is contained in:
Takeshi KOMIYA committed 2018-02-20 00:02:57 +09:00
commit 938ba386ed
106 files changed
+378 -204

No files matched your search

+3
View File
@@ -75,6 +75,9 @@ Bugs fixed
* #4615: The argument of ``sphinx.build`` has been changed in 1.7.0 * #4615: The argument of ``sphinx.build`` has been changed in 1.7.0
* autosummary: The interface of ``sphinx.ext.autosummary.get_documenter()`` has * autosummary: The interface of ``sphinx.ext.autosummary.get_documenter()`` has
been changed been changed
* #4630: Have order on msgids in sphinx.pot deterministic
* #4563: autosummary: Incorrect end of line punctuation detection
* #4577: Enumerated sublists with explicit start with wrong number
Testing Testing
-------- --------
+4 -3
View File
@@ -12,7 +12,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from codecs import open from codecs import open
from collections import defaultdict from collections import defaultdict, OrderedDict
from datetime import datetime, tzinfo, timedelta from datetime import datetime, tzinfo, timedelta
from os import path, walk, getenv from os import path, walk, getenv
from time import time from time import time
@@ -68,7 +68,7 @@ class Catalog(object):
# type: () -> None # type: () -> None
self.messages = [] # type: List[unicode] self.messages = [] # type: List[unicode]
# retain insertion order, a la OrderedDict # retain insertion order, a la OrderedDict
self.metadata = {} # type: Dict[unicode, List[Tuple[unicode, int, unicode]]] self.metadata = OrderedDict() # type: Dict[unicode, List[Tuple[unicode, int, unicode]]] # NOQA
# msgid -> file, line, uid # msgid -> file, line, uid
def add(self, msg, origin): def add(self, msg, origin):
@@ -237,7 +237,8 @@ class MessageCatalogBuilder(I18nBuilder):
def _extract_from_template(self): def _extract_from_template(self):
# type: () -> None # type: () -> None
files = self._collect_templates() files = list(self._collect_templates())
files.sort()
logger.info(bold('building [%s]: ' % self.name), nonl=1) logger.info(bold('building [%s]: ' % self.name), nonl=1)
logger.info('targets for %d template files', len(files)) logger.info('targets for %d template files', len(files))
+37 -21
View File
@@ -64,6 +64,7 @@ from typing import TYPE_CHECKING
from docutils import nodes from docutils import nodes
from docutils.parsers.rst import Directive, directives from docutils.parsers.rst import Directive, directives
from docutils.parsers.rst.states import RSTStateMachine, state_classes
from docutils.statemachine import ViewList from docutils.statemachine import ViewList
from six import string_types from six import string_types
from six import text_type from six import text_type
@@ -77,6 +78,7 @@ from sphinx.ext.autodoc.directive import DocumenterBridge, Options
from sphinx.ext.autodoc.importer import import_module from sphinx.ext.autodoc.importer import import_module
from sphinx.pycode import ModuleAnalyzer, PycodeError from sphinx.pycode import ModuleAnalyzer, PycodeError
from sphinx.util import import_object, rst, logging from sphinx.util import import_object, rst, logging
from sphinx.util.docutils import new_document
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict, List, Tuple, Type, Union # NOQA from typing import Any, Dict, List, Tuple, Type, Union # NOQA
@@ -342,27 +344,7 @@ class Autosummary(Directive):
# -- Grab the summary # -- Grab the summary
documenter.add_content(None) documenter.add_content(None)
doc = self.result.data summary = extract_summary(self.result.data[:], self.state.document)
while doc and not doc[0].strip():
doc.pop(0)
# If there's a blank line, then we can assume the first sentence /
# paragraph has ended, so anything after shouldn't be part of the
# summary
for i, piece in enumerate(doc):
if not piece.strip():
doc = doc[:i]
break
# Try to find the "first sentence", which may span multiple lines
m = re.search(r"^([A-Z].*?\.)(?:\s|$)", " ".join(doc).strip())
if m:
summary = m.group(1).strip()
elif doc:
summary = doc[0].strip()
else:
summary = ''
items.append((display_name, sig, summary, real_name)) items.append((display_name, sig, summary, real_name))
@@ -469,6 +451,40 @@ def mangle_signature(sig, max_chars=30):
return u"(%s)" % sig return u"(%s)" % sig
def extract_summary(doc, document):
# type: (List[unicode], Any) -> unicode
"""Extract summary from docstring."""
# Skip a blank lines at the top
while doc and not doc[0].strip():
doc.pop(0)
# If there's a blank line, then we can assume the first sentence /
# paragraph has ended, so anything after shouldn't be part of the
# summary
for i, piece in enumerate(doc):
if not piece.strip():
doc = doc[:i]
break
# Try to find the "first sentence", which may span multiple lines
sentences = " ".join(doc).split('.')
if len(sentences) == 1:
summary = sentences[0].strip()
else:
summary = ''
state_machine = RSTStateMachine(state_classes, 'Body')
while sentences:
summary += sentences.pop(0) + '.'
node = new_document('', document.settings)
state_machine.run([summary], node)
if not node.traverse(nodes.system_message):
# considered as that splitting by period does not break inline markups
break
return summary
def limited_join(sep, items, max_chars=30, overflow_marker="..."): def limited_join(sep, items, max_chars=30, overflow_marker="..."):
# type: (unicode, List[unicode], int, unicode) -> unicode # type: (unicode, List[unicode], int, unicode) -> unicode
"""Join a number of strings to one, limiting the length to *max_chars*. """Join a number of strings to one, limiting the length to *max_chars*.
+11 -1
View File
@@ -1581,9 +1581,19 @@ class LaTeXTranslator(nodes.NodeVisitor):
def visit_enumerated_list(self, node): def visit_enumerated_list(self, node):
# type: (nodes.Node) -> None # type: (nodes.Node) -> None
def get_nested_level(node):
# type: (nodes.Node) -> int
if node is None:
return 0
elif isinstance(node, nodes.enumerated_list):
return get_nested_level(node.parent) + 1
else:
return get_nested_level(node.parent)
self.body.append('\\begin{enumerate}\n') self.body.append('\\begin{enumerate}\n')
if 'start' in node: if 'start' in node:
self.body.append('\\setcounter{enumi}{%d}\n' % (node['start'] - 1)) nested = get_nested_level(node)
self.body.append('\\setcounter{enum%s}{%d}\n' % ('i' * nested, node['start'] - 1))
if self.table: if self.table:
self.table.has_problematic = True self.table.has_problematic = True
+1 -1
View File
@@ -10,9 +10,9 @@
import os import os
import shutil import shutil
import sys import sys
import warnings
import pytest import pytest
from sphinx.testing.path import path from sphinx.testing.path import path
pytest_plugins = 'sphinx.testing.fixtures' pytest_plugins = 'sphinx.testing.fixtures'
+7 -9
View File
@@ -11,16 +11,15 @@
""" """
# "raises" imported for usage by autodoc # "raises" imported for usage by autodoc
import six
import sys import sys
from sphinx.testing.util import SphinxTestApp, Struct
import pytest import pytest
import six
from six import StringIO
from docutils.statemachine import ViewList from docutils.statemachine import ViewList
from six import StringIO
from sphinx.ext.autodoc import AutoDirective, add_documenter, \ from sphinx.ext.autodoc import add_documenter, FunctionDocumenter, ALL # NOQA
ModuleLevelDocumenter, FunctionDocumenter, cut_lines, between, ALL from sphinx.testing.util import SphinxTestApp, Struct
from sphinx.util import logging from sphinx.util import logging
app = None app = None
@@ -279,8 +278,8 @@ class Base(object):
def inheritedmeth(self): def inheritedmeth(self):
"""Inherited function.""" """Inherited function."""
if six.PY3 and sys.version_info[:2] >= (3, 5):
if six.PY3 and sys.version_info[:2] >= (3, 5):
async def _other_coro_func(): async def _other_coro_func():
return "run" return "run"
@@ -345,5 +344,4 @@ class Class(Base):
async def do_coroutine(self): async def do_coroutine(self):
"""A documented coroutine function""" """A documented coroutine function"""
attr_coro_result = await _other_coro_func() # NOQA
attr_coro_result = await _other_coro_func()
@@ -2,7 +2,6 @@
from docutils import nodes from docutils import nodes
from docutils.parsers.rst import Directive from docutils.parsers.rst import Directive
from sphinx.util.nodes import split_explicit_title
class my_figure(nodes.figure): class my_figure(nodes.figure):
@@ -2,6 +2,7 @@
import os import os
import sys import sys
from docutils.parsers import Parser from docutils.parsers import Parser
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
@@ -2,6 +2,7 @@
import os import os
import sys import sys
from docutils.parsers import Parser from docutils.parsers import Parser
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
+3 -2
View File
@@ -1,16 +1,17 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
## set this by test # set this by test
# import os # import os
# import sys # import sys
# sys.path.insert(0, os.path.abspath('.')) # sys.path.insert(0, os.path.abspath('.'))
from docutils.writers.docutils_xml import XMLTranslator
from sphinx.writers.html import HTMLTranslator from sphinx.writers.html import HTMLTranslator
from sphinx.writers.latex import LaTeXTranslator from sphinx.writers.latex import LaTeXTranslator
from sphinx.writers.manpage import ManualPageTranslator from sphinx.writers.manpage import ManualPageTranslator
from sphinx.writers.texinfo import TexinfoTranslator from sphinx.writers.texinfo import TexinfoTranslator
from sphinx.writers.text import TextTranslator from sphinx.writers.text import TextTranslator
from sphinx.writers.websupport import WebSupportTranslator from sphinx.writers.websupport import WebSupportTranslator
from docutils.writers.docutils_xml import XMLTranslator
project = 'test' project = 'test'
@@ -2,5 +2,6 @@
from sphinx.writers.html import HTMLTranslator from sphinx.writers.html import HTMLTranslator
class ExtHTMLTranslator(HTMLTranslator): class ExtHTMLTranslator(HTMLTranslator):
pass pass
@@ -2,7 +2,6 @@
import os import os
import mod_resource import mod_resource
import mod_something import mod_something
@@ -1,7 +1,9 @@
""" A module with a trailing underscore """ """ A module with a trailing underscore """
class SomeClass_: class SomeClass_:
""" A class with a trailing underscore """ """ A class with a trailing underscore """
def some_function_(some_arg_): def some_function_(some_arg_):
""" A function with a trailing underscore in name and argument """ """ A function with a trailing underscore in name and argument """
+2 -1
View File
@@ -1,4 +1,5 @@
import sys, os import os
import sys
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
@@ -8,6 +8,7 @@
C.C2 C.C2
""" """
def withSentence(): def withSentence():
'''I have a sentence which '''I have a sentence which
spans multiple lines. Then I have spans multiple lines. Then I have
@@ -15,6 +16,7 @@ def withSentence():
''' '''
pass pass
def noSentence(): def noSentence():
'''this doesn't start with a '''this doesn't start with a
capital. so it's not considered capital. so it's not considered
@@ -22,6 +24,7 @@ def noSentence():
''' '''
pass pass
def emptyLine(): def emptyLine():
'''This is the real summary '''This is the real summary
@@ -1,12 +1,15 @@
""" """
module with trailing underscores everywhere module with trailing underscores everywhere
""" """
class class_(object): class class_(object):
""" Class """ """ Class """
def method_(_arg): def method_(_arg):
""" Method """ """ Method """
pass pass
def function_(_arg): def function_(_arg):
""" Function """ """ Function """
pass pass
+6
View File
@@ -8,13 +8,19 @@ value5 = 3 # parent type
value6 = () # other sequence type, also raises value6 = () # other sequence type, also raises
value7 = ['foo'] # explicitly permitted value7 = ['foo'] # explicitly permitted
class A(object): class A(object):
pass pass
class B(A): class B(A):
pass pass
class C(A): class C(A):
pass pass
value8 = C() # sibling type value8 = C() # sibling type
# both have no default or permissible types # both have no default or permissible types
-1
View File
@@ -1,3 +1,2 @@
copyright = u'2006-2009, Author' copyright = u'2006-2009, Author'
-1
View File
@@ -3,4 +3,3 @@
master_doc = 'index' master_doc = 'index'
exclude_patterns = ['_build'] exclude_patterns = ['_build']
numfig = True numfig = True
@@ -1,7 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys, os
templates_path = ['_templates'] templates_path = ['_templates']
master_doc = 'index' master_doc = 'index'
html_theme = 'base_theme2' html_theme = 'base_theme2'
@@ -1,5 +1,6 @@
from bug2437.autodoc_dummy_foo import Foo from bug2437.autodoc_dummy_foo import Foo
class Bar(object): class Bar(object):
"""Dummy class Bar with alias.""" """Dummy class Bar with alias."""
my_name = Foo my_name = Foo
@@ -1,6 +1,6 @@
from dummy import * from dummy import * # NOQA
def test(): def test():
"""Dummy function using dummy.*""" """Dummy function using dummy.*"""
dummy_function() dummy_function() # NOQA
+2 -1
View File
@@ -1,4 +1,5 @@
import sys, os import os
import sys
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import enum import enum
from six import StringIO, add_metaclass from six import StringIO, add_metaclass
from sphinx.ext.autodoc import add_documenter # NOQA from sphinx.ext.autodoc import add_documenter # NOQA
@@ -1,4 +1,4 @@
from os import * from os import * # NOQA
class Foo: class Foo:
+2 -1
View File
@@ -1,4 +1,5 @@
import sys, os import os
import sys
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
@@ -1,5 +1,5 @@
from os import path
import sys import sys
from os import path
sys.path.insert(0, path.abspath(path.dirname(__file__))) sys.path.insert(0, path.abspath(path.dirname(__file__)))
+1
View File
@@ -6,6 +6,7 @@ exclude_patterns = ['_build']
confval1 = True confval1 = True
def setup(app): def setup(app):
app.add_config_value('confval1', False, None) app.add_config_value('confval1', False, None)
app.add_config_value('confval2', False, None) app.add_config_value('confval2', False, None)
+2 -2
View File
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys
import os import os
import sys
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
@@ -9,7 +9,7 @@ master_doc = 'index'
exclude_patterns = ['_build'] exclude_patterns = ['_build']
if 'test_linkcode' in tags: if 'test_linkcode' in tags: # NOQA
extensions.remove('sphinx.ext.viewcode') extensions.remove('sphinx.ext.viewcode')
extensions.append('sphinx.ext.linkcode') extensions.append('sphinx.ext.linkcode')
@@ -1,7 +1,4 @@
from __future__ import absolute_import from __future__ import absolute_import
from .mod1 import func1, Class1 from .mod1 import func1, Class1 # NOQA
from .mod2 import ( from .mod2 import func2, Class2 # NOQA
func2,
Class2,
)
@@ -2,9 +2,11 @@
mod1 mod1
""" """
def decorator(f): def decorator(f):
return f return f
@decorator @decorator
def func1(a, b): def func1(a, b):
""" """
@@ -19,6 +21,7 @@ class Class1(object):
this is Class1 this is Class1
""" """
class Class3(object): class Class3(object):
""" """
this is Class3 this is Class3
@@ -2,9 +2,11 @@
mod2 mod2
""" """
def decorator(f): def decorator(f):
return f return f
@decorator @decorator
def func2(a, b): def func2(a, b):
""" """
@@ -0,0 +1,5 @@
{% extends "layout.html" %}
{% block body %}
<h1>{{ _('Template 1') }}</h1>
<p>{%trans%}This is Template 1.{%endtrans%}</p>
{% endblock %}
@@ -0,0 +1,5 @@
{% extends "layout.html" %}
{% block body %}
<h1>{{ _('Template 2') }}</h1>
<p>{%trans%}This is Template 2.{%endtrans%}</p>
{% endblock %}
@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
templates_path = ['_templates']
Whitespace-only changes.
@@ -10,4 +10,3 @@ rst_epilog = '''
:align: middle :align: middle
:alt: alternative_text :alt: alternative_text
''' '''
@@ -9,4 +9,3 @@ rst_epilog = '''
:height: 15pt :height: 15pt
:alt: alternative_text :alt: alternative_text
''' '''
+2 -1
View File
@@ -1,4 +1,5 @@
import sys, os import os
import sys
sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
+6 -1
View File
@@ -10,21 +10,26 @@
""" """
class A(object): class A(object):
pass pass
class B(A): class B(A):
pass pass
class C(A): class C(A):
pass pass
class D(B, C): class D(B, C):
pass pass
class E(B): class E(B):
pass pass
class F(C): class F(C):
pass pass
@@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
master_doc = 'index'
latex_documents = [
(master_doc, 'test.tex', 'The basic Sphinx documentation for testing', 'Sphinx', 'report')
]
@@ -0,0 +1,15 @@
nested-enumerated-list
======================
5. Sphinx
d. Documentation builder
e. Egypt
10) Pyramid
11) Nile River
6. Markup
iii. reStructuredText
iv. Markdown
@@ -1,17 +1,20 @@
import missing_module import missing_module # NOQA
from missing_module import missing_name import missing_package1.missing_module1 # NOQA
import missing_package1.missing_module1 from missing_module import missing_name # NOQA
from missing_package2 import missing_module2 from missing_package2 import missing_module2 # NOQA
from missing_package3.missing_module3 import missing_name from missing_package3.missing_module3 import missing_name # NOQA
import sphinx.missing_module4
from sphinx.missing_module4 import missing_name2 import sphinx.missing_module4 # NOQA
from sphinx.missing_module4 import missing_name2 # NOQA
@missing_name @missing_name
def decoratedFunction(): def decoratedFunction():
"""decoratedFunction docstring""" """decoratedFunction docstring"""
return None return None
class TestAutodoc(object): class TestAutodoc(object):
"""TestAutodoc docstring.""" """TestAutodoc docstring."""
@missing_name @missing_name
@@ -19,4 +22,5 @@ class TestAutodoc(object):
"""TestAutodoc::decoratedMethod docstring""" """TestAutodoc::decoratedMethod docstring"""
return None return None
sphinx.missing_module4.missing_function(len(missing_name2)) sphinx.missing_module4.missing_function(len(missing_name2))
+2
View File
@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import enum import enum
from six import StringIO, add_metaclass from six import StringIO, add_metaclass
from sphinx.ext.autodoc import add_documenter # NOQA from sphinx.ext.autodoc import add_documenter # NOQA
+10 -8
View File
@@ -1,6 +1,13 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys, os import os
import sys
from docutils import nodes
from docutils.parsers.rst import Directive
from sphinx import addnodes
sys.path.append(os.path.abspath('.')) sys.path.append(os.path.abspath('.'))
@@ -75,15 +82,10 @@ autodoc_mock_imports = [
] ]
# modify tags from conf.py # modify tags from conf.py
tags.add('confpytag') tags.add('confpytag') # NOQA
# -- extension API # -- extension API
from docutils import nodes
from docutils.parsers.rst import Directive
from sphinx import addnodes
def userdesc_parse(env, sig, signode): def userdesc_parse(env, sig, signode):
x, y = sig.split(':') x, y = sig.split(':')
signode += addnodes.desc_name(x, x) signode += addnodes.desc_name(x, x)
+1
View File
@@ -1,4 +1,5 @@
# Test extension module # Test extension module
def setup(app): def setup(app):
app.add_config_value('value_from_ext', [], False) app.add_config_value('value_from_ext', [], False)
+1 -1
View File
@@ -1,5 +1,5 @@
from docutils.parsers import Parser
from docutils import nodes from docutils import nodes
from docutils.parsers import Parser
class Parser(Parser): class Parser(Parser):
+1
View File
@@ -1,4 +1,5 @@
from distutils.core import setup from distutils.core import setup
from sphinx.setup_command import BuildDoc from sphinx.setup_command import BuildDoc
cmdclass = {'build_sphinx': BuildDoc} cmdclass = {'build_sphinx': BuildDoc}
+1 -1
View File
@@ -4,9 +4,9 @@ master_doc = 'index'
html_theme = 'classic' html_theme = 'classic'
templates_path = ['_templates'] templates_path = ['_templates']
def setup(app): def setup(app):
app.add_stylesheet('persistent.css') app.add_stylesheet('persistent.css')
app.add_stylesheet('default.css', title="Default") app.add_stylesheet('default.css', title="Default")
app.add_stylesheet('alternate1.css', title="Alternate", alternate=True) app.add_stylesheet('alternate1.css', title="Alternate", alternate=True)
app.add_stylesheet('alternate2.css', alternate=True) app.add_stylesheet('alternate2.css', alternate=True)
-1
View File
@@ -9,4 +9,3 @@ exclude_patterns = ['_build']
extensions = ['sphinx.ext.autosummary'] extensions = ['sphinx.ext.autosummary']
autosummary_generate = ['autosummary_templating'] autosummary_generate = ['autosummary_templating']
-1
View File
@@ -4,4 +4,3 @@ html_theme = 'test-theme'
html_theme_path = ['.', 'test_theme'] html_theme_path = ['.', 'test_theme']
master_doc = 'index' master_doc = 'index'
exclude_patterns = ['_build'] exclude_patterns = ['_build']
-2
View File
@@ -12,5 +12,3 @@ setup(
path = test_theme:get_path path = test_theme:get_path
""", """,
) )
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
def get_path(): def get_path():
return os.path.dirname(os.path.abspath(__file__)) return os.path.dirname(os.path.abspath(__file__))
+2 -3
View File
@@ -8,14 +8,13 @@
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest
from docutils import nodes from docutils import nodes
from sphinx.application import ExtensionError from sphinx.application import ExtensionError
from sphinx.domains import Domain from sphinx.domains import Domain
from sphinx.util import logging
from sphinx.testing.util import strip_escseq from sphinx.testing.util import strip_escseq
import pytest from sphinx.util import logging
def test_events(app, status, warning): def test_events(app, status, warning):
+2 -3
View File
@@ -11,15 +11,14 @@
""" """
import sys import sys
from six import PY3
from sphinx.testing.util import SphinxTestApp, Struct # NOQA
import pytest import pytest
from docutils.statemachine import ViewList from docutils.statemachine import ViewList
from six import PY3
from sphinx.ext.autodoc import AutoDirective, add_documenter, \ from sphinx.ext.autodoc import AutoDirective, add_documenter, \
ModuleLevelDocumenter, FunctionDocumenter, cut_lines, between, ALL ModuleLevelDocumenter, FunctionDocumenter, cut_lines, between, ALL
from sphinx.testing.util import SphinxTestApp, Struct # NOQA
from sphinx.util import logging from sphinx.util import logging
app = None app = None
+7 -6
View File
@@ -10,13 +10,14 @@
""" """
import pickle import pickle
from docutils import nodes import sys
from textwrap import dedent
import mock import mock
import pytest import pytest
from textwrap import dedent from docutils import nodes
from sphinx.errors import SphinxError
import sys
from sphinx.errors import SphinxError
from sphinx.testing.path import path from sphinx.testing.path import path
@@ -60,13 +61,13 @@ def nonascii_srcdir(request, rootdir, sphinx_test_tempdir):
# note: this test skips building docs for some builders because they have independent testcase. # note: this test skips building docs for some builders because they have independent testcase.
# (html, latex, texinfo and manpage) # (html, epub, latex, texinfo and manpage)
@pytest.mark.parametrize( @pytest.mark.parametrize(
"buildername", "buildername",
[ [
# note: no 'html' - if it's ok with dirhtml it's ok with html # note: no 'html' - if it's ok with dirhtml it's ok with html
'dirhtml', 'singlehtml', 'pickle', 'json', 'text', 'htmlhelp', 'qthelp', 'dirhtml', 'singlehtml', 'pickle', 'json', 'text', 'htmlhelp', 'qthelp',
'epub', 'applehelp', 'changes', 'xml', 'pseudoxml', 'linkcheck', 'applehelp', 'changes', 'xml', 'pseudoxml', 'linkcheck',
], ],
) )
@mock.patch('sphinx.builders.linkcheck.requests.head', @mock.patch('sphinx.builders.linkcheck.requests.head',
+1
View File
@@ -14,6 +14,7 @@
import plistlib import plistlib
import pytest import pytest
from sphinx.testing.path import path from sphinx.testing.path import path
# Use plistlib.load in 3.4 and above # Use plistlib.load in 3.4 and above
+29
View File
@@ -9,11 +9,25 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import os
from subprocess import Popen, PIPE
from xml.etree import ElementTree from xml.etree import ElementTree
import pytest import pytest
# check given command is runnable
def runnable(command):
try:
p = Popen(command, stdout=PIPE)
except OSError:
# command not found
return False
else:
p.communicate()
return p.returncode
class EPUBElementTree(object): class EPUBElementTree(object):
"""Test helper for content.opf and tox.ncx""" """Test helper for content.opf and tox.ncx"""
namespaces = { namespaces = {
@@ -245,3 +259,18 @@ def test_epub_writing_mode(app):
# vertical / writing-mode (CSS) # vertical / writing-mode (CSS)
css = (app.outdir / '_static' / 'epub.css').text() css = (app.outdir / '_static' / 'epub.css').text()
assert 'writing-mode: vertical-rl;' in css assert 'writing-mode: vertical-rl;' in css
@pytest.mark.sphinx('epub')
def test_run_epubcheck(app):
app.build()
epubcheck = os.environ.get('EPUBCHECK_PATH', '/usr/share/java/epubcheck.jar')
if runnable('java') and os.path.exists(epubcheck):
p = Popen(['java', '-jar', epubcheck, app.outdir / 'Sphinx.epub'],
stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
if p.returncode != 0:
print(stdout)
print(stderr)
assert False, 'epubcheck exited with return code %s' % p.returncode
+16 -1
View File
@@ -10,9 +10,9 @@
""" """
from __future__ import print_function from __future__ import print_function
import gettext
import os import os
import re import re
import gettext
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
import pytest import pytest
@@ -165,3 +165,18 @@ def test_gettext_template(app):
result = (app.outdir / 'sphinx.pot').text(encoding='utf-8') result = (app.outdir / 'sphinx.pot').text(encoding='utf-8')
assert "Welcome" in result assert "Welcome" in result
assert "Sphinx %(version)s" in result assert "Sphinx %(version)s" in result
@pytest.mark.sphinx('gettext', testroot='gettext-template')
def test_gettext_template_msgid_order_in_sphinxpot(app):
app.builder.build_all()
assert (app.outdir / 'sphinx.pot').isfile()
result = (app.outdir / 'sphinx.pot').text(encoding='utf-8')
assert re.search(
('msgid "Template 1".*'
'msgid "This is Template 1\.".*'
'msgid "Template 2".*'
'msgid "This is Template 2\.".*'),
result,
flags=re.S)
+5 -4
View File
@@ -11,15 +11,15 @@
import os import os
import re import re
import xml.etree.cElementTree as ElementTree
from itertools import cycle, chain from itertools import cycle, chain
import pytest
from html5lib import getTreeBuilder, HTMLParser
from six import PY3 from six import PY3
from sphinx.util.inventory import InventoryFile
from sphinx.testing.util import remove_unicode_literals, strip_escseq from sphinx.testing.util import remove_unicode_literals, strip_escseq
import xml.etree.cElementTree as ElementTree from sphinx.util.inventory import InventoryFile
from html5lib import getTreeBuilder, HTMLParser
import pytest
TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree) TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree)
@@ -1250,6 +1250,7 @@ def test_html_sidebar(app, status, warning):
'index.html': [(".//em/a[@href='https://example.com/man.1']", "", True), 'index.html': [(".//em/a[@href='https://example.com/man.1']", "", True),
(".//em/a[@href='https://example.com/ls.1']", "", True), (".//em/a[@href='https://example.com/ls.1']", "", True),
(".//em/a[@href='https://example.com/sphinx.']", "", True)] (".//em/a[@href='https://example.com/sphinx.']", "", True)]
})) }))
@pytest.mark.sphinx('html', testroot='manpage_url', confoverrides={ @pytest.mark.sphinx('html', testroot='manpage_url', confoverrides={
'manpages_url': 'https://example.com/{page}.{section}'}) 'manpages_url': 'https://example.com/{page}.{section}'})
+1 -2
View File
@@ -18,11 +18,10 @@ import xml.etree.cElementTree as ElementTree
import pytest import pytest
from html5lib import getTreeBuilder, HTMLParser from html5lib import getTreeBuilder, HTMLParser
from test_build_html import flat_dict, tail_check, check_xpath
from sphinx.util.docutils import is_html5_writer_available from sphinx.util.docutils import is_html5_writer_available
from test_build_html import flat_dict, tail_check, check_xpath
TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree) TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree)
HTML_PARSER = HTMLParser(TREE_BUILDER, namespaceHTMLElements=False) HTML_PARSER = HTMLParser(TREE_BUILDER, namespaceHTMLElements=False)
+17 -7
View File
@@ -13,19 +13,18 @@ from __future__ import print_function
import os import os
import re import re
from itertools import product from itertools import product
from subprocess import Popen, PIPE
from shutil import copyfile from shutil import copyfile
from subprocess import Popen, PIPE
from six import PY3
import pytest import pytest
from six import PY3
from test_build_html import ENV_WARNINGS
from sphinx.errors import SphinxError from sphinx.errors import SphinxError
from sphinx.util.osutil import cd, ensuredir
from sphinx.util import docutils
from sphinx.writers.latex import LaTeXTranslator
from sphinx.testing.util import remove_unicode_literals, strip_escseq from sphinx.testing.util import remove_unicode_literals, strip_escseq
from test_build_html import ENV_WARNINGS from sphinx.util import docutils
from sphinx.util.osutil import cd, ensuredir
from sphinx.writers.latex import LaTeXTranslator
LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex']
@@ -1143,3 +1142,14 @@ def test_latex_image_in_parsed_literal(app, status, warning):
assert ('{\\sphinxunactivateextrasandspace \\raisebox{-0.5\\height}' assert ('{\\sphinxunactivateextrasandspace \\raisebox{-0.5\\height}'
'{\\scalebox{2.000000}{\\sphinxincludegraphics[height=1cm]{{pic}.png}}}' '{\\scalebox{2.000000}{\\sphinxincludegraphics[height=1cm]{{pic}.png}}}'
'}AFTER') in result '}AFTER') in result
@pytest.mark.sphinx('latex', testroot='nested-enumerated-list')
def test_latex_nested_enumerated_list(app, status, warning):
app.builder.build_all()
result = (app.outdir / 'test.tex').text(encoding='utf8')
assert r'\setcounter{enumi}{4}' in result
assert r'\setcounter{enumii}{3}' in result
assert r'\setcounter{enumiii}{9}' in result
assert r'\setcounter{enumii}{2}' in result
+3 -4
View File
@@ -14,13 +14,12 @@ import os
import re import re
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
from six import PY3
import pytest import pytest
from six import PY3
from sphinx.writers.texinfo import TexinfoTranslator from test_build_html import ENV_WARNINGS
from sphinx.testing.util import remove_unicode_literals, strip_escseq from sphinx.testing.util import remove_unicode_literals, strip_escseq
from test_build_html import ENV_WARNINGS from sphinx.writers.texinfo import TexinfoTranslator
TEXINFO_WARNINGS = ENV_WARNINGS + """\ TEXINFO_WARNINGS = ENV_WARNINGS + """\
+2 -1
View File
@@ -8,9 +8,10 @@
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest
import pytest
from docutils.utils import column_width from docutils.utils import column_width
from sphinx.writers.text import MAXWIDTH from sphinx.writers.text import MAXWIDTH
+2 -2
View File
@@ -9,9 +9,9 @@
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
from six import PY3, iteritems
import pytest
import mock import mock
import pytest
from six import PY3, iteritems
import sphinx import sphinx
from sphinx.config import Config from sphinx.config import Config
+2 -1
View File
@@ -9,9 +9,10 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest
import os import os
import pytest
from sphinx.config import Config from sphinx.config import Config
from sphinx.directives.code import LiteralIncludeReader from sphinx.directives.code import LiteralIncludeReader
from sphinx.testing.util import etree_parse from sphinx.testing.util import etree_parse
+1 -1
View File
@@ -11,8 +11,8 @@
import re import re
from docutils import nodes
import pytest import pytest
from docutils import nodes
@pytest.mark.sphinx('text', testroot='directive-only') @pytest.mark.sphinx('text', testroot='directive-only')
+1
View File
@@ -13,6 +13,7 @@ import re
import sys import sys
import pytest import pytest
from sphinx.testing.path import path from sphinx.testing.path import path
+2 -2
View File
@@ -11,13 +11,13 @@
import re import re
from six import text_type
import pytest import pytest
from six import text_type
import sphinx.domains.cpp as cppDomain
from sphinx import addnodes from sphinx import addnodes
from sphinx.domains.cpp import DefinitionParser, DefinitionError, NoOldIdError from sphinx.domains.cpp import DefinitionParser, DefinitionError, NoOldIdError
from sphinx.domains.cpp import Symbol, _max_id, _id_prefix from sphinx.domains.cpp import Symbol, _max_id, _id_prefix
import sphinx.domains.cpp as cppDomain
def parse(name, string): def parse(name, string):
+1 -2
View File
@@ -10,12 +10,11 @@
""" """
import pytest import pytest
from mock import Mock
from docutils import nodes from docutils import nodes
from mock import Mock
from sphinx import addnodes from sphinx import addnodes
from sphinx.domains.javascript import JavaScriptDomain from sphinx.domains.javascript import JavaScriptDomain
from sphinx.testing.util import assert_node from sphinx.testing.util import assert_node
+1 -2
View File
@@ -10,13 +10,12 @@
""" """
import pytest import pytest
from docutils import nodes
from mock import Mock from mock import Mock
from six import text_type from six import text_type
from docutils import nodes
from sphinx import addnodes from sphinx import addnodes
from sphinx.domains.python import py_sig_re, _pseudo_parse_arglist, PythonDomain from sphinx.domains.python import py_sig_re, _pseudo_parse_arglist, PythonDomain
from sphinx.testing.util import assert_node from sphinx.testing.util import assert_node
+1 -1
View File
@@ -9,8 +9,8 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
from docutils import nodes
import mock import mock
from docutils import nodes
from sphinx.domains.std import StandardDomain from sphinx.domains.std import StandardDomain
+1 -1
View File
@@ -10,9 +10,9 @@
""" """
import pytest import pytest
from sphinx.testing.util import SphinxTestApp, path
from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.builders.html import StandaloneHTMLBuilder
from sphinx.builders.latex import LaTeXBuilder from sphinx.builders.latex import LaTeXBuilder
from sphinx.testing.util import SphinxTestApp, path
app = env = None app = env = None
+3 -2
View File
@@ -10,11 +10,12 @@
""" """
from collections import namedtuple from collections import namedtuple
from sphinx import locale
from sphinx.environment.adapters.indexentries import IndexEntries
import mock import mock
from sphinx import locale
from sphinx.environment.adapters.indexentries import IndexEntries
Environment = namedtuple('Environment', 'indexentries') Environment = namedtuple('Environment', 'indexentries')
dummy_builder = mock.Mock() dummy_builder = mock.Mock()
+2 -2
View File
@@ -9,14 +9,14 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest
from docutils import nodes from docutils import nodes
from docutils.nodes import bullet_list, list_item, caption, comment, reference from docutils.nodes import bullet_list, list_item, caption, comment, reference
from sphinx import addnodes from sphinx import addnodes
from sphinx.addnodes import compact_paragraph, only from sphinx.addnodes import compact_paragraph, only
from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.builders.html import StandaloneHTMLBuilder
from sphinx.environment.adapters.toctree import TocTree from sphinx.environment.adapters.toctree import TocTree
import pytest
from sphinx.testing.util import assert_node from sphinx.testing.util import assert_node
-1
View File
@@ -16,7 +16,6 @@ from collections import namedtuple
import pytest import pytest
from sphinx.ext.apidoc import main as apidoc_main from sphinx.ext.apidoc import main as apidoc_main
from sphinx.testing.util import remove_unicode_literals from sphinx.testing.util import remove_unicode_literals
+2
View File
@@ -10,7 +10,9 @@
""" """
import pickle import pickle
import pytest import pytest
from sphinx import addnodes from sphinx import addnodes
+26 -5
View File
@@ -9,14 +9,12 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest
from six import iteritems, StringIO from six import iteritems, StringIO
from sphinx.ext.autosummary import mangle_signature, import_by_name from sphinx.ext.autosummary import mangle_signature, import_by_name, extract_summary
from sphinx.testing.util import etree_parse from sphinx.testing.util import etree_parse
import pytest
html_warnfile = StringIO() html_warnfile = StringIO()
@@ -57,6 +55,29 @@ def test_mangle_signature():
assert res == outp, (u"'%s' -> '%s' != '%s'" % (inp, res, outp)) assert res == outp, (u"'%s' -> '%s' != '%s'" % (inp, res, outp))
def test_extract_summary():
from sphinx.util.docutils import new_document
from mock import Mock
settings = Mock(language_code='',
id_prefix='',
auto_id_prefix='',
pep_reference=False,
rfc_reference=False)
document = new_document('', settings)
# normal case
doc = ['',
'This is a first sentence. And second one.',
'',
'Second block is here']
assert extract_summary(doc, document) == 'This is a first sentence.'
# inliner case
doc = ['This sentence contains *emphasis text having dots.*,',
'it does not break sentence.']
assert extract_summary(doc, document) == ' '.join(doc)
@pytest.mark.sphinx('dummy', **default_kw) @pytest.mark.sphinx('dummy', **default_kw)
def test_get_items_summary(make_app, app_params): def test_get_items_summary(make_app, app_params):
import sphinx.ext.autosummary import sphinx.ext.autosummary
@@ -95,7 +116,7 @@ def test_get_items_summary(make_app, app_params):
expected_values = { expected_values = {
'withSentence': 'I have a sentence which spans multiple lines.', 'withSentence': 'I have a sentence which spans multiple lines.',
'noSentence': "this doesn't start with a", 'noSentence': "this doesn't start with a capital.",
'emptyLine': "This is the real summary", 'emptyLine': "This is the real summary",
'module_attr': 'This is a module attribute', 'module_attr': 'This is a module attribute',
'C.class_attr': 'This is a class attribute', 'C.class_attr': 'This is a class attribute',
+4 -3
View File
@@ -9,10 +9,11 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest import pytest
from six import PY2
from sphinx.ext.doctest import is_allowed_version
from packaging.version import InvalidVersion
from packaging.specifiers import InvalidSpecifier from packaging.specifiers import InvalidSpecifier
from packaging.version import InvalidVersion
from six import PY2
from sphinx.ext.doctest import is_allowed_version
cleanup_called = 0 cleanup_called = 0
+2 -1
View File
@@ -9,9 +9,10 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import pytest
import os import os
import pytest
@pytest.mark.sphinx('latex', testroot='ext-imgconverter') @pytest.mark.sphinx('latex', testroot='ext-imgconverter')
@pytest.mark.xfail(os.name != 'posix', reason="Not working on windows") @pytest.mark.xfail(os.name != 'posix', reason="Not working on windows")
+6 -9
View File
@@ -10,7 +10,9 @@
""" """
import os import os
import pytest import pytest
from sphinx.ext.inheritance_diagram import InheritanceDiagram from sphinx.ext.inheritance_diagram import InheritanceDiagram
@@ -52,8 +54,7 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None), ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None), ('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None), ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
['dummy.test.B', 'dummy.test.C'], None),
('dummy.test.B', 'dummy.test.B', ['dummy.test.A'], None) ('dummy.test.B', 'dummy.test.B', ['dummy.test.A'], None)
] ]
@@ -83,12 +84,10 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None), ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None), ('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None), ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
['dummy.test.B', 'dummy.test.C'], None),
('dummy.test.B', 'dummy.test.B', [], None) ('dummy.test.B', 'dummy.test.B', [], None)
] ]
# inheritance diagram with 2 top classes # inheritance diagram with 2 top classes
# :top-classes: dummy.test.B, dummy.test.C # :top-classes: dummy.test.B, dummy.test.C
# Note: we're specifying separate classes, not the entire module here # Note: we're specifying separate classes, not the entire module here
@@ -103,8 +102,7 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None), ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
('dummy.test.C', 'dummy.test.C', [], None), ('dummy.test.C', 'dummy.test.C', [], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None), ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
['dummy.test.B', 'dummy.test.C'], None),
('dummy.test.B', 'dummy.test.B', [], None) ('dummy.test.B', 'dummy.test.B', [], None)
] ]
@@ -126,8 +124,7 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None), ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
('dummy.test.C', 'dummy.test.C', [], None), ('dummy.test.C', 'dummy.test.C', [], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None), ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
['dummy.test.B', 'dummy.test.C'], None),
('dummy.test.B', 'dummy.test.B', [], None), ('dummy.test.B', 'dummy.test.B', [], None),
('dummy.test.A', 'dummy.test.A', [], None), ('dummy.test.A', 'dummy.test.A', [], None),
] ]
+5 -5
View File
@@ -9,22 +9,22 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import os
import unittest import unittest
from io import BytesIO
from docutils import nodes
import mock import mock
import pytest import pytest
import requests import requests
from io import BytesIO from docutils import nodes
import os from test_util_inventory import inventory_v2, inventory_v2_not_having_version
from sphinx import addnodes from sphinx import addnodes
from sphinx.ext.intersphinx import setup as intersphinx_setup
from sphinx.ext.intersphinx import ( from sphinx.ext.intersphinx import (
load_mappings, missing_reference, _strip_basic_auth, load_mappings, missing_reference, _strip_basic_auth,
_get_safe_url, fetch_inventory, INVENTORY_FILENAME, debug _get_safe_url, fetch_inventory, INVENTORY_FILENAME, debug
) )
from test_util_inventory import inventory_v2, inventory_v2_not_having_version from sphinx.ext.intersphinx import setup as intersphinx_setup
def fake_node(domain, type, target, content, **attrs): def fake_node(domain, type, target, content, **attrs):
+5 -4
View File
@@ -9,9 +9,8 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import os
import re
import errno import errno
import re
import subprocess import subprocess
import pytest import pytest
@@ -37,10 +36,12 @@ def test_jsmath(app, status, warning):
content = (app.outdir / 'math.html').text() content = (app.outdir / 'math.html').text()
assert '<div class="math notranslate">\na^2 + b^2 = c^2</div>' in content assert '<div class="math notranslate">\na^2 + b^2 = c^2</div>' in content
assert '<div class="math notranslate">\n\\begin{split}a + 1 &lt; b\\end{split}</div>' in content assert ('<div class="math notranslate">\n\\begin{split}a + 1 &lt; b\\end{split}</div>'
in content)
assert (u'<span class="eqno">(1)<a class="headerlink" href="#equation-foo" ' assert (u'<span class="eqno">(1)<a class="headerlink" href="#equation-foo" '
u'title="Permalink to this equation">\xb6</a></span>' u'title="Permalink to this equation">\xb6</a></span>'
u'<div class="math notranslate" id="equation-foo">\ne^{i\\pi} = 1</div>' in content) u'<div class="math notranslate" id="equation-foo">\ne^{i\\pi} = 1</div>'
in content)
assert (u'<span class="eqno">(2)<a class="headerlink" href="#equation-math-0" ' assert (u'<span class="eqno">(2)<a class="headerlink" href="#equation-math-0" '
u'title="Permalink to this equation">\xb6</a></span>' u'title="Permalink to this equation">\xb6</a></span>'
u'<div class="math notranslate" id="equation-math-0">\n' u'<div class="math notranslate" id="equation-math-0">\n'
+3 -3
View File
@@ -13,11 +13,11 @@
from collections import namedtuple from collections import namedtuple
from unittest import TestCase from unittest import TestCase
from sphinx.application import Sphinx
from sphinx.ext.napoleon import (_process_docstring, _skip_member, Config,
setup)
import mock import mock
from sphinx.application import Sphinx
from sphinx.ext.napoleon import _process_docstring, _skip_member, Config, setup
def _private_doc(): def _private_doc():
"""module._private_doc.DOCSTRING""" """module._private_doc.DOCSTRING"""
+2 -3
View File
@@ -11,15 +11,14 @@
""" """
from collections import namedtuple from collections import namedtuple
# inspect.cleandoc() implements the trim() function from PEP 257
from inspect import cleandoc from inspect import cleandoc
from textwrap import dedent from textwrap import dedent
from unittest import TestCase from unittest import TestCase
import mock
from sphinx.ext.napoleon import Config from sphinx.ext.napoleon import Config
from sphinx.ext.napoleon.docstring import GoogleDocstring, NumpyDocstring from sphinx.ext.napoleon.docstring import GoogleDocstring, NumpyDocstring
import mock
class NamedtupleSubclass(namedtuple('NamedtupleSubclass', ('attr1', 'attr2'))): class NamedtupleSubclass(namedtuple('NamedtupleSubclass', ('attr1', 'attr2'))):
+2 -1
View File
@@ -10,9 +10,10 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
from sphinx.ext.napoleon.iterators import peek_iter, modify_iter
from unittest import TestCase from unittest import TestCase
from sphinx.ext.napoleon.iterators import peek_iter, modify_iter
class BaseIteratorsTest(TestCase): class BaseIteratorsTest(TestCase):
def assertEqualTwice(self, expected, func, *args): def assertEqualTwice(self, expected, func, *args):
+1 -1
View File
@@ -10,9 +10,9 @@
""" """
import mock import mock
from pygments.formatters.html import HtmlFormatter
from pygments.lexer import RegexLexer from pygments.lexer import RegexLexer
from pygments.token import Text, Name from pygments.token import Text, Name
from pygments.formatters.html import HtmlFormatter
from sphinx.highlighting import PygmentsBridge from sphinx.highlighting import PygmentsBridge
+4 -4
View File
@@ -12,13 +12,13 @@
from __future__ import print_function from __future__ import print_function
import os import os
import re
import pickle import pickle
from docutils import nodes import re
from babel.messages import pofile, mofile
from six import string_types
import pytest import pytest
from babel.messages import pofile, mofile
from docutils import nodes
from six import string_types
from sphinx.testing.util import ( from sphinx.testing.util import (
path, etree_parse, strip_escseq, path, etree_parse, strip_escseq,
+3 -4
View File
@@ -9,21 +9,20 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import re
import pickle import pickle
import re
import pytest
from docutils import frontend, utils, nodes from docutils import frontend, utils, nodes
from docutils.parsers.rst import Parser as RstParser from docutils.parsers.rst import Parser as RstParser
from docutils.transforms.universal import SmartQuotes from docutils.transforms.universal import SmartQuotes
from sphinx import addnodes from sphinx import addnodes
from sphinx.testing.util import assert_node
from sphinx.util import texescape from sphinx.util import texescape
from sphinx.util.docutils import sphinx_domains from sphinx.util.docutils import sphinx_domains
from sphinx.writers.html import HTMLWriter, HTMLTranslator from sphinx.writers.html import HTMLWriter, HTMLTranslator
from sphinx.writers.latex import LaTeXWriter, LaTeXTranslator from sphinx.writers.latex import LaTeXWriter, LaTeXTranslator
import pytest
from sphinx.testing.util import assert_node
@pytest.fixture @pytest.fixture
+1
View File
@@ -10,6 +10,7 @@
""" """
import os import os
from six import PY2 from six import PY2
import sphinx import sphinx
+1 -1
View File
@@ -12,9 +12,9 @@
import sys import sys
import time import time
import pytest
from six import PY2, text_type, StringIO from six import PY2, text_type, StringIO
from six.moves import input from six.moves import input
import pytest
from sphinx import application from sphinx import application
from sphinx.cmd import quickstart as qs from sphinx.cmd import quickstart as qs
+2 -2
View File
@@ -11,13 +11,13 @@
from collections import namedtuple from collections import namedtuple
from six import BytesIO import pytest
from docutils import frontend, utils from docutils import frontend, utils
from docutils.parsers import rst from docutils.parsers import rst
from six import BytesIO
from sphinx.search import IndexBuilder from sphinx.search import IndexBuilder
from sphinx.util import jsdump from sphinx.util import jsdump
import pytest
DummyEnvironment = namedtuple('DummyEnvironment', ['version', 'domains']) DummyEnvironment = namedtuple('DummyEnvironment', ['version', 'domains'])
+3 -3
View File
@@ -10,15 +10,15 @@
""" """
import os import os
import sys
import subprocess import subprocess
import sys
from collections import namedtuple from collections import namedtuple
import sphinx from textwrap import dedent
import pytest import pytest
import sphinx
from sphinx.util.osutil import cd from sphinx.util.osutil import cd
from textwrap import dedent
@pytest.fixture @pytest.fixture
+1
View File
@@ -10,6 +10,7 @@
""" """
import pytest import pytest
from sphinx.util import docutils from sphinx.util import docutils
+1
View File
@@ -10,6 +10,7 @@
""" """
import pytest import pytest
from sphinx.ext.autosummary.generate import setup_documenters from sphinx.ext.autosummary.generate import setup_documenters
+2 -3
View File
@@ -12,12 +12,11 @@
import pytest import pytest
from mock import patch from mock import patch
from sphinx.util import logging from sphinx.testing.util import strip_escseq
from sphinx.util import ( from sphinx.util import (
display_chunk, encode_uri, parselinenos, status_iterator, xmlname_checker display_chunk, encode_uri, parselinenos, status_iterator, xmlname_checker
) )
from sphinx.util import logging
from sphinx.testing.util import strip_escseq
def test_encode_uri(): def test_encode_uri():
+3 -2
View File
@@ -8,11 +8,12 @@
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
from sphinx.util.fileutil import copy_asset, copy_asset_file
from sphinx.jinja2glue import BuiltinTemplateLoader
import mock import mock
from sphinx.jinja2glue import BuiltinTemplateLoader
from sphinx.util.fileutil import copy_asset, copy_asset_file
class DummyTemplateLoader(BuiltinTemplateLoader): class DummyTemplateLoader(BuiltinTemplateLoader):
def __init__(self): def __init__(self):
+3 -2
View File
@@ -10,13 +10,14 @@
""" """
from __future__ import print_function from __future__ import print_function
import os
import datetime import datetime
import os
import pytest import pytest
from babel.messages.mofile import read_mo from babel.messages.mofile import read_mo
from sphinx.util import i18n
from sphinx.errors import SphinxError from sphinx.errors import SphinxError
from sphinx.util import i18n
def test_catalog_info_for_file_and_path(): def test_catalog_info_for_file_and_path():
+3 -2
View File
@@ -8,11 +8,12 @@
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import sys
from six import PY3
import functools import functools
import sys
from textwrap import dedent from textwrap import dedent
import pytest import pytest
from six import PY3
from sphinx.util import inspect from sphinx.util import inspect
+1 -1
View File
@@ -9,8 +9,8 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import zlib
import posixpath import posixpath
import zlib
from six import BytesIO from six import BytesIO
Loaded 100 of 106 files, more files were not shown because too many files have changed in this diff. Show more