summaryrefslogtreecommitdiff
path: root/dev-python/epydoc/files/epydoc-python-2.6.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/epydoc/files/epydoc-python-2.6.patch')
-rw-r--r--dev-python/epydoc/files/epydoc-python-2.6.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/dev-python/epydoc/files/epydoc-python-2.6.patch b/dev-python/epydoc/files/epydoc-python-2.6.patch
new file mode 100644
index 00000000000..84bb22d879c
--- /dev/null
+++ b/dev-python/epydoc/files/epydoc-python-2.6.patch
@@ -0,0 +1,60 @@
+diff -Nur epydoc-3.0.1/epydoc/docparser.py epydoc-3.0.1/epydoc/docparser.py
+--- epydoc-3.0.1/epydoc/docparser.py
++++ epydoc-3.0.1/epydoc/docparser.py
+@@ -72,6 +72,26 @@
+ from epydoc.compat import *
+
+ ######################################################################
++## Tokenizer change in 2.6
++######################################################################
++
++def comment_includes_nl():
++ """ Determine whether comments are parsed as one or two tokens... """
++ readline = iter(u'\n#\n\n'.splitlines(True)).next
++ tokens = [
++ token.tok_name[tup[0]] for tup in tokenize.generate_tokens(readline)
++ ]
++ if tokens == ['NL', 'COMMENT', 'NL', 'ENDMARKER']:
++ return True
++ elif tokens == ['NL', 'COMMENT', 'NL', 'NL', 'ENDMARKER']:
++ return False
++ raise AssertionError(
++ "Tokenizer returns unexexpected tokens: %r" % tokens
++ )
++
++comment_includes_nl = comment_includes_nl()
++
++######################################################################
+ ## Doc Parser
+ ######################################################################
+
+@@ -520,6 +540,10 @@
+ # inside that block, not outside it.
+ start_group = None
+
++ # If the comment tokens do not include the NL, every comment token
++ # sets this to True in order to swallow the next NL token unprocessed.
++ comment_nl_waiting = False
++
+ # Check if the source file declares an encoding.
+ encoding = get_module_encoding(module_doc.filename)
+
+@@ -570,7 +594,9 @@
+ # then discard them: blank lines are not allowed between a
+ # comment block and the thing it describes.
+ elif toktype == tokenize.NL:
+- if comments and not line_toks:
++ if comment_nl_waiting:
++ comment_nl_waiting = False
++ elif comments and not line_toks:
+ log.warning('Ignoring docstring comment block followed by '
+ 'a blank line in %r on line %r' %
+ (module_doc.filename, srow-1))
+@@ -578,6 +604,7 @@
+
+ # Comment token: add to comments if appropriate.
+ elif toktype == tokenize.COMMENT:
++ comment_nl_waiting = not comment_includes_nl
+ if toktext.startswith(COMMENT_DOCSTRING_MARKER):
+ comment_line = toktext[len(COMMENT_DOCSTRING_MARKER):].rstrip()
+ if comment_line.startswith(" "):