Hello community,
here is the log from the commit of package python-Markdown for openSUSE:Factory checked in at 2015-11-04 15:32:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Markdown (Old)
and /work/SRC/openSUSE:Factory/.python-Markdown.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Markdown"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Markdown/python-Markdown.changes 2015-04-23 08:04:20.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-Markdown.new/python-Markdown.changes 2015-11-04 15:32:57.000000000 +0100
@@ -1,0 +2,5 @@
+Tue Oct 27 19:09:17 UTC 2015 - benoit.monin@gmx.fr
+
+- update to version 2.6.3: bugfix release
+
+-------------------------------------------------------------------
Old:
----
Markdown-2.6.2.tar.gz
New:
----
Markdown-2.6.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Markdown.spec ++++++
--- /var/tmp/diff_new_pack.PCPIye/_old 2015-11-04 15:32:58.000000000 +0100
+++ /var/tmp/diff_new_pack.PCPIye/_new 2015-11-04 15:32:58.000000000 +0100
@@ -17,7 +17,7 @@
Name: python-Markdown
-Version: 2.6.2
+Version: 2.6.3
Release: 0
Summary: Python implementation of Markdown
License: BSD-3-Clause
++++++ Markdown-2.6.2.tar.gz -> Markdown-2.6.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/MANIFEST new/Markdown-2.6.3/MANIFEST
--- old/Markdown-2.6.2/MANIFEST 2015-04-21 01:21:22.000000000 +0200
+++ new/Markdown-2.6.3/MANIFEST 2015-10-27 00:51:24.000000000 +0100
@@ -170,6 +170,8 @@
tests/extensions/extra/footnote_many_footnotes.txt
tests/extensions/extra/footnote_placeholder.html
tests/extensions/extra/footnote_placeholder.txt
+tests/extensions/extra/footnote_placeholder_depth.html
+tests/extensions/extra/footnote_placeholder_depth.txt
tests/extensions/extra/loose_def_list.html
tests/extensions/extra/loose_def_list.txt
tests/extensions/extra/markdown-syntax.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/PKG-INFO new/Markdown-2.6.3/PKG-INFO
--- old/Markdown-2.6.2/PKG-INFO 2015-04-21 01:21:22.000000000 +0200
+++ new/Markdown-2.6.3/PKG-INFO 2015-10-27 00:51:24.000000000 +0100
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: Markdown
-Version: 2.6.2
+Version: 2.6.3
Summary: Python implementation of Markdown.
Home-page: https://pythonhosted.org/Markdown/
Author: Waylan Limberg
Author-email: waylan.limberg [at] icloud.com
License: BSD License
-Download-URL: http://pypi.python.org/packages/source/M/Markdown/Markdown-2.6.2.tar.gz
+Download-URL: http://pypi.python.org/packages/source/M/Markdown/Markdown-2.6.3.tar.gz
Description:
This is a Python implementation of John Gruber's Markdown_.
It is almost completely compliant with the reference implementation,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/docs/change_log.txt new/Markdown-2.6.3/docs/change_log.txt
--- old/Markdown-2.6.2/docs/change_log.txt 2015-03-09 02:13:55.000000000 +0100
+++ new/Markdown-2.6.3/docs/change_log.txt 2015-10-27 00:48:49.000000000 +0100
@@ -7,6 +7,10 @@
Python-Markdown Change Log
=========================
+Oct 26, 2015: Released version 2.6.3 (a bug-fix release).
+
+Apr 20, 2015: Released version 2.6.2 (a bug-fix release).
+
Mar 8, 2015: Released version 2.6.1 (a bug-fix release). The (new)
`yaml` option has been removed from the Meta-Data Extension as it was buggy
(see [#390](https://github.com/waylan/Python-Markdown/issues/390)).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/__version__.py new/Markdown-2.6.3/markdown/__version__.py
--- old/Markdown-2.6.2/markdown/__version__.py 2015-04-21 01:12:55.000000000 +0200
+++ new/Markdown-2.6.3/markdown/__version__.py 2015-10-27 00:47:53.000000000 +0100
@@ -5,7 +5,7 @@
# (major, minor, micro, alpha/beta/rc/final, #)
# (1, 1, 2, 'alpha', 0) => "1.1.2.dev"
# (1, 2, 0, 'beta', 2) => "1.2b2"
-version_info = (2, 6, 2, 'final', 0)
+version_info = (2, 6, 3, 'final', 0)
def _get_version():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/blockprocessors.py new/Markdown-2.6.3/markdown/blockprocessors.py
--- old/Markdown-2.6.2/markdown/blockprocessors.py 2015-02-19 00:57:32.000000000 +0100
+++ new/Markdown-2.6.3/markdown/blockprocessors.py 2015-08-28 05:42:04.000000000 +0200
@@ -38,7 +38,7 @@
return parser
-class BlockProcessor:
+class BlockProcessor(object):
""" Base class for block processors.
Each subclass will provide the methods below to work with the source and
@@ -141,7 +141,7 @@
LIST_TYPES = ['ul', 'ol']
def __init__(self, *args):
- BlockProcessor.__init__(self, *args)
+ super(ListIndentProcessor, self).__init__(*args)
self.INDENT_RE = re.compile(r'^(([ ]{%s})+)' % self.tab_length)
def test(self, parent, block):
@@ -300,12 +300,6 @@
""" Process ordered list blocks. """
TAG = 'ol'
- # Detect an item (``1. item``). ``group(1)`` contains contents of item.
- RE = re.compile(r'^[ ]{0,3}\d+\.[ ]+(.*)')
- # Detect items on secondary lines. they can be of either list type.
- CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.)|[*+-])[ ]+(.*)')
- # Detect indented (nested) items of either type
- INDENT_RE = re.compile(r'^[ ]{4,7}((\d+\.)|[*+-])[ ]+.*')
# The integer (python string) with which the lists starts (default=1)
# Eg: If list is intialized as)
# 3. Item
@@ -314,6 +308,17 @@
# List of allowed sibling tags.
SIBLING_TAGS = ['ol', 'ul']
+ def __init__(self, parser):
+ super(OListProcessor, self).__init__(parser)
+ # Detect an item (``1. item``). ``group(1)`` contains contents of item.
+ self.RE = re.compile(r'^[ ]{0,%d}\d+\.[ ]+(.*)' % (self.tab_length - 1))
+ # Detect items on secondary lines. they can be of either list type.
+ self.CHILD_RE = re.compile(r'^[ ]{0,%d}((\d+\.)|[*+-])[ ]+(.*)' %
+ (self.tab_length - 1))
+ # Detect indented (nested) items of either type
+ self.INDENT_RE = re.compile(r'^[ ]{%d,%d}((\d+\.)|[*+-])[ ]+.*' %
+ (self.tab_length, self.tab_length * 2 - 1))
+
def test(self, parent, block):
return bool(self.RE.match(block))
@@ -407,7 +412,11 @@
""" Process unordered list blocks. """
TAG = 'ul'
- RE = re.compile(r'^[ ]{0,3}[*+-][ ]+(.*)')
+
+ def __init__(self, parser):
+ super(UListProcessor, self).__init__(parser)
+ # Detect an item (``1. item``). ``group(1)`` contains contents of item.
+ self.RE = re.compile(r'^[ ]{0,%d}[*+-][ ]+(.*)' % (self.tab_length - 1))
class HashHeaderProcessor(BlockProcessor):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/extensions/footnotes.py new/Markdown-2.6.3/markdown/extensions/footnotes.py
--- old/Markdown-2.6.2/markdown/extensions/footnotes.py 2015-01-31 18:06:19.000000000 +0100
+++ new/Markdown-2.6.3/markdown/extensions/footnotes.py 2015-10-27 00:36:43.000000000 +0100
@@ -96,7 +96,9 @@
if child.tail:
if child.tail.find(self.getConfig("PLACE_MARKER")) > -1:
return child, element, False
- finder(child)
+ child_res = finder(child)
+ if child_res is not None:
+ return child_res
return None
res = finder(root)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/extensions/sane_lists.py new/Markdown-2.6.3/markdown/extensions/sane_lists.py
--- old/Markdown-2.6.2/markdown/extensions/sane_lists.py 2014-11-21 01:12:27.000000000 +0100
+++ new/Markdown-2.6.3/markdown/extensions/sane_lists.py 2015-08-28 05:42:04.000000000 +0200
@@ -24,15 +24,23 @@
class SaneOListProcessor(OListProcessor):
- CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.))[ ]+(.*)')
SIBLING_TAGS = ['ol']
+ def __init__(self, parser):
+ super(SaneOListProcessor, self).__init__(parser)
+ self.CHILD_RE = re.compile(r'^[ ]{0,%d}((\d+\.))[ ]+(.*)' %
+ (self.tab_length - 1))
+
class SaneUListProcessor(UListProcessor):
- CHILD_RE = re.compile(r'^[ ]{0,3}(([*+-]))[ ]+(.*)')
SIBLING_TAGS = ['ul']
+ def __init__(self, parser):
+ super(SaneUListProcessor, self).__init__(parser)
+ self.CHILD_RE = re.compile(r'^[ ]{0,%d}(([*+-]))[ ]+(.*)' %
+ (self.tab_length - 1))
+
class SaneListExtension(Extension):
""" Add sane lists to Markdown. """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/extensions/smarty.py new/Markdown-2.6.3/markdown/extensions/smarty.py
--- old/Markdown-2.6.2/markdown/extensions/smarty.py 2015-04-21 01:10:46.000000000 +0200
+++ new/Markdown-2.6.3/markdown/extensions/smarty.py 2015-08-28 05:42:04.000000000 +0200
@@ -83,7 +83,7 @@
from __future__ import unicode_literals
from . import Extension
-from ..inlinepatterns import HtmlPattern
+from ..inlinepatterns import HtmlPattern, HTML_RE
from ..odict import OrderedDict
from ..treeprocessors import InlineProcessor
@@ -147,6 +147,8 @@
remainingSingleQuotesRegex = "'"
remainingDoubleQuotesRegex = '"'
+HTML_STRICT_RE = HTML_RE + r'(?!\>)'
+
class SubstituteTextPattern(HtmlPattern):
def __init__(self, pattern, replace, markdown_instance):
@@ -251,6 +253,9 @@
self.educateQuotes(md)
if configs['smart_angled_quotes']:
self.educateAngledQuotes(md)
+ # Override HTML_RE from inlinepatterns.py so that it does not
+ # process tags with duplicate closing quotes.
+ md.inlinePatterns["html"] = HtmlPattern(HTML_STRICT_RE, md)
if configs['smart_dashes']:
self.educateDashes(md)
inlineProcessor = InlineProcessor(md)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/extensions/tables.py new/Markdown-2.6.3/markdown/extensions/tables.py
--- old/Markdown-2.6.2/markdown/extensions/tables.py 2015-04-21 01:10:46.000000000 +0200
+++ new/Markdown-2.6.3/markdown/extensions/tables.py 2015-10-27 00:45:57.000000000 +0100
@@ -19,6 +19,7 @@
from __future__ import unicode_literals
from . import Extension
from ..blockprocessors import BlockProcessor
+from ..inlinepatterns import BacktickPattern, BACKTICK_RE
from ..util import etree
@@ -72,7 +73,11 @@
for i, a in enumerate(align):
c = etree.SubElement(tr, tag)
try:
- c.text = cells[i].strip()
+ if isinstance(cells[i], str) or isinstance(cells[i], unicode):
+ c.text = cells[i].strip()
+ else:
+ # we've already inserted a code element
+ c.append(cells[i])
except IndexError: # pragma: no cover
c.text = ""
if a:
@@ -85,7 +90,49 @@
row = row[1:]
if row.endswith('|'):
row = row[:-1]
- return row.split('|')
+ return self._split(row, '|')
+
+ def _split(self, row, marker):
+ """ split a row of text with some code into a list of cells. """
+ if self._row_has_unpaired_backticks(row):
+ # fallback on old behaviour
+ return row.split(marker)
+ # modify the backtick pattern to only match at the beginning of the search string
+ backtick_pattern = BacktickPattern('^' + BACKTICK_RE)
+ elements = []
+ current = ''
+ i = 0
+ while i < len(row):
+ letter = row[i]
+ if letter == marker:
+ if current != '' or len(elements) == 0:
+ # Don't append empty string unless it is the first element
+ # The border is already removed when we get the row, then the line is strip()'d
+ # If the first element is a marker, then we have an empty first cell
+ elements.append(current)
+ current = ''
+ else:
+ match = backtick_pattern.getCompiledRegExp().match(row[i:])
+ if not match:
+ current += letter
+ else:
+ groups = match.groups()
+ delim = groups[1] # the code block delimeter (ie 1 or more backticks)
+ row_contents = groups[2] # the text contained inside the code block
+ i += match.start(4) # jump pointer to the beginning of the rest of the text (group #4)
+ element = delim + row_contents + delim # reinstert backticks
+ current += element
+ i += 1
+ elements.append(current)
+ return elements
+
+ def _row_has_unpaired_backticks(self, row):
+ count_total_backtick = row.count('`')
+ count_escaped_backtick = row.count('\`')
+ count_backtick = count_total_backtick - count_escaped_backtick
+ # odd number of backticks,
+ # we won't be able to build correct code blocks
+ return count_backtick & 1
class TableExtension(Extension):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/markdown/preprocessors.py new/Markdown-2.6.3/markdown/preprocessors.py
--- old/Markdown-2.6.2/markdown/preprocessors.py 2015-02-19 01:00:15.000000000 +0100
+++ new/Markdown-2.6.3/markdown/preprocessors.py 2015-10-27 00:36:43.000000000 +0100
@@ -178,10 +178,11 @@
else: # raw html
if len(items) - right_listindex <= 1: # last element
right_listindex -= 1
- offset = 1 if i == right_listindex else 0
+ if right_listindex <= i:
+ right_listindex = i + 1
placeholder = self.markdown.htmlStash.store('\n\n'.join(
- items[i:right_listindex + offset]))
- del items[i:right_listindex + offset]
+ items[i:right_listindex]))
+ del items[i:right_listindex]
items.insert(i, placeholder)
return items
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Markdown-2.6.2/tests/basic/inline-html-simple.html new/Markdown-2.6.3/tests/basic/inline-html-simple.html
--- old/Markdown-2.6.2/tests/basic/inline-html-simple.html 2014-11-03 05:43:58.000000000 +0100
+++ new/Markdown-2.6.3/tests/basic/inline-html-simple.html 2015-08-28 05:42:04.000000000 +0200
@@ -57,4 +57,5 @@
<hr class="foo" id="bar" >
-<p>