Hello community,
here is the log from the commit of package python3-beautifulsoup4 for
openSUSE:Factory checked in at 2016-08-09 22:14:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-beautifulsoup4 (Old)
and /work/SRC/openSUSE:Factory/.python3-beautifulsoup4.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-beautifulsoup4"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python3-beautifulsoup4/python3-beautifulsoup4-doc.changes
2016-07-28 23:46:33.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.python3-beautifulsoup4.new/python3-beautifulsoup4-doc.changes
2016-08-09 22:14:52.000000000 +0200
@@ -1,0 +2,8 @@
+Sat Aug 6 02:44:55 UTC 2016 - [email protected]
+
+- update to version 4.5.1:
+ * Fixed a crash when passing Unicode markup that contained a
+ processing instruction into the lxml HTML parser on Python
+ 3. [bug=1608048]
+
+-------------------------------------------------------------------
python3-beautifulsoup4.changes: same change
Old:
----
beautifulsoup4-4.5.0.tar.gz
New:
----
beautifulsoup4-4.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-beautifulsoup4-doc.spec ++++++
--- /var/tmp/diff_new_pack.ssDqRo/_old 2016-08-09 22:14:53.000000000 +0200
+++ /var/tmp/diff_new_pack.ssDqRo/_new 2016-08-09 22:14:53.000000000 +0200
@@ -17,7 +17,7 @@
Name: python3-beautifulsoup4-doc
-Version: 4.5.0
+Version: 4.5.1
Release: 0
Summary: Documentation for python3-beautifulsoup4
License: MIT
python3-beautifulsoup4.spec: same change
++++++ beautifulsoup4-4.5.0.tar.gz -> beautifulsoup4-4.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/AUTHORS.txt
new/beautifulsoup4-4.5.1/AUTHORS.txt
--- old/beautifulsoup4-4.5.0/AUTHORS.txt 2012-03-01 16:37:51.000000000
+0100
+++ new/beautifulsoup4-4.5.1/AUTHORS.txt 2016-07-27 03:22:19.000000000
+0200
@@ -16,7 +16,7 @@
Sam Ruby helped with a lot of edge cases.
-Jonathan Ellis was awarded the prestigous Beau Potage D'Or for his
+Jonathan Ellis was awarded the prestigious Beau Potage D'Or for his
work in solving the nestable tags conundrum.
An incomplete list of people have contributed patches to Beautiful
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/NEWS.txt
new/beautifulsoup4-4.5.1/NEWS.txt
--- old/beautifulsoup4-4.5.0/NEWS.txt 2016-07-20 02:35:09.000000000 +0200
+++ new/beautifulsoup4-4.5.1/NEWS.txt 2016-08-03 04:39:17.000000000 +0200
@@ -1,3 +1,9 @@
+= 4.5.1 (20160802) =
+
+* Fixed a crash when passing Unicode markup that contained a
+ processing instruction into the lxml HTML parser on Python
+ 3. [bug=1608048]
+
= 4.5.0 (20160719) =
* Beautiful Soup is no longer compatible with Python 2.6. This
@@ -508,7 +514,7 @@
* Renamed Tag.nsprefix to Tag.prefix, for consistency with
NamespacedAttribute.
-* Fixed a test failure that occured on Python 3.x when chardet was
+* Fixed a test failure that occurred on Python 3.x when chardet was
installed.
* Made prettify() return Unicode by default, so it will look nice on
@@ -542,7 +548,7 @@
* Restored compatibility with Python 2.6.
-* The install process no longer installs docs or auxillary text files.
+* The install process no longer installs docs or auxiliary text files.
* It's now possible to deepcopy a BeautifulSoup object created with
Python's built-in HTML parser.
@@ -781,7 +787,7 @@
Fixed a UnicodeDecodeError when unpickling documents that contain
non-ASCII characters.
-Fixed a TypeError that occured in some circumstances when a tag
+Fixed a TypeError that occurred in some circumstances when a tag
contained no text.
Jump through hoops to avoid the use of chardet, which can be extremely
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/PKG-INFO
new/beautifulsoup4-4.5.1/PKG-INFO
--- old/beautifulsoup4-4.5.0/PKG-INFO 2016-07-20 12:38:04.000000000 +0200
+++ new/beautifulsoup4-4.5.1/PKG-INFO 2016-08-03 04:43:18.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: beautifulsoup4
-Version: 4.5.0
+Version: 4.5.1
Summary: Screen-scraping library
Home-page: http://www.crummy.com/software/BeautifulSoup/bs4/
Author: Leonard Richardson
@@ -13,7 +13,7 @@
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Topic :: Text Processing :: Markup :: XML
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/beautifulsoup4-4.5.0/beautifulsoup4.egg-info/PKG-INFO
new/beautifulsoup4-4.5.1/beautifulsoup4.egg-info/PKG-INFO
--- old/beautifulsoup4-4.5.0/beautifulsoup4.egg-info/PKG-INFO 2016-07-20
12:38:04.000000000 +0200
+++ new/beautifulsoup4-4.5.1/beautifulsoup4.egg-info/PKG-INFO 2016-08-03
04:43:18.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: beautifulsoup4
-Version: 4.5.0
+Version: 4.5.1
Summary: Screen-scraping library
Home-page: http://www.crummy.com/software/BeautifulSoup/bs4/
Author: Leonard Richardson
@@ -13,7 +13,7 @@
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Topic :: Text Processing :: Markup :: XML
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/__init__.py
new/beautifulsoup4-4.5.1/bs4/__init__.py
--- old/beautifulsoup4-4.5.0/bs4/__init__.py 2016-07-20 02:28:09.000000000
+0200
+++ new/beautifulsoup4-4.5.1/bs4/__init__.py 2016-08-03 04:40:04.000000000
+0200
@@ -8,7 +8,7 @@
provides methods and Pythonic idioms that make it easy to navigate,
search, and modify the parse tree.
-Beautiful Soup works with Python 2.6 and up. It works better if lxml
+Beautiful Soup works with Python 2.7 and up. It works better if lxml
and/or html5lib is installed.
For more than you ever wanted to know about Beautiful Soup, see the
@@ -21,7 +21,7 @@
# found in the LICENSE file.
__author__ = "Leonard Richardson ([email protected])"
-__version__ = "4.5.0"
+__version__ = "4.5.1"
__copyright__ = "Copyright (c) 2004-2016 Leonard Richardson"
__license__ = "MIT"
@@ -448,7 +448,7 @@
"""Push a start tag on to the stack.
If this method returns None, the tag was rejected by the
- SoupStrainer. You should proceed as if the tag had not occured
+ SoupStrainer. You should proceed as if the tag had not occurred
in the document. For instance, if this was a self-closing tag,
don't call handle_endtag.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/builder/_lxml.py
new/beautifulsoup4-4.5.1/bs4/builder/_lxml.py
--- old/beautifulsoup4-4.5.0/bs4/builder/_lxml.py 2016-07-17
00:35:57.000000000 +0200
+++ new/beautifulsoup4-4.5.1/bs4/builder/_lxml.py 2016-07-30
13:49:07.000000000 +0200
@@ -32,6 +32,7 @@
DEFAULT_PARSER_CLASS = etree.XMLParser
is_xml = True
+ processing_instruction_class = XMLProcessingInstruction
NAME = "lxml-xml"
ALTERNATE_NAMES = ["xml"]
@@ -90,6 +91,16 @@
Each 4-tuple represents a strategy for parsing the document.
"""
+ # Instead of using UnicodeDammit to convert the bytestring to
+ # Unicode using different encodings, use EncodingDetector to
+ # iterate over the encodings, and tell lxml to try to parse
+ # the document as each one in turn.
+ is_html = not self.is_xml
+ if is_html:
+ self.processing_instruction_class = ProcessingInstruction
+ else:
+ self.processing_instruction_class = XMLProcessingInstruction
+
if isinstance(markup, unicode):
# We were given Unicode. Maybe lxml can parse Unicode on
# this system?
@@ -101,15 +112,6 @@
yield (markup.encode("utf8"), "utf8",
document_declared_encoding, False)
- # Instead of using UnicodeDammit to convert the bytestring to
- # Unicode using different encodings, use EncodingDetector to
- # iterate over the encodings, and tell lxml to try to parse
- # the document as each one in turn.
- is_html = not self.is_xml
- if is_html:
- self.processing_instruction_class = ProcessingInstruction
- else:
- self.processing_instruction_class = XMLProcessingInstruction
try_encodings = [user_specified_encoding, document_declared_encoding]
detector = EncodingDetector(
markup, try_encodings, is_html, exclude_encodings)
@@ -236,6 +238,7 @@
features = ALTERNATE_NAMES + [NAME, HTML, FAST, PERMISSIVE]
is_xml = False
+ processing_instruction_class = ProcessingInstruction
def default_parser(self, encoding):
return etree.HTMLParser
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/diagnose.py
new/beautifulsoup4-4.5.1/bs4/diagnose.py
--- old/beautifulsoup4-4.5.0/bs4/diagnose.py 2016-07-16 17:27:02.000000000
+0200
+++ new/beautifulsoup4-4.5.1/bs4/diagnose.py 2016-07-27 03:25:45.000000000
+0200
@@ -58,7 +58,8 @@
data = data.read()
elif os.path.exists(data):
print '"%s" looks like a filename. Reading data from the file.' % data
- data = open(data).read()
+ with open(data) as fp:
+ data = fp.read()
elif data.startswith("http:") or data.startswith("https:"):
print '"%s" looks like a URL. Beautiful Soup is not an HTTP client.' %
data
print "You need to use some other library to get the document behind
the URL, and feed that document to Beautiful Soup."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/element.py
new/beautifulsoup4-4.5.1/bs4/element.py
--- old/beautifulsoup4-4.5.0/bs4/element.py 2016-07-20 02:28:09.000000000
+0200
+++ new/beautifulsoup4-4.5.1/bs4/element.py 2016-07-27 03:22:19.000000000
+0200
@@ -649,7 +649,7 @@
return lambda el: el._attr_value_as_string(
attribute, '').startswith(value)
elif operator == '$':
- # string represenation of `attribute` ends with `value`
+ # string representation of `attribute` ends with `value`
return lambda el: el._attr_value_as_string(
attribute, '').endswith(value)
elif operator == '*':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/testing.py
new/beautifulsoup4-4.5.1/bs4/testing.py
--- old/beautifulsoup4-4.5.0/bs4/testing.py 2016-07-17 04:18:57.000000000
+0200
+++ new/beautifulsoup4-4.5.1/bs4/testing.py 2016-07-30 13:54:51.000000000
+0200
@@ -139,6 +139,14 @@
markup.replace(b"\n", b""))
def test_processing_instruction(self):
+ # We test both Unicode and bytestring to verify that
+ # process_markup correctly sets processing_instruction_class
+ # even when the markup is already Unicode and there is no
+ # need to process anything.
+ markup = u"""<?PITarget PIContent?>"""
+ soup = self.soup(markup)
+ self.assertEqual(markup, soup.decode())
+
markup = b"""<?PITarget PIContent?>"""
soup = self.soup(markup)
self.assertEqual(markup, soup.encode("utf8"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/tests/test_soup.py
new/beautifulsoup4-4.5.1/bs4/tests/test_soup.py
--- old/beautifulsoup4-4.5.0/bs4/tests/test_soup.py 2016-07-16
17:55:30.000000000 +0200
+++ new/beautifulsoup4-4.5.1/bs4/tests/test_soup.py 2016-07-27
03:27:42.000000000 +0200
@@ -35,7 +35,6 @@
except ImportError, e:
LXML_PRESENT = False
-PYTHON_2_PRE_2_7 = (sys.version_info < (2,7))
PYTHON_3_PRE_3_2 = (sys.version_info[0] == 3 and sys.version_info < (3,2))
class TestConstructor(SoupTest):
@@ -77,7 +76,7 @@
def test_no_warning_if_explicit_parser_specified(self):
with warnings.catch_warnings(record=True) as w:
soup = self.soup("<a><b></b></a>", "html.parser")
- self.assertEquals([], w)
+ self.assertEqual([], w)
def test_parseOnlyThese_renamed_to_parse_only(self):
with warnings.catch_warnings(record=True) as w:
@@ -279,7 +278,7 @@
self.assertEqual(soup_from_unicode.encode('utf-8'), self.utf8_data)
@skipIf(
- PYTHON_2_PRE_2_7 or PYTHON_3_PRE_3_2,
+ PYTHON_3_PRE_3_2,
"Bad HTMLParser detected; skipping test of non-ASCII characters in
attribute name.")
def test_attribute_name_containing_unicode_characters(self):
markup = u'<div><a \N{SNOWMAN}="snowman"></a></div>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/bs4/tests/test_tree.py
new/beautifulsoup4-4.5.1/bs4/tests/test_tree.py
--- old/beautifulsoup4-4.5.0/bs4/tests/test_tree.py 2016-07-20
02:51:35.000000000 +0200
+++ new/beautifulsoup4-4.5.1/bs4/tests/test_tree.py 2016-07-27
03:22:19.000000000 +0200
@@ -346,7 +346,7 @@
strainer = SoupStrainer(attrs={'id' : 'first'})
self.assertSelects(tree.find_all(strainer), ['Match.'])
- def test_find_all_with_missing_atribute(self):
+ def test_find_all_with_missing_attribute(self):
# You can pass in None as the value of an attribute to find_all.
# This will match tags that do not have that attribute set.
tree = self.soup("""<a id="1">ID present.</a>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/doc/source/index.rst
new/beautifulsoup4-4.5.1/doc/source/index.rst
--- old/beautifulsoup4-4.5.0/doc/source/index.rst 2015-11-24
13:36:12.000000000 +0100
+++ new/beautifulsoup4-4.5.1/doc/source/index.rst 2016-07-27
03:31:45.000000000 +0200
@@ -166,12 +166,16 @@
If you're using a recent version of Debian or Ubuntu Linux, you can
install Beautiful Soup with the system package manager:
-:kbd:`$ apt-get install python-bs4`
+:kbd:`$ apt-get install python-bs4` (for Python 2)
+
+:kbd:`$ apt-get install python3-bs4` (for Python 3)
Beautiful Soup 4 is published through PyPi, so if you can't install it
with the system packager, you can install it with ``easy_install`` or
``pip``. The package name is ``beautifulsoup4``, and the same package
-works on Python 2 and Python 3.
+works on Python 2 and Python 3. Make sure you use the right version of
+``pip`` or ``easy_install`` for your Python version (these may be named
+``pip3`` and ``easy_install3`` respectively if you're using Python 3).
:kbd:`$ easy_install beautifulsoup4`
@@ -298,7 +302,8 @@
from bs4 import BeautifulSoup
- soup = BeautifulSoup(open("index.html"))
+ with open("index.html") as fp:
+ soup = BeautifulSoup(fp)
soup = BeautifulSoup("<html>data</html>")
@@ -2776,7 +2781,8 @@
missing a parser that Beautiful Soup could be using::
from bs4.diagnose import diagnose
- data = open("bad.html").read()
+ with open("bad.html") as fp:
+ data = fp.read()
diagnose(data)
# Diagnostic running on Beautiful Soup 4.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/beautifulsoup4-4.5.0/setup.py
new/beautifulsoup4-4.5.1/setup.py
--- old/beautifulsoup4-4.5.0/setup.py 2016-07-20 12:37:28.000000000 +0200
+++ new/beautifulsoup4-4.5.1/setup.py 2016-08-03 04:39:03.000000000 +0200
@@ -5,7 +5,7 @@
setup(
name="beautifulsoup4",
- version = "4.5.0",
+ version = "4.5.1",
author="Leonard Richardson",
author_email='[email protected]',
url="http://www.crummy.com/software/BeautifulSoup/bs4/",
@@ -23,7 +23,7 @@
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
- "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.7",
'Programming Language :: Python :: 3',
"Topic :: Text Processing :: Markup :: HTML",
"Topic :: Text Processing :: Markup :: XML",