Nozomu Kaneko avatar Nozomu Kaneko committed 2b12cf0 Merge

merge heads

Comments (0)

Files changed (10)

sphinx/environment.py

             if not msgstr or msgstr == msg: # as-of-yet untranslated
                 continue
 
+            # Avoid "Literal block expected; none found." warnings.
+            # If msgstr ends with '::' then it cause warning message at
+            # parser.parse() processing.
+            # literal-block-warning is only appear in avobe case.
+            if msgstr.strip().endswith('::'):
+                msgstr += '\n\n   dummy literal'
+                # dummy literal node will discard by 'patch = patch[0]'
+
             patch = new_document(source, settings)
             parser.parse(msgstr, patch)
             patch = patch[0]

sphinx/ext/refcounting.py

 from docutils import nodes
 
 from sphinx import addnodes
+from sphinx.locale import _
 
 
 # refcount annotation
                 continue
             elif entry.result_type not in ("PyObject*", "PyVarObject*"):
                 continue
-            rc = 'Return value: '
             if entry.result_refs is None:
-                rc += "Always NULL."
+                rc = _('Return value: Always NULL.')
+            elif entry.result_refs:
+                rc = _('Return value: New reference.')
             else:
-                rc += (entry.result_refs and "New" or "Borrowed") + \
-                      " reference."
+                rc = _('Return value: Borrowed reference.')
             node.insert(0, refcount(rc, rc))
 
 

sphinx/texinputs/sphinx.sty

 
 % Some custom font markup commands.
 %
-\newcommand{\strong}[1]{{\bf #1}}
+\newcommand{\strong}[1]{{\textbf{#1}}}
 \newcommand{\code}[1]{\texttt{#1}}
 \newcommand{\bfcode}[1]{\code{\bfseries#1}}
 \newcommand{\email}[1]{\textsf{#1}}
 \@ifundefined{ChTitleVar}{}{
   \ChNameVar{\raggedleft\normalsize\py@HeaderFamily}
   \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily}
-  \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily}
+  \ChTitleVar{\raggedleft \textrm{\Huge\py@HeaderFamily}}
   % This creates chapter heads without the leading \vspace*{}:
   \def\@makechapterhead#1{%
     {\parindent \z@ \raggedright \normalfont

sphinx/websupport/search/__init__.py

         res = self.context_re.search(text)
         if res is None:
             return ''
-        context_start = max(res.start() - length/2, 0)
+        context_start = max(res.start() - int(length/2), 0)
         context_end = context_start + length
         context = ''.join([context_start > 0 and '...' or '',
                            text[context_start:context_end],

tests/root/i18n/index.txt

    footnote
    external_links
    refs_inconsistency
+   literalblock
    seealso

tests/root/i18n/literalblock.po

+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2012, foof
+# This file is distributed under the same license as the foo package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: sphinx 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-11-22 08:28\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "i18n with literal block"
+msgstr "I18N WITH LITERAL BLOCK"
+
+msgid "Correct literal block::"
+msgstr "CORRECT LITERAL BLOCK::"
+
+msgid "Missing literal block::"
+msgstr "MISSING LITERAL BLOCK::"
+
+msgid "That's all."
+msgstr "THAT'S ALL."
+

tests/root/i18n/literalblock.txt

+:tocdepth: 2
+
+i18n with literal block
+=========================
+
+Correct literal block::
+
+   this is
+   literal block
+
+Missing literal block::
+
+That's all.

tests/test_build_html.py

 %(root)s/autodoc_fodder.py:docstring of autodoc_fodder\\.MarkupError:2: \
 WARNING: Explicit markup ends without a blank line; unexpected \
 unindent\\.\\n?
+%(root)s/i18n/literalblock.txt:13: WARNING: Literal block expected; none found.
 %(root)s/images.txt:9: WARNING: image file not readable: foo.png
 %(root)s/images.txt:23: WARNING: nonlocal image URI found: \
 http://www.python.org/logo.png

tests/test_intl.py

     assert expect_line == matched_line
 
 
+@with_app(buildername='text', warning=warnfile, cleanenv=True,
+          confoverrides={'language': 'xx', 'locale_dirs': ['.'],
+                         'gettext_compact': False})
+def test_i18n_literalblock_warning(app):
+    app.builddir.rmtree(True)  #for warnings acceleration
+    app.builder.build(['i18n/literalblock'])
+    result = (app.outdir / 'i18n' / 'literalblock.txt').text(encoding='utf-8')
+    expect = (u"\nI18N WITH LITERAL BLOCK"
+              u"\n***********************\n"
+              u"\nCORRECT LITERAL BLOCK:\n"
+              u"\n   this is"
+              u"\n   literal block\n"
+              u"\nMISSING LITERAL BLOCK:\n"
+              u"\n<SYSTEM MESSAGE: ")
+    assert result.startswith(expect)
+
+    warnings = warnfile.getvalue().replace(os.sep, '/')
+    expected_warning_expr = u'.*/i18n/literalblock.txt:\\d+: ' \
+            u'WARNING: Literal block expected; none found.'
+    assert re.search(expected_warning_expr, warnings)
+
+
 @with_app(buildername='text', cleanenv=True,
           confoverrides={'language': 'xx', 'locale_dirs': ['.'],
                          'gettext_compact': False})
 [testenv]
 deps=
     nose
+    sqlalchemy
+    whoosh
 setenv =
     BUILD_TEST_PATH = {envdir}/tests
 commands=
 
 [testenv:py25]
 deps=
-    nose
     simplejson==2.5.0
+    {[testenv]deps}
 
 [testenv:py33]
 deps=
-    nose
     #svn+http://docutils.svn.sourceforge.net/svnroot/docutils/trunk/docutils
     docutils>=0.10.0
+    {[testenv]deps}
 
 [testenv:pypy]
 deps=
-    nose
     simplejson
+    {[testenv]deps}
 
 [testenv:du07]
 deps=
-    nose
     docutils==0.7
+    {[testenv]deps}
 
 [testenv:du08]
 deps=
-    nose
     docutils==0.8.1
+    {[testenv]deps}
 
 [testenv:du09]
 deps=
-    nose
     docutils==0.9.1
+    {[testenv]deps}
+
+[testenv:du10]
+deps=
+    docutils==0.10.0
+    {[testenv]deps}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.