Hello community, here is the log from the commit of package python-lxml for openSUSE:Factory checked in at 2017-04-19 18:10:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-lxml (Old) and /work/SRC/openSUSE:Factory/.python-lxml.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-lxml" Wed Apr 19 18:10:11 2017 rev:59 rq:487431 version:3.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-lxml/python-lxml.changes 2016-07-20 09:16:22.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-lxml.new/python-lxml.changes 2017-04-19 18:10:13.462945933 +0200 @@ -1,0 +2,59 @@ +Tue Apr 11 16:29:04 UTC 2017 - jmate...@suse.com + +- temporarily disable Source URL for pdf doc (it became unavailable) +- lxml-fix-attribute-quoting.patch - stabilize attribute entity encoding + across platforms +- force-regenerate C code from Cython sources + +------------------------------------------------------------------- +Wed Mar 8 18:55:12 UTC 2017 - axel.br...@gmx.de + +- Version 3.7.3 +* GH#218 was ineffective in Python 3. +* GH#222: lxml.html.submit_form() failed in Python 3. Patch by Jakub Wilk. +* Work around installation problems in recent Python 2.7 versions + due to FTP download failures. +* GH#219: ``xmlfile.element()`` was not properly quoting attribute values. + Patch by Burak Arslan. +* GH#218: ``xmlfile.element()`` was not properly escaping text content of + script/style tags. Patch by Burak Arslan. +* GH#217: ``XMLSyntaxError`` now behaves more like its ``SyntaxError`` + baseclass. Patch by Philipp A. +* GH#216: ``HTMLParser()`` now supports the same ``collect_ids`` parameter + as ``XMLParser()``. Patch by Burak Arslan. +* GH#210: Allow specifying a serialisation method in ``xmlfile.write()``. + Patch by Burak Arslan. +* GH#203: New option ``default_doctype`` in ``HTMLParser`` that allows + disabling the automatic doctype creation. Patch by Shadab Zafar. +* GH#201: Calling the method ``.set('attrname')`` without value argument + (or ``None``) on HTML elements creates an attribute without value that + serialises like ``<div attrname></div>``. Patch by Daniel Holth. +* GH#197: Ignore form input fields in ``form_values()`` when they are + marked as ``disabled`` in HTML. Patch by Kristian Klemon. +* GH#206: File name and line number were missing from XSLT error messages. + Patch by Marcus Brinkmann. +* Log entries no longer allow anything but plain string objects as message text + and file name. +* ``zlib`` is included in the list of statically built libraries. +* GH#204, LP#1614693: build fix for MacOS-X. +* LP#1614603: change linker flags to build multi-linux wheels +* LP#1614603: release without source changes to provide cleanly built Linux wheels + +------------------------------------------------------------------- +Mon Dec 19 17:46:14 UTC 2016 - jmate...@suse.com + +- update for multipython build + +------------------------------------------------------------------- +Tue Aug 16 07:38:31 UTC 2016 - tbecht...@suse.com + +- update to 3.6.1 (FATE #321014): + * Separate option ``inline_style`` for Cleaner that only removes ``style`` + attributes instead of all styles. + * Windows build support for Python 3.5. + * Exclude ``file`` fields from ``FormElement.form_values`` (as browsers do). + * Try to provide base URL from ``Resolver.resolve_string()``. + * More accurate float serialisation in ``objectify.FloatElement``. + * Repair XSLT error logging. + +------------------------------------------------------------------- Old: ---- lxml-3.6.0.tar.gz lxmldoc-3.6.0.pdf New: ---- lxml-3.7.3.tar.gz lxml-fix-attribute-quoting.patch lxmldoc-3.7.3.pdf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-lxml.spec ++++++ --- /var/tmp/diff_new_pack.Af5S0S/_old 2017-04-19 18:10:14.622781868 +0200 +++ /var/tmp/diff_new_pack.Af5S0S/_new 2017-04-19 18:10:14.622781868 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-lxml # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,27 +16,31 @@ # +%{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-lxml -Version: 3.6.0 +Version: 3.7.3 Release: 0 Summary: Powerful and Pythonic XML processing library License: BSD-3-Clause and GPL-2.0+ Group: Development/Languages/Python -Url: http://lxml.de/ -Source: http://pypi.python.org/packages/source/l/lxml/lxml-%{version}.tar.gz -Source1: http://lxml.de/lxmldoc-%{version}.pdf +Url: https://lxml.de/ +Source: https://files.pythonhosted.org/packages/source/l/lxml/lxml-%{version}.tar.gz +#Source1: https://lxml.de/lxmldoc-%{version}.pdf +Source1: lxmldoc-%{version}.pdf +# PATCH-FIX-UPSTREAM fix attribute quoting inactive code https://github.com/lxml/lxml/pull/238 +Patch0: lxml-fix-attribute-quoting.patch +BuildRequires: %{python_module Cython >= 0.22.1} +BuildRequires: %{python_module devel} +BuildRequires: %{python_module setuptools >= 18.0.1} BuildRequires: libxml2-devel >= 2.7.0 BuildRequires: libxslt-devel >= 1.1.23 -BuildRequires: python-Cython >= 0.22.1 -BuildRequires: python-devel -BuildRequires: python-setuptools >= 18.0.1 +BuildRequires: python-rpm-macros # Needed for test cases: -BuildRequires: python-cssselect >= 0.9.1 +BuildRequires: %{python_module cssselect >= 0.9.1} Requires: python-cssselect >= 0.9.1 BuildRoot: %{_tmppath}/%{name}-%{version}-build -%if 0%{?suse_version} && 0%{?suse_version} <= 1110 -%{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} -%endif + +%python_subpackages %description lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It @@ -47,9 +51,7 @@ %package doc Summary: Powerful and Pythonic XML processing library - Documentation Group: Development/Libraries/Python -%if 0%{?suse_version} && 0%{?suse_version} > 1110 BuildArch: noarch -%endif %description doc lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It @@ -75,35 +77,42 @@ %prep %setup -q -n lxml-%{version} cp %{SOURCE1} . +%patch0 -p1 + +# remove generated files +rm src/lxml/lxml.etree.c +rm src/lxml/lxml.etree.h +rm src/lxml/lxml.etree_api.h +rm src/lxml/lxml.objectify.c %build -CFLAGS="%{optflags}" python setup.py build +export CFLAGS="%{optflags}" +%python_build --with-cython %check # The tests fail on SLE 11 due to broken incremental parsing # in libxml2 -%if 0%{?suse_version} > 1110 -CFLAGS="%{optflags}" python setup.py build_ext --inplace +export CFLAGS="%{optflags}" LANG=en_US.UTF-8 PYTHONUNBUFFERED=x make test -%endif +LANG=en_US.UTF-8 PYTHONUNBUFFERED=x make test3 %install -python setup.py install --prefix=%{_prefix} --root=%{buildroot} +%python_install -%files +%files %{python_files} %defattr(-,root,root) %doc CHANGES.txt CREDITS.txt LICENSES.txt README.rst %{python_sitearch}/lxml/ -%{python_sitearch}/lxml-%{version}-py%{py_ver}.egg-info +%{python_sitearch}/lxml-%{version}-py%{python_version}.egg-info %exclude %{python_sitearch}/lxml/*.h %exclude %{python_sitearch}/lxml/includes/*.h -%files devel +%files %{python_files devel} %defattr(-,root,root) %{python_sitearch}/lxml/*.h %{python_sitearch}/lxml/includes/*.h -%files doc +%files %{python_files doc} %defattr(-,root,root) %doc doc/html lxmldoc-%{version}.pdf ++++++ lxml-3.6.0.tar.gz -> lxml-3.7.3.tar.gz ++++++ ++++ 230959 lines of diff (skipped) ++++++ lxml-fix-attribute-quoting.patch ++++++ Index: lxml-3.7.3/src/lxml/tests/test_incremental_xmlfile.py =================================================================== --- lxml-3.7.3.orig/src/lxml/tests/test_incremental_xmlfile.py +++ lxml-3.7.3/src/lxml/tests/test_incremental_xmlfile.py @@ -430,7 +430,7 @@ class HtmlFileTestCase(_XmlFileTestCaseB with xf.element("tagname", attrib={"attr": _str('"misquöted\\u3344\\U00013344"')}): xf.write("foo") - self.assertXml('<tagname attr=""misquöted㍄𓍄"">foo</tagname>') + self.assertXml('<tagname attr=""misquöted㍄𓍄"">foo</tagname>') def test_unescaped_script(self): with etree.htmlfile(self._file) as xf: Index: lxml-3.7.3/src/lxml/serializer.pxi =================================================================== --- lxml-3.7.3.orig/src/lxml/serializer.pxi +++ lxml-3.7.3/src/lxml/serializer.pxi @@ -481,6 +481,7 @@ cdef unsigned char *xmlSerializeHexCharR cdef _write_attr_string(tree.xmlOutputBuffer* buf, const char *string): cdef const char *base cdef const char *cur + cdef const unsigned char *ucur cdef unsigned char tmp[12] cdef int val = 0 @@ -546,42 +547,44 @@ cdef _write_attr_string(tree.xmlOutputBu cur += 1 base = cur - elif (cur[0] >= 0x80) and (cur[1] != 0): + elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0): if (base != cur): tree.xmlOutputBufferWrite(buf, cur - base, base) - if (cur[0] < 0xC0): + ucur = <const unsigned char *>cur + + if (ucur[0] < 0xC0): # invalid UTF-8 sequence - val = cur[0] + val = ucur[0] l = 1 - elif (cur[0] < 0xE0): - val = (cur[0]) & 0x1F + elif (ucur[0] < 0xE0): + val = (ucur[0]) & 0x1F val <<= 6 - val |= (cur[1]) & 0x3F + val |= (ucur[1]) & 0x3F l = 2 - elif ((cur[0] < 0xF0) and (cur[2] != 0)): - val = (cur[0]) & 0x0F + elif ((ucur[0] < 0xF0) and (ucur[2] != 0)): + val = (ucur[0]) & 0x0F val <<= 6 - val |= (cur[1]) & 0x3F + val |= (ucur[1]) & 0x3F val <<= 6 - val |= (cur[2]) & 0x3F + val |= (ucur[2]) & 0x3F l = 3 - elif ((cur[0] < 0xF8) and (cur[2] != 0) and (cur[3] != 0)): - val = (cur[0]) & 0x07 + elif ((ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0)): + val = (ucur[0]) & 0x07 val <<= 6 - val |= (cur[1]) & 0x3F + val |= (ucur[1]) & 0x3F val <<= 6 - val |= (cur[2]) & 0x3F + val |= (ucur[2]) & 0x3F val <<= 6 - val |= (cur[3]) & 0x3F + val |= (ucur[3]) & 0x3F l = 4 else: # invalid UTF-8 sequence - val = cur[0] + val = ucur[0] l = 1 if ((l == 1) or (not tree.xmlIsCharQ(val))): @@ -590,7 +593,7 @@ cdef _write_attr_string(tree.xmlOutputBu # We could do multiple things here. Just save # as a char ref xmlSerializeHexCharRef(tmp, val) - tree.xmlOutputBufferWrite(buf, -1, <const char*> tmp) + tree.xmlOutputBufferWrite(buf, len(tmp), <const char*> tmp) cur += l base = cur ++++++ lxmldoc-3.6.0.pdf -> lxmldoc-3.7.3.pdf ++++++ (binary differes)